Цикл довузовской подготовки кафедры ЭФУ

ЛАБОРАТОРНЫЙ ПРАКТИКУМ:
«ПРОГРАММИРОВАНИЕ НА ФОРТРАНЕ»

СТРУКТУРА ПРАКТИКУМА

ВВЕДЕНИЕ

ВАЖНАЯ ИНФОРМАЦИЯ

1. ПРАВИЛА ЗАПИСИ ПРОГРАММЫ

1. Набор символов Фортрана

2. Форматы записи программы

3. Фиксированный формат

4. Свободный формат

2. ТРАНСЛЯЦИЯ ПРОГРАММЫ

1. Программа в одном исходном файле

2. Трансляция исходного файла

3. Трансляция нескольких исходных файлов

4. Трансляция модулей

3. КОНЦЕПЦИЯ ДАННЫХ ЯЗЫКА ФОРТРАН

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

2. Понятие типа

3. Буквальные константы

4. Разновидности типов и диапазоны значений

5. Скалярные переменные и константы

6. Массивы

7. Производные типы данных

4. ВЫРАЖЕНИЯ И ПРЕОБРАЗОВАНИЕ ТИПОВ

1. Скалярное присваивание

2. Арифметика Фортрана

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

4. Работа с текстовыми строками

5. Операции с массивами

5. УПРАВЛЯЮЩИЕ ОПЕРАТОРЫ

1. Условный оператор и конструкция IF

2. Оператор варианта – конструкция CASE

3. Циклы – разновидности конструкции DO

4. Оператор GO TO

6. ВВОД/ВЫВОД ДАННЫХ

1. Простейшие операции ввода/вывода

2. Форматный ввод/вывод данных

3. Ввод/вывод массивов в неявных циклах

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

7. ПРОГРАММНЫЕ КОМПОНЕНТЫ И ЭЛЕМЕНТЫ ООП

1. Структура программных компонентов

2. Внешние подпрограммы

3. Внутренние подпрограммы

4. Модули как библиотеки производных типов

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

ЗАДАЧИ ДЛЯ ПРОГРАММИРОВАНИЯ

5. УПРАВЛЯЮЩИЕ ОПЕРАТОРЫ

5.1. Условный оператор и конструкция IF

Условный оператор IF проверяет значение скалярного логического выражения. Если его значение истинно – т.е. имеет значение «.TRUE.» (п. 3.3), то выполняется действие в виде одиночного оператора (например, вывод на печать, присваивание и т. д.). Обрамляющие круглые скобки для условия обязательны:

IF (условие) одиночный оператор

Оператору IF не могут в качестве действия указываться другие условные операторы и конструкции, а так же циклы. Условием может быть логическая константа, переменная или выражение – чаще всего это логические отношения, связанные логическими операторами (п. 4.3).

В приведенном примере (Пример 5.1) определяется знак введенного с клавиатуры целого числа (положительное либо отрицательное), или сообщается, что это ноль. В качестве условий используются простейшие логические отношения (Таблица 4.5).


Пример 5.1. Пример использования логического оператора IF.

program SIGNDETECT
integer NUMBER
read*, NUMBER
if(NUMBER > 0) print*, ″Положительное″
if(NUMBER < 0) print*, ″Отрицательное″
if(NUMBER == 0) print*, ″Ноль″
end
	

Оператор IF позволяет выполнить одиночный оператор (или исключить его выполнение, при невыполнении условия) – это в ряде случаев позволяет обеспечить компактность программы, но явно недостаточно, если в качестве альтернатив используются последовательности более чем из одного оператора. В этом случае целесообразно использовать конструкцию IF.

Первый блок конструкции IF всегда начинается со строки, содержащей ключевое слово IF, за которым в круглых скобках следует проверяемое условие (логическая величина) и ключевое слово THEN. После THEN в первой строке конструкции IF не может быть ничего, кроме комментария. Если строка длинная, она может быть продолжена, в соответствии с правилами продолжения строк свободного или фиксированного формата. После первой строки конструкции IF следует последовательность операторов, выполняемых при истинности проверяемого условия:

IF (условие) THEN
...блок операторов
ELSE IF (альтернативное условие 1) THEN
...альтернативный блок операторов 1
ELSE IF (альтернативное условие 2) THEN
...альтернативный блок операторов 2
ELSE IF (альтернативное условие N) THEN
...альтернативный блок операторов N
ELSE
...пост альтернативный блок
END IF

Далее в конструкции IF могут присутствовать число альтернативных блоков ELSE IF со своими условиями – правила их записи точно такие же, как для первого IF-блока. Количество блоков ELSE IF не ограничено – их может быть и десять и сто, а может не быть ни одного.

Затем, после блоков ELSE IF, может следовать (или отсутствовать) блок ELSE, содержащий программный код, выполняемый в отсутствие истинности всех условий IF и ELSE IF. После чего для завершения конструкции IF используется оператор END IF.

Таким образом, простейшая форма конструкции IF выгляди следующим образом:

IF (условие) THEN
...блок операторов
END IF

В качестве примера c одним альтернативным блоком в конструкции IF, рассмотрим определение четности целого числа, введенного с клавиатуры.

Для определения четности числа используется правило целочисленной арифметики – при делении целых чисел дробная часть отбрасывается. Если четное целое число сначала разделить на два, а затем результат деления опять умножить на два, получится то же самое четное число, что и до деления. Если ту же операцию проделать с нечетным числом, то при делении на два, дробная часть будет отброшена и при умножении результата деления на два исходное нечетное число не восстановится (Пример 5.2).


Пример 5.2. Пример логической конструкции IF с альтернативой.

program EVENDETECT
integer NUMBER
logical EVEN
read*, NUMBER
EVEN = NUMBER / 2 * 2 == NUMBER
if(EVEN) then
	print*, ″Четное″
else
	print*, ″Нечетное″
end if
end
	

Развернутую конструкцию IF можно показать на примере, где одновременно определяется знак и четность целого числа, введенного с клавиатуры (Пример 5.3).


Пример 5.3. Пример логической конструкции IF с множеством альтернатив.

program EVENSIGN
integer NUMBER
logical EVEN
read*, NUMBER
EVEN = NUMBER / 2 * 2 == NUMBER
if(EVEN .and. NUMBER > 0) then
	print*, ″Четное положительное″
else if(EVEN .and. NUMBER < 0) then
	print*, ″Четное отрицательное″
else if((.not. EVEN) .and. NUMBER > 0) then
	print*, ″Нечетное положительное″
else if((.not. EVEN) .and. NUMBER < 0) then
	print*, ″Нечетное отрицательное″
else
	print*, ″Ноль″
end if
end
	

Для конструкций IF допускается произвольная вложенность, при условии, что вложенные элементы не пересекаются.