Операторы
Операторы языка программирования ТР, представленные в нужной последовательности, позволяют реализовать алгоритм решения задачи. При этом каждый из операторов выполняет некоторое действие над данными.
Операторы ТР подразделяются на две группы: простые и структурированные.
Простые операторы не содержат в себе других операторов, структурированные включают в себя другие операторы – как простые, так и структурированные.
К простым операторам относятся:
-
оператор присваивания
-
оператор перехода и пустой оператор
К структурированным:
-
составной оператор
-
условные операторы IF и CASE
-
операторы цикла WHILE, REPEAT и FOR
Оператор присваивания :=
Самый простой, но наиболее используемый. Он предписывает выполнить выражение, заданное в его правой части, и присвоить результат переменной, имя которой указано в левой его части. Переменная и выражение должны быть совместимы по типу. Его синтаксис
<Идентификатор> := <выражение>
Допускается для идентификатора использовать любой тип, за исключением файлового.
В выражениях могут использоваться все математические операции:
* (умножение),
/ (деление),
DIV (целочисленное деление),
MOD (остаток от целочисленного деления),
+ (сложение),
- (вычитание),
логические операции:
NOT (отрицание "НЕ"),
AND (логическое "И"),
OR (логическое "ИЛИ")
XOR ("Исключающее ИЛИ'');
операции отношений <, <=, >, >=. =. <>,
а также стандартные функции (табл.1).
Стандартные функции
Обращение |
Выполняемые функции |
тип аргумента |
тип функции |
Abs(X) Sqr(X) |
|X| X2 |
целый или вещественный |
целый или вещественный |
Sin (X) Cos (X) Ln (X) Exp(X) Sqrt(X) Arctan(Х)
|
Sin X Cos X Ln X ex
Arctg X
|
целый или вещественный |
вещественный |
TRUNC(Х)
ROUND(X) |
Выделение целой части числа Округление X до ближайшего целого |
вещественный |
целый |
PRED(X)
SUCC(X) |
Нахождение предшествующего значения (в его типе) Нахождение последующего элемента (значения, следующего за X в его порядковом типе) |
целый.
логический или символьный |
целый.
логический или символьный |
ORD(Х)
|
Определение порядкового номера символа X в наборе символов или его перечислимом типе |
символьный |
целый |
CHR(X) |
Определение значения символа по его порядковому номеру |
целый |
символьный |
ODD(Х)
|
Логическая функция проверки нечетности |
целый |
логический |
Frac(X)
Int(X) |
Дробная часть числа часть числа Целая часть числа |
вещественный |
вещественный |
Exp(x*ln(a)) ax (a>0)
Ln(x)/ln(a) logaX
Ln(x)/ln(10) lgX
sin(X)/cos(X) tgX
В первую очередь вычисляются выражения заключенные в круглые скобки, затем вычисляются значения, входящие в выражение функций. Далее выполняются унарные операции (NOT, унарный минус), операции типа умножения (*, /, div, mod, and), операции типа сложения (+, -, oг, хог) и в последнюю очередь операции отношений (=, <> , >, <, >=, <.=). Примеры арифметических операторов присваивания:
.
.
var
x: integer
begin
x:=0;
.
.
------------------------------------------
.
.
var
х, у: геаl;
begin
y:=x*y+sin(x);
.
.
------------------------------------------
.
.
var
S: char;
Begin
S:='+' ; {Символьный оператор присваивания}
.
.
------------------------------------------
Оператор безусловного перехода
Оператор безусловного перехода позволяет изменить обычный последовательный порядок выполнения операторов и перейти к заданному оператору, помеченному меткой.
Структура оператора:
GOTO <метка>;
GOTO - ключевое слово, обозначающее перейти к <метке>.
<Метка> - произвольный идентификатор, позволяющий пометить любой оператор в программе и ссылаться на него.
Оператор от метки отделяется двоеточием. В языке Турбо Паскаль допускается использовать в качестве метки также целое число без знака от 0 до 9999.
Пример:
Ввести число до 100, написать его справа налево.
------------------------------------------------------------------
Program l1_1;
Label M;
Var x, a, b: integer;
Begin
M: writeln(‘ввести натуральное число’);
Readln(x);
If x>=100 then goto M;
a:=x mod 10;
b:=x div 10;
writeln(‘число’,a,b);
End.
-------------------------------------------------------------------
Все использованные в программе метки должны быть описаны в разделе описаний программы с указанием ключевого слова 'LABEL'. Описанные в этом операторе метки обязательно должны быть использованы в программе.
Метки, описанные в функции или процедуре, локализуются только в ней, передача управления извне процедуры на метку внутри ее невозможна. С помощью оператора GOTO не рекомендуется осуществлять переход во внутреннюю часть сложного оператора (цикла, составного оператора). Запрещается переход с одной альтернативной части (ветви) сложного оператора на другую.
Современная технология структурного программирования основана на принципе программирования без GOTO. Считается, что злоупотребление этими операторами затрудняет чтение программы, усложняет ее отладку.
Тем не менее, в некоторых случаях использование оператора перехода может упростить программу. Обычно GOTO используется для досрочного выхода из любого сложного оператора или вложенных операторов цикла.
Составной и пустой операторы
Представляет собой последовательность некоторых операторов, выполняющихся в том порядке, в каком они представлены в тексте программы. Зарезервированные слова Begin и End являются так называемыми операторными скобками, в которые заключены операторы, входящие в составной оператор.
Составной оператор используется в том случае, когда по правилам синтаксиса сложного оператора должен стоять только один оператор, а в алгоритме необходимо выполнить некоторую последовательность действий.
BEGIN
<оператор 1>;
<оператор 2>;
…;
<оператор N>
END;
Здесь <оператор 1>…<операторN> - операторы, образующие составной оператор;
Begin…End –операторные скобки.
Для составного оператора допускается любая глубина вложенности (другими словами, составной оператор может включать другие составные операторы, т.е. составным может быть любой из операторов <оператор 1>…<оператор N> , причём допускается любой уровень вложенности):
BEGIN
BEGIN
…
BEGIN
…
END;
…
END;
END.
Пустой оператор
Пустой оператор не выполняет никаких действий и может быть использован для передачи управления в конец составного оператора. Пустой оператор записывается в виде точки с запятой.
Примеры пустых операторов:
1) ;; 2) <метка>: ;
Условный оператор IF
Условный оператор позволяет проверить некоторое условие и в зависимости от результата проверки выполнить то или иное действие, т.е. сделать ветвление в программе. Структура условного оператора в полной форме имеет следующий вид:
IF <условие> THEN <оператор1> ELSE <onepaтоp2>;
Условие - это выражение логического типа, которое может принимать два значения: TRUE (истина) или FALSE (ложь).
Вначале вычисляется выражение <условие>. Если результат его истинен, то выполняется <оператор1>, а <оператор2> пропускается. В противном случае выполняется <оператор2>, а <оператор1> пропускается.
Структура условного оператора в сокращенной форме:
IF <условие> ТНЕN <оператор1>;
в случае ложности условия выполняется следующий за IF оператор.
ТР допускает вложенность операторов IF
Пример вложения условных операторов: