
- •Предисловие
- •Введение
- •1. Установка и настройка интегрированной среды
- •2.1. Работа с текстовым редактором тр
- •Команды управления курсором
- •Команды вставки и удаления
- •Команды работы с блоками
- •Команды поиска и замены
- •Regular expression – искать по выражению – описателю текста;
- •Контрольные вопросы
- •3. Элементы языка и структура программы
- •3.1. Алфавит языка
- •3.2. Зарезервированные слова
- •3.3. Знаки операций
- •Основные операции тр 7.0
- •3.4. Типы данных
- •Типы целых чисел
- •Типы вещественных чисел
- •3.5. Базовые конструкции языка
- •Основные стандартные математические функции tp 7.0
- •3.6. Структура программы
- •Контрольные вопросы
- •4.1. Этапы разработки программы
- •Пример. Вычислить площадь треугольника по формуле Герона: , гдеa, b, c – длины сторон треугольника, - полупериметр;
- •4.2. Основы работы в интегрированной среде Turbo Pascal
- •4.2.1. Меню File
- •4.2.2. Меню Edit
- •4.2.3. Меню Run
- •Упражнения
- •5. Составление и отладка программ с разветвляющейся структурой
- •Условные графические обозначения основных блоков схем алгоритмов
- •5.1. Организация ветвлений в программах
- •Логические операции
- •5.2. Средства среды тр для отладки программ
- •5.2.1. Меню Run
- •5.2.2. Меню Compile
- •5.2.3. Меню Debug
- •5.2.4. Меню Window
- •5.3. Методика отладки программ cразветвляющейся структурой
- •Упражнения
- •Контрольные вопросы
- •6. Составление и отладка программ
- •6.1. Организация программ с циклами
- •Блок-схемы операторов цикла
- •Объявление интервального типа осуществляется заданием двух констант, указывающих верхнюю и нижнюю границы диапазона, и описывается двумя способами:
- •6.2. Методика отладки программ с циклами
- •Упражнения
- •7. Программирование с использованием
- •7.1. Организация подпрограмм
- •7.2. Методика отладки программ с подпрограммами
- •8. Программирование с использованием
- •8.1. Структура модулей
- •8.2. Компиляция модулей
- •Упражнения
- •9. Обработка символьной информации
- •9.1. Символьный тип данных
- •9.2. Строковый тип данных
- •9.3. Множества
- •Упражнения
- •10. Программирование с использованием записей
- •Упражнения
- •11. Программирование с использованием файлов
- •11.1. Файловый тип данных
- •11.2. Работа с типизированными файлами
- •Упражнения
- •12. Программирование с использованием модуля crt
- •12.1. Работа с клавиатурой
- •Непечатаемые символы таблицы ascii
- •Скан-коды клавиатуры
- •Информационные байты расширенных кодов клавиатуры
- •12.2. Работа с экраном
- •Константы цвета
- •12.3. Управление звуком динамика
- •Упражнения
- •Варианты заданий
- •Исходные данные
- •Расположение окон ввода и вывода
- •Цвета фона и символов окон
- •13. Программирование с использованием модуля graph
- •13.1. Инициализация и завершение графического режима
- •13.2. Установка цвета
- •13.3. Стиль заполнения
- •13.4. Экран, окно, графический указатель
- •13.5. Отображение точки и линии на экране
- •13.6. Вывод некоторых геометрических фигур
- •13.7. Вывод текста в графическом режиме
- •Упражнения
- •Варианты заданий
- •Библиографический список
- •Оглавление
13.1. Инициализация и завершение графического режима
Для переключения ПК в графический режим используется процедура InitGraph:
Procedure InitGraph (var GrDriver : integer; var Mode : integer; Path : string);
где GrDriver – переменная, задающая графический драйвер;
Mode– переменная, задающая графический режим;
Path– переменная, задающая путь к каталогу, где находится используемый драйвер адаптера монитора.
Наиболее простой способ выбора графического драйвера – автоматический. Для этого перед обращением к InitGraphполагаютGrDriver := Detect, гдеDetect– константа. При использовании самого распространенного адаптера типаSVGADetect = 0. Значение переменнойModeв автоматическом режиме игнорируется. Драйвер этого адаптераegavga.bgi целесообразно помещать в рабочий каталог (например вMYFILE), тогда путь можно задать просто в виде пустой строкиPath := ’’. Следует отметить, что обе переменныеGrDriverиModeтребуется обязательно описывать.
Для выхода из графического режима используется процедура CloseGraph:
Procedure CloseGraph;
Она закрывает графический режим и автоматически возвращает режим, установленный до InitGraph.
13.2. Установка цвета
Драйвер egavga.bgiпозволяет использовать 16 цветов, стандартный набор которых закодирован константами, используемыми также в текстовом режиме (см. табл. 4.1).
Цвет выводимых на экран линий и символов можно задать процедурой SetColor:
Procedure SetColor (Color : word);
где Color - константа цвета.
Если SetColorне вызвана, то используется белый цвет.
Цвет фона для всего экрана устанавливается процедурой SetBkColor:
Procedure SetBkColor (Color : word);
где Color - константа цвета фона.
В отличие от текстового видеорежима в графическом режиме цвет фона может быть ярким, т.е. Color= 0..15. Установка нового фона немедленно изменяет цвет графического экрана. Если процедура установки цвета фона после инициализации графического режима не вызвана, то экран будет черным.
Примечание. Цвет символов и линий с номером Color = 0 отождествляется с цветом фона, поэтому обычно он не используется, так как получается невидимое изображение.
13.3. Стиль заполнения
Для того, чтобы выводимое изображение было более красочным и эффектным, используют специальные шаблоны заливки, или стиль заполнения. По существу это комбинация узора и цвета.
Для установки стиля заполнения используется процедура:
Procedure SetFillStyle (Pattern, Color : word);
где Color– цвет узора;
Pattern – один из 12 шаблонов в соответствии с рис. 13.1.
Рис. 13.1. Шаблоны узоров
Закраска областей осуществляется процедурой FloodFill:
Procedure FloodFill (X,Y : integer; Border : word);
где (X,Y) – координаты точки внутри или вне замкнутой фигуры, т.е. заполняемой цветом области;
Border– цвет граничной линии закрашиваемой области.
В результате заполнение области осуществится стилем, заданным процедурой SetFillStyle. Если фигура незамкнута, то заполнение “разольется” по всему экрану.
13.4. Экран, окно, графический указатель
Координаты экрана имеют вид, представленный на рис. 13.2.
Х
Y
Рис. 13.2. Координаты экрана
Началом координат является точка (0,0).
Максимальные значения координат XиYопределяются соответственно с помощьюGetMaxX иGetMaxY.
Поэтому координаты средней части экрана можно задать точкой
(GetMaxX div 2 ,GetMaxY div 2)
Роль курсора в графическом режиме выполняет указательтекущей позиции на экране. В отличие от текстового курсора он невидим.
Для перемещения указателя (без вывода изображения на экран) используются две процедуры:
1) Procedure MoveTo (X,Y : integer); – перемещает указатель в точку (X,Y);
2) Procedure MoveRel (Dx,Dy : integer); – перемещает указатель в точку, определяемую приращениемDxпо координате Х иDy- по координатеY;
Часто бывает полезно работать не со всем экраном, а с отдельным его окном. Окно в графическом режиме – это прямоугольная область для вывода изображения, т.е. визуальный порт. Установка окна осуществляется следующей процедурой:
Procedure SetViewPort (X1,Y1,X2,Y2 : word; Clip : boolean);
Если Clip = true, то изображение за границами окна обрезается; еслиClip = false, то изображение выводится и за указанными границами окна.
При обращении к процедуре SetViewPortудобно использовать константыClipOn = true иClipOff = false, которые подставляют в процедуру вместоClip.
Процедуры отмены текущего окна не предусмотрено. Если требуется вернуться к работе с полным экраном, то вызывается процедура SetViewPortс соответствующими параметрами:
SetViewPort (0,0,GetMaxX,GetMaxY,ClipOn);
Для очистки графического окна используется процедура ClearViewPotr:
Procedure ClearViewPort;
В результате изображение в окне стирается, цвет фона остается без изменения, указатель перемещается в левый верхний угол окна, в позицию (0,0).
Для очистки графического экрана применяется процедура ClearDevice:
Procedure ClearDevice;
при этом указатель перемещается в левый верхний угол экрана.