Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatika_Lektsii_4_5.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
422.91 Кб
Скачать

5. ОРганизация ветвлений

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

В языке Паскаль для организации ветвления используются два типа оператора - IF (полный и сокращенный) и CASE (полный и сокращенный). Также к ветвлению относят оператор безусловного перехода GOTO, поскольку он нарушает последовательный линейный порядок выполнения команд. Однако в случае оператора GOTO для перехода не требуется проверки логических условий.

5.1. Полный и сокращенный оператор if

Полный оператор условного перехода IF в языке Паскаль имеет следующий синтаксис:

If условие then оператор 1 else оператор 2;

где условие - это логическое выражение, в зависимости от которого выбирается одна из двух альтернативных ветвей алгоритма. Если значение условия истинно (TRUE), то будет выполняться оператор 1, записанный после ключевого слова then. В противном случае будет выполнен оператор 2, следующий за словом else, при этом оператор 1 пропускается. После выполнения указанных операторов программа переходит к выполнению команды, стоящей непосредственно после оператора if. Графически логика полного оператора IF в виде блок-схемы представлена на рис.5.1.

Рис.5.1. Полный оператора IF Рис.5.2. Сокращенный оператора IF

Сокращенный оператор условного перехода IF в языке Паскаль отличается от полного отсутствием альтернативы else:

If условие then оператор 1;

В случае невыполнения логического условия управление сразу передается оператору, стоящему в программе после конструкции if.

Синтаксис языка (правила построения и выполнения операторов) допускает запись только одного оператора после ключевых слов then и else, поэтому при необходимости выполнения нескольких операторов их обязательно надо заключать в составной оператор (между операторными скобками begin ... end). Иначе программа будет работать неправильно.

Примеры 1 применения полного и сокращенного операторов IF.

1)if x>=0 then modx:= x else modx:=-x;{вычисление абсолютной величины числа х}

2)if x>=0 then sqrtx = sqrt(x);{вычисление квадратного корня из числа х}

3)if а[i]>max then begin max:=а[i];imax:=i end;{поиск макс. эл-та массива и его номера}

4) max:=а;if bthen max:=b;if с>max then max:=с;{определение max(a,b,c)}

На рис.5.3 дана блок-схема фрагмента программы из задания 4) примера 1, в котором определяется max(a,b,c).

Рис.5.3. Блок-схема фрагмента программы, в котором определяется max(a,b,c).

5.2. Полный и сокращенный оператор case

Как видно из описания, полный оператор IF организует передачу управления при выполнении или невыполнении одного условия, сокращенный IF - только при выполнении одного заданного условия. Однако нередко в алгоритмах возникает необходимость альтернативного выбора одной из нескольких расчетных ветвей. Такой выбор можно организовать при помощи повторного применения условного оператора IF. Однако проще данное действие выполнять при помощи специального оператора выбора CASE. Как и оператор IF, он может быть полным и сокращенным.

Полный оператор условного перехода CASE имеет вид:

case выражение of

вариант 1: оператор 1;

вариант 2: оператор 2;

...

вариант n: оператор n;

else оператор

end;

выражение, которое записывается после ключевого слова case, называется селектором, оно может быть любого перечисляемого типа. Каждый вариант состоит из одной или большего количества констант или диапазонов, разделенных запятыми. Они должны принадлежать к тому же типу, что и селектор, причем недопустимо более одного упоминания варианта в записи инструкции case. Из перечисленного множества операторов будет выбран только тот, перед которым записан вариант, совпадающий со значением селектора. Если такого варианта нет, выполняется оператор, следующий за словом else. Логика полного оператора CASE в виде блок-схемы дана на рис.5.4.

Сокращенный оператор условного перехода CASE:

case выражение of

вариант 1: оператор 1;

вариант 2: оператор 2;

...

вариант n: оператор n;

end;

Он отличается от полного только отсутствием альтернативы else, вследствие чего при невыполнении всех вариантов значений селектора никаких действий не производится. После завершения операторов CASE управление передается следующему по счету оператору. Блок-схема сокращенного оператора CASE приведена на рис.5.5.

Рис.5.4. Блок-схема полного оператора CASE Рис.5.5. Сокращенный оператор CASE

Пример 1 применения полного оператора CASE для распознавания типа одиночного символа ch:

case ch of

'A'..'Z', 'a'..'z' : WriteLn('Буква');

'0'..'9' : WriteLn('Цифра');

'+', '-', '*', '/' : WriteLn('Оператор');

else WriteLn('Специальный символ')

end;

Соответствующая блок-схема фрагмента программы для распознавания типа одиночного символа ch дана на рис.5.6.

Рис.5.6. Блок-схема фрагмента программы для распознавания типа одиночного символа ch

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