Операторы языка описывают некоторые алгоритмы, которые необходимо выполнить для решения задачи. Тело программы можно представить как последовательность таких операторов. Идущие друг за другом операторы разделяются точкой с запятой. Они делятся на
- простые;
- структурированные.
Простые операторы
Простыми являются операторы, которые не содержат в себе других операторов:
- оператор присваивания;
- обращение к процедуре;
- оператор безусловного перехода GOTO;
- пустой оператор.
Оператор присваивания
С помощью этого оператора переменной или функции присваивается значение выражения. Знак присваивания :=. Слева записывается имя переменной или функции, справа выражение, значение которого вычисляется перед присваиванием. Допустимо присваивание значений переменным и функциям любого типа, за исключением типа файл.
Тип выражения и тип переменной (или функции) должны быть совместимы.
Пример
X:=Y;
Z:=A+B;
Res:=(I>0) and (I<100);
I:=Sqr(Z) + I*K;
Оператор безусловного перехода
Оператор GoTo позволяет изменить последовательный порядок выполнения операторов и перейти к выполнению программы, начиная с заданного оператора. Оператор, на который происходит переход, должен быть отмечен меткой. Эта же метка должна быть указана в операторе GoTo.
Метки в Турбо Паскале могут быть 2 типов:
- целое число в пределах от 0 до 9999;
- обычный идентификатор.
Все используемые метки должны быть перечислены в разделе объявления меток. Раздел начинается словом label (зарезервированное слово):
label 1,2,3,4, ABCA;
Одной меткой можно пометить только один оператор. Метка от помеченного оператора отделяется двоеточием.
Оператор можно помечать несколькими метками. Они отделяются друг от друга двоеточием.
С помощью этого оператора нельзя перейти из основной программы в подпрограмму или выйти из подпрограммы. Не рекомендуется осуществлять переход внутрь структурированного оператора.
Пустой оператор
Он не выполняет никакого действия и никак не отображается в программе (за исключением, быть может, метки или точек с запятыми, отделяющими пустой оператор от предыдущих или последующих операторов). Он может потребовать для осуществления на него безусловного перехода.
Структурированные операторы
Так называются операторы, которые состоят из других операторов.
К ним относятся:
- составной оператор;
- условный оператор if;
- условный оператор case;
- оператор цикла repeat;
- оператор цикла while;
- оператор цикла for;
- оператор над записями with.
Составной оператор
Составной оператор представляет собой совокупность последовательно выполненных операторов, заключенных в операторные скобки begin и end. Перед end ; можно не ставить.
Структура оператора
begin
<оператор1>;
<оператор2>;
……………..
<операторN>
end.
Условный оператор
Оператор if реализует алгоритмическую конструкцию РАЗВИЛКА и изменяет порядок выполнения операторов в зависимости от истинности и ложности некоторого условия. Возможны два варианта оператора:
- if s then a else b; - полная развилка;
- if s then a; - укороченная развилка,
где
s – логическое выражение, истинность которого проверяется;
a – оператор, который выполняется, если выражение s истинно;
b – оператор, который выполняется если выражение s ложно.
Ни перед then, ни перед else ; ставить нельзя.
Структура оператора
Оператор if – средство ветвления вычислительного процесса:
if<условие> then <оператор 1> else <оператор 2>;
произвольное выражение логического типа
Пример
Program EXAMPLE4;
label out;
var
x,y,res:integer;
begin
write(‘введите делимое:’);
readln(x);
write(‘введите делитель:’);
readln(y);
if y=0 then
begin
writeln(‘Деление на ноль!’);
goto out;
end;
res:=x div y;
writeln(‘частное равно:’,res);
out:
end.
Пример Вложенный условный оператор
var
a,b,c,d:real;
begin
writeln(‘введите a,b,c,d ’);
readln(a,b,c,d);
if a>b then {1 вариант}
if c<d then
if c<0 then
c:=0;
else
a:=b;
{if a>b then {2 вариант}
if c<d then
if c<0 then
c:=0;
else
else
else
a:=b;}
writeln(a,’ ’,b,’ ‘,c,’ ‘,d);
end.
1 вариант
a
b
c
d
1)
1<
3<
2)
3<
3)
2>
4>
4)
-3
2 вариант
a
b
c
D
1)
1<
3<
2)
2>
3<
3)
2>
4>
4)
-3
Любая встретившаяся часть else соответствует ближайшей к ней «сверху» части then условного оператора.
program solod_1 ;
var
x,y:integer;
begin
writeln(‘введите x’);
readln(x);
if x<=0 then y:=-x;
if x<=1 then y:=x;
if x<=2 then y:=1;
if x<=3 then y:=-2*x+5;
writeln(‘y’,y)
end.
program solod_2;
label 1;
var
x,y: real;
begin
writeln(‘введите x’);
readln(x);
if x<=0 then y:=-x
else
if x<=1 then y:=x
else
if x<=2 then y:=1
else
if x<=3 then y:=-2*x+5
else goto 1;
writeln(‘y=’,y);
1:
end.
program solod_3;
label 1;
var
x,y: real;
begin
writeln(‘введите x’);
readln(x);
if x<=0 then y:=-x;
if (x>0)and(x<=1) then y:=x;
if (x>1)and(x<=2) then y:=1;
if (x>2)and(x<=3) then y:=-2*x+5;
if x>3 then goto 1;
writeln(‘y=’,y: 0:4);
1:
end.
Ниже представлены блок-схемы каждой из трех приведенных программ program solod_1, program solod_2, program solod_3 соответственно.