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

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

Условный оператор if используется для разветвления процесса вычислений на два направления. Структурная схема оператора приведена на рис. 24.2.

Формат оператора:

if выражение then оператор_1 [else оператор_2;]

Сначала вычисляется выражение, которое должно иметь логический тип. Если оно имеет значение true, выполняется первый оператор, иначе – второй. После этого управление передается на оператор, следующий за условным.

Структурная схема условного оператора: а – условный оператор с двумя ветвями; б – сокращенный условный оператор

Рис. 24.2. Структурная схема условного оператора:

а – условный оператор с двумя ветвями; б – сокращенный условный оператор

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

Примеры:

if а < 0 then b:= 1; {1}

if (а < b) and ((а > d) or (a = 0)) then inc (b) else begin

b:= b * a; a:= 0

end; {2}

if a < b then

if a < c then m:= a else m:= c else

if b < c then m:= b else m:= c; {3}

Если требуется проверить несколько условий, их объединяют знаками логических операций. Так, выражение в примере {2} будет истинно в том случае, если выполнится одновременно условие а < b и хотя бы одно из условий а > d или а = 0.

Частая ошибка при программировании условных операторов – неверная запись проверки на принадлежность диапазону. Например, условие 0 < х < 1 нельзя записать непосредственно. Правильный способ: if (0 < х) and (х < 1) then..., поскольку фактически требуется задать проверку выполнения одновременно двух условий: х > 0 их < 1.

Вторая ошибка – отсутствие блока после else, если на самом деле по этой ветви требуется выполнить более одного действия. Эта ошибка не может быть обнаружена компилятором, поскольку является не синтаксической, а семантической, т.е. смысловой.

Написать программу, которая по введенному значению аргумента вычисляет значение функции, заданной в виде графика (рис. 24.3). Сначала составим описание алгоритма в неформальном словесном виде.

  • 1. Ввести значение аргумента х.
  • 2. Определить, какому интервалу из области определения функции оно принадлежит и вычислить значение функции у по соответствующей формуле.
  • 3. Вывести значения х и у.

Второй пункт алгоритма следует детализировать. Сначала запишем определение функции в виде формул:

Функция, заданная в виде графика

Рис. 24.3. Функция, заданная в виде графика

Теперь в соответствии с формулами опишем последовательность действий словами:

■ если х < -2, то присвоить переменной у значение 0;

■ если -2 < х < -1, то присвоить переменной у значение -х- 2;

■ если -1 < х < 1, то присвоить переменной у значение х; и т.д. program calc_function_l;

var х, у: real;

begin

writeln (' Введите значение аргумента'); readln (х);

if х < -2 then y:= 0;

if (x >= -2) and (x < -1) then y:= -x – 2;

if (x >= -1) and (x < 1) then y:= x;

if (x >= 1) and (x < 2) then y:= -x + 2;

if x >= 2 then y:= 0;

writeln ('Для x = x:6:2, ' значение функции у = y:6:2);

end

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

 
< Пред   СОДЕРЖАНИЕ     След >