Текст книги "Песни о Паскале (СИ)"
Автор книги: Олег Деревенец
Жанр:
Драматургия
сообщить о нарушении
Текущая страница: 28 (всего у книги 29 страниц)
Рис.179 – Вкладка «Шрифт» (слева) и окно подтверждения (справа)
Результат настройки не заставит себя ждать (рис. 180).
Рис.180 – Русский текст в консольном окне
Приложение В
Особенности IDE Pascal ABCNet
Интегрированная среда разработки Pascal ABCNet пригодна для решения многих задач из этой книги. Я рекомендую её новичкам, делающим первые шаги в изучении Паскаля. Эта IDE проста в установке, не требует настройки, и отличается удобным русскоязычным оконным интерфейсом. IDE Pascal ABCNet создана в стенах Южного федерального университета, её можно бесплатно скачать с сайта http://pascalabc.net.
Ознакомимся с некоторыми особенностями этой IDE.
При первом вызове IDE появляется пустое окно, в которое можно ввести текст программы и сохранить под нужным именем (рис. 181). Если открыть несколько файлов с программами, каждый из них будет помещен в отдельной вкладке.
Рис. 181 – Окно IDE Pascal ABCNet
Готовая программа запускается клавишей F9 или соответствующей кнопкой на панели инструментов.
Результаты, формируемые программой, выводятся в область консоли в нижней части окна (рис. 182). Здесь же расположено поле для ввода данных пользователем. Для завершения ввода нажимается клавиша Enter или кнопка «Ввести». Кнопкой «Завершить» выполнение программы прекращается досрочно, то же самое случится при нажатии комбинации Ctrl+F2.
Рис.182 – Протокол работы запущенной программы
Запуск программы в пошаговом режиме выполняется кнопками на панели инструментов, либо через меню. В пошаговом режиме доступен просмотр локальных переменных (рис. 183), а также другой информации о программе (на соседних вкладках).
Разработчики IDE Pascal ABCNet стремились, очевидно, к совместимости её со «стандартной» IDE Borland Pascal в той мере, насколько это возможно. Но объектная технология «точка Net» диктует своё, – полной совместимости не получилось.
Рис.183 – Просмотр переменных в пошаговом режиме
Так, например, в данной IDE не существует встроенной функции Assigned. Но вы можете написать её сами.
function Assigned (p: pointer): boolean;
begin
Assigned:= p <> nil
end;
Ниже перечислены другие особенности Pascal ABCNet, которые следует учесть при переделке примеров данной книги.
• Отсутствует процедура FillChar. Записи и массивы нужно заполнять явным образом.
• Нельзя назначать файловым переменным пустое имя, связывая их, таким образом, с экраном и клавиатурой.
• Под символ отводится не один, а два байта (используется UNICODE).
• Строки являются объектами, поэтому доступ к нулевому элементу (байту длины) невозможен.
Приложение Г
Зарезервированные слова
Ключевые слова, которые нельзя применять по иному назначению.
Ключевое слово
Назначение
AND
Операция логического умножения «И»
ARRAY
Объявление массива
ASM
Начало блока инструкций на ассемблере
BEGIN
Начало блока операторов
CASE
Начало оператора множественного выбора
CONST
Начало секции объявления констант
CONSTRUCTOR
Объявление конструктора объекта
DESTRUCTOR
Объявление деструктора объекта
DIV
Операция целочисленного деления
DO
Элемент операторов FOR, WITH, WHILE
DOWNTO
Элемент оператора цикла FOR-DOWNTO-DO
ELSE
Элемент условных операторов IF, CASE
END
Завершение блоков BEGIN-END, CASE-END, ASM-END, RECORD-END
EXPORTS
Объявление списка экспорта для DLL
FALSE
Логическое значение «ЛОЖЬ»
FILE
Тип файловой переменной
FOR
Элемент оператора цикла FOR-TO-DO
FUNCTION
Объявление функции
GOTO
Безусловный переход на метку
IF
Элемент условного оператора IF-THEN-ELSE
IMPLEMENTATION
Объявление секции реализации модуля
IN
Проверка принадлежности элемента множеству
INHERITED
Квалификатор унаследованного метода объекта
INLINE
Оператор вставки ассемблерных кодов
INTERFACE
Объявление секции интерфейса модуля
LABEL
Объявление меток
LIBRARY
Объявление библиотечного модуля
MOD
Операция нахождения остатка от деления
NIL
Пустой указатель
NOT
Логическое отрицание «НЕ»
OBJECT
Объявление типа «объект»
OF
Элемент оператора CASE-OF-END
OR
Логическое сложение «ИЛИ»
PACKED
Объявление упакованного массива (устарело)
PROCEDURE
Объявление процедуры
PROGRAM
Объявление программы
RECORD
Начало объявления записи RECORD-END
REPEAT
Элемент оператора цикла с проверкой в конце REPEAT-UNTIL
SET
Объявление множества SET OF
SHL
Операция сдвига влево
SHR
Операция сдвига вправо
STRING
Объявление строкового типа
THEN
Элемент условного оператора IF-THEN-ELSE
TO
Элемент оператора цикла FOR-TO-DO
TRUE
Логическое значение «ИСТИНА»
TYPE
Начало секции объявления типов
UNIT
Объявление имени модуля
UNTIL
Элемент оператора цикла с проверкой в конце REPEAT-UNTIL
USES
Объявление внешних модулей
VAR
Начало секции объявления переменных
WHILE
Элемент оператора цикла с проверкой в начале WHILE-DO
WITH
Элемент оператора раскрытия записи WITH-DO
XOR
Логическое сравнение («ИСКЛЮЧАЮЩЕЕ ИЛИ» )
Директивы, имена которых не рекомендуется использовать по иному назначению.
Директива
Назначение в Borland Pascal
ABSOLUTE
Назначение переменной абсолютного адреса в памяти
ASSEMBLER
Объявление процедуры на ассемблере
EXPORT
Список экспорта
EXTERNAL
Объявление внешних имен для ассемблера
FAR
Спецификатор процедуры с «дальним» вызовом
FORWARD
Предварительное определение процедуры или функции
INDEX
Указание индекса процедуры в DLL
INTERRUPT
Спецификатор процедуры обработки прерывания
NAME
Импорт процедуры из DLL по имени
NEAR
Спецификатор процедуры с «ближним» вызовом
PRIVATE
Начало секции приватных полей объекта
PUBLIC
Начало секции публичных полей объекта
RESIDENT
Спецификатор резидентного элемента DLL
VIRTUAL
Спецификатор виртуального метода объекта
Приложение Д
Ошибки компиляции
Номер ошибки
Сообщение
Пояснение
1
Out of memory
Недостаточно оперативной памяти для работы компилятора. Воспользуйтесь средствами расширения оперативной памяти MS–DOS.
2
Identifier expected
В данном месте программы должен находиться идентификатор. Возможно, имеется попытка использовать зарезервированное слово.
3
Unknown identifier
Неизвестный (не определенный ранее) идентификатор.
4
Duplicate identifier
Повторное определение идентификатора.
5
Syntax error
Синтаксическая ошибка (нарушены правила написания предложения).
6
Error in real constant
Ошибка в изображении вещественного числа.
7
Error in integer constant
Ошибка в изображении целого числа.
8
String constant exceeds line
Строковая константа превышает допустимый размер (255 символов). Вероятно, пропущена закрывающая кавычка.
10
Unexpected end of file
Неожиданное завершение программы. Вероятно, не сбалансировано число зарезервированных слов begin и end, неправильно оформлен файл.
11
Line too long
Компилируемая строка программы превышает 127 символов.
12
Type identifier expected
В данном месте программы требуется идентификатор типа.
13
Too many open files
Попытка открыть в среде программирования количество файлов больше, чем допускается в операционной системе. Максимальное число одновременно открываемых файлов определяется строкой FILES=NN в файле CONFIG.SYS.
14
Invalid file name
Неверный путь или имя файла.
15
File not found
Файл не найден ни в текущем, ни в заданном каталоге.
16
Disk full
Недостаточно места на диске, куда записывается информация.
17
Invalid compiler directive
Ошибка в директиве компилятора, или она используется в недопустимом месте.
18
Too many files
Слишком много файлов используется при компиляции.
19
Undefined type in pointer def
При определении типа-указателя используется неизвестный базовый тип.
20
Variable identifier expected
В данном месте программы должен быть идентификатор переменной.
21
Error in type
Ошибка в определении типа.
22
Structure too large
Размер данных превышает ограничение в 65520 байт.
23
Set base type out of range
Тип-множество имеет более 256 элементов или содержит элементы с порядковым номером за пределами 0..255.
24
File components may not be files or objects
Компонентами файловой переменной не могут быть файлы или объекты.
25
Invalid string length
Неверная длина строки (максимум 255 символов).
26
Type mismatch
Несовместимые типы в операциях присваивания, в выражениях или у индекса массива. Тип фактического параметра при обращении к подпрограмме не соответствует типу формального параметра.
27
Invalid subrange base type
В типе-диапазоне может использоваться только порядковый тип.
28
Lower bound > than upper bound
В типе-диапазоне нижняя граница больше, чем верхняя.
29
Ordinal type expected
Здесь может использоваться только порядковый тип.
30
Integer constant expected
Здесь можно использовать только константу целого типа.
31
Constant expected
Здесь можно использовать только константу.
32
Integer or real constant expected
Здесь можно использовать только числовую константу.
33
Pointer Type identifier expected
Здесь должен быть указатель.
34
Invalid function result type
Недопустимый тип результата функции.
35
Label identifier expected
Здесь должен быть идентификатор метки.
36
BEGIN expected
Здесь ожидается зарезервированное слово BEGIN.
37
END expected
Здесь ожидается зарезервированное слово END.
38
Integer expression expected
Выражение должно быть целого типа.
39
Ordinal expression expected
Выражение должно быть порядкового типа.
40
Boolean expression expected
Выражение должно быть логического типа.
41
Operand types do not match
Типы операндов не совместимы друг с другом.
42
Error in expression
Ошибка, в выражении (например, пропущен знак операции между операндами).
43
Illegal assignment
Неправильно присвоено значение переменной.
44
Field identifier expected
Требуется указать поле записи.
45
Object file too large
Размер объектного файла превышает 64 кбайта.
46
Undefined EXTERN
Не найдена внешняя процедура или функция.
47
Invalid object file record
Файл, по-видимому, не является объектным.
48
Code segment too large
Размер кодового сегмента превышает 65520 байт.
49
Data segment too large
Размер сегмента данных превышает 65520 байт.
50
DO expected
Здесь следует поместить зарезервированное слово DO.
51
Invalid PUBLIC definition
Неправильное использование директивы PUBLIC в подпрограмме, написанной на ассемблере.
52
Invalid EXTRN definition
Неправильное использование директивы EXTRN в подпрограмме, написанной на ассемблере.
53
Too many EXTRN definitions
Слишком много директив EXTRN.
54
OF expected
Здесь следует поместить зарезервированное слово OF.
55
INTERFACE expected
В модуле пропущено зарезервированное слово INTERFACE.
56
Invalid relocatable reference
Неправильная перемещаемая ссылка в подпрограмме, написанной на ассемблере.
57
THEN expected
Здесь следует поместить зарезервированное слово THEN
58
TO or DOWNTO expected
Здесь следует поместить зарезервированное слово TO или DOWNTO
59
Undefined forward
Заголовок подпрограммы объявлен с директивой FORWARD, но сама подпрограмма далее не описана.
61
Invalid typecast
Неверное приведение типов. При преобразовании типа величины исходного и результирующего типа имеют различные размеры.
62
Division by zero
Попытка деления на нуль.
63
Invalid file type
Эта процедура работы с файлом не поддерживает данный тип файла.
64
Cannot read or write variables of this type
Недопустимый тип параметра у процедур Read, Readln, Write, Writeln.
65
Pointer variable expected
Эта переменная должна быть указателем.
66
String variable expected
Эта переменная должна иметь строковый тип.
67
String expression expected
Эта выражение должно иметь строковый тип.
68
Circular unit reference
Циклическая ссылка модулей друг на друга. Необходимо поместить ссылку на модули (USES) в секции IMPLEMENTATION.
69
Unit name mismatch
Имена модуля и файла, в котором он находится, не совпадают.
70
Unit version mismatch
Один или несколько используемых модулей изменены после их компиляции (несоответствие версий модулей). Необходимо выполнить их повторную компиляцию.
71
Internal stack overflow
Внутренний стек компилятора переполнен из-за глубокой вложенности операторов.
72
Unit file format error
Ошибка в формате скомпилированного модуля. Возможно, он был скомпилирован предыдущей версией компилятора.
73
Implementation expected
Пропущено объявление исполнительной части модуля.
74
Constant and case types don't match
Недопустимое значение константы.
75
Record or object variable expected
Переменная должна иметь тип записи или объекта.
76
Constant out of range
Используемая константа имеет недопустимое значение.
77
File variable expected
Эта переменная должна быть файлового типа.
78
Pointer expression expected
Это выражение должно иметь тип указателя.
79
Integer or real expression expected
Это выражение должно быть числовым.
80
Label not within current block
Метка находится за пределами данного блока.
81
Label already defined
Повторное использование метки.
82
Undefined label in preceding stmt part
Метка объявлена, но ни один оператор ею не помечен.
83
Invalid @ argument
Неверный аргумент у операции взятия адреса @.
84
UNIT expected
В модуле пропущено зарезервированное слово Unit.
85
";" expected
Здесь пропущена точка с запятой.
86
":" expected
Здесь пропущено двоеточие.
87
"," expected
Здесь пропущена запятая.
88
"(" expected
Здесь пропущена открывающая круглая скобка.
89
")" expected
Здесь пропущена закрывающая круглая скобка.
90
"=" expected
Здесь пропущен знак равенства.
91
":=" expected
Здесь пропущен знак присваивания.
92
"[" or "(." expected
Здесь пропущена открывающая квадратная скобка или скобка с точкой.
93
"]" or ".)" expected
Здесь пропущена закрывающая квадратная скобка или скобка с точкой.
94
"." expected
Здесь пропущена точка.
95
".." expected
Здесь пропущены две точки.
96
Too many variables
Размер глобальных или локальных переменных подпрограммы превышает 64Кбайт.
97
Invalid FOR control variable
Неправильная переменная цикла FOR.
98
Integer variable expected
Здесь должна быть переменная целого типа.
99
Files types are not allowed here
Файловый или процедурный тип здесь не допускается.
100
String length mismatch
Длина строковой константы не соответствует размеру массива символов.
101
Invalid ordering of fields
Порядок следования полей в типизированных константах типов записи или объекта должен соответствовать порядку их следования при объявлении типа.
102
String constant expected
Здесь должна быть строковая константа.
103
Integer or real variable expected
Здесь должна быть числовая переменная целого или вещественной типа.
104
Ordinal variable expected
Здесь должна быть переменная порядкового типа.
105
INLINE error
Ошибка в подпрограмме с директивой Inline.
106
Character expression expected
Здесь должно быть выражение символьного типа.
107
Too many relocation items
Главная программа слишком велика. Следует выделить часть её в подпрограммы.
108
Overflow in arithmetic operation
Переполнение при выполнении арифметической операции с числами целого типа.
109
No enclosing For, While or Repeat statement
Стандартные процедуры Break или Continue используются вне циклов For, While или Repeat.
110
Cannot run a unit
Программный модуль выполнить нельзя, необходимо написать программу, вызывающую этот модуль.
111
Compilation aborted
Компиляция прервана пользователем
112
CASE constant out of range
Значение константы в операторе CASE вышло за пределы от -32768 до 32767.
113
Error in statement
Ошибка в операторе.
114
Cannot call an interrupt procedure
Нельзя непосредственно вызвать процедуру обработки прерывания.
116
Must be in 8087 mode to compile
Типы Single, Double, Extended и Comp можно использовать только при наличии арифметического сопроцессора.
117
Target address not found
При использовании команды меню «Search | Find error» нельзя найти оператор для заданного адреса.
118
Include files are not allowed here
В данном месте нельзя использовать файл, подключаемый директивой {$I filename}. Оператор должен полностью находиться в одном файле.
119
No inherited methods are accessible here
Зарезервированное слово inherited использовано за пределами метода объекта или внутри метода объекта, у которого нет предков.
121
Invalid qualifier
Неправильный квалификатор, попытка задать индекс у параметра, не являющегося массивом.
122
Invalid variable reference
Неправильная ссылка на переменную, вероятно, не разыменован указатель.
123
Too many symbols
Символические имена программы занимают больше, чем 64 Кбайт. Следует попробовать разделить программу на части.
124
Statement part too large
Блок программы занимает более 24 Кбайт. Необходимо разбить его на процедуры и функции.
126
Files must be var parameters
Файловую переменную можно передавать в подпрограмму только по ссылке VAR.
127
Too many conditional symbols
Слишком много символов у параметра условной компиляции.
128
Misplaced conditional directive
Пропущена часть директивы условной компиляции.
130
Error in initial conditional defines
Ошибка в директиве условной компиляции
131
Header does not match previous definition
Заголовок процедуры не соответствует заголовку, объявленному с директивой FORWARD, или заготовку в интерфейсной части модуля.
133
Cannot evaluate this expression
Нельзя вычислить константное выражение или выражение, используемое в окне отладки.
134
Expression incorrectly terminated
Неправильно завершено выражение.
135
Invalid format specifier
Неправильная спецификация формата.
136
Invalid indirect reference
Неправильная косвенная ссылка.
137
Structured variables are not allowed here
Недопустимая операция над структурированными данными.
138
Cannot evaluate without System unit
В библиотечном файле Turbo.tpl отсутствует модуль System.
139
Cannot access this symbol
Нет доступа к этому символу.
140
Invalid floating-point operation
Переполнение при операциях с вещественными числами или деление на ноль.
141
Cannot compile overlays to memory
Программа, использующая оверлеи, должна быть скомпилирована на диск.
142
Pointer or procedural variable expected
Здесь должен быть указатель или переменная процедурного типа.
143
Invalid procedure or function reference
Неправильный вызов процедуры или функции. Возможно, её требуется скомпилировать в режиме {$F+}.
144
Cannot overlay this unit
Попытка использовать модуль в оверлейной программе, который не скомпилирован с директивой {$O+}.
146
File access denied
Неправильное обращение к файлу (например, запись в файл, доступный только для чтения, или используется имя каталога, а не файл).
147
Object type expected
Здесь должна быть переменная типа объект.
148
Local object types are not allowed
Нельзя определять переменную типа объекта внутри подпрограммы (локально).
149
Virtual expected
Этот метод должен быть виртуальным.
150
Method identifier expected
Здесь должен быть идентификатор метода.
151
Virtual constructors are not allowed
Конструктор не может быть виртуальным.
152
Constructor identifier expected
Здесь должен быть идентификатор конструктора.
153
Destructor identifier expected
Здесь должен быть идентификатор деструктора.
154
Fail only allowed within constructors
Процедура Fail вызвана не из конструктора, что недопустимо.
155
Invalid combination of opcode and operands
Неправильный набор операндов у команды ассемблера.
156
Memory reference expected
В команде ассемблера должна быть ссылка на память.
157
Cannot add or subtract relocatable symbols
Нельзя складывать или вычитать перемещаемые операнды в ассемблере.
158
Invalid register combination
Неправильная комбинация регистров.
159
286/287 instructions are not enabled
Нельзя использовать эту команду для процессоров 80286/80287.
160
Invalid symbol reference
Этот параметр нельзя использовать как операнд в команде ассемблера.
162
ASM expected
Здесь должно быть зарезервированное слово ASM.
Приложение Е
Ошибки исполнения
Номер ошибки
Сообщение
Пояснение
1
Invalid function number
Вызов несуществующей функции MS–DOS.
2
File not found
Не найден файл.
3
Path not found
Не найден каталог.
4
Too many open files
Слишком много открытых файлов. Максимальное число одновременно открываемых файлов определено в системном файле «CONFIG.NT» («CONFIG.SYS»).
5
File access denied
Отказано в доступе к файлу.
6
Invalid file handle
Неправильный описатель файла.
12
Invalid file access code
Неправильный режим доступа к файлу.
15
Invalid drive number
Неправильная буква (номер) устройства.
16
Cannot remove current directory
Нельзя удалить текущий каталог.
17
Cannot rename across drives
Нельзя переименовать файл заменой буквы устройства.
18
No more files
Процедура FindFirst или FindNext не нашла файл.
100
Disk read error
Попытка чтения за концом файла.
101
Disk write error
Ошибка (переполнение ) диска.
102
File not assigned
Обращение с файлом, для которого не выполнена процедура Assign.
103
File not open
Файл не открыт.
104
File not open for input
Файл не открыт для чтения.
105
File not open for output
Файл не открыт для записи.
106
Invalid numeric format
Недопустимый формат целого числа.
150
Disk is write-protected
Запись на защищенный от записи диск.
151
Bad drive request struct length
Ошибка, формируемая драйвером.
152
Drive not ready
Внешнее устройство не готово.
154
CRC error in data
Ошибка при записи на внешнее устройство.
156
Disk seek error
Попытка чтения-записи за пределами файла.
157
Unknown media type
Нельзя распознать тип устройства.
158
Sector Not Found
Не найден сектор диска.
159
Printer out of paper
В принтере нет бумаги.
160
Device write fault
Ошибка на устройстве при записи.
161
Device read fault
Ошибка на устройстве при чтении.
162
Hardware failure
Ошибка устройства ввода-вывода.
200
Division by zero
Деление на ноль.
201
Range check error
Нарушение диапазона.
202
Stack overflow error
Переполнение стека программы.
203
Heap overflow error
Переполнение динамической памяти.
204
Invalid pointer operation
Вызов Dispose или FreeMem с неверным указателем.
205
Floating point overflow
Переполнение вещественного числа.
206
Floating point underflow
Потеря значимости вещественного числа.
207
Invalid floating point operation
Ошибка действия с вещественным числом.
208
Overlay manager not installed
Диспетчер оверлеев не инициализирован.
209
Overlay file read error
Ошибка при чтении оверлейного файла.
210
Object not initialized
Объект не инициализирован.
211
Call to abstract method
Вызван абстрактный метод объекта.
212
Stream registration error
Ошибка регистрации типа данных для потока.
213
Collection index out of range
Выход индекса за пределы коллекции.
214
Collection overflow error
Переполнение коллекции.
215
Arithmetic overflow error
Переполнение в арифметической операции.
216
General Protection fault
Запись в недоступную область памяти.
Приложение Ж
Директивы управления компиляцией
Директивы для настройки реакции на ошибки времени выполнения (Runtime errors)
Директива компилятора
Флажок в окне настройки
Описание
$R
Range Checking
Проверка допустимых диапазонов для индексов массивов и чисел.
$S
Stack Checking
Проверка переполнения стека программы.
$I
I/O Checking
Проверка ошибок ввода-вывода.
$Q
Overflow Checking
Проверка переполнения при целочисленных вычислениях.
Директивы, управляющие синтаксическим контролем (Syntax options)
Директива компилятора
Флажок в окне настройки
Описание
$V
Strict Var Strings
Проверка совместимости типов для строк различной длины.
$B
Complete Boolean Eval
Вычисление полного булевого выражения.
$X
Extended Syntax
Разрешение вызова функций как процедур (возвращаемый результат игнорируется).
$T
Typed @ operator
Проверка совместимости типов указателей.
$P
Open parameters
Разрешение применения открытых параметров процедур и функций.
Директивы условной компиляции
Директива компилятора
Описание
$DEFINE NNN
Определяет идентификатор с именем NNN, который может быть далее использован в директивах условной компиляции вида $IF…
$UNDEF NNN
Отменяет определение идентификатора NNN.
$IFDEF NNN
Разрешает компиляцию последующего текста, если идентификатор NNN был ранее определен. Компилируемый участок текста завершается директивами $ELSE или $ENDIF.
$IFNDEF NNN
Разрешает компиляцию последующего текста, если идентификатор NNN был ранее НЕ определен. Компилируемый участок текста завершается директивами $ELSE или $ENDIF.
$IFOPT
Разрешает компиляцию последующего текста, если указанная опция (директива) компилятора разрешена. Компилируемый участок текста завершается директивами $ELSE или $ENDIF.
$ELSE
Завершает положительную ветвь условной компиляции, последующий текст компилируется, если условие компиляции ложно. Компилируемый участок текста завершается директивой $ENDIF.
$ENDIF
Завершает директиву условной компиляции.
Приложение З
Назначение пунктов меню
Это приложение содержит перевод пунктов меню IDE Free Pascal и Borland Pascal.
Приложение И
Стандартная кодировка символов MS–DOS
Коды управляющих символов (0–31)
Код
Обозначение символа
Назначение или выполняемое действие
0
NUL
Пустой символ
1
SOH
Начало заголовка
2
STX
Начало текста
3
ETX
Конец текста
4
EOT
Конец передачи
5
ENQ
Запрос
6
ACK
Подтверждение
7
BEL
Сигнал (звонок)
8
BS
Забой (шаг назад)
9
HT
Горизонтальная табуляция
10
LF
Перевод строки
11
VT
Вертикальная табуляция
12
FF
Новая страница (прогон формата)
13
CR
Возврат каретки
14
SO
Выключить сдвиг
15
SI
Включить сдвиг
16
DLE
Ключ связи данных
17
DC1
Управление устройством
18
DC2
Управление устройством
19
DC3
Управление устройством
20
DC4
Управление устройством
21
NAK
Отрицательное подтверждение
22
SYN
Синхронизация
23
ETB
Конец передаваемого блока
24
CAN
Отказ
25
EM
Конец среды
26
SUB
Замена
27
ESC
Ключ
28
FS
Разделитель файлов
29
GS
Разделитель группы
30
RS
Разделитель записей
31
US
Разделитель модулей
Символы с кодами 32–127
Код
Символ
Код
Символ
Код
Символ
Код
Символ
32
Пробел
56
8
80
P
104
h
33
!
57
9
81
Q
105
i
34
"
58
:
82
R
106
j
35
#
59
;
83
S
107
k
36
$
60
<
84
T
108
l
37
%
61
=
85
U
109
m
38
&
62
>
86
V
110
n
39
'
63
?
87
W
111
o
40
(
64
@
88
X
112
p
41
)
65
A
89
Y
113
q
42
*
66
B
90
Z
114
r
43
+
67
C
91
[
115
s
44
,
68
D
92
116
t
45
–
69
E
93
]
117
u
46
.
70
F
94
^
118
v
47
/
71
G
95
_
119
w
48
0
72
H
96
`
120
x
49
1
73
I
97
a
121
y
50
2
74
J
98
b
122
z
51
3
75
K
99
c
123
{
52
4
76
L
100
d
124
|
53
5
77
M
101
e
125
}
54
6
78
N
102
f
126
~
55
7
79
O
103
g
127
Del
Символы с кодами 128–255 (Кодовая таблица 866 – MS-DOS)
Код
Символ
Код
Символ
Код
Символ
Код
Символ
128
А
160
а
192
└
224
р
129
Б
161
б
193
┴
225
с
130
В
162
в
194
┬
226
т
131
Г
163
г
195
├
227
у
132
Д
164
д
196
─
228
ф
133
Е
165
е
197
┼
229
х
134
Ж
166
ж
198
╞
230
ц
135
З
167
з
199
╟
231
ч
136
И
168
и
200
╚
232
ш
137
Й
169
й
201
╔
233
щ
138
К
170
к
202
╩
234
ъ
139
Л
171
л
203
╦
235
ы
140
М
172
м
204
╠
236
ь
141
Н
173
н
205
═
237
э
142
О
174
о
206
╬
238
ю
143
П
175
п
207
╧
239
я
144
Р
176
░
208
╨
240
Ё
145
С
177
▒
209
╤
241
ё
146
Т
178
▓
210
╥
242
Є
147
У
179
│
211
╙
243
є
148
Ф
180
┤
212
╘
244
Ї
149
Х
181
╡
213
╒
245
ї
150
Ц
182
╢
214
╓
246
Ў
151
Ч
183
╖
215
╫
247
ў
152
Ш
184
╕
216
╪
248
°
153
Щ
185
╣
217
┘
249
∙
154
Ъ
186
║
218
┌
250
·
155
Ы
187
╗
219
█
251
√
156
Ь
188
╝
220
▄
252
№
157
Э
189
╜
221
▌
253
¤
158
Ю
190
╛
222
▐
254
■
159
Я
191
┐
223
▀
255
Примечание. Символы с кодами 128-255 предназначены для национальных алфавитов и символов псевдографики.
Приложение К
Некоторые встроенные процедуры и функции
Работа с текстовыми файлами
Assign(F, Name)
Назначает файловой переменной F имя файла
Name.
Reset(F)
Открывает файл F для чтения устанавливает позицию чтения в начало файла.
Rewrite(F)
Открывает файл для записи; в существующем файле старое содержимое стирается.
Write(F, …)
Записывает данные в файл на текущей строке.
Writeln(F, …)
Записывает данные в файл на текущей строке и добавляет признак конца строки.
Eoln(F)
Возвращает
TRUE
, если позиция чтения находится в конце строки.
Eof(F)
Возвращает
TRUE
, если позиция чтения находится в конце файла.
Read(F, …)
Читает данные из файла, пропуская признаки конца строки.
Readln(F, …)
Читает данные в текущей строке и переводит позицию чтения в начало следующей строки.
Close(F)
Закрывает ранее открытый для чтения или записи файл
F.
Генерация случайных чисел
Random(N)
Возвращает псевдослучайное целое число в диапазоне от 0 до N–1
Randomize
Изменяет псевдослучайную последовательность функции
Random
при каждом запуске программы.
Обработка строк
Length(S)
Возвращает длину строки S
Pos(S1, S2)
Возвращает позицию строки
S1
в строке
S2
Insert(S1, S2, Index)
Вставляет строку
S1
в строку
S2
начиная с позиции
Index
Copy(S, Index, Count)
Возвращает часть строки S, начиная с позиции
Index
длиной
Count
символов
Delete(S, Index, Count)
Удаляет часть строки S, начиная с позиции
Index
длиной
Count
символов
UpCase(Ch)
Переводит латинские буквы в верхний регистр
Действия с переменными любого типа
SizeOf(…)
Возвращает объём памяти, занимаемый переменной (или типом данных)
FillChar(X, Size, Val)
Заполняет переменную X значением
Val
. Параметр
Size
определяет количество заполняемых байтов.
Действия с переменными порядковых типов
Ord(X)
Возвращает код символа X
Chr(N)
Возвращает символ с кодом N
Succ(N)
Возвращает следующее значение порядкового типа
Pred(N)
Возвращает предыдущее значение порядкового типа
Inc(N)
Увеличивает число N на единицу
Dec(N)
Уменьшает число N на единицу
Усечение и округление действительных переменных
Trunc(R)
Возвращает целую часть действительного числа R
Round(R)
Возвращает округленное действительное число R
Динамические переменные и куча
New(P)
Создает новую динамическую переменную P
Dispose(P)
Уничтожает динамическую переменную P
MemAvail
Возвращает общий объём свободной памяти в куче
MaxAvail
Возвращает размер наибольшего свободного блока памяти в куче
Приложение Л
Перечень программ
Глава
Файл
Содержание программы
5
P_05_1
Вывод сообщения «Привет!»
7
P_07_1
Вывод приветствие на нескольких строках
8
P_08_1
Приветствие по имени
9
P_09_1
Приветствие по имени и фамилии
P_09_2
Приветствие по имени и фамилии (второй вариант)
P_09_3
Вывод «СПАРТАК – чемпион!»
10
P_10_1
Проверка пароля, версия 1
P_10_2
Проверка пароля, версия 2
11
P_11_1
Проверка пароля, версия 3
12
P_12_1
Проверка пароля в цикле, версия 1
P_12_2
Проверка пароля в цикле, версия 2
P_12_2
Проверка пароля в цикле, версия 3
13
P_13_1
Ввод данных со спутника (булевы переменные)
14
P_14_1
Экзамен по таблице умножения, версия 1
15
P_15_1
Случайные числа, версия 1
P_15_2
Случайные числа, версия 2
P_15_3
Экзамен по таблице умножения, версия 2
16
P_16_1
Вопрос-ответ, версия 1
17
P_17_1
Экзамен по таблице умножения, версия 3
18
P_18_1
Распечатка строки по вертикали, версия 1