Оператор безусловного перехода Goto.
Case выражение of
Оператор выбора case.
Ранее Вы познакомились с условным оператором If, который позволяет программе выполнять переходы на ту или иную ветвь по значению булева условия. Используя несколько операторов If, можно производить ветвление по последовательности условий. В приведенном фрагменте показано, как при помощи ряда операторов If можно преобразовать целое число (в диапазоне 0-9) к его словесному представлению:
if Ziphra = 0 then write (‘Нуль‘);
if Ziphra = 1 then write (‘Единица‘);
if Ziphra = 2 then write (‘Два‘);
и т.д.
Оператор выбора позволяет выбрать одно из нескольких возможных продолжений программы. Параметром, по которому осуществляется выбор, служит так называемый ключ выбора (или селектор)– выражение любого типа (кроме типов REAL и STRING).
Общая форма записи следующая:
значение1 : оператор (группа операторов);
значение2 : оператор (группа операторов);
. . . . . . . . . . . . . . . . . . . . . .
значениеN : оператор (группа операторов)
else оператор (группа операторов);
end;
Оператор выбора работает следующим образом. Сначала вычисляется значение выражения, стоящее после зарезервированного слова case, а затем выполняется оператор (или составной оператор), соответствующий результату вычисления выражения.Может случиться, что в списке выбора не окажется константы равной вычисленному значению ключа. В этом случае управление передается оператору, стоящему за словом ELSE.
Например,
case NUMBER mod 2 of
0 : writeln (NUMBER, ‘- число четное‘)
else : writeln (NUMBER, ‘- число нечетное‘);
end;
Если один оператор выполняется при нескольких значениях, то их можно перечислить через запятую.
case MONTH of
1, 2, 3 : writeln (‘Первый квартал‘);
4, 5, 6 : writeln (‘Второй квартал‘);
7, 8, 9 : writeln (‘Третий квартал‘);
10, 11, 12 : writeln (‘Четвёртый квартал‘);
end;
Оператором может являться не только простой оператор, но также составной и пустой операторы.
case CODE of
1 : writeln (‘*******‘);
2 : begin {составной оператор}
x:=sqr(y-1);
writeln (x);
end;
3 : {пустой оператор}
end;
Если оператор должен выполняться при нескольких значениях селектора следующих друг за другом, образуя некоторый промежуток, то это можно записать в более сжатой форме. Например,
case Chislo of
0..9 : write (‘Это число является цифрой‘);
В языке принят естественный порядок выполнения программы: последовательный. Однако в практике программирования задач возникает необходимость безусловного перехода для выполнения нужной последовательности операторов. Например, необходимо обойти участок программы, а вернуться к нему позже. Для этого предназначен оператор безусловного перехода, который имеет следующую форму записи: goto метка;
Метка представляет собою число без знака в диапазоне 1-9999 либо последовательность латинских букв и цифр.
Перед использованием метка должна быть объявлена в разделе описания меток, который сразу следует за разделом описания используемых модулей:
Uses Crt, Graph;
Label
Metka1, Metka2;
Const P=3.14;
Var x : integer;
После описания метки ее можно использовать в программе. Метка записывается перед помечаемым оператором и отделяется от него двоеточием. А оператор goto должен помещен в то место программы, откуда выполняется переход. Оператор goto передает управление на оператор с заданной меткой. Оператор goto можно вставлять в любое место программы, где могут располагаться операторы языка. Приведём пример программы, применив в ней оператор безусловного перехода.
Program Number2;
Label Metka;
Var a, b, c : integer;
Begin
Metka : writeln(‘Введите цифру ‘);
readln(a);
case a of
0 : writeln (‘ноль‘); 1 : writeln (‘один‘); 2 : writeln (‘два‘); 3 : writeln (‘три‘);
4 : writeln (‘четыре‘); 5 : writeln (‘пять‘); 6 : writeln (‘шесть‘); 7 : writeln (‘семь‘);
8 : writeln (‘восемь‘); 9 : writeln (‘девять‘)
else
begin
writeln (‘Это число не является цифрой‘);
goto Metka;
end;
end; readln;End.
Теперь в этой программе мы заставляем пользователя правильно ввести цифру. Сколько бы раз пользователь ни вводил числа не из промежутка 0..9, программа будет выдавать сообщение об ошибочном вводе и снова просить ввести цифру.