logo
lab_rab5_6

1.1.9 Операторы перехода (безусловный и условные)

Оператор безусловного перехода goto используется в тех случаях, когда необходимо изменить порядок выполнения программы, чтобы выполнялся не следующий оператор, а другой. Использование оператора перехода требует введение в программу меток. Метка может предшествовать любому оператору и отделяется от него двоеточием. Должна быть предварительно описана в разделе Label. Используется очень редко, только в случае, если надо передать управление впереди стоящему оператору. Необходимо учитывать, что при использовании оператора перехода, если он не является последним, также необходимо ставить метку на следующий за ним оператор.

В Turbo Pascal есть два условных оператора: if и case, но исторически сложилось, что оператор if называют условным, а оператор case – оператором выбора или варианта.

Условный оператор if используется в полной и неполной форме.

Неполная форма: if Условие then Оператор1;

полная форма: if Условие then Оператор1 else Оператор2;

Если условие верно (TRUE), то выполняется Оператор1, если условие ложно (FALSE), то в случае неполной формы выполняется следующий оператор, в случае полной формы – Оператор2.

Особенности: Выбирает только одно из двух возможных действий.

Нельзя ставить символ «;» ни перед then, ни перед else. Только внутри составных операторов (Оператор1 и Оператор2 могут быть как простыми, так и составными).

Оператор выбора case позволяет выполнить одно из нескольких действий в зависимости от значения переменной-переключателя.

case Переключатель of

Список1: Оператор1;

Список2: Оператор2;

СписокN: ОператорN

else ОператорEnd

end;

Порядок работы: Если переменная-переключатель принимает одно из значений Списка1, то выполняется Оператор1, а остальные пропускаются и т.д. ОператорEnd будет выполняться, если значение переключателя не совпало ни с одним из значений предыдущих списков.

Необходимо также учесть:

Примеры использования

1. Ввести с экрана символ. Определить вид символа: цифра, буква и т.п.

Var MyChar: Char;

Begin

ReadLn(MyChar);

case MyChar of

‘0’..’9’: WriteLn(‘Это цифра’);

‘A’..’Z’: WriteLn(‘Это прописная буква’);

‘a’..’z’: WriteLn(‘Это строчная буква’)

else WriteLn(‘Это символ’)

end;

End.

2. Ввести номер месяца. Напечатать номер квартала.

Var MyNum: Integer;

Begin

ReadLn(MyNum);

case MyChar of

1..3: WriteLn(‘I’);

4..6: WriteLn(‘II’);

7..8: WriteLn(‘III’);

9..12: WriteLn(‘IV’)

else WriteLn(‘Номер месяца должен быть от 1 до 12!’)

end;

End.