ВВЕДЕНИЕ В ФОРТРАН
Как пользоваться этим руководством.
Концепция данных Фортрана.
Типы и буквальные константы.
Имена (идентификаторы).
Переменные и константы.
Скаляры и массивы.
Именование данных.
Печать текста и чисел на экран.
Hello World!
Печать целых чисел.
Печать вещественных чисел.
Печать текста.
Когда format предпочтительней.
Арифметические и текстовые выражения.
Арифметические операторы и правила.
Вещественная арифметика.
Целая арифметика.
Смешанная арифметика.
Текстовые выражения.
Инициализация переменных и констант.
Оператор присваивания.
Инициализация скалярных констант.
Инициализация массивов констант.
Ввод данных с клавиатуры.
DATA-инициализация скалярных переменных.
DATA-инициализация массивов переменных.
Условные опреаторы.
Логические выражения.
Оператор IF.
Конструкция IF.
Конструкция CASE.
Циклы.
Цикл с фиксированным числом повторений.
Цикл с выходом по условию.
Пресловутый GOTO.
Неявные циклы.
Процедуры и функции.
Подпрограммы-процедуры.
Подпрограммы-функции.
Комплексный пример: сортировка массива.
Встроенные функции Фортрана.
Работа с внешними файлами.
Файловый ввод/вывод.
Открытие/закрытие файла.
Позиционирование файла.
КОНСТРУКЦИЯ IF.
Приведенная ниже программа DETECTIF, определяющая знак и четность числа, введенного с клавиатуры, демонстрирует варианты использования конструкции IF. Конструкция IF является модернизацией оператора IF, на тот случай, когда при соблюдении заданного условия требуется выполнить не один, а несколько операторов.
program DETECTIF integer a read*, a c Минимальный вариант конструкции "if" с отсутствием альтернатив. if( a .gt. 0.) then print 100, a 100 format(1x,i9,'> 0') print*,'Положительное' endif if( a .lt. 0.) then print 200, a 200 format(1x,i9,'< 0') print*,'Отрицательное' endif if( a .eq. 0.) then print 300, a 300 format(1x,i9,'= 0') print*,'Ноль' endif c Вариант конструкции "if" только с альтернативой "else". if(a. eq. a/2*2) then print*,'Четное' else print*,'Нечетное' endif c Вариант конструкции "if" только с альтернативами "else if". if( a .gt. 0.) then print*,'Положительное' elseif( a .lt. 0.) then print*,'Отрицательное' elseif( a .eq. 0.) then print*,'Ноль' endif c Вариант полной конструкции "if" со всеми вариантами альтернатив. if(a. eq. a/2*2 .and. a .gt. 0.) then print*,'Четное, положительное' elseif(a. eq. a/2*2 .and. a .lt. 0.) then print*,'Четное, отрицательное' elseif(a. ne. a/2*2 .and. a .gt. 0.) then print*,'Нечетное, положительное' elseif(a. ne. a/2*2 .and. a .lt. 0.) then print*,'Нечетное, отрицательное' else print*,'Ноль' endif end
Конструкция всегда начинается с IF-строки. Эта строка начинается с ключевого слова IF, за которым следует первое из, возможно, нескольких альтернативных условий, а затем ключевое слово THEN. Далее строка не может содержать ни чего, кроме комментария. В последующих строках записывается блок операторов, которые должны выполняться при соблюдении условия. Число оператроров в блоке не ограничивается.
Если в конструкции IF проверяется несколько альтернативных условий, то блоки операторов, соответствующие второму и последующим условиям, предваряются ELSEIF-строками, начинающимися с ключевого слова ELSEIF, а в остальном полностью аналогичными IF-строке.
Блок операторов, который должен выполняться если не соблюдено ни одно из альтернативных условий, предваряется ELSE-строкой, которая не содержит ничего, кроме ключевого слова ELSE.
Строка ENDIF всегда завершает конструкцию IF.
Допускается произвольная вложенность конструкций IF, при условии их взаимного непересечения.