Руководство по языку

НННННННННННННННННННННННННННННННННННННННН

         B.Pascal 7 & Objects/LR

 

Введение.......................................................10

О чем рассказывается в данном руководстве......................11

Часть I. Язык Borland Pascal...................................12

Глава 1. Что такое программа Borland Pascal?...................12

Программа Borland Pascal.......................................13

Процедуры и функции............................................13

Операторы......................................................15

Выражения......................................................16

Лексемы........................................................17

Типы, переменные, константы и типизированные константы.........17

Компоновка частей..............................................19

Модули.........................................................20

Синтаксические диаграммы.......................................21

Глава 2. Лексемы...............................................22

Специальные символы............................................22

Зарезервированные слова и стандартные директивы Borland Pascal........................................................24

Идентификаторы.................................................25

Числа..........................................................27

Метки..........................................................29

Строки символов................................................29

Комментарии....................................................31

Строки программы...............................................31

Глава 3. Константы.............................................32

Глава 4. Типы..................................................34

Простые типы...................................................35

Порядковые типы................................................35

Целочисленные типы.............................................37

Булевские типы.................................................39

Символьный тип (char)..........................................40

Перечислимые типы..............................................40

Отрезки типа...................................................41

Вещественные типы..............................................42

Программная поддержка чисел с плавающей точкой.................43

Аппаратная поддержка чисел с плавающей точкой..................43

Строковые типы.................................................44

Структурные типы...............................................45

Типы массив....................................................46

Типы запись....................................................48

Объектные типы.................................................50

Компоненты и область действия..................................54

Методы.........................................................54

Виртуальные методы.............................................54

Динамические методы............................................56

Создание экземпляров объектов..................................57

Активизация методов............................................59

Активизация уточненных методов.................................60

Множественные типы.............................................61

Файловые типы..................................................62

Ссылочные типы.................................................63

Тип Pointer....................................................64

Тип PChar......................................................64

Процедурные типы...............................................65

Процедурные значения...........................................65

Совместимость типов............................................67

Тождественные и совместимые типы...............................67

Тождественность типов..........................................67

Совместимость типов............................................68

Совместимость по присваиванию..................................69

Раздел описания типов..........................................70

Глава 5. Переменные и типизированные константы.................72

Описания переменных............................................72

Сегмент данных.................................................73

Сегмент стека..................................................73

Абсолютные переменные..........................................74

Ссылки на переменные...........................................76

Квалификаторы..................................................77

Массивы, строки и индексы......................................78

Записи и десигнаторы полей.....................................79

Десигнаторы компонентов объекта................................79

Переменные-указатели и динамические переменные.................79

Приведение типов переменных....................................81

Типизированные константы.......................................83

Константы простого типа........................................84

Константы строкового типа......................................84

Константы структурного типа....................................85

Константы типа массив..........................................86

Константы типа запись..........................................88

Константы объектного типа......................................89

Константы множественного типа..................................90

Константы ссылочного типа......................................91

Константы процедурного типа....................................92

Глава 6. Выражения.............................................93

Синтаксис выражений............................................94

Операции.......................................................99

Арифметические операции........................................99

Унарные арифметические операции...............................100

Логические операции...........................................101

Булевские операции............................................101

Операция со строками..........................................103

Операции над символьными указателями..........................104

Операции над множествами......................................105

Операции отношения............................................106

Сравнение простых типов.......................................107

Сравнение строк...............................................107

Сравнение упакованных строк...................................107

Сравнение указателей..........................................107

Сравнение символьных указателей...............................108

Сравнение множеств............................................108

Проверка на принадлежность к множеству........................108

Операция @....................................................109

Использование операции @ для переменной.......................110

Использование операции @ для процедуры или функции или

метода.......................................................111

Вызовы функции................................................111

Описатели множества...........................................113

Приведение типа значений......................................114

Процедурные типы в выражениях.................................115

Глава 7. Операторы............................................117

Простые операторы.............................................117

Оператор присваивания.........................................118

Операторы процедуры...........................................119

Операторы перехода............................................120

Структурные операторы.........................................120

Составные операторы...........................................121

Условные операторы............................................121

Оператор условия (if).........................................122

Оператор варианта (case)......................................123

Оператор цикла................................................125

Оператор цикла с постусловием (repeat)........................125

Операторы цикла с предусловием (while)........................127

