Разветвляющийся вычислительный процесс, содержащий две ветви, схематично может быть изображен с помощью структуры выбора (структура разветвления), которая содержит три элемента: логическое условие, ветвь ДА и ветвь НЕТ.
Структура выбора в языке Паскаль реализуется с помощью условного оператора (оператора условного перехода), который позволяет в зависимости от значения некоторого логического выражения выполнить один из двух входящих в него операторов.
Оператор имеет следующий вид:
IF (логическое выражение)
THEN (оператор 1)
ELSE (оператор 2);
Условный оператор может не иметь конструкции ELSE, такая форма оператора называется сокращенной:
IF<логическое выражение> THEN <оператор>;
Форма записи оператора IF с ELSE называется полной.
Условные операторы могут иметь вложенную конструкцию, когда после THEN или ELSE используется также условный оператор. При этом справедливо следующее правило:
ELSE всегда относится к ближайшему слева оператору IF.
Пример:
Программа вводит с клавиатуры целое число в диапазоне от 0 до 15, преобразует его к шестнадцатеричной системе счисления и выводит результат на экран
PROGRAM A2;
var
n: INTEGER; { вводимое число }
ch: char; { результат }
BEGIN
write('n='); readln(n);{ ввести число
проверить число на принадлежность к
диапазоне 0...15}
if (n>0) and (n<15) then
BEGIN
if n<10 then
ch:=chr(ord(&A')+n-10);
writeln('n=',ch)
END
else { не принадлежит диапазону }
wtiteln ('ошибка')
END.
Если в какую-нибудь ветвь разветвления требуется вставить несколько операторов, то они объединяются в один, составной оператор, для чего вначале группы этих операторов записывается слово BEGIN (начало), а в конце – служебное слово END (конец):
BEGIN
(оператор 1);
(оператор 2);
(оператор N);
END;
Оператор варианта является обобщением условного оператора. Он дает возможность выполнить один из нескольких операторов в зависимости от значения некоторого выражения, называемого селектором. В общем случае оператор имеет вид: CASE (селектор) OF
(Значение селектора 1): (оператор 1);
(Значение селектора 2): (оператор 2);
(Значение селектора n):(оператор n)
END;
где CASE (выбор), OF (из), END (конец) – служебные слова; селектор-выражение любого простого типа, кроме вещественного; оператор-любой оператор языка, в том числе и составной; список значений селектора – список разделенных запятыми значений выражений селектор или одно его значение. Эти константы, следовательно, должны иметь тот же тип, что и селектор, и называются они метками варианта.
Пример :
CASE НОМЕР OF
2: Y:=1;
4: Y:=2;
6: Y:=3;
8: Y:=4; 12: Y:=5;
END ;
В зависимости от значения селектора НОМЕР значение переменной Y вычисляется по одной из перечисленных формул.
Общий вид оператора: GOTO <метка>, где goto (идти к) – служебное слово; МЕТКА – целое число без знака, определяемое в разделе LABEL как метка оператора.
Применение оператора безусловного перехода в языке Паскаль является необязательным и нежелательным, т.к. присутствие этого оператора в программе нарушает ее структурную целостность и наглядность, такую программу становится трудно читать, отлаживать и модифицировать. Используют оператор GOTO лишь в исключительных случаях, например, для выхода из структурного (составного) оператора при возникновении особой ситуации в программе.