Оператор безусловного перехода:
Большинство программистов считают использование в программе оператора безусловного перехода, знаком дурного тона и редко используют его. Но, не смотря на это, знать его надо, так как может оказаться, что Вы не сможете придумать альтернативного решения проблемы. Имя данного оператора Goto, смысловое значение в программе «перейти к …», а его общий вид такой:
Goto m;
m – метка, заранее заданная в разделе описания меток. Следующая программа показывает как работает оператор безусловного перехода.
1
2 3 4 5 6 7 8 9 10 |
program goto_primer; {имя программы}
uses crt; {подключение модуля} label m; {описание метки m} begin write(‘Karl Marx ‘); {вывод строки} goto m; {требование перейти к метки} write(‘clever’); {этот оператор пропускается} m: write(‘fool’); {выполняется переход в эту область} readkey; {для останова программы} end. |
В этой программе нет никаких условий, но именно о них будет идти далее речь.
Условный оператор:
В Паскале проверить какую-то часть программы для определения дальнейшего пути, по которому ей следует идти, есть оператор If. В зависимости от выполнения логического условия он указывает, какой блок выполниться следующим. Существует две формы записи: полная и краткая. Вторая отличается от первой тем что в ней имеется ветвь Else (иначе).
Общий вид краткой формы:
If <условие A> Then <оператор 1>;
Общий вид полной формы:
If <условие A> Then <оператор 1>
Else <оператор 2>;
В краткой форме выполняется оператор 1 тогда, когда условие A истинно, иначе управление переходит к следующему оператору. В полной форме если условие A истинно, то выполняется оператор 1, иначе выполняется оператор 2. Следует запомнить, что перед else точка с запятой не ставится.
Пример программы с условным оператором, записанным в краткой форме:
1
2 3 4 5 6 7 8 9 10 11 |
program if_else;
uses crt; var Dima, Misha: integer; begin Misha:=18; write(‘Сколько лет Диме? ‘); {вывод сообщения} read(Dima); {ввод данных} if Dima=Misha then {если возраст Димы равен возрасту Мише, то …} write(‘Миша и Дима ровесники’); readkey; end. |
Пример программы с условным оператором, записанным в полной форме:
1
2 3 4 5 6 7 8 9 10 11 12 13 |
program if_else;
uses crt; var Dima, Misha: integer; begin Misha:=18; write(‘Сколько лет Диме? ‘); read(Dima); if Dima=Misha then (* если возраст Димы равен возрасту Мише, то выполняется оператор 1 *) write(‘Миша и Дима ровесники’) {оператор 1} else write(‘Миша и Дима не ровесники’); {иначе …} readkey; end. |
В Паскале можно вкладывать один условный оператор в другой, причем делать это можно множество раз. При этом следует отметить, что каждому Then соответствует ближайшее Else.
Оператор выбора:
Когда количество альтернатив больше двух применяется оператор выбора Case. Его вид:
Case <селектор> Of
<значение селектора>: <оператор 1>;
<значение селектора>: <оператор 2>;
. . .
<значение селектора>: <оператор N>;
Else <оператор>
End;
Если селектором оператора If было логическое выражение, то в Case им выступает переменная, которая может быть целого, перечислимого, интервального или символьного типа. В случае совпадения селектора со значения выполняется соответствующий оператор. Задать значение селектору можно тремя способами:
1) перечислением: 1, 10, 100, 1000
2) диапазоном: ‘d’..’k’
3) перечислением и диапазоном: 1..10, 20, 30, 50, 70..100
Выполнятся в операторе выбора, может только одна ветка (идущая раньше), даже когда селектор совпадает с несколькими значениями. Также, в отличие от If в Case можно ставить точку с запятой перед Else.
Рассмотрим программу, в которой условия проверяет оператор выбора.
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
program case_primer;
uses crt; var money: char; begin write(‘Первая буква кода денежной единицы: ‘); readln(money); {ввод значение в переменную} case money of ‘A’, ‘a’: writeln (‘Французский франк’); ‘B’, ‘b’: writeln (‘Динар’); ‘C’, ‘c’: writeln (‘Юань’); ‘E’, ‘e’: writeln (‘Испанская песета’); ‘G’, ‘g’: writeln (‘Английский фунт стерлингов’); ‘I’, ‘i’: writeln (‘Итальянская лира’); ‘J’, ‘j’: writeln (‘Иена’); ‘R’, ‘r’: writeln (‘Рубль’); ‘U’, ‘u’: writeln (‘Доллар США’); ‘X’, ‘x’: writeln (‘Восточнокарибский доллар’); else writeln (‘Неизвестная единица’) end; readkey; end. |
Программа проверяет селектор на соответствие его с имеющимися значениями. Если совпадений не находится, то выполняется блок Else.