Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Приложения к практическим ОАиП.docx
Скачиваний:
69
Добавлен:
10.06.2015
Размер:
213.59 Кб
Скачать

Разветвляющиеся алгоритмы

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

Условный оператор

Условный оператор IF позволяет изменить порядок выполнения команд в зависимости от некоторого логического условия, т.е. он осуществляет ветвление вычислительного процесса. Условный оператор имеет вид:

IF <условие> THEN <оператор1> [ELSE <оператор2>];

В случае истинности логического выражения, стоящего в условии, выполняется <оператор1>, а <оператор2> пропускается. При ложном значении логического выражения пропускается <оператор1> и выполняется <оператор2>.

Оператор IF может быть полным (присутствуют обе ветви) или неполным (Else-ветви нет, при ложном условии ничего не делается). По правилам каждая из ветвей может содержать либо один выполняемый оператор, либо несколько, объединенных в составной. Точка с запятой перед Else считается ошибкой.

Пример. Ввести целое число. Вывести соответствующий ему символ ASCII-таблицы, либо сообщить, что такого символа нет (0-31 - управляющие коды, затем до 256 - печатаемые символы).

program ascii_symbol;

var i:word;

begin

write('Введите целое число: '); readln(i);

if (i>31) and (i<256) then

writeln('Соответствующий символ - ', Chr(i))

else writeln('Такого символа нет');

readln

end.

Оператор выбора

Оператор выбора является обобщением условного оператора: он дает возможность выполнить один из нескольких операторов в зависимости от значения некоторого выражения, называемого селектором.

CASE <селектор> OF

<список меток 1> : <оператор 1>;

<список меток 2> : <оператор 2>;

. . . . . . . . . . . . .;

<список меток N> : <оператор N>;

ELSE <оператор>

END;

селектор - выражение любого перечисляемого типа, кроме вещественного;

оператор - любой оператор языка, в том числе и составной;

список меток - список разделенных запятыми значений выражения 'селектор' или одно его значение; тип метки и селектора должен быть одинаков;

Оператор варианта выбирает для исполнения тот ОПЕРАТОР, одна из меток которого равна текущему значению выражения СЕЛЕКТОР. Если ни одна из меток не равна текущему значению селектора, то никакие операторы не выполняются, либо выполняются операторы, следующие за зарезервированным словом ELSE (если такое имеется).

Ветвь Else не обязательна, и в отличие от оператора if, перед ней ставится точка с запятой. Если для нескольких значений <селектора> действия совпадают, то эти константы можно перечислить через запятую перед двоеточием или задать диапазон значений (нижняя граница .. верхняя граница).

Пример: Вводится целое число, если это цифра, то определить четная она или нет, а если число, то определить попадает ли оно в диапазон от 10 до 100, если нет, то выдать соответствующее сообщение.

program chislo;

var i:integer;

begin

write('Введите целое число: ');

readln(i);

case i of

0,2,4,6,8 : writeln('Четная цифра');

1,3,5,7,9 : writeln('Нечетная цифра');

10...100,200 : writeln('Число от 10 до 100 или 200');

else writeln('Число либо отрицательное, либо > 100, но не 200');

end;

readln

end.

ПРИЛОЖЕНИЕ 4