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

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

УСЛОВНЫЙ ОПЕРАТОР IF – проверяет некоторое условие, которое может принимать одно из двух значений (False, True), и определяет, в соответствии с этим значением, одно из двух возможных направлений выполнения программы. В качестве условия в операторе IF может использоваться либо логическая переменная, либо выражение типа «отношение», принимающее после вычисления одно из логических значений ИСТИНА (True) или ЛОЖЬ (False). Существует два варианта структуры условного оператора.

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

If условие then оператор1 else оператор2;

Здесь оператор1, оператор2 – простые или составные операторы. Оператор1 выполняется при значении условия True, после чего программа переходит к оператору, следующему за знаком «;». Если условие принимает значение False, то выполняется оператор2 и программа также переходит к оператору за знаком ‘;’ (точка с запятой).

Второй вариант условного оператора (сокращенная форма):

If условие then оператор1;

Здесь если условие истинно, то есть условие принимает значение True, то выполняется оператор1, иначе, при значении условия False, никаких действий не производится и программа переходит к оператору, следующему за знаком ‘;’.

Как отмечалось в определении вариантов условного оператора IF, оператор1 и оператор2 – любые операторы (простые или составные), в том числе может быть и условный оператор. Тогда возможно появление структуры условного оператора, содержащего также условный оператор:

IF условие1 THEN {следующая строчка – оператор 1 – условный оператор:} If условие2 then оператор21 else оператор22

ELSE оператор2;

Однако наличие сокращенной формы условного оператора в этом случае требует большой осторожности и аккуратности программиста [см. также 5], так как, например, условный оператор вида if условие1 then

if условие2 then

оператор1

else оператор2

допускает две разные трактовки: как полный условный оператор

if условие1 then

begin if условие2 then оператор1

end else оператор2;

и как сокращенный условный оператор

if условие1 then

begin if условие2 then оператор1 else оператор2

end;

По правилам языка Паскаль верной считается вторая трактовка [5]: каждое слово Else соответствует первому предшествующему ему слову Then. Для избежания ошибок и недоразумений, связанных с отмеченным обстоятельством, рекомендуется желаемую форму условного оператора выделять, заключая в операторные скобки оператор, предшествующий слову Else:

If условие1 then

Begin{начало оператора 11:}

If условие2 then оператор21 else

Begin {начало оператора 22:}

If условие3 then оператор31 else

оператор32

End {конец оператора 22:}

Еnd{конец оператора 11:}

ELSE оператор12;

Ниже рассмотрены примеры применения условного оператора.

Пример1. (Применение полной формы условного оператора). Пусть требуется вычислить функциюY, принимающую значение –3(Х+2) при Х<0 и значение 5X при Х>=0. Такое вычисление можно выполнить с помощью одного условного оператора:

IF X<=0 THEN Y:= -3*(X+2) ELSE Y:= 5*X;

Пример2. (Применение составного оператора). Пусть требуется вычислить площадь круга S и длину окружности L по заданному радиусу R при выполнении некоторого условия А > D:

IF A>D THEN {далее – составной оператор, включающий два простых оператора:}

Begin S:=pi*R*R; L:=2*pi*R End;

Примечание. Этот оператор записан синтаксически правильно, так как в языке Паскаль допускается произвольное расположение операторов по строкам. Однако в соответствии с принципами структурирования программ (см. главу 4) для наглядности лучше записать так:

IF A>D THEN

Begin

S:=pi*R*R; L:=2*pi*R

{перед End знак «точка с запятой» в Паскале можно не cтавить}

End;

Очевидно, что для корректного вычисления S и L необходимо провести проверку еще одного условия “R>=0” и в случае невыполнения его выдать на монитор соответствующее сообщение.

Ниже приводится два варианта программирования этой задачи:

{ Вариант первый: два условия объединены в одно логической операцией And(И), которая означает «одновременно, и то и другое»:}

IF (A>D) and (R>=0) THEN

Begin

S:=pi*R*R; L:=2*pi*R

End

ELSE write(‘Вычисления невозможны, так как условие

ложно’);{объединение двух условий в одно не позволяет выявить точную причину невозможности вычисления, так как результатом логического умножения будет значение False при получении значения False любым из сомножителей, то есть при нарушении любого из отдельных условий, входящих в логическое произведение, или при нарушении обоих условий одновременно }

{ Вариант второй: условия разделены и проверяются разными условными операторами:}

IF (A>D) THEN

BEGIN

If (R>0) then

Begin

S:=pi*R*R; L:=2*pi*R

End

Else write(‘Вычисления невозможны, так как радиус R<=0’)

END

ELSE write(‘Вычисления невозможны, так как условие A>D не выполнено’);

ОПЕРАТОР БЕЗУСЛОВНОГО ПЕРЕХОДА (по метке) – имеет структуру GOTO metka; и служит для безусловного (обязательного) изменения направления последовательности выполнения операторов программы. Здесь metka – код (целое без знака) или слово, указывающие на оператор, который будет выполняться после оператора GOTO metka.

Примечание. Согласно принципам структурного программирования оператор безусловного перехода использовать не рекомендуется.