
- •Часть I. Работа в среде
- •Глава 1. Интегрированная среда
- •1.1. Окно просмотра результатов Output
- •1.2. Окно просмотра переменных Watch
- •1.3. Структура меню
- •1.3.1. Пункт File (работа с файлами)
- •1.3.2. Пункт Edit (работа с редактором)
- •1.3.3. Пункт Run (запуск на выполнение)
- •1.3.4. Пункт Compile (компиляция)
- •1.3.5. Пункт Options (установка параметров системы)
- •1.3.6. Пункт Debug (установки отладчика)
- •1.3.7. Пункт Break/Watch (точки останова/обзор)
- •1.4. Интерактивная справка
- •Глава 2. Настройка системы
- •2.1. Система настройки среды программирования
- •2.2. Принятые в системе расширения имен файлов
- •Часть II. Язык турбо паскаль
- •Глава 3. Построение программ
- •3.1. Алфавит языка и зарезервированные слова
- •3.2. Общая структура программ
- •3.3. Комментарии и ключи компиляции
- •3.4. Условная компиляция программ
- •Глава 4. Введение в систему типов языка
- •4.1. Простые типы языка
- •4.1.1. Целочисленные типы
- •4.1.2. Вещественные числа
- •4.1.3. Логический тип
- •4.1.4. Символьный тип
- •4.1.5. Строковый тип
- •4.1.6. Адресный тип
- •4.1.7. Перечислимые типы
- •4.1.8. Ограниченные типы (диапазоны)
- •4.2. Сложные типы языка
- •Глава 5. Константы и переменные
- •5.1. Простые константы
- •5.2. Переменные
- •5.2.1. Совмещение адресов директивой absolute
- •5.2.2. Переменные со стартовым значением или типизированные константы
- •5.3. Операция присваивания и совместимость типов и значений
- •5.4.Изменение (приведение) типов и значений
- •Глава 6. Управляющие структуры языка
- •6.1. Простой и составной операторы
- •6.2. Условный оператор (if...Then...Else)
- •If Условие then Оператор1 else Оператор2;
- •6.3. Оператор варианта (case)
- •6.4. Оператор цикла с предусловием (while)
- •6.6. Оператор цикла с параметром (for...Do)
- •6.7. Оператор безусловного перехода Goto
- •6.8. Операторы Exit и Halt
- •6.9. Процедуры и функции
- •6.9.1. Параметры. Глобальные и локальные описания
- •6.9.2. Опережающее описание процедур и функций
- •6.9.3. Объявление внешних процедур
- •6.9.4. Процедуры и функции как параметры
- •6.9.5. Переменные-процедуры и функции
- •6.9.6. Специальные приемы программирования
- •6.10. Модули. Структура модулей
- •6.11. Особенности работы с модулями
- •6.12. Система библиотечных модулей языка
- •Часть III. Средства языка турбо паскаль
- •Глава 7. Массивы, записи и множества в деталях
- •7.1. Массивы (Array) и работа с ними
- •7.2. Тип «запись» (Record) и оператор присоединения With
- •7.3. Тип «множество» (Set). Операции с множествами
- •Глава 8. Обработка символов и строк
- •8.1. Символьный и строковый типы (Char и String)
- •8.2. Операции над символами
- •8.3. Операции над строками
- •8.3.1. Редактирование строк
- •8.3.2. Преобразование строк
- •8.3.2.1. Процедура Str( X [: Width [: dec ] ]; var s : String)
- •Глава 9. Математические возможности Турбо Паскаля
- •9.1. Базовые операции
- •9.2. Битовая арифметика
- •9.3. Логические вычисления и операции отношения
- •9.4. Математические процедуры и функции
- •9.4.1. Обсуждение математических функций языка
- •9.4.2. Генераторы случайных чисел
- •9.4.3. Оптимизация сложения и вычитания
- •9.5. Использование математического сопроцессора 80x87
- •Глава 10. Код программы, данные, адреса
- •10.2. Распределение памяти при выполнении программ
- •10.3. Анализ расположения кода и областей данных программы
- •10.5. Средства для работы с адресами
- •10.5.1. Определение адреса переменных
- •10.5.2. Создание адреса функцией Ptr
- •10.5.3. Определение размеров типов и переменных
- •Глава 11. Ссылки, динамические переменные и структуры
- •11.1. Ссылочные переменные
- •11.2. Операция разыменования
- •11.3. Организация памяти области кучи
- •11.4. Управление размерами области кучи и стека
- •11.5. Процедуры управления кучей
- •11.5.1. Размещение динамических переменных.
- •11.5.2. Освобождение динамических переменных.
- •11.5.3. Управление состоянием кучи.
- •11.5.4. Анализ состояния кучи.
- •11.5.5. Более детальный анализ состояния кучи
- •11.5.6. Обработка ошибок распределения памяти
- •11.6. Ссылки, работающие не с кучей
- •11.7. Как организовать структуры, большие чем 64к?
- •11.8. Практический пример построения стека
- •Глава 12. Ввод-вывод данных и файловая система
- •12.1. Понятие логического файла
- •12.2. Физические файлы в ms-dos
- •12.3. Понятие буфера ввода-вывода
- •12.4. Файловые типы Турбо Паскаля
- •12.5. Общие процедуры для работы с файлами
- •12.5.1. Связывание файлов
- •12.5.2. Открытие файлов
- •12.5.3. Закрытие файлов
- •12.5.4. Переименование файлов
- •12.5.5. Удаление файлов
- •12.5.6. Анализ состояния файлов
- •12.6. Текстовые файлы
- •12.6.1. Текст-ориентированные процедуры и функции
- •12.6.2. Операции ввода-вывода в текстовые файлы
- •123 1.23 [Клавиша ввода]
- •123 [Клавиша ввода] 1.23 [Клавиша ввода]
- •12.7. Типизированные файлы и операции ввода-вывода
- •12.8. Бестиповые файлы и операции ввода-вывода
- •12.9. Последовательный и прямой доступ к файлам
- •12.9.1. Опрос размеров файлов и позиции в них
- •12.9.2. Позиционирование в файлах
- •12.9.3. Усечение файлов
- •12.10. Процедуры для работы с каталогами
- •12.11. Обработка ошибок ввода-вывода
- •12.11.1. Функция ioResult
- •12.11.2. Примеры обработки ошибок ввода-вывода
- •12.11.3. Сводка номеров ошибок ввода-вывода
- •Глава 13. Объектно-ориентированное программирование
- •13.1. Определения объектов
- •13.2. Область действия полей объекта и параметр Self
- •13.3. Наследование
- •13.4. Присваивание объектов
- •13.5. Полиморфизм
- •13.5.1. Статические методы
- •13.5.2. Виртуальные методы
- •13.5.3. Выбор вида метода
- •13.6. Динамические объекты
- •13.6.1. Создание динамических объектов
- •13.6.2. Освобождение объектов. Деструкторы
- •13.6.3. Обработка ошибок при работе с динамическими объектами
- •13.7. Функции TypeOf и SizeOf
- •13.8. Задание стартовых значений объектам
- •13.9. Модули, экспортирующие объекты
- •Глава 14. Специальные средства языка
- •14.1. Работа с командной строкой. Функции ParamCount и ParamStr
- •14.2. Доступ к памяти пэвм. Массивы Mem, MemW, MemL
- •14.3. Доступ к портам ввода-вывода. Массивы Port и PortW
- •14.4. Процедура заполнения FillChar
- •14.5. Процедура перемещения данных Move
- •14.6. Функции обработки машинных слов Lo, Hi и Swap
- •14.7. Вставки машинного кода в программе
- •14.7.1. Оператор inline
- •14.7.2. Процедуры с директивой inline
- •14.8. Процедура завершения и обработка ошибок программ
- •14.8.1. Оператор RunError
- •14.8.2. Сводка номеров фатальных ошибок
- •Часть IV. Специальные библиотеки языка
- •Глава 15. Модуль crt
- •15.1. Вывод специальных символов
- •15.2. Модификация операторов Read, ReadLn
- •15.3. Системные переменные модуля crt
- •15.3.1. Переменные управления выводом на дисплей
- •15.3.2. Переменные управления работой клавиатуры
- •15.3.3. Переменная TextAttr
- •15.4. Процедуры и функции модуля crt
- •15.4.1. Работа с экраном в целом
- •15.4.2. Позиционирование курсора
- •15.4.3. Работа со строками
- •15.4.4. Настройка цвета
- •15.4.5. Подача звуковых сигналов
- •15.4.6. Использование встроенного таймера
- •15.4.7. Опрос клавиатуры
- •If KeyPressed then Действие ;
- •15.4.8. Переназначение стандартных файлов
- •Глава 16. Модуль dos
- •16.1. Опрос и установка параметров ms-dos
- •16.1.1. Управление параметрами break и verify 16.1.1.1.
- •16.1.2. Опрос системных переменных ms-dos
- •16.2. Работа с часами и календарем
- •16.2.1. Опрос и назначение даты
- •16.2.3. Работа с датой создания файлов
- •16.3. Анализ ресурсов дисков
- •16.4. Работа с каталогами и файлами
- •16.4.1. Типы и константы модуля dos для работы с файлами
- •16.4.2. Переменная DosError
- •16.4.3. Процедуры поиска файлов на диске
- •16.4.4. Работа с атрибутами файлов
- •16.4.5. Анализ имен файлов
- •16.5. Работа с прерываниями ms-dos
- •16.5.1. Чтение и перестановка адресов подпрограмм прерываний
- •16.5.2. Вызов прерывания процедурой Intr
- •16.5.3. Процедура MsDos
- •6.6. Организация субпроцессов и резидентных программ
- •16.6.1. Программирование субпроцессов
- •Глава 17. Модуль Printer
- •7.1. Содержимое модуля Printer
- •17.2. Низкоуровневые средства работы с принтером
- •17.3. Работа с двумя принтерами одновременно
- •Глава 18. Модуль Overlay
- •18.1. Оверлейное построение программ
- •18.2. Правила оформления оверлейных программ
- •18.3. Инициализация работы оверлеев
- •18.3.1. Включение администратора оверлеев
- •18.3.2. Анализ результата инициализации
- •18.3.3. Размещение оверлейного файла в ems-памяти
- •18.4. Управление оверлейным буфером
- •18.4.1. Опрос размера буфера
- •18.4.2. Установка размера буфера
- •18.4.3. Принудительная очистка буфера
- •18.5. Оптимизация работы оверлеев
- •18.5.1. Установка размера области испытаний
- •18.5.2. Подсчет вызовов оверлеев
- •18.6. Предопределенные переменные для работы с оверлеями
- •18.7. Включение оверлеев в ехе-файлы
- •Глава 19. Модуль Graph
- •19.1. Файлы bgi и содержимое модуля Graph
- •19.2. Управление графическими режимами
- •19.2.1. Инициализация и закрытие графического режима
- •19.2.2. Обработка ошибок инициализации
- •19.2.3. Классификация и анализ графических режимов
- •19.2.4. Очистка экрана и переключение режимов
- •19.2.5. Управление режимом вывода отрезков на экран
- •19.3. Системы координат и «текущий указатель»
- •19.3.1. Координаты устройства и мировые координаты
- •19.3.2. Управление «текущим указателем»
- •19.4. Рисование графических примитивов и фигур
- •19.4.1. Линии и их стили
- •1100110011001100 — Всего 16 разрядов.
- •19.4.2. Коэффициент сжатия изображения
- •19.4.3. Окружности, эллипсы и дуги
- •19.4.4. Построение прямоугольников и ломаных
- •19.5. Управление цветами и шаблонами заливки (заполнения)
- •19.5.1. Немного о цветах
- •19.5.2. Задание типа заливки
- •19.5.3. Заливка областей изображения
- •19.5.4. Опрос и установка цветов пера и фона
- •19.5.5. Управление палитрой
- •19.6. Битовые графические операции
- •19.6.1. Битовые операции
- •19.6.2. Работа с фрагментами изображений
- •19.7. Управление видеостраницами
- •19.8. Графические окна
- •19.9. Вывод текста
- •19.9.1. Выбор шрифта и стиля
- •19.9.2. Предварительная загрузка и регистрация шрифтов
- •19.9.3. Непосредственный вывод строк
- •19.9.4. Размер букв и его масштабирование
- •19.9.5. Опрос стиля и ориентации шрифтов
- •19.10. Включение шрифтов и драйверов в ехе-файл
- •19.11. Подключение новых драйверов
- •19.12. Один полезный совет
- •Часть V. Практические
- •Глава 20. Профессиональная работа с
- •20.1. Программный опрос режимов текстового дисплея
- •20.2. Организация доступа к видеопамяти
- •20.3. Запоминание окон экрана и их восстановление
- •20.3.1. Общие принципы работы с окном
- •20.3.2. Модуль Win
- •20.4. Работа с образом экрана на диске
- •20.5. Крупные надписи на экране
- •20.6. Управление формой курсора
- •Глава 21. Как осуществить полный доступ к клавиатуре
- •21.1. Как организовать опрос алфавитно-цифровой клавиатуры
- •21.2. Опрос клавиши в регистре Ctrl
- •21.3. Опрос расширенных кодов и функциональных клавиш
- •21.4. Опрос служебных клавиш
- •21.5. Анализ клавиш регистров и их состояния
- •21.6. Скэн-коды клавиатуры и работа с ними
- •21.7. Эффект обратной записи в буфер ввода
- •Глава 22. Работа с оперативной
- •22.1. Многобитовое и многоплоскостное озув
- •22.2. Карта дисплейной памяти
- •22.3. Вывод текста на графический экран
- •22.4. Работа с графическими образами на диске
- •Приложение 2 Ключи и директивы компилятора
- •Ключи режимов компиляции
- •Директивы с параметрами
- •Приложение 3
- •Файл tpc.Cfg
- •Приложение 4 Список утилит пакета Турбо Паскаль (версия 5.5)
- •Программа администрирования библиотек
- •Утилита поиска текстов grep
- •Утилита преобразования двоичных файлов binobj
- •Приложение 5
- •Основные команды перемещения курсора
- •Расширенный набор команд перемещения курсора
- •Команды вставки и удаления
- •Команды работы с блоками
- •Поиск и замена
- •Прочие команды
- •Приложение 6
- •If False then Оператор;
- •Приложение 7
- •Глава 6. Управляющие структуры языка
- •Глава 8. Обработка символов и строк
- •Глава 9. Математические возможности Турбо Паскаля
- •Глава 16. Модуль dos
- •Глава 17. Модуль Printer
- •Глава 18. Модуль Overlay
- •Глава 19. Модуль Graph
- •Глава 20. Профессиональная работа с текстовыми изображениями
- •Глава 21. Как осуществить полный доступ к клавиатуре
- •Глава 22. Работа с оперативной памятью видеоадаптеров
- •Литература
- •Оглавление
- •Часть I. Работа в среде программирования
- •Часть II. Язык турбо паскаль
- •Часть III. Средства языка турбо паскаль
- •Часть IV. Специальные библиотеки языка
- •Часть V. Практические приемы работы с пэвм
1.3.1. Пункт File (работа с файлами)
Этот пункт главного меню используется для записи новых файлов с текстами программ, чтения уже существующих файлов с диска, работы с каталогами диска или выхода из среды программирования. Все эти команды просты в использовании. Рассмотрим их по порядку.
1.3.1.1. Команда загрузки файла Load (F3). Эта команда задает чтение файла программы с диска и загрузку его в редактор системы. После того как файл попадает в редактор, его можно модифицировать, компилировать, запускать на выполнение. При выборе этой команды на экране появится изображение, показанное на рис. 1.5.
Рис. 1.5
Если известно имя файла, то нужно набрать его и, нажав клавишу ввода, загрузить в окно Edit. Имя файла может не содержать полный путь к нему, если этот файл находится в текущем каталоге. Можно также набирать имя файла без расширения — загрузчик сам добавит к нему по умолчанию расширение PAS. Если необходимый файл находится в другом каталоге, то нужно набрать полное его имя с маршрутом к нему, например:
Е:\TURBO55\PAS\TEST.PAS
Если же загрузчик не обнаружил файла с указанным именем, то система откроет новый файл с точно таким же названием.
Всегда можно воспользоваться и предложенным в окне групповым именем. В этом случае при нажатии клавиши ввода система покажет список файлов с расширением .PAS в текущем каталоге (рис. 1.6).
Рис. 1.6 {14}
Можно выбрать любой файл из этого списка, переместив выделяющую строку (клавишами управления курсора или первой буквой имени файла) на его имя и нажав клавишу ввода. Этот файл загрузится в редактор и будет продолжена обычная работа. Список файлов выводится в алфавитном порядке.
Отменить текущее состояние системы меню можно, нажав клавишу Esc. После этого произойдет возврат к команде Load. Нажав еще раз Esc, можно убрать все вертикальное подменю с экрана.
1.3.1.2. Команда восстановления «истории» Pick (Alt+F3). Эта команда позволяет вернуться к работе с одним из файлов, который уже был загружен в редактор. Она показывает список из девяти файлов, отсортированных по порядку последних обращений к ним (рис. 1.7).
Рис. 1.7
Выбрав ее нажатием клавиши P (или Alt+F3 из основного меню), можно получить список, из которого выбирается файл для загрузки в редактор. Есть и другая возможность работы с Pick (правда, не такая полная): если находясь в редакторе, нажать комбинацию клавиш Alt+F6, то в него автоматически загрузится файл, с которым перед этим работали (т.е. верхний пункт в окне Pick). Этим обеспечивается подобие «двухоконности» редактора системы.
При выборе последней строки в этом списке (-load file-), выполняется команда Load. Обычно список Pick файлов теряется при выходе из системы. Однако его можно сохранить, записав на диск. Как это сделать, показано в описании пункта Options главного меню (разд. 1.3.5).
1.3.1.3. Команда открытия нового файла New. Эта команда удаляет текущий файл из редактора и устанавливает имя нового файла NONAME.PAS. Если текущий файл не был записан на диск после последней корректировки, то система выдаст запрос (рис. 1.8). {15}
Рис. 1.8
Получив ответ «Y», система запишет текущий файл на диск, а получив ответ «N», система только удалит этот файл из редактора, и все изменения, внесенные в него, потеряются. Это очень важная альтернатива. Пользуясь ею, можно любым образом модифицировать программу и наблюдать, как она работает. А потом, ответив на запрос «N», оставить ее первоначальный вариант на диске неизменным.
1.3.1.4. Команда записи файла Save (F2). Эта команда записывает текущий файл из редактора на диск. В режиме редактирования ее можно выполнить, кроме обычного пути, нажатием клавиши F2. Система записывает файл с тем же именем, с которым он и был прочитан. Исключение составляет файл NONAME.PAS. Система предоставляет возможность его переименования, выдав сообщение (рис. 1.9).
Рис. 1.9
Если в ответ нажать клавишу ввода, то этот файл запишется с именем NONAME.PAS. Иначе, нужно набирать новое имя. При этом имя NONAME.PAS исчезнет. Если файл должен быть записан не в текущий каталог, то необходимо набрать его полное имя (можно без расширения — система сама его добавит).
При записи на диск уже существующего файла старая его версия переименовывается: вместо расширения .PAS она получает расши-{16}рение .ВАК. Это иногда бывает полезным — всегда имеется новая версия программы и предыдущая. Тем не менее существует возможность отключить такой режим записи (см. разд. 1.3.5).
1.3.1.5. Команда записи с новым именем Write To. Эта команда записывает файл, находящийся в окне Edit на диск, заменяя имя (и, возможно, каталог) этого файла. На экране появляется прямоугольник (рис. 1.10).
Рис. 1.10
Файл после задания нового имени тут же загрузится в окно Edit, и редактор станет активным. Эта команда обычно используется, когда необходимо сохранить неизменной начальную версию программы для дальнейшей работы с ней.
1.3.1.6. Команда просмотра каталога Directory. Эта команда показывает содержимое текущего каталога. По умолчанию маской для выбора файлов является групповое имя *.*. Однако можно выбрать каталог и маску через окно запроса. Двигая прямоугольник выделения в окне списка содержимого каталога, можно открывать подкаталоги, если они есть, и свободно передвигаться по всей структуре диска. Если выбран какой-либо файл и нажата клавиша ввода, то этот файл будет прочитан и загружен в редактор. Фактически, эта команда может быть альтернативой команде Load при загрузке программ в систему.
1.3.1.7. Команда смены каталога Change Dir. Используя эту команду, можно сменить текущий каталог или диск. На экране появится окно для ввода имени нового каталога. После выполнения этой команды любые действия с файлами будут производиться по умолчанию в новом каталоге.
1.3.1.8. Команда временного выхода в MS-DOS — OS Shell. Эта команда позволяет работать в среде MS-DOS без выгрузки системы Турбо Паскаль. Выполнение этой команды влечет за собой очистку экрана и выдачу приглашения (PROMPT) MS-DOS. При этом происходит как бы выход из среды программирования в MS-DOS. После этого можно задавать любые команды MS‑DOS: COPY, {17} RENAME, FORMAT и др., а также запускать любые программы, объем которых не превышает объема оставшейся памяти. Ограничения на размер возникают из-за того, что система Турбо Паскаль из памяти не выгружается (занимаемый ею объем составляет примерно 235К). Вернуться обратно в Edit можно, набрав в командной строке MS-DOS команду выхода EXIT. Все содержимое экрана DOS попадет при этом в окно Output.
Если какие-либо программы запускались в этом режиме, то прежде чем вернуться в Турбо Паскаль, необходимо убедиться, что они завершили свою работу. Особенно это касается вызовов в режиме OS Shell программ типа Norton Commander. Запуск резидентных программ в нем категорически противопоказан (это может сбить работу среды программирования).
1.3.1.9. Команда выхода из среды Quit. Эта команда позволяет выйти из системы (аналогичный результат получается, если нажата комбинация клавиш Alt+X). Команда производит выгрузку из памяти системы Турбо Паскаль. Чтобы войти обратно, надо запустить на выполнение в MS-DOS файл TURBO.EXE. Если в редакторе к моменту выхода остался незаписанный на диск файл, то система выдаст запрос (рис. 1.11).
Рис. 1.11
Для сохранения программы на диске нужно нажать клавишу Y. Если в памяти хранились коды скомпилированной программы, то они будут утеряны. Для того чтобы скомпилированная программа записывалась на диск, необходимо изменить опцию Destination в пункте Compile основного меню.