Информационные системы ускорителей

ВВЕДЕНИЕ В ФОРТРАН

Как пользоваться этим руководством.

Концепция данных Фортрана.

Типы и буквальные константы.

Имена (идентификаторы).

Переменные и константы.

Скаляры и массивы.

Именование данных.

Печать текста и чисел на экран.

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.