Краткие теоретические сведения. В языке ПАСКАЛЬ имеется два оператора, позволяющих выполнять действия в зависимости от результата вычисления выражения (“разветвлять” программу).

В языке ПАСКАЛЬ имеется два оператора, позволяющих выполнять действия в зависимости от результата вычисления выражения (“разветвлять” программу).

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

Оператор if, реализующий алгоритмическую конструкцию “Развилка”, изменяет порядок выполнения операторов в зависимости от истинности (ложности) некоторого условия. Его общий вид:

ifSthenAelseB ;

или

ifSthenA;

где S – некоторое логическое выражение, истинность которого проверяется;

A – любой оператор (простой или составной) ) языка ПАСКАЛЬ, который выполняется, если выражение S истинно;

B – любой оператор (простой или составной) ) языка ПАСКАЛЬ, который выполняется, если выражение S ложно.

Оператор условия if (ЕСЛИ) выполняется следующим образом. Сначала вычисляется выражение, записанное в условии. В результате его вычисления получается значение булевского типа. В первом случае, если значение выражения есть истина (True), выполняется оператор A, указанный после слова then (ТО), а если результат вычисления выражения в условии есть ложь (False), то выполняется оператор B,указанный после словаelse(ИНАЧЕ).

Во втором - если результат выражения True, выполняется оператор A, если False - оператор, то оператор, следующий сразу за оператором if, конечно, если таковой имеется.

Операторы if могут быть вложенными.

Примечание:

При использовании вложенных условных операторов может возникнуть синтаксическая неоднозначность, иллюстрируемая следующей схемой:

if S1 then if S2 then A else B;

Возникающая двусмысленность, к какому оператору if принадлежит часть else B, разрешается тем, что служебное слово elseвсегда ассоциируется (связывается) с ближайшим по тексту служебным словом if, которое еще не связано со служебным словом else, то есть в рассматриваемом примере со вторым.

В связи с этим следует проявлять аккуратность при записи вложенных операторов условия.

 

Оператор ветвления case

При помощи этого оператора можно выбрать действие из любого количества вариантов. Он состоит из выражения, называемого селектором (selection - выбор альтернативы), и списка параметров, каждому из которых предшествует список констант выбора (список может состоять и из одной константы). Структура этого оператора имеет вид:

CaseSof

C1 : instruction1 ;

C2 : instruction2 ;

CN : instructionN

elsedefault_instruction_list;

end;

где S – выражение порядкового типа, значение которого как‑то вычисляется;

C1, C2, … CN – списки констант, того же типа, с которыми сравнивается выражение S, константы в списке разделяются символом “,” (запятая);

instruction1, instruction2, …, instructionN – любые операторы (простые или составные) языка ПАСКАЛЬ, из которых выполняется только тот, с константой которого совпадет вычисленное значение выражения S;

default_instruction_list – последовательность операторов, разделенных символом “;”(точка с запятой), которая выполняется, если вычисленное значение выражения S не совпадает ни с одной из констант C1, C2, … CN.

Примечание:

1) Значение выражения S и констант C1, C2, … CN должны быть одного и того же скалярного типа, кроме real.

2) Константы C1, C2, … CN метками не являются, следовательно, их не требуется описывать в разделе меток label и на них нельзя переходить при помощи оператора перехода goto.

3) Все константы в альтернативах должны быть уникальны в пределах оператора варианта, то есть повторения констант в альтернативах не допускаются; диапазоны не должны пересекаться и не должны содержать констант, указанных в данной или других альтернативах.

4) Секция « elsedefault_instruction_list; » может отсутствовать.

Ниже приведены типичные формы записи оператора case.

Селектор интервального типа:

CaseI of

1..10 : Writeln ('число ', I:4, ' в диапазоне 1 - 10');

11..20 : Writeln ('число ', I:4, ' в диапазоне 11 - 20');

21..30 : Writeln ('число ', I:4, ' в диапазоне 21 - 30')

else Writeln ('число ', I:4, ' вне пределов контроля')

end;

Селектор целочисленного типа:

CaseI of

1 : Z := I + 10;

2 : Z := I + 100;

3 : Z := I + 1000

end;

Селектор перечисляемого пользовательского типа:

Var Season: (Winter, Spring, Summer, Autumn);

begin

CaseSeason of

Winter : Writeln('Winter');

Spring : Writeln('Spring');

Summer : Writeln('Summer');

Autumn : Writeln('Autumn')

end;

end;

Задача №1

Написать программу, которая запрашивает у пользователя координаты точки на плоскости
(x, y) и сообщает ему, попадает ли эта точка в заданную область. Проверку сложных условий производить в одном операторе ветвления, записывая условие в виде логического выражения.

Задача №2

Написать программу, которая запрашивает у пользователя координаты точки на плоскости
(x, y) и сообщает ему, попадает ли эта точка в заданную область. Проверку сложных условий производить последовательностью операторов ветвления.