If «условие1» then
If «условие2» then
If «условиеЗ» then «оператор3»
ELSE «оператор4»
ELSE «оператор2» ELSE «оператор1»;
В качестве «оператор1» или «оператор2» может использоваться только один, причем любой оператор Турбо Паскаля. Для объединения нескольких операторов в один блок используются операторные скобки (BEGIN …END), т.е. составной оператор.
Во многих программах в зависимости от некоторого условия часто требуется выполнить не одно, а последовательность действий. Однако оператор IF в ТР обеспечивает выполнение единственного оператора, присутствующего после зарезервированного слова THEN или ELSE. Выйти из положения можно, применив составные операторы:
If <условие> then
begin
<оператор S1>;
<оператор S2>;
.
.
<оператор SN>
end
else
begin
<оператор V1>;
<оператор V2>;
.
.
<оператор VN>
end;
здесь <оператор S1>… <оператор SN> и <оператор V1>… <оператор VN> - некоторые операторы, образующие составные операторы.
Для записи логических условий используют следующие знаки логических отношений <, >, <>, <=, >=, =. Для записи сложных логических выражений используют операции AND, OR, NOT (И, ИЛИ, НЕТ) например:
4<x<10 → (x>4) and (x<10)
a<5 или a>10 → (a<5) or (a>10)
Примеры:
Дано значение x. Вычислите , если x>=0;
, если x<0.
-------------------------------------------------------------
Program funk;
Var
x: integer;
y: real;
begin
writeln(‘введите x’);
read(x);
if x>=0 then y:=sqrt(x)
else y:=sqr(x);
writeln(‘y=’,y:10:4);
end.
------------------------------------------------------------
Даны три числа, найти максимальное из них.
------------------------------------------------------------
Program max;
Var
a, b, c: integer;
begin
writeln(‘введите a, b, c’);
read(a, b, c);
if (a>b) and (a>c) then
writeln(‘a-max=’,a);
if (b>a) and (b>c) then
writeln(‘b-max=’,b);
if (c>a) and (c>b) then
writeln(‘c-max=’,c);
end.
-------------------------------------------------------
Часто бывает необходимо при выполнении того или иного условия вычислить несколько операторов программы. Это легко осуществить, объединив данные операторы в блок, начинающийся со слова Begin и заканчивающийся словом End, например:
.
.
if a>2 then begin
x:=a+z;
y:=a/5;
end;
.
.
В этом случае говорят о составном операторе и операторных скобках Begin – End.
Пример:
Протабулировать функцию
если шаг изменения x dx=0.2
------------------------------------------------------------
Program tab;
const dx=0.2;
label met;
var x, y: real;
begin
x:=0;
met: if (x>=0) and (x<=2)
then
y:=sqr(sin(x*x))
else y:=exp(x);
weiteln(‘x=’, x:6:2, ‘y=’, y:12:4);
x:=x+dx;
if x>=4 then goto met;
end.
------------------------------------------------------------------
Оператор варианта CASE
Рассмотренный выше оператор IF позволяет осуществить выбор одной из двух альтернатив. Но что если число вариантов нужно иметь больше? Выйти из положения позволит оператор CASE.
Оператор CASE позволяет в зависимости от значения какой-либо переменной или выражения порядкового типа выполнить те или иные действия. Его структура:
CASE <ключ_выбора> OF
<конст. выбора1>:<оператор1>;
<конст. выбора2>:<оператор2>,
… <конст. выборaN>:<oпepaтopN>
ELSE <оператор>
END;
CASE – «вариант», OF – «из», ELSE – «иначе».
где <ключ выбора> - выражение (переменная) любого порядкового типа; <конст.выбора> - константа того же типа, что и <ключ_ выбора>;
<оператор> - произвольный оператор ТП.
Порядковый тип – тип, имеющий конечное значение, например:
integer, boolean, char
Принцип действия. Вычисляется <ключ выбора>, затем в списке констант выбора отыскивается константа, равная <ключу выбора>. и выполняется соответствующий ей оператор. Затем оператор CASE завершает работу. Если в списке не найдена константа, совпадающая с "ключом", выполняется оператор части ELSE.
Пример:
Выполнить операцию в зависимости от введенного символа.
---------------------------------------------------------------
Program l_w;
var oper: char;
x, y, z: real;
begin
writeln(‘введите x, y’);
read (x, y);
writeln(‘введите oper’);
read(oper);
case oper of
'+': z:=x+y;
'-': z:=x-y;
'*': z:=x*y;
'/' : z:=x/y
else
write(‘нет операций');
end;
writeln (‘z=', z)
end.
----------------------------------------------------------------------------
Пример:
По введённому символу определить название реки.
----------------------------------------------------------------------------
Program l_13;
var a: char;
begin
writeln(‘введите символ’);
read(a);
case a of
‘B’ : writeln(‘Волга’);
‘И’ : writeln(‘Иртыш’)
else
writeln(‘на эту букву слова нет’);
end;
end.
------------------------------------------------------------------------------
Часть ELSE <оператор> является не обязательной. Тогда при отсутствии в списке выбора нужной константы оператор выбора завершает свою работу.
Любому из операторов <списка выбора> может предшествовать несколько <констант выбора>. В этом случае они разделяются запятыми или представляют собой диапазон значений.
Пример:
CASE <ключ> OF
1: <оператора1>;
2,3:<оператор2>;
4..6: <оператор3>
ELSE <оператор>
END;
<Константа выбора> не является меткой оператора, поэтому в разделе меток ее описывать не нужно.