1. Введение в язык Pascal
Основные символы языка – буквы, цифры и
специальные символы – составляют его алфавит. Язык Pascal включает следующий
набор основных символов:
1) 26 латинских строчных и 26 латинских
прописных букв:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz;
2) _ (знак подчеркивания);
3) 10 цифр: 0123456789;
4) знаки операций:
+ – х / = <> < > <= >= :=
@;
5) ограничители:
. , ' ( ) [ ] (. .) { } (* *) .. : ;
6) спецификаторы: ^ # $;
7) служебные (зарезервированные) слова:
ABSOLUTE,
ASSEMBLER, AND, ARRAY, ASM, BEGIN, CASE, CONST, CONSTRUCTOR, DESTRUCTOR, DIV,
DO, DOWNTO, ELSE, END, EXPORT, EXTERNAL, FAR, FILE, FOR, FORWARD, FUNCTION,
GOTO, IF, IMPLEMENTATION, IN, INDEX, INHERITED, INLINE, INTERFACE, INTERRUPT,
LABEL, LIBRARY, MOD, NAME, NIL, NEAR, NOT, OBJECT, OF, OR, PACKED, PRIVATE,
PROCEDURE, PROGRAM, PUBLIC, RECORD, REPEAT, RESIDENT, SET, SHL, SHR, STRING,
THEN, TO, TYPE, UNIT, UNTIL, USES, VAR, VIRTUAL, WHILE, WITH, XOR.
Кроме перечисленных, в набор основных
символов входит пробел. Пробелы нельзя использовать внутри сдвоенных символов и
зарезервированных слов.
Концепция типа для данных
В математике принято классифицировать
переменные в соответствии с некоторыми важными характеристиками. Производится
строгое разграничение между вещественными, комплексными и логическими
переменными, между переменными, представляющими отдельные значения и множество
значений, и т. д. При обработке данных на ЭВМ такая классификация еще более
важна. В любом алгоритмическом языке каждая константа, переменная, выражение
или функция бывают определенного типа.
В языке Pascal существует правило: тип явно
задается в описании переменной или функции, которое предшествует их
использованию. Концепция типа языка Pascal имеет следующие основные свойства:
1) любой тип данных определяет
множество значений, к которому принадлежит константа, которые может принимать
переменная или выражение либо вырабатывать операция или функция;
2) тип значения, задаваемого константой,
переменной или выражением, можно определить по их виду или описанию;
3) каждая операция или функция требуют
аргументов фиксированного типа и выдают результат фиксированного типа.
Отсюда следует, что транслятор может
использовать информацию о типах для проверки вычислимости и правильности
различных конструкций.
Тип определяет:
1) возможные значения переменных,
констант, функций, выражений, принадлежащих к данному типу;
2) внутреннюю форму представления
данных в ЭВМ;
3) операции и функции, которые могут
выполняться над величинами, принадлежащими к данному типу.
Следует заметить, что обязательное описание
типа приводит к избыточности в тексте программ, но такая избыточность является
важным вспомогательным средством разработки программ и рассматривается как
необходимое свойство современных алгоритмических языков высокого уровня.
В языке Pascal существуют скалярные и
структурированные типы данных. К скалярным типам относятся стандартные типы и
типы, определяемые пользователем. Стандартные типы включают целые,
действительные, символьный, логические и адресный типы.
Целые типы определяют константы, переменные
и функции, значения которых реализуются множеством целых чисел, допустимых в
данной ЭВМ.
Действительные типы определяет те данные,
которые реализуются подмножеством действительных чисел, допустимых в данной
ЭВМ.
Типы, определяемые пользователем, –
перечисляемый и интервальный. Структурированные типы имеют четыре
разновидности: массивы, множества, записи и файлы.
Кроме перечисленных, Pascal включает еще два
типа – процедурный и объектный.
Выражение языка состоит из констант,
переменных, указателей функций, знаков операций и скобок. Выражение задает
правило вычисления некоторого значения. Порядок вычисления определяется
старшинством (приоритетом) содержащихся в нем операций. В языке Pascal принят
следующий приоритет операций:
1) вычисления в круглых скобках;
2) вычисления значений функций;
3) унарные операции;
4) операции *, /, div, mod, and;
5) операции +, —, or, xor;
6) операции отношения =, <>,
<, >, <=, >=.
Выражения входят в состав многих операторов
языка Pascal, – также могут быть аргументами встроенных функций.
2. Стандартные
процедуры и функции
Арифметические функции
1. Function Abs(X);
Возвращает абсолютное значение параметра.
X – выражение вещественного или
целочисленного типа.
2. Function
ArcTan(X: Extended): Extended;
Возвращает арктангенс аргумента.
X – выражение вещественного или
целочисленного типа.
3. Function
Ехр(Х: Real): Real;
Возвращает экспоненту.
X – выражение вещественного или
целочисленного типа.
4. Function
Frac(X: Real): Real;
Возвращает дробную часть аргумента.
X – выражение вещественного типа. Результат
– дробная часть X, т. е.
Frac (X)
= X–Int (X).
5. Function
Int(X: Real): Real;
Возвращает целочисленную часть аргумента.
X – выражение вещественного типа. Результат
– целочисленная часть X, т. е. X, округленный к нулю.
6. Function Ln(X: Real): Real;
Возвращает натуральный логарифм (Ln е = 1)
выражения X вещественного типа.
7. Function Pi: Extended;
Возвращает значение Pi, которое определено
как 3.1415926535.
8. Function
Sin(X: Extended): Extended;
Возвращает синус аргумента.
X – выражение вещественного типа. Sin
возвращает синус угла X в радианах.
9. Function
Sqr(X: Extended): Extended;
Возвращает квадрат аргумента.
X – выражение с плавающей запятой. Результат
того же самого типа, что и X.
10. Function
Sqrt(X: Extended): Extended;
Возвращает квадратный корень аргумента.
X – выражение с плавающей запятой. Результат
– квадратный корень X.
Процедуры и функции преобразования
величин
1. Procedure
Str(X [: Width [: Decimals]]; var S);
Преобразовывает число X в строковое представление
согласно
Width и параметрам форматирования Decimals.
X – выражение вещественного или целого типа. Width и Decimals – выражения
целого типа. S – переменная типа String или символьный массив с нулевым
окончанием, если допускается расширенный синтаксис.
2. Function
Chr(X: Byte): Char;
Возвращает символ с порядковым номером X в
ASCII-таблице.
3. Function High(X);
Возвращает наибольшее значение в диапазоне
параметра.
4. Function Low(X);
Возвращает наименьшее значение в диапазоне
параметра.
5. Function Ord(X): Longint;
Возвращает порядковое значение выражения
перечислимого типа. X – выражение перечислимого типа.
6. Function
Round(X: Extended): Longint;
Округляет значение вещественного типа до
целого. X – выражение вещественного типа. Round возвращает значение Longint,
которое является значением X, округленным до ближайшего целого числа. Если X
находится точно посередине между двумя целыми числами, возвращается число с
наибольшей абсолютной величиной. Если округленное значение X выходит за
диапазон Longint, генерируется ошибка времени выполнения программы, которую вы
можете обработать с использованием исключительной ситуации EInvalidOp.
7. Function
Trunc(X: Extended): Longint;
Усекает значение вещественного типа до
целого. Если округленное значение X выходит за диапазон Longint, генерируется
ошибка времени выполнения программы, которую вы можете обработать с
использованием исключительной ситуации EInvalidOp.
8. Procedure
Val(S; var V; var Code: Integer);
Преобразовывает число из строкового значения
S в числовое
представление V. S – выражение строкового
типа – последовательность символов, которая формирует целое или вещественное
число. Если выражение S недопустимо, индекс неверного символа сохраняется в
переменной Code. В противном случае Code устанавливается в нуль.
Процедуры и функции работы с
порядковыми величинами
1. Procedure
Dec(varX [; N: Longlnt]);
Вычитает единицу или N из переменной X.
Dec(X) соответствует X:= X – 1, и Dec(X, N) соответствует X:= X – N. X –
переменная перечислимого типа или типа PChar, если допускается расширенный
синтаксис, и N – выражение целочисленного типа. Процедура Dec генерирует
оптимальный код и особенно полезна в длительных циклах.
2. Procedure
Inc(varX [; N: Longlnt]);
Прибавляет единицу или N к переменной X. X –
переменная перечислимого типа или типа PChar, если допускается расширенный
синтаксис, и N – выражение целочисленного типа. Inc (X) соответствует
инструкции X:= X + 1, и Inc (X, N) соответствует инструкции X:= X + N.
Процедура Inc генерирует оптимальный код и особенно полезна в длительных
циклах.
3. Function
Odd(X: Longlnt): Boolean;
Возвращает True, если X – нечетное число, и
False – в противном случае.
4. Function Pred(X);
Возвращает предыдущее значение параметра. X
– выражение перечислимого типа. Результат того же самого типа.
5. Function Succ(X);
Возвращает следующее значение параметра. X –
выражение перечислимого типа. Результат того же самого типа.
3. Операторы языка
Pascal
Условный оператор
Формат полного условного оператора
определяется следующим образом: If В then SI else S2; где В – условие
разветвления (принятия решения), логическое выражение или отношение; SI, S2 –
один выполняемый оператор, простой или составной.
При выполнении условного оператора сначала
вычисляется выражение В, затем анализируется его результат: если В – истинно,
то выполняется оператор S1 – ветвь then, а оператор S2 пропускается; если В –
ложно, то выполняется оператор S2 – ветвь else, а оператор S1 – пропускается.
Также существует сокращенная форма условного
оператора. Она записывается в виде: If В then S.
Оператор выбора
Структура оператора имеет следующий вид:
case S
of
c1:
insruction1;
c2:
insruction2;
…
cn:
insructionN;
else
instruction
end;
где S – выражение порядкового типа,
значение которого вычисляется;
с1, с2….,
сп – константы порядкового типа, с которыми сравниваются выражения
S; instruction1,…, instructionN – операторы, из которых выполняется тот, с константой
которого совпадает значение выражения S;
instruction – оператор, который выполняется, если значение выражения Sylq
совпадает ни с одной из констант c1, с2…. сn.
Данный оператор является обобщением
условного оператора If для произвольного числа альтернатив. Существует
сокращенная форма оператора, при которой ветвь else отсутствует.
Оператор цикла с параметром
Операторы цикла с параметром, которые
начинаются со слова for, вызывают повторяющееся выполнение оператора,
который может быть составным оператором, пока управляющей переменной
присваивается возрастающая последовательность значений.
Общий вид оператора for:
for <счетчик цикла> :=
<начальное значение> to <конечное значение> do <оператор>;
Когда начинает выполняться оператор for,
начальное и конечное значения определяются один раз, и эти значения сохраняются
на протяжении всего выполнения оператора for. Оператор, который
содержится в теле оператора for, выполняется один раз для каждого
значения в диапазоне между начальным и конечным значением. Счетчик цикла всегда
инициализируется начальным значением. Когда работает оператор for,
значение счетчика цикла увеличивается при каждом повторении на единицу. Если
начальное значение превышает конечное значение, то содержащийся в теле
оператора for оператор не выполняется. Когда в операторе цикла используется
ключевое слово downto, значение управляющей переменной уменьшается при
каждом повторении на единицу. Если начальное значение в таком операторе меньше,
чем конечное значение, то содержащийся в теле оператора цикла оператор не
выполняется.
Если оператор, содержащийся в теле оператора
for, изменяет значение счетчика цикла, то это является ошибкой. После
выполнения оператора for значение управляющей переменной становится
неопределенным, если только выполнение оператора for не было прервано с
помощью оператора перехода.
Оператор цикла с предусловием
Оператор цикла с предусловием (начинающийся
с ключевого слова while) содержит в себе выражение, которое управляет повторным
выполнением оператора (который может быть составным оператором). Форма цикла:
While B do S;
где B – логическое условие,
истинность которого проверяется (оно является условием завершения цикла);
S –
тело цикла – один оператор.
Выражение, с помощью которого осуществляется
управление повторением оператора, должно иметь логический тип. Вычисление его
производится до того, как внутренний оператор будет выполнен. Внутренний
оператор выполняется повторно до тех пор, пока выражение принимает значение
Тruе. Если выражение с самого начала принимает значение False, то оператор,
содержащийся внутри оператора цикла с предусловием, не выполняется.
Оператор цикла с постусловием
В операторе цикла с постусловием
(начинающимся со слова repeat) выражение, которое управляет повторным
выполнением последовательности операторов, содержится внутри оператора repeat.
Форма цикла:
repeat S until B;
где B – логическое условие,
истинность которого проверяется (оно является условием завершения цикла);
S –
один или более операторов тела цикла.
Результат выражения должен быть логического
типа. Операторы, заключенные между ключевыми словами repeat и until,
выполняются последовательно до тех пор, пока результат выражения не примет
значение True. Последовательность операторов выполнится, по крайней мере, один
раз, поскольку вычисление выражения производится после каждого выполнения
последовательности операторов.
|