Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на языке Паскаль в среде Turbo Pascal версии 6 и 7 (Курс лекций). Воронов Г.И.Санкт-Петербург 2010г.doc
Скачиваний:
90
Добавлен:
15.04.2015
Размер:
754.69 Кб
Скачать

Операторы ветвлений

Реализация структур ветвления на Паскале осуществляется с помощью условных операторов "if" и с помощью оператора – переключателя "case". В первом случае производится выбор одного из двух альтернативных путей, переключатель позволяет выбрать один (или не одного) из нескольких путей.

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

Это Простейший из условных операторов. Вид оператора:

if <логическое выражение> then goto <метка>;

Этому оператору соответствует структура (состоящая из одного блока), изображенная на рисунке

Рисунок 5. Структура оператора условного перехода

Оператор условного перехода является самым универсальным из всех управляющих операторов любого языка. С его помощью можно реализовать алгоритм любой сложности. Однако, как и оператор безусловного перехода, он не допустим в структурном программировании, и обладает всеми недостатками оператора goto. Обычно, он используется для организации итеративных циклов, иногда – для перехода на завершающие операторы программы.

Пример:

. . .

if DX < 1e-6 then goto finihs;

. . .

Оператор, следующий за условным переходом, обычно не помечается.

Условный переход является частным случаем неполного условного оператора.

Неполный условный оператор.

Вид оператора:

if <логическое выражение> then <простой или составной оператор>;

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

Этому оператору соответствует структура, изображенная на рисунке

да

нет

простой или составной оператор

Рисунок 6. Структура неполного условного оператора

Пример неполного условного оператора:

if Pr then {здесь Pr – логическая переменная,}

begin {если Pr равно TRUE выполнится этот блок}

Writeln(' При таких данных решения нет');

Pr:=FALSE;

end;

Как и предыдущие операторы, неполный условный не является оператором структурного программирования.

Полный условный оператор.

Вид оператора:

if <логическое выражение> then

<простой или составнойоператор ветви 1>

else

<простой или составнойоператор ветви 2>;

Этому оператору соответствует структура, изображенная на рисунке

да

нет

простой или составной оператор ветви1

простой или составной оператор ветви 2

Рисунок 7. Структура полного условного оператора

Примеры написания таких операторов:

if A>0 then Y:=sin(X) else Y:=cos(X);

if (A+B > C) and (B < 0) then { если требуется проверка}

Writeln('Ветвь 1') { нескольких условий, }

else { каждое отношение следует}

Writeln('Ветвь 2'); { заключать в скобки }

Если в качестве оператора одной из ветвей используется условный оператор, то можно выбирать один из трех возможных путей. Вообще, количество "if"-операторов должно быть на единицу меньше, чем возможных ветвей алгоритма. Например, если нужно задать Y=-1, при X<0, Y=0 при X=0 и Y=1 при X>0, такой алгоритм и соответствующий ему текст на Паскале будет выглядеть:

If X<0 then Y=-1

else

if Y>0 then Y=1

else Y=0;

Рисунок 8. Вложенный условный оператор

Условиями, определяющими какую ветвь алгоритма выполнять, являются логические выражения, принимающие значение TRUE или FALSE. В качестве таких выражений часто используются отношения между двумя однотипными данными. Турбо-Паскаль разрешает сравнивать вещественные, целочисленные, строчные и символьные данные, а также данные, описанные с помощью одного и того же описателя, но только на равенство и неравенство.

Лекция 15