Оглавление

От автора ................... 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 -