Управляющие операторы и конструкции
Управляющие операторы и конструкции служат для изменения последовательности выполнения программ.
Условный логический оператор
Формат: IF (логическое выражение) оператор
Действие: если логическое выражение истинно, то выполняется оператор, в противном случае управление передается на оператор, следующий за IF. Если логическое выражение ложно, то управление сразу передается на оператор, следующий за IF, минуя оператор.
Блок-схема:
Пример1: y=20; x=5
if (x>y) y=10
print*,y
При выполнении этого фрагмента будет выведено значение y=20, т.к. логическое выражение ложно, и оператор y=10 выполняться не будет.
Конструкция IF THEN ENDIF
Формат: IF (логическое выражение) THEN
Блок операторов
ENDIF
Действие: если логическое выражение истинно, то выполняется блок операторов, в противном случае управление передается на оператор, следующий за ENDIF.
Блок-схема:
Пример2: y=20; x=5
if (x>y) then
y=10
endif
print*,y
Результат выполнения этого фрагмента аналогичен примеру 1. Отличие заключается в самой записи этой конструкции.
Конструкция IF THEN ELSE ENDIF
Формат: IF (логическое выражение) THEN
Блок операторов 1
ELSE
Блок операторов 2
ENDIF
Действие: если логическое выражение истинно, то выполняется блок операторов 1 и управление передается на следующий за ENDIF оператор; если логическое выражение ложно, то выполняется блок операторов 2.
Блок-схема:
Пример3: y=20; x=5
if (x>y) then
y=10
else
y=70
endif
print*,y
При выполнении этого фрагмента будет выведено значение y=70, т.к. логическое выражение ложно.
Конструкция IF THEN ELSE IF
Формат: IF (логическое выражение 1) THEN
Блок операторов 1
ELSE IF (логическое выражение 2) THEN
Блок операторов 2
….
[ ELSE
блок операторов n ]
ENDIF
Действие: если логическое выражение 1 истинно, то выполняется блок операторов 1 и управление передается на следующий за ENDIF оператор. Eсли логическое выражение1 ложно, то вычисляется значение логического выражения 2, и если оно истинно, товыполняется блок операторов 2. Eсли оно ложно, то управление передается на следующий ELSEIF, и так далее. Если ложны все Л.В., то выполняется блок операторов n, следующий за завершающим ELSE. Если завершающий ELSE отсутствует, то управление передается за ENDIF.
Число операторов ELSEIF в конструкции может быть произвольным. Следует обратить внимание, что вся конструкция завершается одним ENDIF.
Блок-схема:
![]() |
Пример3: Введите 2 числа с клавиатуры. Если они не равны между собой и отрицательны, то замените числа их кубами и выведите результат на экран. Если все числа положительны, то найдите и выведите среднее арифметическое. Иначе, уменьшите каждое число в два раза и выведите результат.
program primer3
real a, b, sr, max
print*, ‘Vvedi 2 chisla’
read*, a, b
if (a<0.and. b<0.and. a/=b) then
a=a**3; b=b**3
print*, ‘a=’, a, ‘b=’, b
elseif (a>0.and. b>0) then
sr=(a+b)/2
print*, ‘srednee arifmeticheskoe=’, sr
else
a=a/2; b=b/2
print*, ‘a=’, a, ‘b=’, b
endif
end
Сравните нижеприведенную программу с примером 3.
program primer3; real a, b, sr, max
print*, ‘Vvedi 2 chisla’; read*, a, b
if (a<0.and. b<0.and. a/=b) then; a=a**3; b=b**3; print*, ‘a=’, a, ‘b=’, b
elseif (a>0.and. b>0) then; sr=(a+b)/2; print*, ‘srednee arifmeticheskoe=’, sr; else
a=a/2; b=b/2; print*, ‘a=’, a, ‘b=’, b; endif; end
Как видно, чтение такой программы достаточно затруднено в связи с тем, что условные конструкции не наглядны. Кроме того, необходимо помнить, что операторы в одной строке разделяются «;».
Конструкция SELECT CASE
Формат: SELECT CASE (выражение)
CASE (список 1)
Блок операторов 1
CASE (список 2)
Блок операторов 2
…………
CASE DEFAULT
Блок операторов n
END SELECT
Выражение − целочисленное, символьное или логическое выражение.
Список − список констант, тип которых должен соответствовать типу выражения.
Список констант может содержать:
1. Одно значение, например: case(5)
2. Несколько значений, например: case(2,5,8,33)
3. Диапазон значений, например: case(10:15)! значения 10, 11, 12, 13, 14, 15
case(10:) (опущена правая граница)! значения >10
case(:-2) (опущена левая граница)! значения< -2
4. Смесь отдельных значений и диапазонов, например: case(3,4, 10:15, 77)
Каждое значение, даже если оно задано в диапазоне значений, может появляться только в одном списоке.
Действие: Вычисляется значение выражения. Если полученное значение находится в списке 1, то выполняется блок операторов 1; далее управление передается на следующий за END SELECT оператор. Если значение в списке 1 не находится, то проверяется, если оно в списке 2, и так далее. Если значение выражения не найдено ни в одном списке и присутствует оператор CASE DEFAULT, то выполняется блок операторов n и далее следующий за END SELECT оператор. Если же значение выражения не найдено ни в одном списке и оператор CASE DEFAULT отсутствует, то управление передается на следующий за END SELECT оператор.
Пример4: integer x
………
select case (x)
case (1:)
x=sqrt(x)
case (:-1)
x=abs(x)
case (0)
x=sin(x)+cos(x)
end select
Этот пример анализирует значение переменной x (оно может быть только целым), и для всех положительных чисел вычисляет квадратный корень, для всех отрицательных – модуль числа, для нулевого значения – сумму косинуса и синуса.
Вспомогательные управляющие операторы
Оператор STOP
Формат: STOP [ сообщение ]
Действие: Прекращает выполнение программы.
Сообщение – символьная или целочисленная константа. Эта константа выводится на экран монитора после логического завершения программы по оператору STOP.
При отсутствии сообщения по умолчанию выводится строка:
STOP – Program terminated
Оператор PAUSE
Формат: PAUSE [ сообщение ]
Действие: Оператор временно приостанавливает выполнение программы и позволяет пользователю выполнить команды операционной системы.
При отсутствии сообщения по умолчанию выводится строка:
Please enter a blank line (to continue) or a system command
(пожалуйста, введите пробел для продолжения программы или команду системы).