Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1. Обработка данных на компьютере.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
172.54 Кб
Скачать

1.4.2. Оператор if

Условное выполнение задается с помощью оператора IF – выражения со стандартными словами IF, THEN, ELSE в следующей форме:

IF условие

THEN

оператор THEN

ELSE

оператор ELSE

Где оператор THEN и оператор ELSE – операторы языка Паскаль, например, оператор присваивания. Если условие выполняется, тогда Паскаль-машина выполняет оператор THEN, в противном случае - оператор ELSE.

Как правило, оператор IF записывается в вышеприведенной форме, IF, THEN и ELSE на отдельных строках, оператор THEN и оператор ELSE сдвинуты на два символа для лучшей читаемости программы.

PROGRAM MaxChar (INPUT, OUTPUT);

{Копирует наибольший из первых двух символов из INPUT в OUTPUT}

VAR

Ch1, Ch2, Max: CHAR;

BEGIN

READ(Ch1, Ch2);

IF Ch1 > Ch2

THEN

Max := Ch1;

ELSE

Max := Ch2;

WRITELN(‘MAX OF ’, Ch1, ‘, ‘, Ch2, ‘ IS ‘, Max, ‘.’);

END.

INPUT : AZURE

OUTPUT : MAX OF A, Z IS Z.

INPUT : 1234

OUTPUT : MAX OF 1, 2 IS 2.

INPUT : 77

OUTPUT : MAX OF 7, 7 IS 7.

Вышеприведенная программа также демонстрирует нам эхо ввода и аннотированный вывод.

Частичная таблица выполнения для программы MaxChar

Условие

INPUT

Ch1

Ch2

Max

BEGIN

READ(Ch1, Ch2)

IF Ch1 > Ch2

ELSE

Max := Ch2

WRITELN(Max)

END

No

AZURE

AZURE

AZURE

AZURE

AZURE

?

A

A

A

?

Z

Z

Z

?

?

Z

Z

Оператор IF в этой таблице отсутствует потому, что он ее выполнялся. Значения не показаны в тех строках таблицы, где они не могут быть изменены.

Оператор ELSE может быть пропущено в операторе IF, в таком случае он будет записываться в следующей форме:

IF условие

THEN

оператор THEN

В данном случае, если условие в выражении IF не выполняется, Паскаль-машина ничего не делает. Программа MaxTwo выполняет ту же работу что и программа MaxChar, но с использованием оператора IF без выражения ELSE.

PROGRAM MaxTwo (INPUT, OUTPUT);

{Копирует наибольший из первых двух символов из INPUT в OUTPUT}

VAR

Ch1, Ch2: CHAR;

BEGIN

READ(Ch1, Ch2);

WRITE(‘MAX OF ’, Ch1, ‘, ‘, Ch2, ‘ IS ‘);

IF Ch1 < Ch2

THEN

Ch1 := Ch2;

WRITELN(Ch1, ‘.’);

END.

INPUT : AZURE

OUTPUT : MAX OF A, Z IS Z.

1.4.3. Оператор begin

В операторе IF выражение THEN и выражение ELSE могут быть расширены при использовании оператора BEGIN, который задает последовательность операторов заключенных между стандартными словами BEGIN и END и разделенными точкой с запятой. Внутри стандартных слов BEGIN и END могут встречаться любые операторы, в том числе – операторы BEGIN.

В условном операторе оператор BEGIN либо выполняется полностью, либо не выполняется вообще, в зависимости от результатов проверки условия.

PROGRAM MaxMin (INPUT, OUTPUT);

{Копирует из INPUT в OUTPUT наибольший из

первых двух символов, затем - наименьший}

VAR

Ch1, Ch2: CHAR;

BEGIN

READ(Ch1, Ch2);

WRITELN(‘MAX OF ’, Ch1, ‘, ‘, Ch2);

IF Ch1 > Ch2

THEN

BEGIN

WRITELN(Ch1);

WRITELN(Ch2)

END

ELSE

BEGIN

WRITELN(Ch2);

WRITELN(Ch1)

END

END.

INPUT : AZURE

OUTPUT : MAX OF A, Z

Z

A

INPUT : 1234

OUTPUT : MAX OF 1, 2

2

1

Список операторов внутри оператора BEGIN может быть пустым. В таком случаем говорят, что внутри оператора BEGIN присутствует пустой оператор. Пустой оператор ситуация довольно часто встречается в Паскаль-программах.

Если рассмотреть внимательно следующий фрагмент кода

BEGIN

Ch1 := Ch2;

END

Оператор присваивания заканчивается точкой с запятой, которая является разделителем. Следовательно, в операторе BEGIN два оператора: оператор присваивания и пустой оператор после точки с запятой.

В примере ниже выражение THEN содержит пустой оператор

IF Ch1 < Ch2

THEN

ELSE

Ch1 := Ch2

Внутри выражения THEN или выражения ELSE может быть использован оператор IF. В случае вложенности операторов IF Паскаль-машина ассоциирует выражение ELSE c ближайшим оператором IF.

PROGRAM Max3 (INPUT, OUTPUT);

{Копирует из INPUT в OUTPUT наибольший из

первых трех символов}

VAR

Ch1, Ch2, Ch3: CHAR;

BEGIN

READ(Ch1, Ch2, Ch3);

WRITELN(‘MAX OF ’, Ch1, ‘, ‘, Ch2, ‘, ‘, Ch3, ‘ IS ‘);

IF Ch1 > Ch2

THEN

IF Ch1 > Ch3

THEN

WRITE(Ch1)

ELSE

WRITE(Ch3)

ELSE

IF Ch2 > Ch3

THEN

WRITE(Ch2)

ELSE

WRITE(Ch3)

WRITELN(‘.’)

END.

INPUT : AZURE

OUTPUT : MAX OF A, Z, U IS Z

INPUT : 1234

OUTPUT : MAX OF 1, 2, 3 IS 3

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]