Операторы цикла с параметром (for)............................128

Оператор with.................................................131

Глава 8. Блоки, локальность и область действия................133

Синтаксис.....................................................133

Правила для области действия..................................136

Область действия для блока....................................136

Область действия записи.......................................137

Область действия объекта......................................137

Область действия модуля.......................................137

Глава 9. Процедуры и функции..................................139

Описания near и far...........................................141

Описания export...............................................142

Описания interrupt............................................143

Описание forward..............................................143

Описания external.............................................145

Описания assembler............................................147

Описания inline...............................................147

Описания функций..............................................148

Описания методов..............................................150

Конструкторы и деструкторы....................................151

Восстановление ошибок конструктора............................154

Параметры.....................................................156

Параметры-значения............................................157

Параметры-константы...........................................157

Параметры-переменные..........................................157

Нетипизированные параметры....................................158

Открытые параметры............................................160

Открытые строковые параметры..................................160

Открытые параметры-массивы....................................162

Динамические переменные объектного типа.......................163

Процедурные переменные........................................165

Параметры процедурного типа...................................168

Глава 10. Программы и модули..................................170

Синтаксис программ............................................170

Заголовок программы...........................................170

Оператор uses.................................................171

Синтаксис модулей.............................................172

Заголовок модуля..............................................172

Интерфейсная секция...........................................173

Секция реализации.............................................174

Секция инициализации..........................................175

Косвенные ссылки на модули....................................175

Перекрестные ссылки на модули.................................177

Совместное использование описаний.............................179

Глава 11. Динамически компонуемые библиотеки..................180

Что такое DLL?................................................180

Использование DLL.............................................180

Модули импорта................................................182

Статический и динамический импорт.............................184

Написание DLL.................................................185

Директива процедуры export....................................187

Оператор exports..............................................187

Код инициализации библиотеки..................................189

Замечания по программированию библиотек.......................191

Глобальные переменные в DLL...................................191

Глобальные переменные и файлы в DLL...........................191

DLL и модуль System...........................................191

Ошибки этапа выполнения в DLL.................................192

DLL и сегменты стека..........................................192

Создание совместно используемых DLL...........................193

Глава 12. Библиотеки исполняющей системы......................194

Модули Borland Pascal.........................................194

Модуль System.................................................195

Модуль Dos и WinDos...........................................195

Модуль Crt....................................................195

Модуль WinCrt.................................................196

Модуль Printer................................................196

Модуль WinPrn.................................................196

Модуль Overlay................................................196

Модуль Strings................................................197

Модуль Graph..................................................197

Модули Turbo3 и Graph3........................................197

Модули WinTypes и WinProcs....................................197

Модуль Win31..................................................198

Модуль WinAPI.................................................198

Модули, поддерживающие Windows 3.1............................198

Глава 13. Стандартные процедуры и функции.....................199

Процедуры управления работой программы........................200

Функции преобразования........................................200

Арифметические функции........................................201

Порядковые процедуры и функции................................202

Строковые процедуры и функции.................................202

Процедуры и функции динамического распределения памяти........203

Функции для работы с указателями и адресами...................204

Прочие процедуры и функции....................................205

Предописанные переменные......................................206

Глава 14. Ввод и вывод........................................215

Файловый ввод-вывод...........................................217

Текстовые файлы...............................................219

Нетипизированные файлы........................................221

Переменная FileMode...........................................221

Устройства в Borland Pascal...................................222

Устройства DOS................................................223

Устройство CОN................................................224

Устройства LРT1, LРT2 и LРT3..................................224

Устройства CОМ1 и CОМ2........................................225

Устройство NUL................................................225

Устройства, предназначенные для текстовых файлов..............225

Ввод и вывод с помощью модуля Crt.............................226

Использование модуля CRT......................................227

Окна CRT......................................................227

Специальные символы...........................................228

Ввод строк....................................................228

Процедуры и функции модуля Crt................................230

Константы и переменные модуля Crt.............................232

Ввод и вывод с помощью модуля WinCrt..........................233

Использование модуля WinCrt...................................234

Специальные символы...........................................236

Ввод строк....................................................236

Процедуры и функции...........................................237

Переменные модуля WinCrt......................................239

Печать из программы Windows...................................241

Изменение заголовков..........................................241

Изменение шрифтов.............................................242

Остановка задания печати......................................243

