588
.pdfConst
var1='A';
4. Строковые константы определяются произвольным набором символов, заключенных в апострофы, например,
Const
stroke='IBM';
Переменной называется элемент программы, который предназначен для хранения, коррекции и передачи данных внутри программы. Раздел описания переменных начинается с зарезервированного слова Var. Для объявления переменной необходимо указать имя переменной и ее тип. Однотипные переменные могут перечисляться через запятую перед указанием их типа, например,
Var
a:integer;
b:boolean; c, b: real;
Все переменные делятся на глобальные и локальные. Гло-
бальными являются переменные, объявленные вне |
процедур |
и функций, а локальными – объявленные внутри |
процедур |
и функций. TP накладывает ряд ограничений на использование переменных:
1)среди глобальных переменных не может быть двух
содинаковыми идентификаторами;
2)среди локальных переменных в пределах одной процедуры или функции не может быть двух с одинаковыми идентификаторами;
3)в тексте программы любой глобальный идентификатор может дублировать любой локальный идентификатор, так как даже при одинаковых именах они хранятся в разных участках памяти.
Оператор присваивания – это основной оператор любого языка программирования. Данный оператор позволяет помес-
21
elib.pstu.ru
тить определенное значение в необходимую вам переменную. Оператор присваивания имеет вид
идентификатор:=выражение;
например, a : 5 ; b : 8 ;
c : a +b ;
Важно! Не путать оператор присваивания «:=» и обычный знак равенства «=», который является оператором ло-
гического сравнения. Исключением является описание констант, когда знак равенства «=» является оператором присваивания.
1.2.5.Выражения.
Стандартные математические функции
Выражение – это синтаксическая единица языка, определяющая способ вычисления некоторого значения. Выражение может включать в себя константы, переменные, знаки операций, функции, скобки. В результате вычисления выражения получается значение определенного типа.
Тип выражения определяется типом полученного значения. Для составления выражений в языке TP определены некоторые стандартные арифметические операции и математические
функции (табл. 1.5).
Таблица 1.5 Стандартные операции и математические функции языка TP
|
Тип |
Тип |
|
|
Выражение |
результа- |
Операция |
||
операндов |
||||
|
|
та |
|
|
|
Real, Real |
Real |
|
|
A B |
Integer, Integer |
Integer |
Сложение |
|
Integer, Real |
Real |
|||
|
|
|||
|
Real, Integer |
|
||
|
|
|
22
elib.pstu.ru
|
|
|
Продолжение табл. 1.5 |
||
Выражение |
Тип |
Тип |
|
Операция |
|
операндов |
результата |
||||
|
|
||||
|
Real, Real |
Real |
|
|
|
A B |
Integer, Integer |
Integer |
|
Вычитание |
|
Integer, Real |
Real |
|
|||
|
|
|
|||
|
Real, Integer |
|
|
||
|
|
|
|
||
|
Real, Real |
Real |
|
|
|
A * B |
Integer, Integer |
Integer |
|
Умножение |
|
Integer, Real |
Real |
|
|||
|
|
|
|||
|
Real, Integer |
|
|
||
|
|
|
|
||
|
Real ,Real |
Real |
|
|
|
A / B |
Integer, Integer |
Real |
|
Деление |
|
Integer, Real |
Real |
|
|||
|
|
|
|||
|
Real, Integer |
|
|
||
|
|
|
|
||
A div B |
Integer, Integer |
Integer |
|
Целая часть от |
|
|
деления |
||||
|
|
|
|
||
A mod B |
Integer, Integer |
Integer |
|
Дробная часть от |
|
|
деления |
||||
|
|
|
|
||
Abs(x) |
Integer |
Integer |
|
Модуль аргумен- |
|
Real |
Real |
|
та |
||
|
|
||||
Sin(x) |
Integer |
Real |
|
Синус аргумента |
|
Real |
|
(х – в радианах) |
|||
|
|
|
|||
|
Integer |
|
|
Косинус |
|
Cos(x) |
Real |
|
аргумента |
||
Real |
|
||||
|
|
|
(х – в радианах) |
||
|
|
|
|
||
Exp(x) |
Integer |
Real |
|
ex – экспонента |
|
Real |
|
аргумента |
|||
|
|
|
|||
Ln(x) |
Integer |
Real |
|
Натуральный ло- |
|
Real |
|
гарифм аргумента |
|||
|
|
|
|||
Sqr(x) |
Integer |
Real |
|
Квадрат аргумен- |
|
Real |
|
та |
|||
|
|
|
|||
Sqrt(x) |
Integer |
Real |
|
Корень квадрат- |
|
Real |
|
ный аргумента |
|||
|
|
|
|||
|
|
|
|
23 |
elib.pstu.ru
|
|
|
Окончание табл. 1.5 |
|
|
|
Тип |
|
|
Выражение |
Тип операндов |
ре- |
|
Операция |
|
|
зультата |
|
|
Arctan(x) |
Integer |
Real |
|
Арктангенс аргу- |
Real |
|
мента в радианах |
||
|
|
|
||
|
|
|
|
Округление аргу- |
Round(x) |
Real |
Integer |
|
мента до бли- |
|
жайшего целого |
|||
|
|
|
|
|
|
|
|
|
числа |
Int(x) |
Integer |
Real |
|
Целая часть аргу- |
Real |
|
мента |
||
|
|
|
||
|
|
|
|
Генерация псев- |
Random |
– |
Real |
|
дослучайного |
|
числа в интервале |
|||
|
|
|
|
0,1 |
|
|
|
|
Генерация псев- |
Random(x) |
Integer |
Integer |
|
дослучайного |
|
числа в интервале |
|||
|
|
|
|
0, x 1 |
Trunc(x) |
Real |
Integer |
|
Целая часть аргу- |
|
мента |
|||
|
|
|
|
|
Frac(x) |
Integer |
Real |
|
Дробная часть x |
Real |
|
|||
|
|
|
|
1.2.6.Логические операции, операции отношений
Логические операции применяются к величинам логического типа (boolean), результат операции – тоже логического типа
(boolean).
Not – логическое НЕ (отрицание); And – логическое И;
Or – логическое ИЛИ; Xor– исключающее ИЛИ.
24
elib.pstu.ru
Пусть заданы две логические переменные P и Q . Результат
применения к ним вышеперечисленных логических операций при всех возможных значениях P и Q представлен в табл. 1.6.
|
|
|
|
|
Таблица 1.6 |
|
Результаты действия логических операторов |
||||
P |
Q |
Not P |
P And Q |
P Or Q |
P Xor Q |
True |
True |
False |
True |
True |
False |
True |
False |
False |
False |
True |
True |
False |
True |
True |
False |
True |
True |
False |
False |
True |
False |
False |
False |
В TP используются следующие операции отношения: = – равно; <> – не равно; < – меньше;
>– больше;
<= – меньше или равно; >= – больше или равно.
Операции сравнения применимы к данным простых типов. Сравнивать можно между собой значения одного типа: целые, вещественные, символьные, логические. Допустимо также сравнивать между собой целые и вещественные числа.
|
Таблица 1.7 |
Приоритетность операций |
|
Приоритет |
Операция |
1 |
Not |
2 |
*, /, Div, Mod, And |
3 |
+, –, Or, Xor |
4 |
=,<>, <, >, <=, >= |
При вычислении выражений любого типа приоритет вычислений определяется расставленными скобками, а при их отсутствии в порядке, указанном в табл. 1.7. Приоритет убывает сверху вниз.
25
elib.pstu.ru
1.2.7.Операторы ввода/вывода
TP содержит четыре оператора ввода/вывода: read, readln, write, writeln. Оператор read осуществляет ввод данных с клавиатуры и размещение. Вводимые данные размещаются в качестве значений переменных, имена которых перечислены в круглых скобках за оператором read, например
read(a,b,c);
Вводятся данные последовательно, в том порядке, в котором они перечислены в скобках оператора. Разделение вводимых данных можно производить через пробел или кнопкой Enter. Ввод заканчивается нажатием Enter после ввода значения последнего аргумента. Курсор, отмечающий позицию следующего ввода/вывода, остается за последним введенным данным.
Оператор readln выполняет аналогичные действия, но по окончании ввода переводит курсор на следующую строку.
Оператор write осуществляет вывод на экран или печатающее устройство. Оператор может выводить сообщение или значение переменной (выражения). Сообщения записываются в апострофах. Для вывода значения переменной указывается имя переменной (вид выражения) без апострофов. Сообщения и переменные можно чередовать в одном списке, разделяя их запятыми. Курсор остается за последним выведенным данным. Например,
write(‘a = ’,a,’b = ’,b);
Оператор writeln выполняет аналогичные действия и переводит курсор на следующую строку. Операторы write и writeln допускают так называемый форматированный вывод данных:
write(a:5:2);
Первое из чисел после двоеточия указывает, сколько экранных знаков отводится под вывод всего значения переменной а.
26
elib.pstu.ru
Второе число указывает количество знаков после запятой в числе и может отсутствовать. Если выводимая переменная имеет целочисленный тип, то вторая цифра должна отсутствовать в обязательном порядке.
1.2.8.Безусловный оператор
Оператор языка представляет собой неделимый элемент программы, который позволяет выполнять определенные алгоритмические действия. Все операторы можно условно разделить на две группы: простых операторов и структурированных операторов. К простым относятся те операторы, которые не содержат других операторов. К структурированным – те, которые состоят из других операторов. В TP существует один оператор безусловного перехода Goto и четыре безусловных функции:
Break, Continue, Exit, Halt.
Оператор безусловного перехода Goto представляет собой простой оператор, используя который можно изменять порядок выполнения операторов в программе. Общий вид оператора безусловного перехода:
goto <метка>;
Здесь <метка> – это идентификатор или целое число от 0 до 9999, объявленное в разделе меток label.
Применение оператора безусловного перехода в TPпрограмме является нежелательным, так как его присутствие нарушает структурную целостность и наглядность. Такую программу трудно читать, отлаживать и модифицировать.
Функция Break позволяет досрочно закончить цикл. Функция Continue – позволяет начать новую итерацию цикла, даже если предыдущая не была завершена. Функция Exit – позволяет завершить работу текущего программного блока. Функция Halt(n), где n – некоторое целое число, – позволяет завершить работу программы с кодом завершения n.
27
elib.pstu.ru
Помимо простых и структурированных операторов различают еще составной оператор. Он представляет собой совокупность последовательно выполняемых операторов, заключенных в операторные скобки Begin и End. Например,
Begin
<оператор 1>; <оператор 2>;
…
<оператор n>;
End;
Составной оператор используется в случаях, когда вместо одного оператора и соответственно одного действия необходимо выполнить несколько операторов, т.е. несколько действий.
Составной оператор трактуется как один оператор.
1.2.9.Условный оператор
Условный оператор, или оператор ветвления, имеет на языке TP следующую структуру:
If <expr> Then <oper_1> Else <oper_2>;
Здесь <expr> – логическое выражение или переменная. Если логическое выражение <expr> принимает значение True, то выполняется оператор <oper_1>, если же нет, то оператор
<oper_2>.
Часть структуры условного оператора, которая начинается со слова Else, можно опускать.
If <expr> Then <oper_1>;
Вэтом случае при равенстве логического выражения <expr> значению False будет выполняться оператор, следующий за данным логическим оператором.
Вкачестве операторов <oper_1> и <oper_2> могут применяться любые операторы, т.е. простые операторы, составные операторы или структурированные. В случае использования со-
28
elib.pstu.ru
ставных операторов структура условного оператора будет следующей:
If <expr> Then begin
<oper1_1>;
…
<oper1_n>;
end
Else
begin
<oper2_1>;
…
<oper2_m>;
end;
Используя в качестве операторов <oper_1> и <oper_2>, другие условные операторы, можно получать вложенные условия и программировать сложные алгоритмы ветвления. Например,
If <expr_1> Then
If <expr_2> Then <oper_1> Else <oper_2>
Else <oper_3>;
Схематическое представление условного оператора отображено на рис. 1.3.
Если логические выражения <expr_1>, <expr_2>,…, <expr_n> независимы, т.е. вычисление их значений в любом порядке дает один и тот же результат для каждого из них, имеет смысл располагать их в таком порядке, чтобы выражение, с наибольшей вероятностью принимающее значение «истина», стояло на первом месте, принимающее значение «истина» с меньшей вероятностью, – на втором и т.д. Это уменьшит время выполнения данного фрагмента программы.
29
elib.pstu.ru
1.2.10. Циклические операторы
Операторы цикла являются важнейшими операторами. Циклы позволяют многократно выполнить одно или несколько действий. В TP имеется несколько разновидностей оператора цикла.
Цикл с предусловием
Цикл с предусловием (цикл–пока) на языке TP имеет следующую структуру:
While <expr> Do <oper>;
При выполнении этого циклического оператора вначале вычисляется значение логического выражения <expr>. Если это значение истинно, выполняется оператор <oper>, затем значение логического выражения проверяется вновь и так далее, до тех пор, пока оно не примет значение «ложь». Если выражение <expr> принимает значение «ложь» при первой же проверке, то оператор <oper> не выполняется вообще.
В качестве оператора <oper> могут применяться любые операторы, т.е. простые операторы, составные операторы или структурированные. В случае использования составного оператора структура цикла с предусловием будет следующей:
While <expr> Do begin
<oper_1>;
…
<oper_n>;
end;
Схематическое представление цикла с предусловием отображено на рис. 1.6.
Цикл с постусловием
Цикл с постусловием на языке TP имеет следующую структуру:
Repeat <oper> Until <expr>;
30
elib.pstu.ru