Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
69
Добавлен:
14.04.2015
Размер:
2.67 Mб
Скачать

Оператор If с тремя и более блоками

В наиболее полной форме оператор If...then...elseможет содержать несколько блоков альтернативных действий, добавляемых конструкциейelseif...then:

If(логическое выражение 1)then

Блок if

Elseif (логическое выражение 2)then

Блок elseif2

Elseif (логическое выражение 3)then

Блок elseif3

Else

Блок default ! выполняется при невыполнении всех условий

Endif

Ключевое слово Elseif, логическое выражение и слово thenпишутся в одной строке. Это один составной оператор, и завершающийEndifтожетолько один.

Ветвей Elseif...thenв операторе может быть несколько, ветвьElseможет отсутствовать.

Изображение такой конструкции на блок-схеме:

Оператор выполняется следующим образом: последовательно проверяются логические выражения в скобках, пока не будет найдено истинное. Тогда проверка прекратится, и будет выполнен соответствующий блок, а затем управление будет передано оператору Endif. Если среди всех условий нет ни одного истинного, выполнитсяБлок default. Если же в этой ситуации ветвьElseотсутствует, не будет выполнено никаких действий.

Это наиболее общая форма структурного оператора If. Очевидно, что операторIf...then...elseс двумя блоками является ее частным случаем и может быть получен удалением ветвейElseif. Если, кроме того, удалить ветвьElse, то в оператореIfостанется только один блок.

Пример 1

If(x > 0)then

Write(*,*) 'x > 0'; y = sqrt(x)

Elseif (x < 0)then

Write(*,*) 'x < 0'

Elseif (x == 0)then

Write(*,*) 'x = 0’; y = 0

Else

Write(*,*) 'Так не бывает'

Endif

Попробуем реализовать ту же конструкцию, используя встроенные операторы If

Пример 2

A1: If(x > 0)then

Write(*,*)'x > 0'; y = sqrt(x)

Else

A2: If (x < 0)then

Write(*,*)'x < 0'

Else

A3: If (x == 0)then

Write(*,*)'x = 0’; y = 0

Else

Write(*,*)'Так не бывает'

Endif A3

Endif A2

Endif A1

Легко убедиться в лаконичности и наглядности многоблочного оператора If.

На примере 2хорошо видно, почему каждый блок, встроенный в некую конструкцию, рекомендуется сдвинуть вправо на несколько позиций. Это хороший стиль программирования. Текст визуально становится более легким для чтения.

Если в программе несколько операторов If, можно дать имя каждому из них. Имя оператора является необязательным, но если оно указано в его заголовке, то становится обязательным для завершающей строки оператора. Применение имен операторов А1, А2, А3 также продемонстрировано напримере 2.

Переключатель Select

Оператор selectпредназначен для реализации ветвлений выбором одного варианта изнесколькихвозможных. В этой конструкции проверяется только одно выражение; значение его может быть либо целым, либо символьным.

В общем виде конструкция выглядит так:

Select case (выражение)

Case (множество значений 1)

Блок case1

Case (множество значений 2)

Блок case2

. . .

Case Default

Блок default

End select

Блок-схема оператора select:

В круглые скобки после ключевого слова Case помещаются списки непересекающихся значений и интервалов, поэтому выполнение оператора – это выполнение не более одного блокаCase. Если значения выражения не принадлежит ни одному из указанных множеств, то выполняетсяблок default,

Пример(переменнойRange присваивается значение в зависимости от значения абсолютной величины переменнойNumber):

Integer:: Number, Range

Select case (abs(Number))

Case (-5:-3, 6:9)

Range = 1

Case (-2:2)

Range = 2

Case (3, 5)

Range = 3

Case (4)

Range = 4

Case Default

Range = 10

End select

Соседние файлы в папке Фортран_Лекции