Наиболее часто употребляемые библиотечные процедуры и функции называют стандартными. Для работы с ними не надо ни заказывать библиотеку, ни описывать их предварительно в программе.
Часть приводимых ниже процедур (от RESET до DISPOSE) будут описаны во II части книги, поэтому при первом чтении их можно опустить.
1) ORD(C) - выдает порядковый номер символа С в упорядоченной последовательности символов, задаваемой транслятором. Нумерация начинается с нуля.
2) CHR(I) - выдает символ с порядковым номером I. Функции ORD(C) и CHR(I) взаимнообратны, т. е. CHR(ORD(C))=C и ORD(CHR(I)) = I. В силу упорядоченности последовательности символов, ORD(Cl) < ORD(C2), если Cl < С2 и вообще, если R - логическая операция отношения
то из ORD(Cl) R ORD(C2) следует Cl R С2 и обратно.
3) PRED(C) - выдает значение, предшествующее С в упорядоченной последовательности значений.
4) SUCC(C) - выдает значение, следующее за С. Результат этих двух функций будет неопределенным, если соответствующих значений не существует; в этом случае не все трансляторы выдают диагностику.
5) ODD(X) - выдает TRUE, если X нечетно (X - целое).
6) элементарные математические функции:
(обратить внимание: нельзя на БЭСМ-б использовать выражение Х**2). Эти две функции выдают результат того же типа, что и аргумент.
Замечание. В этом, в общем удобном для программиста свойстве, кроется и источник "тяжелых" ошибок.
Например, одна из этих функций является фактическим параметром. Смена типа аргумента приведет к смене типа фактического параметра. Но тип соответствующего формального параметра строго фиксирован в описании соответствующего модуля, т. е. смена начальных данных в такой программе может привести к ошибке, которой при других данных не было.
TRUNC(X) - целая часть X, получающаяся при отбрасывании знаков после десятичной точки. Результат - целый, X - вещественный.
Пример.
ROUND (X) - вещественный X округляется до целого, выдаваемого как результат.
Пример.
Аргумент следующих функций может быть как вещественным, так и целым. Результат - всегда вещественный.
7) PACK (А, К, Z) - осуществляет упаковку одномерного массива А, начиная с К-й компоненты, в массив Z с 1-й компоненты. (Массив Z типа PACKED).
8) UNPACK (Z, А, К) - осуществляет распаковку одномерного массива Z начиная с 1-й компоненты в массив А с К-й компоненты. (Массив Z типа PACKED).
9) RESET(F) - устанавливает указатель файла на первую компоненту файла F и считывает ее в "окно"* F↑; функции EOF(F) присваивается значение FALSE, если файл не пуст; иначе - вначение F↑ не определено и функция EOF(F) имеет значение TRUE.
10) REWRITE(F) - очищает файл (т. е. F становится пустым файлом), устанавливает указатель файла на первую компоненту, присваивает функции EOF(F) значение TRUE. К функции REWRITE(F) необходимо обратиться перед записью в первую компоненту файла F.
11) GET(F) - в случае, когда EOF(F) = FALSE, продвигает указатель файла к следующей компоненте и присваивает значение этой компоненты "окну" Ff; если эта компонента - "конец файла", то значение F↑ становится неопределенным, a EOF(F) принимает значение TRUE.
12) PUT(F) - заносит значение Ff в ту компоненту файла, куда установлен указатель, если значение EOF(F) есть TRUE к моменту выполнения PUT(F). После выполнения PUT(F) значение Ff становится неопределенным.
* ( Подробнее о файлах см. п. 21, )
Пример.
Здесь оператор A: = SQR(DATA|) присваивает переменной A квадрат текущей компоненты файла DATA; оператор GET (DATA) продвигает указатель к следующей компоненте файла и читает ее в переменную DATAf.
13) WRITELN(F) - записывает символ "конец строки" в текущую компоненту текстового файла F.
14) READLN(F) - пропускает остаток текущей строки, устанавливает указатель файла на начало следующей строки текстового файла F.
15) EOLN(X) - принимает значение TRUE, если указатель файла установлен на символ конца строки (FALSE в противном случае) и засылает в X пробел.
16) EOF(X) - принимает значение TRUE, если X соответствует концу файла (FALSE - в противном случае).
17) NEW(P) - отводит место в памяти для новой динамической переменной и в Р запоминает ее адрес (см. 22.1).
18) NEW(P,P1) - отводит место в памяти для записи (RECORD) с вариантом Р1.
19) DISPOSE(P) - стирает динамическую переменную, на которую указывает переменная Р.
20) DISPOSE(P,Pl) - стирает динамическую переменную, созданную процедурой NEW(P,P1) и на которую указывает переменная Р (см. 22.3).