1.2. Символы, простейшие конструкции и операторы языка
Написание конструкций языка осуществляется в соответствии с синтаксисом и использованием принятого алфавита, который включает в себя буквы, цифры и специальные символы.
Символы языка. ПАСКАЛЬ использует следующие символы:
Буквы: 26 прописных и строчных латинских букв. ТП 7.0 не различает прописные и строчные буквы. (нечувствителен к регистру букв)
Цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Специальные символы: = - * / | \ > < ( ) [] . , ; {}.
NIL - отсутствие указателя
NOT - не
OF - из
OR - или
PACKED - упакованный
PROCEDURE - процедура
PROGRAM - программа
RECORD - запись
REPEAT - повторять
SET - множество
THEN - то
ТО - увеличивая до
TYPE - тип
UNTIL - до
VAR - переменная
WHILE - пока
WITH - с
AND - и
Array - массив
BEGIN - начало
CASE - вариант
CONST - константа
DIV - деление нацело
DO - выполнять
DOWNTO - уменьшая до
ELSE - иначе
END - конец
FILE - файл
FOR - для
FUNCTION - функция
GO ТО - переход на
IF - если
IN - в
LABEL - метка
MOD - деление c остатком
Ключевые (служебные, зарезервированные) слова:
Знаки операций:
арифметических: + (сложение), - (вычитание), * (умножение), / (деление), DIV (деление нацело, с отбрасыванием остатка), MOD (нахождение остатка от деления нацело);
отношения: > (больше), < (меньше), > = (больше или равно); < = (меньше или равно), = (равно), < > (не равно);
логических: NOT (отрицание), OR (логическое сложение), AND (логическое умножение);
над множествами: * (пересечение множеств, ||), + (объединение множеств, U), - (разность множеств), IN (принадлежность множеству).
Простейшие конструкции языка. Объектами действий в программах являются данные, которые определяются числовыми, логическими и литерными значениями. Для сокращения объема программы и возможности многократного использования ее при различных значениях данных в записи программы используются не сами значения, a их имена (идентификаторы). В связи с тем, что имена могут принимать множество значений, вводится понятие типа.
Все данные подразделяются на скалярные, имеющие простейшую структуру, и структурированные. В языке ПАСКАЛЬ используются четыре типа скалярных данных: целочисленные, действительные, логические и литерные.
Целочисленные типы данных
Тип |
Допустимые значения |
Формат |
ShortInt (короткое целое) |
-126 … 127 |
1 байт со знаком |
INTEGER (целое) |
-32766 … 32767 |
2 байта со знаком |
LongInt (длинное целое) |
-2147483648 … 2147483647 |
4 байта со знаком |
BYTE (длинной в байт) |
0 … 256 |
1 байт без знака |
WORD (длинной в слово) |
0 … 65535 |
2 байта без знака |
Вещественный тип данных
Тип |
Допустимые значения |
Точность |
Формат |
REAL (вещественный) |
2.9*10^-39 … 1.7*10^+38 |
11-12 знаков |
6 байт |
SINGLE (с одинарной точностью) |
1.5*10^-45 … 3.48*10^=38 |
7-8 знаков |
4 байта |
DOUBLE (с двойной точностью) |
5.0*10:-324 ... 1.7*10:+308 |
15-16 знаков |
8 байт |
EXTENDED (с повышенной точностью) |
1.9*10:-4951 ... 1.1*10^+4932 |
19-20 знаков |
10 байт |
COMP (сложный) |
-9.2*10^18 ... 9.2*10^18 |
19-20 знаков
|
8 байт
|
Числа в языке ПАСКАЛЬ имеют запись, близкую к обычной математической, и могут быть целого или действительного (вещественного) типа. Положительный |знак числа может опускаться.
Числа целого типа записываются последовательностью цифр (например, +4, 4, -100, 1987, -1001) и представляются в памяти ЭВМ точным значением. Диапазон значений их зависит от количества двоичных разрядов ЭВМ, использующихся для записи чисел.
Числа действительного типа имеют две формы записи: с фиксированной и плавающей (для значений с десятичным порядком) точкой. Числа с фиксированной точкой записываются в виде целой и дробной частей, разделенных десятичной точкой. Например, 2.65, -11.862, 0.5, -6.0. Запись числа не может начинаться или заканчиваться десятичной точкой.
Числа с плавающей точкой используются для записи чисел в широком диапазоне значений (от очень маленьких до очень больших).
Десятичный порядок числа записывается буквой E.
Например:
Запись на языке ПАСКАЛЬ |
Обычная математическая запись| |
2.65 E6 |
2.65*106 или 2650000 |
Запись на языке ПАСКАЛЬ |
Обычная математическая запись| |
-0.25 E -4 |
-0.25*10-4 или -0.000025 |
-1.8 E5 |
-1.8*105 или -180000 |
Числа действительного типа являются приближением к точным значениям. Диапазон представления их зависит от класса ЭВМ.
Данные могут быть логического или символьного типа.
Данные логического (булевского) типа (BOOLEAN) имеют два значения: TRUE (истинно) и FALSE (ложно).
Данные символьного (литерного) типа (CHAR) принимают значение только одной литеры, имеющейся в наборе литер данной. ЭВМ. Набор литер, использующийся в ЭВМ, должен отвечать следующим минимальным требованиям:
содержать буквы от А до Z, упорядоченные в алфавитном порядке;
содержать цифры от 0 до 9, упорядоченные в порядке возрастания;
включать знак пробела; I
каждый символ должен иметь порядковый номер.
Имя (идентификатор) образуется из букв и цифр, начинающихся с буквы. Имена используются в программах для записи констант, типов, переменных, функций, подпрограмм (процедур), файлов.
В большинстве ЭВМ максимальная длина имени в классическом ПАСКАЛЕ ограничена длиной в восемь символов. Примеры записи имен:
X, XI, SUMMA, SUMMA2, PTF, PTF3, INDMAX
Помимо имен, назначаемых пользователем, в языке ПАСКАЛЬ имеются стандартные имена, использующиеся для записи: стандартных констант — TRUE, FALSE, MAXI NT; стандартных типов — INTEGER, REAL, BOOLEAN, CHAR, TEXT; стандартных файлов — INPUT, OUTPUT; стандартных функций — ABS, SQR, SIN, COS, EXP, LN, SQRT, ARCTAN, TRUNC, ROUND, PRED, SUCC, ORET, CHR, ODD, EOF, EOLN; стандартных процедур — GET, PUT, REWRITE, NEW, READ, UNPUCK, PACK, READLN, RESET, WRITE, WRITELN, PAGE.
Назначение и использование стандартных имен показано далее.
С помощью, числовых, логических, символьных значений и имен ‘записываются простейшие конструкции языка: константы, переменные, стандартные функции, выражения.
Константа - представляет собой значение, которое j не изменяется в программе. Константы могут быть следующих типов: целые, действительные, логические (BOOLEAN), символьные (CHAR) или задаваться в виде строк (текстовые константы).
Константы целого и действительного типов являются числовыми. Они могут иметь положительный или отрицательный знак и записываться числами или именами соответствующего типа.
Константы логического типа имеют одно из двух значений - TRUE (истинно) либо FALSE (ложно). <
Константы символьного типа записываются литерами, заключенными в кавычки (апострофы). Символ апостроф записывается двойными кавычками. Примеры записи
’В’ ‘D’ ’6’ ‘ ‘ ‘”’
Эти константы представляют соответственно символы B, D, 6, ˽ , “.
Текстовые константы (строки) записываются последовательностью символов (текстом), заключенной в кавычки. Имеющиеся в тексте кавычки дублируются. В тех случаях, когда текст не обрабатывается ЭВМ, а служит для выдачи заголовка к результатам вычислений, используются буквы русского алфавита. Примеры записи:
’Х= ’ ’ СУММА S = ’ ’ПАРАМЕТР ”Т”’
"ТАБЛИЦА КОЭФФИЦИЕНТОВ Р’ ’1.25 + Z’
Переменные используются для записи значений, изменяющихся в программе. Выбор имен переменных желательно производить таким образом, чтобы был понятен их смысл и назначение.
По структуре различают простые переменные и переменные с индексом. Простые переменные записываются своими именами. Они могут принадлежать к различным типам переменных: целому, действительному, логическому, символьному. Примеры записи: X, XI, Х1А2, DELTA, ISO, RESALT, SUMMA.
Переменная с индексом является элементом массива Массив состоит из упорядоченного набора значении одного типа, имеющих общее имя. Местоположение элемента в массиве задается индексом, который записывается в квадратных скобках. Примеры записи: элементы A[1], А [25], А [i] являются соответственно 1, 25 и i-м элементами одномерного массива; А; В{2,5], В [i, j] — соответственно элемент массива В, находящийся на пересечении 2-й строки и 5-го столбца, и элемент, находящийся на пересечении i-й строки и j-го столбца.
Стандартные функции служат для облегчения записи и обращения к наиболее часто встречающимся функциям при обработке данных. При обращении к стандартным функциям необходимо записать имя функции, а в скобках указать аргумент. Перечень стандартных функций, типы аргументов и функций приведены в табл. 1.1.
При обращении к стандартной функции ABS с аргументами типа INTEGER и REAL получаются следующие результаты: ABS (8) и ABS (-8) дают результат 8; ABS (8.6) и ABS (-8.6) - 8.6. При вычислении тригонометрических функций sin x2 можно записать обращение SIN (Х*Х) или SIN (SQR (X)), а для функции sin2x - SQR (SIN (X)).
При этом следует обращать внимание на соответствие открытых и закрытых скобок.
Обращение к стандартным функциям TRUNC и ROUND с аргументом = 25,7 позволяет получить результаты: TRUNC (25,7) = 25; ROUND (25,7) = 26. Стандартные функции для нахождения предыдущего значения (PRED) и последующего (SUCC) определены для данных целого, логического и символьного типов. Для целочисленного аргумента, равного 8, функция PRED (8) = 7, a SUCC (8) = 9. Эти функции в применении к аргументам символьного типа определяют предыдущий и последующий символы. Для буквы латинского алфавита М функции имеют значения PRED (М) =L, SUCC (М) = N. При отсутствии предыдущего или последующего символа значения функций PRED и SUCC не определены.
Для -всех классов ЭВМ существует свой набор символов, в котором за каждым символом закреплен порядковый номер. Функция ORD (X) определяет порядковый номер символа X в наборе символов. Порядковые номера следуют по возрастанию без пропусков. В одной из конкретных реализаций языка использование функции позволяет получить следующие номера цифр: ORD (0) = = 240, ORD (5) = 245, ORD (9) = 249.
Таблица 1.1
Обращение |
Выполняемые функции |
Тип | |
аргумента |
функции | ||
ABS (X) |
|x| |
REAL или INTEGER |
REAL или INTEGER |
SQR (X) |
X2 | ||
SIN (X) |
Sin x |
REAL или INTEGER |
REAL |
COS (X) |
cos x | ||
EXP (X) |
ex | ||
IN (X) |
In x | ||
SQRT (X) | |||
ARCTAN (X) |
arctg x | ||
TRUNC (X)
|
Выделение целой части числа |
REAL |
INTEGER |
ROUND (X) |
Округление числа | ||
PRED (X)
|
Нахождение: предыдущего элемента |
INTEGER или CHAR, или BOOLEAN |
INTEGER или CHAR, или BOOLEA! |
SUCC (X) |
последующего элемента | ||
ORD (X) |
Определение порядкового номера символа X и наборе символов |
CHAR или BOOLEAN |
INTEGER |
CHR (I) |
Определение символа из набора символов по порядковому номеру i |
INTEGER |
CHAR |
ORD (X) |
Определение нечетности числа |
INTEGER
|
BOOLEAN |
Порядковые номера букв также располагаются по возрастанию, но могут не образовывать непрерывную последовательность. Так, ORD (‘I’) = 201, ORD ('J')= 209.
Функция CHR определяет символ из набора символов по порядковому номеру. Следовательно, функции ORD и CHR обратны друг другу. При записи функции CHR (245) определяется цифра 5, а при CHR(201) - буква I.
Функция ODD (X) выдаёт результат типа BOOLEAN в зависимости от чётности аргумента X. Если значение Х нечётно, то результат имеет значение TRUE, в противном случае – значение FALSE.
В ы р а ж е н и я определяют действия и последовательность вычисления значения. Они могут состоять из констант, переменных, стандартных функций, разделённых скобками и знаками операций. Порядок выполнения операций определяется скобками, а при их отсутствии – согласно старшинству (приоритету) операций.
Все операции над операндами (данными) можно разделить на четыре группы:
отрицания: NOT;
типа умножения (мультипликативные): ∗, /, DIV, MOD, AND;
типа сложения (аддитивные): +, -, OR;
типы отношения: <=, <, =, <>, >, >=.
Операции одного приоритета выполняются последовательно слева направо. Примеры записи выражений:
Запись на языке ПАСКАЛЬ |
Математическая запись |
0.5 + А |
a + 0,5 |
Р - Т/A - B |
p - T / a - b |
(1.25 ∗ SIN (X) + P) /SQRT (A + B) / X |
(1,25 sin x + p) / /x |
(C > 0.5) AND (C < 1.5) |
(c > 0,5) ^ (c < 1,5) |
С учётом старшинства операций и скобок при одних и тех же значениях операндов результаты выражения получаются различными
Выражение 7 — 2 * 3 имеет значение 1, а выражение (7—2)*3 — значение 15. Выражение 16/4 * 2 имеет значение 8, а не 2, так как операции деления и умножения — одного приоритета и выполняются по порядку следования слева направо.
В выражениях нельзя записывать подряд два знака операций. Математическое выражение а/—Ь записывается с использованием скобок для разделения знаков операции в виде А / (-В).
Типы результатов выражений в зависимости от типов операндов и выполняемых операций приведены в табл. 1.2.
Т а б л и ц а 1.2
Операция |
Знак операции |
Тип | |
операндов |
результата | ||
Cложение |
+ |
REAL или INTEGER |
INTEGER, если оба операнда INTEGER и REAL – в противном случае |
Умножение |
* | ||
Вычитание |
- | ||
Деление |
/ |
REAL или INTEGER |
REAL |
Деление с отбрасыванием остатка |
DIV |
INTEGER |
INTEGER |
Вычисление остатка при делении чисел |
MOD | ||
Отрицание |
NOT |
BOOLEAN |
BOOLEAN |
Дизъюнкция |
OR | ||
Конъюнкция |
AND | ||
Сравнение: на равенство на неравенство |
= < > |
Любой тип переменных и констант |
BOOLEAN |
Сравнение: больше меньше больше или равно меньше или равно |
> <
> = < = |
Любой скалярный тип
|
BOOLEAN |
Операции отношения применяются и к стандартной функции ORD. Так как все символы упорядочены, то для символов X1 и X2 справедливо выражение отношения ORD (X1) < ORD (X2). Отношение означает, что порядковый номер символа Х1 меньше, чем Х2. Поэтому результат выполнения операции отношения имеет тип BOOLEAN. Отношение ORD (‘3’) > ORD (‘6’) имеет результат FALSE, так как цифра 3 расположена раньше цифры 6, а следовательно, порядковые номера в отношении записываются как 243>246.
Операторы языка. С помощью операторов описываются действия над данными, выполняемые для реализации алгоритма решения задачи. По функциональному назначению операторы языка можно подразделить на группы: присваивания, ввода — вывода, управления, определения функций и процедур (подпрограмм).
Операторы присваивания вызывают выполнение выражений и присваивание значения выражения имени результата.
Операторы ввода—вывода позволяют вводить в основную память исходные данные и на устройствах вывода информации получать результаты вычислений.
Операторы управления организуют управление последовательностью выполнения операторов программы.
Операторы определения функций и процедур дают возможность разбивать программу на части, определять и именовать их.
В языке ПАСКАЛЬ по своему составу определены операторы двух типов: простые и структурные. Простым считается оператор, который не содержит других операторов, а структурным — оператор, содержащий в качестве компонентов один или несколько операторов. К простым операторам относятся операторы присваивая, перехода процедуры. К структурным операторам относятся операторы условные, выбора, цикла, составные. Составной оператор представляет собой последовательность операторов, заключенную в ключевые слова BEGIN и END.