Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lesson 2.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2.4 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]