Читайте также:
|
|
Простейшая форма оператора IF это единственное действие, основанное на единственном условии:
IF(выражение) оператор
Только если выражение (логическая переменная или выражение) имеет значение.TRUE. оператор выполним. Например, в:
IF(x<0.0) x=0.0
если x меньше чем нуль, то дается новое значение (0.0); в противном случае x сохраняет свое прежнее значение.
Структура конструкции IF зависит от числа условий, которые могут быть проверены и имеет следующую общую форму:
[имя:] IF (выражение1) THEN
блок1
ELSEIF (выражение 2) THEN [имя]
блок 2
...
[ELSE [имя]
блок]
ENDIF [имя]
Где выражение№ есть логическая переменная или выражение.
Конструкция используется, когда число операторов зависит от условия. Например, 'если идет дождь, то взять пиджак и взять зонт'. Это требуется в части THEN. Заметим, что оператор END IF (или ENDIF) требуется, чтобы обозначить конец условного блока в операторе.
LOGICAL:: rain
INTEGER:: numb=0, ncoat
...
IF (rain) THEN
ncoat = 1
numb = numb+1
ENDIF
If дождь есть.TRUE., блок операторов выполним и управление переходит к следующему оператору после ENDIF; в противном случае, блок операторов опускается и управление переходит прямо к следующему оператору после ENDIF.
Более сложная ситуация может возникать, когда представляющая альтернативные действия зависимость в единственном условии. Для примера, предыдущие примеры не делают различий между уровнями ливня. Пример выше может быть перефразирован 'если здесь легкий дождь, то взять пиджак, в противном случае (иначе) взять пиджак и зонт'.
REAL:: inches_of_rain
INTEGER:: numb=0, ncoat
...
IF(inches_of_rain>0.05) THEN! сильный дождь
ncoat = 1
numb = numb+1
ELSE! легкий дождь
ncoat = 1
ENDIF
Заметим, используется часть ELSE, отделяющей различные варианты, и что and каждый блок может содержать один или более операторов. Второй блок операторов выполняет установку операторов "по умолчанию" для случая, когда условие не выполняется. Переход управления следует тем же правилам как упомянуто выше.
Здесь рассмотрена ситуация, когда альтернативные действия зависят от нескольких условий. Например, скидка (discount), представляемая для покупки, может очень зависеть от числа покупаемых лотов - больше покупок, больше скидка:
REAL:: cost, discount
INTEGER:: n! число покупок
...
IF (n>10) THEN! 25% скидка на 11 или более
discount = 0.25
ELSEIF (n>5.AND. n<=10) THEN! 15% скидка на 6-10 покупок
discount = 0.15
ELSEIF (n>1.AND. n<=5) THEN! 15% скидка на 2-5 покупок
discount = 0.1
ELSE! без скидки для 1 покупки
discount = 0.0
ENDIF
cost = cost-(cost*discount)
WRITE(*,*) `Накладная для ', cost
Заметим, что ELSEIF используется для добавления новых условий к блоку (другая скидка используется). Оператор ELSE действует как умолчание в случае защиты от других событий. Снова те же правила перехода управления.
Конструкция IF мжет быть помечена. Именованная конструкция может быть использована, когда одна находится внутри другой. Этот способ пометки делает программу легкой для понимания:
outer: IF(x==0) THEN
...
ELSE outer
inner: IF(y==0.0) THEN
...
ENDIF inner
ENDIF outer
Я
Дата добавления: 2015-11-14; просмотров: 52 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Массивы и производные типы | | | Конструкция SELECT CASE |