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

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

СТРУКТУРНЫЕ ОПЕРАТОРЫ

Приоритеты операций сравнения и булевих операций

Все операции сравнения имеют равный приоритет и выполняются слева направо.

У булевых операций высочайший приоритет имеет not, за ним идет and, потом or и xor.

Группа булевих операций имеет приоритет более высокий чем группа сравнения.

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

 


Структурные операторысодержат другие операторы и руководят последовательностью их выполнения.

 

В OP структурными операторами есть:

1. составной оператор;

2. условные операторы:

оператор альтернативы іf,

оператор поливариантного выбора case;

3. операторы цикла:

оператор цикла с предусловием (while);

оператор цикла с посусловием (repeat until);

оператор цикла со счетчиком (For);

4. оператор присоединения (with).

Составным оператором является группа операторов, расположенная между ключевыми словами begin и end, которые называются операторными скобками.

Операторы, которые находятся в составном, выполняются в порядке их расположения.

Тело каждой программы представляет собой один составнлй оператор.

Составной оператор используют в тех случаях, когда синтаксис языка ОР допускает в определенной точке программы использования только одного оператора, а за алгоритмом в этом месте надо выполнить группу операторов.


В ОP включены два условных операторы – If и Case, каждый из которых может быть записан в двух формах: полной и неполной.

 

Дано два значения x и y (x¹y). Необходимо сравнить эти значения и напечатать имя большей переменной.

Для решения этой задачи довольно сравнить оба значения и в зависимости от результата сравнения вывести на печать символ «х» или «y».

Третьим шагом алгоритма была структура принятия решения – если х >y, то напечатать «, иначе напечатать «.

В языке ОР эту структуру можно записать с помощью оператора if.

Оператор if предназначен для реализации алгоритмической конструкции разветвления.


 

Рассмотрим пример который решает выше приведенную задачу.

program Ex_3;

var x, y : real;

begin

writeln('Enter x, y');

readln(x, y);

If x>y then writeln('X')

else writeln('Y')

end.

 

Полная форма оператора if имеет вид:

ifУсловие thenОператор1

elseОператор2;

где if, then, else – зарезервированные слова;

Условие – произвольное логическое выражение;

Оператор1, Оператор2 – произвольные операторы.

Блок-схема оператора представлена на рис. .


Действие оператора.

Сначала вычисляется Условие. Если это выражение является истинным (True), то выполняется Оператор1, который стоит после ключевого слова then и управление передается следующему за условным оператору (Оператор2 пропускается). Если выражение Условие является ошибочным (False), то Оператор1 пропускается, выполняется лишь Оператор2, который стоит после ключевого слова else и управление передается следующему за условным оператору.

 

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

 

Сокращенная форма оператора if имеет вид:

ifусловиеthenОператор;

Блок-схема представлена на рисунке .


Действие оператора.

Сначала вычисляется Условие. Если это выражение является истинным (True), то выполняется Оператор, который стоит после ключевого слова then и управление передается следующему за условным оператору. Если выражение Условие является ошибочным (False), то Оператор пропускается, управление сразу же передается на следующий за условным оператору.

 

В Pascal операторы разделяются символом ";".

Пример с ошибкой:

if A > В then С := А ; ¬ ошибка

else С := В;

 

В показанном выше примере точка с запятой, которая стоит перед ключевым словом else заканчивает текст оператора if. А это приводит к синтаксической ошибке, поскольку оператора, начинающегося с ключевого слова else в Pascal нет.

 

Чтобы не допускать таких ошибок, целесообразно запомнить такое правило:

Перед ключевым словом else символ ";" никогда не ставится.


 

Задача: «Нужно проверить принадлежит ли значение действительной переменной х отрезку [0; 1], и вывести соответствующее сообщение».

 
 

Решение задачи с использованием условного оператора выглядит следующим чином.

program Ex_4;

var x : real;

begin

writeln('Enter x');

readln(x);

If (x >=0 )and(x <= 1)

then write ('x belongs to [0; 1]')

else write ('x does not belongs to [0; 1]');

end.

 

 


 

Решим задачу. Данная целое значение а. Если число а – четное, то вычислить значение переменной b (b=4a), иначе вычислить переменную c ().

 

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

 

По синтаксису после ключевых слов then и else может стоять всего лишь один оператор. Если же в какой-нибудь из ветвей альтернативы (then или else) или сразу в обеих нужно выполнить больше операторов, то следует воспользоваться, составным оператором begin .. end который разрешает интерпретировать группу операторов как один оператор.

Заметим, что операторы, расположенные между ключевыми словами begin ... end, также как и везде, должны разделяться точкой с запятой.


 
 

program Ex_5;

var a, b : integer;

c : real;

begin

writeln('Enter a');

readln(a);

If a mod 2 =0

then

begin

b := 4*a;

writeln('b=', b)

end

else

begin

c := a/3;

writeln('c=', c:6:2)

end

end.

Еще одна синтаксическая сложность корректного использования оператора ifвозникает при написании вложенных операторов if.

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

Например;

if Условие1