Специальные символы...........................................243

Процедуры и функции модуля WinPrn.............................244

Функция Open..................................................246

Функция InOut.................................................246

Функция Flush.................................................247

Функция Clоsе.................................................247

Глава 15. Использование сопроцессора 80x87....................248

Типы данных процессора 80x87..................................251

Арифметические операции с повышенной точностью................252

Сравнение вещественных чисел..................................253

Стек вычислений сопроцессора 80x87............................253

Запись вещественных чисел при использовании сопроцессора 80x87........................................................255

Модули, в которых используется сопроцессор 80x87..............255

Распознавание сопроцессора 80х87 в программах DOS.............256

Распознавание сопроцессора 80x87 в программе Windows..........257

Использование эмуляции сопроцессора 80x87 на языке ассемблера...................................................258

Глава 16. Модуль Dоs..........................................259

Процедуры и функции модуля Dos................................260

Константы, типы и переменные модуля Dos.......................263

Типы..........................................................263

Переменные модуля Dos.........................................264

Процедуры и функции модуля WinDos.............................265

Константы, типы и переменные модуля WinDos....................268

Типы..........................................................269

Переменные модуля WinDos......................................269

Глава 17. Программирование в защищенном режиме DOS............270

Что такое защищенный режим?...................................270

Расширения Borland защищенного режима DOS.....................274

DPMI-сервер...................................................274

Администратор этапа выполнения................................274

Разработка прикладных программ DOS защищенного режима.........276

Надежное программирование в защищенном режиме.................276

Загрузка в сегментные регистры недопустимых значений..........277

Функция Ptr и массивы Mem.....................................277

Абсолютные переменные.........................................277

Операции с сегментами.........................................278

Использование сегментных......................................278

Доступ к памяти вне границ сегмента...........................278

Запись в сегмент кода.........................................279

Разыменование указателей nil..................................279

Сегменты кода и данных........................................279

Управление динамически распределяемой памятью.................280

Предопределенные селекторы....................................280

Переменная SelectorInc........................................281

Модуль WinAPI.................................................284

Управление памятью............................................284

Подпрограммы управления памятью API...........................285

Управление модулем............................................289

Управление ресурсами..........................................290

Управление селектором.........................................291

Другие подпрограммы API.......................................292

Прямой доступ к DPMI-серверу..................................293

Компиляция прикладной программы защищенного режима............293

Выполнение программы защищенного режима DOS...................294

Управление объемом используемой RTM памяти....................295

Глава 18. Строки с завершающим нулем..........................297

Что такое строка с завершающим нулем?.........................297

Функции модуля Strings........................................297

Функции модуля Strings........................................298

Использование строк с завершающим нулем.......................299

Символьные указатели и строковые литералы.....................301

Символьные указатели и символьные массивы.....................302

Индексирование символьного указателя..........................303

Операции с символьными указателями............................304

Строки с завершающим нулем и стандартные процедуры............305

Пример использования функций с завершающим нулем..............306

Глава 19. Использование графического интерфейса Borland.......308

Драйверы......................................................308

Поддержка устройства IBM 8514.................................310

Система координат.............................................311

Текущий указатель.............................................311

Текст.........................................................313

Графические изображения и их виды.............................314

Области просмотра и двоичные образы...........................314

Поддержка страниц и цветов....................................315

Обработка ошибок..............................................315

Начало работы.................................................316

Пользовательские программы управления динамически распределяемой памятью.......................................318

Процедуры модуля Graph........................................321

Константы, типы и переменные модуля Graph.....................326

Константы.....................................................326

Типы..........................................................328

Переменные....................................................328

Глава 20. Использование оверлеев..............................329

Администратор оверлеев........................................330

Управление оверлейным буфером.................................331

Процедуры и функции модуля Overlay............................334

Коды результата...............................................335

Разработка программ с оверлеями...............................335

Генерация оверлейного кода....................................336

Требование использования дальнего типа вызовов................337

Инициализация администратора оверлеев.........................338

Разделы инициализации в оверлейных модулях....................341

Что не должно использоваться в качестве оверлеев..............342

Отладка оверлеев..............................................343

Внешние программы в оверлеях..................................343

Задание функции чтения оверлея................................345

Оверлеи в файлах .EXE.........................................347

Часть III. В среде Borland Pascal.............................348

