Другие языки программирования и технологии

Помогите разобраться в коде. Язык Фортран

Непонятно что делают эти строчки (их препод написал) 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 производятся.

более тут говорить не очём.. .
это равно как додумывать что пропущено в предложении

Он ...нно ...бался.
Istvan Hadzsega
Istvan Hadzsega
92 359
Лучший ответ
Istvan Hadzsega если вы подумали что там пропущено такое:
Он блаженно улыбался.
то вы ошибаетесь.
Извини за "русский английский", нет прав писать латиницей.

1. Когда объявляешь такие переменные внутри подпрограмм, которые должны передоваться из вне, нужно добавлять ИНТЕНТ в объявлении.
ИНТЕНТ (ИН) - переменная может быть передана в подпрограмму, но ее нельзя менять.
ИНТЕНТ (АУТ) означает, что переменная задается в подпрограмме, и возвращается в главную программу, игнорируя инициализацию.
ИНТЕНТ (ИН АУТ) значит, что переменная входит в подпрограмму со значением и выходит со значением. (глобальная переменная)

2. Преполагаю, что это какая-то пользовательская процедура.

Ответ нашел в Википедии.