Читайте также: |
|
Конструкция SELECT CASE обеспечиввает альтернативу серии повторяющихся операторов IF... THEN... ELSE IF. Ее общий вид таков:
[имя:] SELECT CASE(выражение)
CASE(значение) [имя]
блок
...
[CASE DEFAULT
блок]
END SELECT [имя]
Результат выражения может быть типа CHARACTER, LOGICAL или INTEGER; значение должно быть того же типа, что и результат выражения и может быть любой комбинацией из:
•единичной integer, character, или logical, связывающим в типе
•min: max
любого значеиия между двумя ограничениями
•min:
любое значение минимального значения из вышеприведенных
•:max
любое значение выше минимального значения
CASE DEFAULT не обязателен и закрывает все другие возможные значения выражения, еще не закрытые другими операторами CASE. Например:
INTEGER:: month
...
season: SELECT CASE(month)
CASE(4,5)! months 4 и 5
WRITE(*,*) 'Spring'
CASE(6,7)! months 6 и 7
WRITE(*,*) 'Summer'
CASE(8:10)! months 8,9 и 10
WRITE(*,*) 'Autumn'
CASE(11,1:3,12)! months 1,2,3,11,12
WRITE(*,*) 'Winter'
CASE DEFAULT! целое вне диапазона 1-12
WRITE(*,*) 'not a month'
END SELECT season
Приведенный выше пример печатает сезон года, ассоциированный с заданным месяцем. Если значение целого месяца не лежит в диапазоне 1-12, выбирается вариант умолчания и печатается сообщение об ошибке 'not a month'; в других случаях выбирается один из операторов CASE. Заметим, что они не определяют порядок значеиий в операторе CASE.
Я
GOTO
Оператор GOTO можно использовать дле передачи управления другому оператору в виде:
GOTO label
Оператор GOTO просто передает управление оператору, помеченному числовой меткой, перепрыгивая любые операторы между ними. Например:
...
IF(x<10) GOTO 10
...
10 STOP
Оператор GOTO можно бы не применять, где возможно, программы, содержащие такие оператороы, заведомо трудно поддерживать. Оператор STOP завершает программу.
Я
**************** DO *************************
http://parallel.uran.ru/alpha/f90www/loops_rus.htm
Вложения
Размещение конструкции одного блока внутри другого (операторы IF-THEN внутри цикла DO, и т.д.) возможно, но внутренний блок (блоки) должен быть окаймлен наружным (и) блоком (ами) с помощью соответствующих операторов. Запрещено перекрывать вложенные операторы. Например:
main: IF(sum>100) THEN
inner: DO i=1,n
...
ENDIF main
ENDDO inner! запрещено, inner должен быть внутри main
Это в общем верно для всех конструкций, то есть для цикла DO, конструкций IF-THEN-ELSEIF и CASE. Максимальный уровень вложения (конструкции внутри конструкций внутри конструкций...) зависит от компилятора.
Дата добавления: 2015-11-14; просмотров: 53 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Оператор и конструкция IF | | | Упорядочение операторов |