Условные операторы
В Турбо Паскале различают два вида условных операторов: короткий и полный.
Короткий условный оператор
Общий вид
записи:
IF <логическое выражение> THEN <P>;
где P – любой оператор.
Работа оператора
Сначала вычисляется логическое выражение (ЛВ), и если оно имеет значение TRUE, то выполняется оператор P, стоящий за служебным словом THEN. В противном случае оператор P игнорируется.
Графическая интерпретация оператора
В блок-схемах короткому условному оператору соответствует структура ЕСЛИ – ТО.
Замечание. По определению в конструкцию короткого условного оператора может входить только один оператор P. Если по заданному условию необходимо выполнить несколько операторов, то их заключают в операторные скобки BEGIN ... END, образуя таким образом единый составной оператор. Тогда запись оператора с использованием операторных скобок имеет следующий вид:
IF <логическое выражение> THEN
begin
<оператор 1>;
………………
<оператор n>;
end;
Пример
Переменной y присвоить минимальное значение из трех различных чисел, т.е. y = min (a, b, c).
Блок-схема
Программа
Program P;
Var
a, b, c, y: real;
Begin
writeln (‘Введите числа a, b, c’);
read (a, b, c);
y := a;
if b<y then y := b;
if c<y then y := c;
writeln (‘y =’, y:6:2);
End.
Полный условный оператор
Общий вид
записи:
IF <логическое выражение> THEN P1 ELSE P2;
где P1, P2 – любые операторы.
Работа оператора
Вычисляется логическое выражение, и если оно имеет значение TRUE, то выполняется оператор P1, стоящий после служебного слова THEN. В противном случае выполняется оператор P2, стоящий после служебного слова ELSE .
Графическая интерпретация оператора
В блок-схемах полному условному оператору соответствует структура ЕСЛИ – ТО – ИНАЧЕ.
Замечание. Операторы P1 и P2 входят в конструкцию полного условного оператора как единственные. Если возникает необходимость выполнить в ветвях несколько операторов, то их заключают в операторные скобки BEGIN…..END. Вид записи условного оператора в этом случае следующий.
IF <логическое выражение> THEN
begin
<оператор 1>;
……………... P1
<оператор n>;
end
ELSE
begin
<оператор 1>;
……………... P2
<оператор m>;
end;
Пример1. Вычислить значение переменной у по одной из двух ветвей:
y =
Блок-схема
Программа
Program P_1;
Var
x, y: real;
Begin
writeln (‘Введите число x’);
read (x);
if x>0 then y := ln(x) else y := exp(x);
writeln (‘y =’ , y:6:2);
End.
Пример 2. Вычислить корни полного квадратного уравнения ax2+bx+c=0. В программе предусмотреть проверку дискриминанта на знак. Если дискриминант окажется отрицательным, то вывести сообщение “Корни мнимые”.
Программа
Program P_2;
Var
a, b, c, d, x1, x2: real;
Begin
writeln(‘Введите коэффициенты уравнения’);
read (a, b, c);
d := b*b – 4*a*c;
if d<0 then
writeln (‘Корни мнимые’)
else
begin
x1 := (-b + sqrt(d)) / (2*a);
x2 := (-b - sqrt(d)) / (2*a);
writeln(‘x1=’, x1:5:2, ‘ x2=’, x2:5:2);
end;
End.
Вложенные структуры условных операторов
Структура называется вложенной, если после служебных слов THEN и ELSE используются вновь условные операторы. Число вложений может быть произвольным. При этом справедливо следующее правило: служебное слово ELSE всегда относится к ближайшему выше слову THEN. Для удобства чтения вложенных структур рекомендуется при программировании избегать по-возможности запись вложенного условного оператора после слова THEN.
Пример. Вычислить значение y по одной из трех ветвей:
При решении данной задачи возможны варианты программирования без использования вложенной структуры и с вложенной структурой.
Вариант 1.
(Без использования вложенной структуры).
Блок-схема
Программа
Program P_V1;
Var
x, y: real;
Begin
writeln(‘ Введите число x’);
read(x);
if x>=1 then y := sqrt(x)/2;
if (x>0) and (x<1) then y := exp(1/3*ln(x))/3;
if x<= 0 then y := exp(1/4*ln(abs(x)))/4;
writeln(‘y =’, y:6:2);
End.
Вариант 2. ( Использование вложенной структуры).
Блок-схема
Программа
Program P_V2;
Var
x, y: real;
Begin
writeln(‘Введите число x’);
read(x);
if x>=1 then
y := sqrt(x)/2
else
if x>0 then
y := exp(1/3*ln(x))/3
else
y := exp(1/4*ln(abs(x)))/4;
writeln(‘y =’, y:6:2);
End.