Условный оператор предназначен для организации ветвления алгоритма. Он изменяет порядок выполнения операторов программы в зависимости от какого-нибудь условия. В случае отсутствия специальных команд процессор выполняет программу последовательно по операторам один за другим.
Пример с использованием логического условного оператора - программа вводит число и печатает его модуль:
read *, a
if (a<0) a=-a ! оператор присваивания выполняется только, если значение переменной a меньше 0
print *,'absolute value is ', a
В Fortran-е есть 3 типа условных операторов: арифметический, логический и логический блочный.
if (арифм. выражение) L1,L2,L3
арифм. выражение – после вычисления – число!
Порядок выполнения:
вычисление значения арифм.
выражения в скобках;
если значение выражения меньше 0 –> goto L1
иначе если значение выражения равно 0 –> goto L2
иначе (если значение выражения больше 0 ) –>
goto L3
Признан устаревшим и не рекомендован к
использованию.
Используется, если нужно выполнить одно действие в случае истинности условия.
Фома записи:
if (логич. выражение) действие
логич. выражение – в результате может принимать значения .TRUE.,.FALSE.
Порядок выполнения:
вычисление значения логич.
выражения в скобках;
если значение выражения == .TRUE. -> выполнение действия.
действие – почти любой исполняемый оператор (кроме if, for …)
Пример: нахождение модуля числа
if (a<0) print *,’value of a is negative’ a<0 – логическое выражение
, например, если значение переменной
a равно -5, значение логического
выражения (a<0) равно
.TRUE., в этом случае выполняется оператор
print. |
|
Другой пример:
logical l1
l1=a<0
if (l1) print *,’value of a is negative’
if (a<0) then
print *,'number is negative'
a=-a
end if
(если условие a<0- истинно, то печатать на экран текст 'number is negative'
и менять знак числа на положительный, в противном случае ничего не делать.)
if (логич.
выражение) then оператор
………
оператор
endif |
|
Другая форма позволяет выполнять разные группы операторов, то есть сделать две ветки в алгоритме:
if (логич. выражение) then ! 1 оператор ……… оператор else
оператор ……… оператор endif |
Фома записи:
If
(логич. выражение) THEN
else
endif
If
(логич. выражение) THEN
else
if
(…) THEN
end if
endif
Последнее равнозначно следующему:
If
(логич. выражение1) THEN
else if (логич.
выражение2) THEN
endif
Важно понять, что выполняется только одна группа действий из всех.
Примеры: определение знака числа.
НА ГЛАВНУЮ | ДАЛЕЕ |