Написание конструкций языка осуществляется в соответствии с синтаксисом и использованием принятого алфавита, который включает в себя буквы, цифры и специальные символы.
Символы языка. ПАСКАЛЬ использует следующие символы:
1. Буквы: 26 прописных и строчных латинских букв. ТП 7.0 не различает прописные и строчные буквы. (нечувствителен к регистру букв)
2. Цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
3. Специальные символы: = - * / | \ > < () [].,; {}.
4. Ключевые (служебные, зарезервированные) слова:
5. Знаки операций:
арифметических: + (сложение), - (вычитание), * (умножение), / (деление), 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) принимают значение только одной литеры, имеющейся в наборе литер данной. ЭВМ. Набор литер, использующийся в ЭВМ, должен отвечать следующим минимальным требованиям:
1) содержать буквы от А до Z, упорядоченные в алфавитном порядке;
2) содержать цифры от 0 до 9, упорядоченные в порядке возрастания;
3) включать знак пробела; I
4) каждый символ должен иметь порядковый номер.
Имя (идентификатор) образуется из букв и цифр, начинающихся с буквы. Имена используются в программах для записи констант, типов, переменных, функций, подпрограмм (процедур), файлов.
В большинстве ЭВМ максимальная длина имени в классическом ПАСКАЛЕ ограничена длиной в восемь символов. Примеры записи имен:
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.
В ы р а ж е н и я определяют действия и последовательность вычисления значения. Они могут состоять из констант, переменных, стандартных функций, разделённых скобками и знаками операций. Порядок выполнения операций определяется скобками, а при их отсутствии – согласно старшинству (приоритету) операций.
Все операции над операндами (данными) можно разделить на четыре группы:
1) отрицания: NOT;
2) типа умножения (мультипликативные): ∗, /, DIV, MOD, AND;
3) типа сложения (аддитивные): +, -, OR;
4) типы отношения: <=, <, =, <>, >, >=.
Операции одного приоритета выполняются последовательно слева направо. Примеры записи выражений:
Запись на языке ПАСКАЛЬ | Математическая запись |
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.