Структура Паскаль-программы.
Программа на языке Паскаль состоит из следующих частей:
Заголовок
Подключение модулей
Раздел описаний
Begin
Раздел операторов
End.
Заголовок – необязателен. Начинается с ключевого слова program.
Program <имя>;
Подключение модулей – ключевое слово uses.
Uses <имя1>, <имя2>, …, <имя n>;
Раздел описаний – состоит из нескольких подразделов.
Подраздел Label – описание меток.
Label <имя>, <число>;
Const– описание констант.
Type – описание типов.
Var– описание переменных.
Function– описание функций.
Procedure – описание процедур.
Раздел операторов – содержит действия, предписанные алгоритмом.
Раздел описаний совместно с разделом операторов называется блоком.
Program My_First_program;
Var n1, n2: integer;
x: real;
Begin
Write(‘n1=’); readln(n1);
Write(‘n2=’); readln(n2);
x := n1 / n2;
Writeln(‘n1/n2= ‘, x);
End.
Процедура – некоторая последовательность операторов языка Паскаль, к которой можно обратиться по имени.
Системы типов языка. Стандартные типы.
В языке Паскаль любая константа, переменная, значение выражения характеризуется своим типом. Тип данных определяет множество значений, которые может принимать переменная, а также множество операций, допустимых над данной переменной. Кроме того, тип данных определяет внутреннее представление переменной. Все типы языка Паскаль можно разделить на две категории: стандартные и определяемые программистом.
Системы типов языка Паскаль.
См. рис.1.
Логический (булевский) тип.
Boolean – идентификатор логического типа. Может принимать два значения: False(0) или True (1). Занимает 1 байт.
ByteBool – 1 байт.
WordBool – 2 байта.
LongBool – 4 байта.
Операции отношения: >, <, >=, <=, =, <>. Результаты этих операций имеют логический тип.
В Паскале существуют четыре логические операции: and (логическое И), or(логическое ИЛИ), xor (исключающее ИЛИ, сложение по модулю 2, отрицание равнозначностей), not (отрицание).
(x > 1) and (x < 2) – пример логических операций.
Целые типы.
Эта группа типов обозначает множество целых чисел в различных диапазонах.
Integer – длина 2 байта. От -32768 до 32767.
Byte– длина 1 байт. От 0 до 255.
Word– длина 2 байта. От 0 до 65535.
Shortint – длина 1 байт. От -128 до 127.
Longint– длина 4 байта. От -2^31 до 2^31-1.
Операции: +, -, *, /, div, mod.
Все операции, кроме деления, для целых данных дают результат целого типа. Деление всегда даёт результат вещественного типа.
Стандартные процедуры и функции, применимые к данным целого типа.
Odd(x): boolean– функция возвращает True, если число нечётное, и False– в противном случае.
Порядковыми называются типы, значения которых можно перечислить по порядку. Boolean тоже относится к порядковому типу.
Pred(x) – предыдущее значение. Тип результата – целый.
Succ(x) – следующее значение. Тип результата – целый.
Inc(x) – функция увеличения на единицу.
Inc(x, n) – процедура увеличивает значение первого параметра на n.
Dec(x) – функция уменьшения на единицу.
Dec(x, n) – процедура уменьшает первый параметр на n.
Вещественный тип.
Эта группа типов обозначает множество вещественных значений в различных диапазонах.
Real – идентификатор вещественного типа. Длина памяти – 6 байт. Диапазон: от 2,9*10^-39 до 1,7*10^38. В памяти машины величины типа Realпредставляются так: знак порядка, порядок, мантисса.
Single– длина 4 байта. От 1,1*10^-45 до 3,4*10^38. Представляется так: знак порядка, мантисса, порядок.
Double – длина 8 байт. От 5,0*10^-324 до 1,7*10^308.
Extended– длина 10 байт. От 3,4*10^-4932 до 1,1*10^4932.
Comp – длина 8 байт. От -2^63 до 2^63-1.
Операции: Арифметические: +, -, *, /. Результат – вещественного типа.
Операции отношения.
Стандартные процедуры и функции, применимые к данным вещественного типа.
Имя | Тип аргумента | Тип результата | Вычисление |
Abs(x) | целый или вещ. | тип аргумента | Модуль x |
Arctan(x) | целый или вещ. | вещественный | Арктангенс x |
Cos(x) | целый или вещ. | вещественный | Косинус x |
Exp(x) | целый или вещ. | вещественный | E в степени x |
Ln(x) | целый или вещ. | вещественный | Натуральный лог. x |
Sin(x) | целый или вещ. | вещественный | Синус x |
Sqr(x) | целый или вещ. | тип аргумента | Квадрат x |
Sqrt(x) | целый или вещ. | вещественный | Корень из x |
Frac(x) | вещественный | вещественный | Дробная часть аргум. |
Int(x) | вещественный | вещественный | Целая часть аргумента |
Pi | - | вещественный | Число Пи |
Round(x) | вещественный | целый | Округление до целого |
Trunc(x) | вещественный | целый | Целая часть аргумента |
Символьный тип.
Char – идентификатор символьного типа. Символы с кодом от 0 до 127 соответствуют ASCII. Символы с кодом от 128 до 255 не ограничены стандартами. Длина типа Char– 1 байт. Значения – коды символов от 0 до 255. Символы в тексте программы записываются в одиночных апострофах.
Операции: операции отношения.
Символьные типы относятся к порядковому типу.
Стандартные процедуры и функции, применимые к данным символьного типа.
Имя | Тип аргумента | Тип результата | Результат |
Ord(x) | символьный | целый | Код символа |
Chr(x) | byte | символьный | По коду - символ |
Pred(x) | символьный | символьный | Предыдущий символ |
Succ(x) | символьный | символьный | Следующий символ |
Upcase(x) | символьный | символьный | Перевод в верхний регистр |
Тип называется скалярным, если он не раскладывается на составные части.
Раздел определения констант.
Константы – это данные, которые в процессе выполнения программы нельзя менять.
Все константы делятся на литеральные и именованные.
Литеральные константы – это все числа, символы и строки символов в тексте программы.
Именованные константы – фиксированное значение, которому даётся имя.
Сonst – идентификатор раздела констант.
const<имя> = <значение>;
Тип константы определяется её изображением (способом её записи). Константы бывают целые, вещественные, символьные и строковые.
Целые константы – задаются десятеричным или шестнадцатеричным числом (шестнадцатеричные – со знаком $ в начале).
Вещественные константы могут создаваться форматом с фиксированной точкой или с плавающей точкой.
Символьные константы – одиночный символ с апострофами или строка с апострофами.
Раздел описания меток.
Метка в Паскале – это десятичное число или правильный идентификатор. Назначение метки – помечать оператор.
Label – идентификатор раздела меток.
Раздел описания переменных.
Var –идентификатор раздела переменных.
var <имя>: <тип>;
x: real;
x, y, z, a: integer;
В Паскале введено понятие типизированных констант. По сути, это – переменная с заданным начальным значением. Типизированные константы описываются в разделе constследующим образом: <имя>: <тип> = значение;
x: integer= 10;
Значение типизированной константы можно менять в программе.
При описании переменных в одном блоке не может быть одинаковых имён. Для переменных, описанных в блоке, выделяется объём памяти размером 64 кБ.
Определение типов.
Type– идентификатор раздела типов.
type <имя> = <описание типа>;
letters = ‘A’..’Z’;
Тип, который создаётся ограничением диапазона возможных значений какого-либо порядкового типа, называется ограниченным типом. Тип, на который накладываются ограничения, называется базовым типом.
interval = 0..100;
Базовые типы: все целые типы и тип Char.
Перечислимые типы – задаются перечислением тех значений, которые он может получать. Каждое значение именуется идентификатором и располагается в списке, обрамлённом круглыми скобками.
Пример: Color = (Red, Yellow, Green);
За каждым именем из этого списка закреплено определённое значение. Самим задать значение этих констант в Паскале нельзя.
var z: letters;
index: interval;
my_letter: ‘a’..’z’;
Выражения.
Основными объектами, из которых состоит исполняемая часть программы, являются константы, переменные и обращения к функциям. Каждый из этих объектов характеризуется своим значением и принадлежит к какому-либо типу данных.
Выражение – это формальное правило для вычисления нового значения. Выражением может быть одиночный объект (константа, переменная, обращение к функции) или несколько операндов, разделённых знаками операций.
Операции – определяют действие по вычислению новых значений, исходя из значения операндов.
Все операции Паскаля можно разделить на 4 группы по приоритетам: 1) унарные операции (логическое not, операция взятия адреса); 2) мультипликативные операции (умножение, деление, деление нацело, взятие остатка от целочисленного деления, логическое and, операции сдвига – shlи shr); 3) аддитивные операции (сложение, вычитание, логическое or, логическое xor); 4) операции отношения (проверка на равенство или неравенство, операции сравнения, операция проверки принадлежности к множеству – in).
Для логических выражений характерно то, что их значение может стать известным ещё до конца вычисления всего выражения. Такой способ называется усечённым способом вычисления логических выражений.
Options – Compiler – BooleanEvaluation– выбор типа вычисления логических выражений.
Операторы.
Это синтаксические конструкции, предназначенные как для записи действий по преобразованию данных, так и для задания порядка выполнения других действий. Язык Паскаль содержит всего 11 операторов: 1) оператор присваивания; 2) оператор процедуры; 3) оператор перехода; 4) составной оператор; 5) условный оператор; 6) оператор варианта; 7, 8, 9) операторы цикла; 10) оператор над записями; 11) пустой оператор. Кроме того, существуют операторы машинного кода и ассемблера.