ВВЕДЕНИЕ В ФОРТРАН
Как пользоваться этим руководством.
Концепция данных Фортрана.
Типы и буквальные константы.
Имена (идентификаторы).
Переменные и константы.
Скаляры и массивы.
Именование данных.
Печать текста и чисел на экран.
Hello World!
Печать целых чисел.
Печать вещественных чисел.
Печать текста.
Когда format предпочтительней.
Арифметические и текстовые выражения.
Арифметические операторы и правила.
Вещественная арифметика.
Целая арифметика.
Смешанная арифметика.
Текстовые выражения.
Инициализация переменных и констант.
Оператор присваивания.
Инициализация скалярных констант.
Инициализация массивов констант.
Ввод данных с клавиатуры.
DATA-инициализация скалярных переменных.
DATA-инициализация массивов переменных.
Условные опреаторы.
Логические выражения.
Оператор IF.
Конструкция IF.
Конструкция CASE.
Циклы.
Цикл с фиксированным числом повторений.
Цикл с выходом по условию.
Пресловутый GOTO.
Неявные циклы.
Процедуры и функции.
Подпрограммы-процедуры.
Подпрограммы-функции.
Комплексный пример: сортировка массива.
Встроенные функции Фортрана.
Работа с внешними файлами.
Файловый ввод/вывод.
Открытие/закрытие файла.
Позиционирование файла.
НЕЯВНЫЕ ЦИКЛЫ.
Неявные циклы не являются самостоятельными конструкциями и могут быть использованы только в операторах ввода/вывода и инициализации данных, как правило, для работы с массивами.
Неявно можно задать только цикл с фиксированным числом повторений. Вместо операторных скобок DO...ENDDO используются обычные круглые скобки. Телом цикла может быть другой неявный цикл или одно еднственное выражение, как правило, зависящее от переменной цикла. Диапазон изменения и шаг переменной цикла указываются через запятую после тела цикла.
program IMPDO parameter(N = 1, M = (N+1)*(N+1)) integer VECTOR(N), MATRIX(-N:0, 0:N) ! Всего M элементов data (VECTOR(i), i = 1, N) /N*0/ data ((MATRIX(i, j), j = 0, N ), i = -N, 0) /M*0/ print'(''Ввести VECTOR: ''$)' read*, (VECTOR(i), i = 1, N) print'(''Ввести MATRIX: ''$)' read*, ((MATRIX(i, j), j = 0, N ), i = -N, 0) print*, (VECTOR(i), i = 1, N) print'(2(1x,i2))', ((MATRIX(i, j), j = 0, N ), i = -N, 0) end
Напомним, что диапазон индексов массива по каждому измерению можно указывать явно, как для массива MATRIX в программе IMPDO.