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

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

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

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

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

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

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

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

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

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

Hello World!

Печать целых чисел.

Печать вещественных чисел.

Печать текста.

Когда format предпочтительней.

Арифметические и текстовые выражения.

Арифметические операторы и правила.

Вещественная арифметика.

Целая арифметика.

Смешанная арифметика.

Текстовые выражения.

Инициализация переменных и констант.

Оператор присваивания.

Инициализация скалярных констант.

Инициализация массивов констант.

Ввод данных с клавиатуры.

DATA-инициализация скалярных переменных.

DATA-инициализация массивов переменных.

Условные опреаторы.

Логические выражения.

Оператор IF.

Конструкция IF.

Конструкция CASE.

Циклы.

Цикл с фиксированным числом повторений.

Цикл с выходом по условию.

Пресловутый GOTO.

Неявные циклы.

Процедуры и функции.

Подпрограммы-процедуры.

Подпрограммы-функции.

Комплексный пример: сортировка массива.

Встроенные функции Фортрана.

Работа с внешними файлами.

Файловый ввод/вывод.

Открытие/закрытие файла.

Позиционирование файла.

ЦИКЛ С ВЫХОДОМ ПО УСЛОВИЮ.

Программа FINDELM реализует поиск элемента и определение его номера в последовательности целых чисел. Последовательность вводится один раз, а поиск продолжается или прекращается, в зависмости от ответа на запрос программы. Этот запрос помещен в "бесконечный" цикл, выход из которого возможен лишь по условию, указанному в теле цикла.

      program FINDELM
      parameter (N=3)
      integer SEQUENCE(N), FINSEQ
      logical ANSWER
      print '(1x,''Введите'',i2, '' элемента: ''$)', N
      read*,  (SEQUENCE(i), i = 1, N)
      do
        print '(1x,''Искать элемент? (T/F): ''$)'
        read'(L1)', ANSWER; if(.not.ANSWER) exit

        print '(1x,''Введите искомый элемент: ''$)'
        read*, FINSEQ

c       Определение номера искомого элемента в последовательности.
        INDEX = 0
        do i = 1, N
          if (SEQUENCE(i) .eq. FINSEQ) then
            INDEX = i
            exit
          endif
        enddo
        print*, INDEX

      enddo
      end

Если из DO- строки конструкции DO исключить переменную цикла, получится "бесконечный" (то есть с неограниченным числом повторений) цикл. Выход из него обеспечивается оператором EXIT, который помещается в оператор или конструкцию IF в теле цикла.

Оператор EXIT обеспечивает выход из цикла с ограниченным или неограниченным числом повторений. Если конструкция DO, из котрой осуществляется выход оператором EXIT, является вложенной, то есть существует цикл, внешний по отношению к ней, то из внешнего цикла выхода не произойдет.

Бесконечный цикл и оператор EXIT могут быть реализованы в Фортране-90 или ФОРТРАНе-77 с расширенными возможностями.