Другие языки программирования и технологии
Помогите разобраться в коде. Язык Фортран
Непонятно что делают эти строчки (их препод написал) subroutine lu_decomp(a,n,p,ier) real intent(in)::a(n,n) integer intent(in)::n real, intent(out)::lu(n,n) integer,intent(out)::p(n),ier Что вообще значит оператор intent? И еще вопрос в догонку do r=1,n lu(i,r)=lu(i,r)- dot_product(lu(i,1:r-1)),lu(1:r-1,r) enddo Что такое dot_product и вообще что делает этот цикл?
по первой части - это начало кода какой-то подпрограммы под названием lu_decomp
subroutine lu_decomp(a,n,p,ier) ----подпрограмма lu_decomp с аргументами a,n,p,ier
real intent(in)::a(n,n) ----объявляется массив 'a' типа Real размерностью n-на-n... короче квадратная матрица
integer intent(in)::n ----объявляется переменная 'n' целого типа
real, intent(out)::lu(n,n) ---объявляется массив 'lu' целого типа размерностью n-на-n
integer,intent(out)::p(n),ier ---объявляются вектор 'p' целого типа размером n, и переменная ier целого типа
в данном коде
intent(in) ---означает что эта переменная явлется входным аргументом подпрограммы
как уже Vijit упомянул, менять значение этой переменной переданной в подпрограмму программе не разрешается.
а
intent(out) ---означает что эта переменная является выходным аргументом.. .
так уж рекомендуется делать в фортране-90.
по второму куску кода
do r=1,n
lu(i,r)=lu(i,r)- dot_product(lu(i,1:r-1)),lu(1:r-1,r)
enddo
имеем цикл по переменной r меняющей значения от 1 до n
dot_product - это функция вызывается, которая вычисляет скалярное произведение двух векторов (по-английски это и называется Dot Product)
короче, манипуляции какие-то малопонятные над матрицей lu производятся.
более тут говорить не очём.. .
это равно как додумывать что пропущено в предложении
Он ...нно ...бался.
subroutine lu_decomp(a,n,p,ier) ----подпрограмма lu_decomp с аргументами a,n,p,ier
real intent(in)::a(n,n) ----объявляется массив 'a' типа Real размерностью n-на-n... короче квадратная матрица
integer intent(in)::n ----объявляется переменная 'n' целого типа
real, intent(out)::lu(n,n) ---объявляется массив 'lu' целого типа размерностью n-на-n
integer,intent(out)::p(n),ier ---объявляются вектор 'p' целого типа размером n, и переменная ier целого типа
в данном коде
intent(in) ---означает что эта переменная явлется входным аргументом подпрограммы
как уже Vijit упомянул, менять значение этой переменной переданной в подпрограмму программе не разрешается.
а
intent(out) ---означает что эта переменная является выходным аргументом.. .
так уж рекомендуется делать в фортране-90.
по второму куску кода
do r=1,n
lu(i,r)=lu(i,r)- dot_product(lu(i,1:r-1)),lu(1:r-1,r)
enddo
имеем цикл по переменной r меняющей значения от 1 до n
dot_product - это функция вызывается, которая вычисляет скалярное произведение двух векторов (по-английски это и называется Dot Product)
короче, манипуляции какие-то малопонятные над матрицей lu производятся.
более тут говорить не очём.. .
это равно как додумывать что пропущено в предложении
Он ...нно ...бался.
Извини за "русский английский", нет прав писать латиницей.
1. Когда объявляешь такие переменные внутри подпрограмм, которые должны передоваться из вне, нужно добавлять ИНТЕНТ в объявлении.
ИНТЕНТ (ИН) - переменная может быть передана в подпрограмму, но ее нельзя менять.
ИНТЕНТ (АУТ) означает, что переменная задается в подпрограмме, и возвращается в главную программу, игнорируя инициализацию.
ИНТЕНТ (ИН АУТ) значит, что переменная входит в подпрограмму со значением и выходит со значением. (глобальная переменная)
2. Преполагаю, что это какая-то пользовательская процедура.
Ответ нашел в Википедии.
1. Когда объявляешь такие переменные внутри подпрограмм, которые должны передоваться из вне, нужно добавлять ИНТЕНТ в объявлении.
ИНТЕНТ (ИН) - переменная может быть передана в подпрограмму, но ее нельзя менять.
ИНТЕНТ (АУТ) означает, что переменная задается в подпрограмме, и возвращается в главную программу, игнорируя инициализацию.
ИНТЕНТ (ИН АУТ) значит, что переменная входит в подпрограмму со значением и выходит со значением. (глобальная переменная)
2. Преполагаю, что это какая-то пользовательская процедура.
Ответ нашел в Википедии.
Похожие вопросы
- Помогите разобраться с кодом. Ошибка в строчке for (int i = 0, i > 100, i++) {
- Помогите разобраться с кодом Delphi
- Помогите разобраться с кодом
- Помогите разобраться в старом коде Фортрана...
- Нужна помощь в програмированнии. Мне необходимо сдать работу на языке Фортран.
- Пожалуйста помогите разобраться с даним кодом C++. Тема : Односвязание списки
- Помогите разобраться в програмном коде на С++
- Помогите решить задачу на языке c++. Не понимаю условия в конце кода.
- Прошу помочь разобраться, пояснить некоторые пункты требования ТИПОГРАФИИ.
- Про С++ .Не получается явное преобразование типов. Помогите разобраться. Код внутри.
Он блаженно улыбался.
то вы ошибаетесь.