ВВЕДЕНИЕ В ФОРТРАН
Как пользоваться этим руководством.
Концепция данных Фортрана.
Типы и буквальные константы.
Имена (идентификаторы).
Переменные и константы.
Скаляры и массивы.
Именование данных.
Печать текста и чисел на экран.
Hello World!
Печать целых чисел.
Печать вещественных чисел.
Печать текста.
Когда format предпочтительней.
Арифметические и текстовые выражения.
Арифметические операторы и правила.
Вещественная арифметика.
Целая арифметика.
Смешанная арифметика.
Текстовые выражения.
Инициализация переменных и констант.
Оператор присваивания.
Инициализация скалярных констант.
Инициализация массивов констант.
Ввод данных с клавиатуры.
DATA-инициализация скалярных переменных.
DATA-инициализация массивов переменных.
Условные опреаторы.
Логические выражения.
Оператор IF.
Конструкция IF.
Конструкция CASE.
Циклы.
Цикл с фиксированным числом повторений.
Цикл с выходом по условию.
Пресловутый GOTO.
Неявные циклы.
Процедуры и функции.
Подпрограммы-процедуры.
Подпрограммы-функции.
Комплексный пример: сортировка массива.
Встроенные функции Фортрана.
Работа с внешними файлами.
Файловый ввод/вывод.
Открытие/закрытие файла.
Позиционирование файла.
ПОДПРОГРАММЫ-ФУНКЦИИ.
Программа SOMAX печатает максимальные значения массивов A, B и C двумя способами. С использованием функции ARRMAX, непосредственно возвращающей значение максимального элемента массива, и с помощью функции NUMAX, возвращающей номер максимального элемента массива.
Подпрограмма-функция начинается с ключевого слова FUNCTION, после которого указывается ее имя и, в круглых скобках, список формальных параметров. Завершается подпрограмма-функци, как и все програамные единицы, оператором END.
Подпрограмма-функция является типизированным объектом. Тип функции определяется типом ее имени. Если имя необходимо явно типизировать, то тип указывается перед FUNCTION. Имя функции должно быть так же типизировано в использующей ее программной единице. Так, в приведенном ниже примере, имя функции NUMAX типизировано как целое, по умолчанию, а для функции ARRMAX необходима явная типизация.
program SOMAX integer A(2), B(3), C(4), ARRMAX data A /1, 2/ B/4, 5, 3/ C/ 7, 6, 9, 8/ print'(3(1x,i1)/)', ARRMAX(A,2), ARRMAX(B,3), ARRMAX(C,4) print'(3(1x,i1)/)', A(NUMAX(A,2)), B(NUMAX(B,3)), C(NUMAX(C,4)) end integer function ARRMAX(X,N) integer X(N) ARRMAX = X(1) if(N .eq. 1) return do i=1, N if( X(i) .gt. ARRMAX ) ARRMAX = X(i) end do return end function NUMAX(X,N) integer X(N) NUMAX = 1 if(N .eq. 1) return do i= 2, N if( X(i) .gt. X(NUMAX) ) NUMAX = i end do return end
В пределах подпрограммы-функции ее имя расценивается как имя переменной, которая должна получить определенное значение перед возвратом в вызывающую процедуру.
Правила, касающиеся формальных и фактических параметров, для подпрограмм-функций в точности такие же, как и для программ-процедур.
Подпрограммы-функции используются в вызывающих их программных единицах точно так же, как переменные и константы соответствующего типа. Например, значение функции NUMAX используется как индекс массива.
Функцию NUMAX следует признать более информативной, поскольку, зная номер максимального элемента и используя его в качестве индекса, можно получить значение максимального элемента массива.