Алгоритмы решения большинства задач не являются последовательными. Порядок работы программы может зависеть от определённых условий, например исходных данных, или результатов, полученных во время выполнения программы, или команд пользователя. В языке Pascal условие–это выражение логического типа (Boolean), которое может принимать одно из двух значений: «истина» (True) или «ложь» (False). Простое условие состоит из двух операндов и оператора сравнения. В общем виде условие записывается следующим образом:
Операнд1 Оператор Операнд2;
где Операнд1 и Операнд2 – операнды условия, в качестве которых могут выступать переменная, константа, функция или выражение; Оператор – оператор сравнения. В Turbo Pascal имеется шесть операторов сравнения, которые перечислены ниже:
Оператор
Описание
Оператор
Описание
>
Больше
< >
Не равно
<
Меньше
>=
Больше или равно
=
Равно
<=
Меньше или равно
Примеры условий: Summa < 1000; A>=X;
В первом примере операндами условия являются переменная и константа. Значение этого условия будет истинным, если значение переменной Summa меньше, чем 1000. Во втором примере в качестве операндов используются переменные. Значение этого условия будет истинным, если значение переменной A больше или равно X.
Из простых условий, которые являются выражениями логического типа, можно строить сложные условия с применением к ним, как к операндам, логических операций: not – «отрицание», and– «логическое И», or -«логическое ИЛИ».
При записи сложных условий важно учитывать то, что логические операции имеют более высокий приоритет, чем операторы сравнения, поэтому простые условия следует брать в скобки. Например, пусть условие предоставления скидки сформулировано следующим образом: «Скидка предоставляется, если сумма покупки 500 руб. и день покупки – воскресенье или если сумма покупки превышает 1000 руб.». Тогда условие можно записать:
((Summa > 500) and (Day = 7)) or (Summa > 1000)
Выбор действия в зависимости от выполнения условия может быть реализован при помощи операторов (инструкций) ifи case.
Оператор IF используется в программе, когда в зависимости от некоторого условия надо выбрать одно из двух действий или когда некоторое действие должно быть выполнено только при выполнении некоторого условия.
В общем виде оператор IF записывается так:
If <Условие>
then
begin
< Операторы, выполняемые, если условие истинно >
end
else
begin
< Операторы, выполняемые, если условие ложно >
end;
Выполняется оператор IFследующим образом.
Сначала вычисляется значение выражения условие. Затем, если условие истинно (значение выражения условие равно True), то выполняются операторы, следующие за словом then, находящиеся между begin и end. Если условие не является истинным (значение выражения условие равно False), то выполняются операторы, следующие за словом else, находящиеся между begin и end.
Если при выполнении (невыполнении) условия надо выполнить только один оператор, то ключевые слова beginи end можно не писать.
Если какое-либо действие нужно выполнить только при выполнении некоторого условия и пропустить это действие в случае невыполнения условия, то оператор IF может быть использован в кратком виде:
If <Условие>
then
begin
<Операторы, выполняемые, если условие истинно>
end;
Если в программе необходимо реализовать выбор более чем из двух вариантов, то применяют несколько условных операторов, «вложенных» один в другой. В качестве примера рассмотрим программу нахождения корней квадратного уравнения. Ниже приведён текст программы:
Program SqEquation;
Uses crt;
Var
a,b,c,x1,x2,d:real;
Begin
Clrscr;
Writeln('Решение уравнения Ax^2+Bx+C=0');
Wwrite('Введите A (A не равно 0)');
Readln(A);
Write('Введите B');
Readln(b);
Write('Введите C');
Readln(c);
d:=b*b-4*a*c;
If d>0
then
begin
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
Writeln('x1= ',x1:7:3,' x2= ',x2:7:3);
end
else
If d=0
then
begin
x1:=-b/(2*a);
Writeln('x= ',x1:7:3);
end
else
Writeln('Действительных корней нет');
Readln;
End.
Наберите текст программы, сохраните на диске в свою папку под именем Equation.pas, скомпилируйте и выполните программу. Используя программу, решите следующие уравнения:
x2-3x-4=0; x2-9x=0; x2+4x+4=0; 7x2-3x+16=0.
ОператорCase является обобщением оператора If и позволяет сделать выбор из произвольного числа имеющихся вариантов. В общем виде инструкция Case записывается следующим образом:
Case <Выражение> of
<Список констант 1>: begin
{Последовательность операторов 1}
end;
<Список констант 2>: begin
{Последовательность операторов 2}
end;
<Список констант N>: begin
{Последовательность операторов N}
end
else
begin
{Последовательность операторов, выполняемых в случае,}
{если значение выражения не попало ни в один }
{из списков констант }
end;
end;
Здесь:
<выражение> – выражение, от значения (значение должно быть обязательно целого типа: Integer, Word, Byte или символьного типа – Char) которого зависит дальнейший ход программы (одна из последовательностей операторов, которая должна быть выполнена);
<список констант> – константы (целого типа или типа Char), разделенные запятыми. Если константы представляют диапазон чисел, то вместо списка можно указать первую и последнюю константу диапазона, разделив их двумя точками. Например, список 1,2,3,4,5,6 может быть заменен диапазоном 1..6.
Если между beginи end надо выполнить только один оператор, то слова beginи end можно не писать. Выполняется инструкция case следующим образом. Сначала вычисляется значение выражения, стоящего после case, затем полученное значение последовательно сравнивается с константами из списков констант. Если значение выражения совпадает с константой из списка, то выполняется соответствующая этому списку последовательность операторов, и на этом выполнение инструкции case завершается. Если значение выражения не совпадает ни с одной константой из всех списков, то выполняется последовательность операторов, следующая за else, если таковая присутствует.