«

»

Pascal. Операторы условного и безусловного перехода

Оператор безусловного перехода

Большинство программистов считают использование в программе оператора безусловного перехода, знаком дурного тона и редко используют его. Но, не смотря на это, знать его надо, так как может оказаться, что Вы не сможете придумать альтернативного решения проблемы. Имя данного оператора 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.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Вы можете использовать эти теги HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Проверка на человечность *