Урок 4.2. Структурированные операторы языка Pascal

Оператор IF..THEN..ELSE

Оператор IF..THEN..ELSE проверяет на истинность условие, которое следует следом за словом IF(Если) и в случае истинности выполняет то, что следует после зарезервированного слова THEN(тогда). Приведу пример и разберем его:

If a>b Then a:=a+b Else b:=b+a;

Оператор IF проверяет правда ли, что a больше b. Если правда, то выполняем присвоение после THEN a:=a+b, в противном случае (если ложь) выполняем то, что следует после ELSEb:=b+a.

В результате выполнения этой строчки в Паскале, переменной a присваивается значение выражения справа, т.е. значение a будет равно 45.

Для лучшего понимания и усвоения материала приведу пример, усовершенствовав конвертер из листинга 4.1.1.

Листинг 4.2.1

Program Converter_1;
Uses Crt;

Const pound = 0.45359237;

Var m:real;
    f:byte;

Begin
	ClrScr;
	Write('Выберите режим конвертации: 1) фунт -> кг; 2) кг -> фунт');
	ReadLn(f);
	Write('Введите массу: ')
	ReadLn(m);
	If f=1 Then m := m * pound Else m := m / pound;
	Write('Результат равен: ', m);
	ReadLn()
End.

Пришло время сказать об еше одном операторе, о котором я не стал рассказывать отдельно, но он очень часто используется в программах — это составной оператор. Составной оператор - это совокупность последовательно выполняемых операторов, заключенных в операторные скобки begin и end:

Begin
	<оператор_1>
	<оператор_2>
	<оператор_3>
	...
	<оператор_n>
End;

Рассмотрев структуру составного оператора сразу становится понятно, что это просто группа операторов. И сразу на примере нашего конвертера реализуем программу с использованием составных операторов.

Листинг 4.2.2


Program Converter_2;
Uses Crt;
Const
	pound = 0.45359237;
Var 
	m:real;
	f:byte;
Begin
	ClrScr;
	Write('Выберите режим конвертации: 1) фунт -> кг; 2) кг -> фунт');
	ReadLn(f);
	Write('Введите массу: ')
	ReadLn(m);
	If f=1 Then 
		Begin
			m := m * pound;
			Write('Результат равен: ', m, ' кг');
		End;
	Else 
		Begin
			m := m / pound;
			Write('Результат равен: ', m, ' фунтов');
		End;
	ReadLn()
End.

В Листинге 4.2.2 в строках 15 и 20 Я ввел составные операторы - операторы состоящие из группы операторов(простите за тофтологию) объедененные в операторные скобки begin и end.

Оператор CASE

Это так называемый оператор выбора. Хорошим примером для данного оператора может послужить автомат с напитками, где нужно нажать кнопку соответствующую напитку, который Вы хотите.

Кнопка 1	-	Coca-Cola
Кнопка 2	-	Fanta
Кнопка 3	-	Sprite
Кнопка 4	-	Aqua Minerale
Кнопка 5	-	Тархун

Т.е. когда Вы нажмете кнопку 3, то автомат выдаст Вам Sprite, конечно если Вы заплатили до этого =). По подобному принципу работает оператор CASE. Приведу пример программы для автомата с напитками.

Листинг 4.2.3

Program Napitki;

Uses Crt;

Var button:1..8;

Begin
	ClrScr;
	WriteLn('Choose:' , #13, #10, '1: Coca-Cola', #13, #10, '2: Fanta', #13, #10, '3: Sprite', #13, #10, '4: Aqua Minerale');
	ReadLn(button);
	Case button of
		1 : WriteLn('Вы выбрали Coca-Cola! ');
		2 : WriteLn('Вы выбрали Fanta! ');
		3, 4 : WriteLn('Извините, этого напитка нет.');
		Else WriteLn('Такого напитка нет!');
  End;
	ReadLn
End.

Программа выполняется в зависимости от значения переменной button. Не обращайте внимания на #13, #10 - это всего лишь спецсимволы перевода строки и возврата каретки, я их использовал просто для красивого вывода списка напитков.

Оператор FOR

Оператор цикла FOR выполняет следующий после него оператор (как правило, это составной оператор заключенный в "операторные скобки" Begin..End), каждый раз изменяя переменную цикла с шагом 1. Если стоит to, то переменная увеличивается, если downto – уменьшается.

Условия выполнения цикла проверяются перед выполнением блока операторов. Если переменная цикла больше максимального значения (при to) или меньше минимального (downto), то цикл FOR не выполняется.

В листинге 4.2.4 программа подсчитывает сумму чисел от a до b.

Листинг 4.2.4

Program Summa;

Var a, b, S: Integer;

Begin
	ClrScr;
	Write('a = ');
	Readln(a);
	Write('b = ');
	Readln(b);
	S:=0;
	For I:=a To b Do
		S:=S + I;
	Writeln ('Cумма = ', S);
	ReadLn
End. 

Оператор WHILE

Оператор While

Оператор REPEAT

...