Оглавление
От автора ................... 3
Введение ................... 5
Часть I. РАБОТА В СРЕДЕ ПРОГРАММИРОВАНИЯ
ТУРБО ПАСКАЛЬ
1. Интегрированная среда....... 9
1.1. Окно просмотра результатов Output .............. 11
1.2. Окно просмотра переменных Watch .............. 12
1. 3. Структура меню ........... 12
1.3.1. Пункт File (работа с файлами) ................. 14
1.3.2. Пункт Edit (работа с редактором) .............. 18
1.3.3. Пункт Run (запуск на выполнение) ............. 20
1.3.4. Пункт Compile (компиляция) .................. 22
1.3.5. Пункт Options (установка параметров системы) ... 26
1.3.6. Пункт Debug (установки отладчика) ............ 35
1.3.7. Пункт Break/Watch (точки останова/обзор) ....... 40
1.4. Интерактивная справка...... 42
2. Настройка системы............. 45
2.1. Система настройки среды программирования ... 45
2.2. Принятые в системе расширения имен файлов...... 47
Часть II. ЯЗЫК ТУРБО ПАСКАЛЬ
3. Построение программ......... 49
3.1. Алфавит языка и зарезервированные слова......... 49
3.2.Общая структура программ ...................... 51
3.3.Комментарии и ключи компиляции ............... 54
3.4.Условная компиляция программ.................. 57
4. Введение в систему типов языка................... 60
4.1. Простые типы языка ........ 62
4.1.1. Целочисленные типы ...... 62
4.1.2. Вещественные числа....... 63
4.1.3. Логический тип........... 64
4.1.4. Символьный тип.......... 64
4.1.5. Строковый тип ........... 64
4.1.6.Адресный тип............. 65
4.1.7. Перечислимые типы ...... 65
4.1.8. Ограниченные типы (диапазоны) .............. 68
4.2 Сложные типы языка ......... 69
5. Константы и переменные....... 75
5.1. Простые константы........... 75
5.2. Переменные ................ 77
5.2.1. Совмещение адресов директивой absolute ....... 79
5.2.2. Переменные со стартовым значением или типизированные константы...82
5.3. Операция присваивания и совместимость типов и значений............... 85
5.4. Изменение (приведение) типов и значений.......... 89
6. Управляющие структуры языка..................... 93
6.1. Простой и составной операторы................... 93
6.2. Условный оператор (IF...THEN...ELSE) ........... 94
6.3. Оператор варианта (CASE) ................. 96
6.4. Оператор цикла с предусловием (WHILE) ..... 98
6.5. Оператор цикла с постусловием (REPEAT...UNTIL)... 99
6.6. Оператор цикла с параметром (FOR...DO) ......... 100
6.7. Оператор безусловного перехода Goto ............ 103
6.8. Операторы Exit и Halt......... 105
6.9. Процедуры и функции ....... 106
6.9.1. Параметры. Глобальные и локальные описания..................... 107
6.9.2. Опережающее описание процедур и функций.... 112
6.9.3. Объявление внешних процедур................ 113
6.9.4. Процедуры и функции как параметры.......... 113
6.9.5. Переменные-процедуры и функции............ 116
6.9.6. Специальные приемы программирования....... 117
6.10. Модули. Структура модулей.................... 124
6.11. Особенности работы с модулями ................ 127
6.12. Система библиотечных модулей языка........... 130
Часть III. СРЕДСТВА ЯЗЫКА ТУРБО ПАСКАЛЬ
7. Массивы, записи и множества в деталях............. 132
7.1. Массивы (Array) и работа с ними ............... 132
7.2. Тип «запись» (Record) и оператор присоединения With ............... 136
7.3. Тип «множество» (Set). Операции с множествами..................... 142
8. Обработка символов и строк ...................... 148
8.1. Символьный и строковый типы (Char и String) .... 148
8.2. Операции над символами ...................... 151
8.3. Операции над строками........................ 152
8.3.1. Редактирование строк....................... 154
8.3.2. Преобразование строк....................... 158
9. Математические возможности Турбо Паскаля.......... 161
9.1. Базовые операции.......... 161
9.2. Битовая арифметика........ 164
9.3. Логические вычисления и операции отношения ... 171
9.4. Математические процедуры и функции .......... 175
9.4.1. Обсуждение математических функций языка ... 177
9.4.2. Генераторы случайных чисел ................ 179
9.4.3. Оптимизация сложения и вычитания........... 180
9.5. Использование математического сопроцессора 80X87.................. 180
10. Код программы, данные, адреса .................... 186
10.1. Система адресации MS-DOS................... 186
10.2. Распределение памяти при выполнении программ .................... 187
10.3. Анализ расположения кода и областей данных программы...............189
10.4. Тип Pointer ................ 189
10.5. Средства для работы с адресами ............. 190
10.5.1. Определение адреса переменных............. 191
10.5.2. Создание адреса функцией Ptr ............. 192
10.5.3. Определение размеров типов и переменных .. 193
11. Ссылки, динамические переменные и структуры... 194
11.1. Ссылочные переменные ....................... 194
11.2. Операция разыменования ..................... 196
11.3. Организация памяти области кучи............. 197
11.4. Управление размерами области кучи и стека... 199
11.5. Процедуры управления кучей ................. 199
11.5.1. Размещение динамических переменных. Процедуры New и GetMem..... 200
11.5.2. Освобождение динамических переменных. Процедуры Dispose и FreeMem.... 201
11.5.3. Управление состоянием кучи. Процедуры Mark и Release......... 202
11.5.4. Анализ состояния кучи. Функции MaxAvail и MemAvail.......... 204
11.5.5.Более детальный анализ состояния кучи ...... 205
11.5.6. Обработка ошибок распределения памяти..... 209
11.6. Ссылки, работающие не с кучей................ 211
11.7. Как организовать структуры, большие чем 64K? ..................... 212
11.8. Практический пример построения стека.......... 214
12. Ввод-вывод данных и файловая система. 220
12.1. Понятие логического файла .................... 220
12.2. Физические файлы в MS-DOS .................. 221
12.3. Понятие буфера ввода-вывода .................. 223
12.4. Файловые типы Турбо Паскаля................. 223
12.5. Общие процедуры для работы с файлами ........ 225
12.5.1. Связывание файлов........................ 226
12.5.2. Открытие файлов....... 227
12.5.3. Закрытие файлов........ 227
12.5.4. Переименование файлов..................... 228
12.5.5. Удаление файлов........ 229
12.5.6. Анализ состояния файлов.................... 229
12.6. Текстовые файлы .......... 230
12.6.1. Текст-ориентированные процедуры и функции ................... 231
12.6.2. Операция ввода-вывода в текстовые файлы.... 238
12.7. Типизированные файлы и операции ввода-вывода..................... 245
12.8. Бестиповые файлы и операции ввода-вывода...... 249
12.9. Последовательный и прямой доступ к файлам..... 254
12.9.1. Опрос размеров файлов и позиции в них ....... 256
12.9.2. Позиционирование в файлах................. 257
12.9.3. Усечение файлов........ 259
12.10. Процедуры для работы с каталогами............ 259
12.11. Обработка ошибок ввода-вывода............... 261
12.11.1. Функция IOResult ...... 262
12.11.2. Примеры обработки ошибок ввода-вывода.... 262
12.11.3. Сводка номеров ошибок ввода-вывода....... 266
13. Объектно-ориентированное программирование....... 270
13.1. Определения объектов........................ 270
13.2. Область действия полей объекта и параметр Self .................... 273
13.3. Наследование ............. 275
13.4. Присваивание объектов........................ 279
13.5. Полиморфизм............ 280
13.5.1. Статические методы ....................... 281
13.5.2. Виртуальные методы....................... 282
13.5.3. Выбор вида метода...... 286
13.6. Динамические объекты........................ 286
13.6.1. Создание динамических объектов............. 286
13.6.2. Освобождение объектов. Деструкторы......... 288
13.6.3. Обработка ошибок при работе с динамическими объектами.......... 289
13.7. Функции TypeOf и SizeOf ....................... 292
13.8. Задание стартовых значений объектам............ 293
13.9. Модули, экспортирующие объекты.............. 293
14. Специальные средства языка....................... 295
14.1. Работа с командной строкой. Функции ParamCount и ParamStr.......... 295
14.2. Доступ к памяти ПЭВМ. Массивы Mem, MemW, MemL............... 297
14.3. Доступ к портам ввода-вывода. Массивы Port и PortW................ 298
14.4. Процедура заполнения FillChar ................ 299
14.5. Процедура перемещения данных Move.......... 301
14.6. Функции обработки машинных слов Lo.Hi и Swap................... 304
14.7. Вставки машинного кода в программе.......... 304
14.7.1. Оператор inline ........ 304
14.7.2. Процедуры с директивой inline.............. 307
14.8. Процедура завершения и обработка ошибок программ ................ 307
14.8.1. Оператор RunError...... 311
14.8.2. Сводка номеров фатальных ошибок.............. 311
Часть IV. СПЕЦИАЛЬНЫЕ БИБЛИОТЕКИ ЯЗЫКА
15. Модуль CRT ................. 314
15.1. Вывод специальных символов.................. 316
15.2. Модификация операторов Read, ReadLn.......... 318
15.3. Системные переменные модуля CRT............. 319
15.3.1. Переменные управления выводом на дисплей..................... 320
15.3.2. Переменные управления работой клавиатуры..................... 321
15.3.3. Переменная TextAttr....................... 323
15.4. Процедуры и функции модуля CRT............. 325
15.4.1. Работа с экраном в целом................... 327
15.4.2. Позиционирование курсора................. 331
15.4.3. Работа со строками........................ 334
15.4.4. Настройка цвета........ 337
15.4.5. Подача звуковых сигналов.................. 339
15.4.6. Использование встроенного таймера.......... 342
15.4.7. Опрос клавиатуры ...... 342
15.4.8. Переназначение стандартных файлов......... 343
16. Модуль DOS ................. 345
16.1. Опрос и установка параметров MS-DOS......... 346
16.1.1. Управление параметрами BREAK и VERIFY... 347
16.1.2. Опрос системных переменных MS-DOS....... 347
16.2. Работа с часами и календарем .................. 349
16.2.1. Опрос и назначение даты.................... 350
16.2.2. Опрос и назначение времени................. 351
16.2.3. Работа с датой создания файлов.............. 352
16.3. Анализ ресурсов дисков....................... 354
16.4. Работа с каталогами и файлами................. 356
16.4.1. Типы и константы модуля DOS для работы с файлами . 357
16.4.2. Переменная DosError....................... 361
16.4.3. Процедуры поиска файлов на диске........... 362
16.4. 4. Работа с атрибутами файлов................. 365
16.4.5. Анализ имен файлов........................ 367
16.5. Работа с прерываниями MS-DOS................ 369
16.5.1. Чтение и перестановка адресов подпрограмм прерываний ........ 370
16.5.2. Процедура Keep прерывания процедурой Intr... 373
16.5.3. Процедура MsDos ....... 373
16.6. Организация субпроцессов и резидентных программ................... 375
16.6.1. Программирование субпроцессов............. 379
16.6.2 Процедура Keep и резидентные программы..... 384
17. Модуль Printer................. 387
17.1. Содержание модуля Printer...................... 387
17.2. Низкоуровневые средства работы с принтером.... 388
17.3. Работа с двумя принтерами одновременно........ 390
18. Модуль Overlay................ 393
18.1. Оверлейное построение программ................ 393
18.2. Правила оформления оверлейных программ....... 394
18.3. Инициализация работы оверлеев................. 395
18.3.1. Включение администратора оверлеев......... 395
18.3.2. Анализ результата инициализации............ 396
18.3.3. Размещение оверлейного файла в EMS-памяти .................... 397
18.4. Управление оверлейным буфером............... 398
18.4.1. Опрос размера буфера ..................... 399
18.4.2. Установка размера буфера................... 399
18.4.3. Принудительная очистка буфера.............. 400
18.5. Оптимизация работы оверлеев .................. 400
18.5.1. Установка размера области испытаний........ 401
18.5.2. Подсчет вызовов оверлеев................... 401
18.6. Предопределенные переменные для работы с оверлеями............... 402
18.7. Включение оверлеев в ЕХЕ-файлы.............. 403
19. Модуль Graph................. 405
19.1. Файлы BGI и содержимое модуля Graph......... 405
19.2. Управление графическими режимами............ 407
19.2.1. Инициализация и закрытие графического режима................. 407
19.2.2. Обработка ошибок инициализации........... 408
19.2.3. Классификация и анализ графических режимов................... 412
19.2.4. Очистка экрана и переключение режимов..... 416
19.2.5. Управление режимом вывода отрезков на экран................... 419
19.3. Системы координат и «текущий указатель» ...... 421
19.3.1. Координаты устройства и мировые координаты................... 421
19.3.2. Управление «текущим указателем» .......... 423
19.4. Рисование графических примитивов и фигур...... 424
19.4.1. Линии и их стили ....... 424
19.4.2. Коэффициент сжатия изображения............ 426
19.4.3. Окружности, эллипсы и дуги................. 427
19.4.4. Построение прямоугольников и ломаных...... 430
19.5. Управление цветами и шаблонами заливки (заполнения............. 432
19.5.1. Немного о цветах ........ 432
19.5.2. Задание типа заливки........................ 435
19.5.3. Заливка областей изображения............... 439
19.5.4. Опрос и установка цветов пера и фона......... 441
19.5.5. Управление палитрой....................... 443
19.6. Битовые графические операции................. 448
19.6.1. Битовые операции ...... 448
19.6.2. Работа с фрагментами изображений........... 451
19.7. Управление видеостраницами................... 454
19.8. Графические окна.......... 456
19.9. Вывод текста.............. 458
19.9.1. Выбор шрифта и стиля...................... 458
19.9.2. Предварительная загрузка и регистрация шрифтов................. 460
19.9.3. Непосредственный вывод строк.............. 463
19.9.4. Размер букв и его масштабирование........... 464
19.9.5. Опрос стиля и ориентации шрифтов........... 466
19.10. Включение шрифтов и драйверов в ЕХЕ-файл.... 466
19.11. Подключение новых драйверов................. 469
19.12. Один полезный совет...... 469
Часть V. ПРАКТИЧЕСКИЕ ПРИЕМЫ РАБОТЫ С ПЭВМ
20. Профессиональная работа с текстовыми изображениями................... 471
20.1. Программный опрос режимов текстового дисплея..................... 471
20.2. Организация доступа к видеопамяти............. 474
20.3. Запоминание окон экрана и их восстановление.... 478
20.3.1. Общие принципы работы с окном ............ 478
20.3.2. Модуль Win............ 479
20.4. Работа с образом экрана на диске................ 484
20.5. Крупные надписи на экране .................... 486
20 6. Управление формой курсора.................... 489
21. Как осуществить полный доступ к клавиатуре......... 493
21.1. Как организовать опрос алфавитно-цифровой клавиатуры............ 493
21.2. Опрос клавиши в регистре Ctrl.................. 496
21.3. Опрос расширенных кодов и функциональных клавиш................ 499
21.4. Опрос служебных клавиш ..................... 501
21.5. Анализ клавиш регистров и их состояния......... 502
21.6. Скэн-коды клавиатуры и работа с ними.......... 505
21.7. Эффект обратной записи в буфер ввода........... 510
22. Работа с оперативной памятью видеоадаптеров........ 514
22.1. Многобитовое и многоплоскостное ОЗУВ......... 514
22.2. Карта дисплейной памяти....................... 515
22.3. Вывод текста на графический экран.............. 518
22.4. Работа с графическими образами на диске 520
Приложение 1. Сообщения и коды ошибок, генерируемые
компилятором.................... 527
Приложение 2. Ключи и директивы компилятора ......... 540
Приложение 3. Использование компилятора TPC.......... 547
Приложение 4. Список утилит пакета Турбо Паскаль ...... 549
Приложение 5. Команды встроенного редактора.......... 553
Приложение 6. Автоматическая оптимизация программ.... 555
Приложение 7. Список демонстрационных процедур и функций................ 556
Индекс........................... 561
Литература....................... 568
Справочное издание
Поляков Дмитрий Борисович
Круглов Игорь Юрьевич
Программирование в среде Турбо Паскаль (версия 5.5)
Редактор Г.Н. Борисова
Художественный редактор И.Ю. Круглов
Технический редактор Л.А. Леманская
Художник обложки И.Ю. Круглов
ИБ № 56
Подписано в печать 15.01.92. Бум. тип. № 2. Формат 84 х 1081/32 Гарнитура литературная. Усл. печ. л. 45,51. Уч.-изд. л. 45,54 Печать высокая. Тираж 50000 экз. Заказ № 3886.
Издателъство МАИ, 125871, Москва, Волоколамское шоссе, 4
Отпечатано с готового оригинал-макета в ордена Октябрьской
Революции и ордена Трудового Красного Знамени МПО «Первая
Образцовая типография» Министерства печати и информации
Российской Федерации. 113054, Москва, Валовая, 28.
- 577 -