ВВЕДЕНИЕ В ФОРТРАН
Как пользоваться этим руководством.
Концепция данных Фортрана.
Типы и буквальные константы.
Имена (идентификаторы).
Переменные и константы.
Скаляры и массивы.
Именование данных.
Печать текста и чисел на экран.
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, при условии их взаимного непересечения.