Глава 21. Использование памяти................................348

Использование памяти программами реального режима DOS.........348

Администратор динамически распределяемой области памяти DOS...350

Методы освобождения областей динамически распределяемой памяти.......................................................352

Список свободных блоков.......................................355

Переменная HeapError..........................................356

Использование памяти в программах DOS защищенного режима......359

Сегменты кода.................................................359

Атрибуты сегмента.............................................359

Атрибуты MOVEABLE или FIXED...................................359

Атрибуты PRELOAD или DEMANDLOAD...............................359

Атрибуты DISCARDABLE или PERMAMENT............................359

Сегменты данных и стека.......................................361

Изменение атрибутов...........................................361

Администратор динамически распределяемой области памяти DOS...362

Переменная HeapError..........................................363

Использование памяти в программах Windows.....................365

Атрибуты сегментов............................................365

Атрибуты MOVEABLE или FIXED...................................365

Атрибуты PRELOAD или DEMANDLOAD...............................365

Атрибуты DISCARDABLE или PERMANENT............................365

Изменение атрибутов...........................................365

Сегмент локальных динамических данных.........................367

Администратор динамически распределяемой области памяти.......368

Переменная HeapError..........................................370

Форматы внутреннего представления данных......................372

Целочисленные типы............................................372

Символьный тип................................................372

Булевский тип.................................................372

Перечислимый тип..............................................372

Типы с плавающей точкой.......................................373

Вещественный тип..............................................373

Тип числа с одинарной точностью...............................374

Тип числа с двойной точностью.................................374

Тип числа с повышенной точностью..............................375

Сложный тип...................................................375

Значения типа указатель.......................................375

Значения строкового типа......................................376

Значения множественного типа..................................376

Значения типа массив..........................................376

Значения типа запись..........................................376

Объектные типы................................................377

Таблица виртуальных методов...................................378

Таблица динамических методов..................................381

Значения файлового типа.......................................385

Процедурные типы..............................................387

Прямой доступ к памяти........................................387

Прямой доступ к портам........................................387

Глава 22. Вопросы управления..................................388

Соглашения по вызовам.........................................388

Параметры-переменные..........................................388

Параметры-значения............................................388

Открытые строковые параметры..................................389

Результаты функций............................................390

Ближние и дальние типы вызовов................................391

Вложенные процедуры и функции.................................391

Соглашения о вызовах методов..................................392

Вызовы виртуальных методов....................................394

Вызовы динамических методов...................................395

Конструкторы и деструкторы....................................396

Стандартный код входа и выхода................................396

Соглашения по сохранению регистров............................400

Процедуры выхода..............................................400

Обработка прерываний..........................................403

Разработка процедур обработки прерываний......................403

Глава 23. Автоматическая оптимизация..........................405

Свертывание констант..........................................405

Слияние констант..............................................405

Вычисление по короткой схеме..................................405

Параметры-константы...........................................406

Устранение избыточной загрузки указателей.....................406

Подстановка констант множественного типа......................406

Малые множества...............................................407

Порядок вычисления............................................407

Проверка на допустимость границ...............................408

Использование сдвига вместо умножения.........................408

Автоматическое выравнивание на границу слова..................408

Удаление неиспользуемого кода.................................409

Эффективная компоновка........................................409

Часть IV. Использование Borland Pascal с языком ассемблера....411

Глава 24. Встроенный ассемблер................................411

Оператор asm..................................................411

Использование регистров.......................................412

Синтаксис операторa ассемблера................................412

Метки.........................................................413

Размер инструкции RET.........................................413

Автоматическое определение размера перехода...................414

Директивы ассемблера..........................................415

Операнды......................................................417

Выражения.....................................................417

Различия между выражениями Паскаля и ассемблера...............418

Элементы выражений............................................419

Константы.....................................................420

Числовые константы............................................420

Строковые константы...........................................420

Регистры......................................................422

Идентификаторы................................................422

Классы выражений..............................................426

Типы выражений................................................427

Операции в выражениях.........................................430

Процедуры и функции ассемблера................................434

Глава 25. Компоновка с программами на языке ассемблера........437

Турбо Ассемблер и Borland Pascal..............................438

Примеры программ на языке ассемблера..........................440

Методы на языке ассемблера....................................441

Включаемый машинный код.......................................442

Операторы Inline..............................................442

Директивы inline..............................................444