- •Введение
- •Управление экраном в текстовом режиме
- •Установка текстового режима
- •Установка цвета и фона
- •Управление курсором.
- •Управление строками.
- •Управление звуком.
- •Текстовые окна.
- •Использование клавиатуры.
- •Организация меню пользователя. Элементы псевдографики.
- •Виды меню
- •Использование буфера экрана.
- •Управление экраном в графическом режиме.
- •Стандартные подпрограммы для работы в графическом режиме
- •Установка графического режима.
- •InitGraph (var Driver,Mode:integer; DriverPath:string) -
- •Координаты, графические окна.
- •Выбор цвета, стиля заполнения.
- •Геометрия
- •Точки и линии.
- •Многоугольники
- •Дуги, окружности, эллипсы
- •Вывод текста
- •Сохранение и выдача изображений
- •Дополнительные стандартные подпрограммы для работы в графическом режиме. Анализ графического режима
- •Установки графических окон, страницы
- •Выбор палитры, заполнения
- •Геометрия
- •Установки вывода текста.
- •Организация библиотек пользователя
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Приложение 1. Кодировочная таблица пэвм.
- •Приложение 2. Константы графического режима.
Геометрия
Для вычерчивания сопряжения двух прямых с помощью дуги или для соединения линией концов дуги используют процедуру возвращающую координаты последней команды Arc:
GetArcCoords(var ArcCoords:ArcCoordsType)
где
Type
ArcCoordsType =
record
X,Y : integer; { центр дуги }
Xstart,Ystart : integer; { начальная позиция }
Xend,Yend :integer { конечная позиция }
end;
Рассмотрим пример построения линии, соединяющей концы
построенной дуги.
Uses Graph,Crt;
Var
Driver,Mode,Color:integer;
ArcCoords:ArcCoordsType;
begin
Driver:=Detect;
InitGraph(Driver,Mode,'');
Arc(100,100,0,270,30);
GetArcCorrds(ArcCoords);
with ArcCoords do
Line(Xstart,Ystart,Xend,Yend);
readln;
CloseGraph
End.
SetAspectRatio(Xasp,Yasp:word ):word - функция изменяющая
коэффициент удлинения графического изображения.
Пример обращения к функции: SetAcpectRatio(10,15)
Установки вывода текста.
Для анализа установок выводимого текста используется процедура, возвращающая текущий шрифт, направление, размер и выравнивание текста, заданные процедурами SetTextStyle и SetTextJustify :
GetTextSettings( var TextInfo:TextSettingsType), где
TextSettingsType определен как:
type TextSettingsType=
record
Font:word; { номер шрифта }
Direction:word;{ направление вывода }
CharSize:word; { размер символа }
Horiz:word; { горизонтальное выравнивание }
Vert:word { вертикальное выравнивание }
end;
Организация библиотек пользователя
Для экономии времени создания программ, более эффективной их организации ,а следовательно для разработки более надежных программ полезно иметь ряд наиболее универсальных процедур в своей личной библиотеке. Можно использовать несколько библиотек, но процедуры, располагающиеся в одной библиотеке должны быть логически связаны. Имя для каждой библиотеки должно быть уникальным. Например в библиотеку для эффективной работы в текстовом режиме можно включить следующие процедуры:
построения различных рамок;
оформления и управления меню различного типа;
установки цвета символов и фона;
управления звуком, курсором.
Созданную библиотеку можно в любой момент расширять и совершенствовать, внося в нее дополнительные универсальные элементы.
В Турбо Паскале любая библиотека представляет собой автономно компилируемую программную единицу, называемую библиотечным модулем и может включать в себя описание констант, типов данных, переменных, процедур и функций. Библиотечный модуль имеет расширение TPU или TPL. Примером стандартных библиотечных модулей являются Crt, Graph, Printer, System, Overlay.
Cоздание библиотечного модуля определяет использование зарезервированных слов Unit, Interface, Implementation, Begin, End
и имеет следующую структуру:
Unit < имя библиотечного модуля >;
Interface
< интерфейсная часть >
Implementation
< исполняемая часть >
Begin
< инициирующая часть>
End.
Где
Unit - заголовок модуля, в котором указывается имя библи отечного модуля. Это имя должно совпадать с именем файла, содержащий исходный текст модуля и используется для ссылки на библиотечный модуль из основной программы или для связи с другими модулями и записывается в предложении Uses.
Пример. Исходный текст модуля находится в файле MyCrt.pas, поэтому данный библиотечный модуль имеет заголовок Unit MyCrt, а в основной программе присутствует предложение Uses MyCrt;
Interface - интерфейсная или видимая часть модуля, в которой сконцентрированы описания глобальных типов, констант, переменных, заголовков различных процедур и функций. Все описания интерфейсной части доступны основной программе и другим модулям. Если используются внешние подпрограммы, то после заголовка нужно написать зарезервированное слово External ,а при использовании встроенных машинных блоков должны следовать машинные коды со словом Inline.
В интерфейсной части запрещены опережающие описания. Для ссылки на другой модуль используется предложение Uses с указанием имени используемого модуля. Предложение Uses располагается после служебного слова Interfaсe.
Ссылки модулей друг на друга могут образовывать структуру любой сложности, но запрещено явное или косвенное обращение модуля к самому себе.
Например запрещены обращения :
Unit A; Unit B; или Unit A;
Interface Interface Interface
Uses B; Uses A; Uses A;
End. End. End.
Implementation - исполняемая часть, включающая описания локальных данных: констант, типов переменных и подпрограмм. Кроме этого в исполняемой части содержатся тела подпрограмм, заголовки которых описаны в части Interface. Перед телом подпрограммы снова указывается заголовок, в котором можно опускать список формальных параметров и тип функции, т.к. они считаются определенными в интерфейсной части. Все описанные в этой части данные помещаются в общий сегмент памяти.
Begin - инициализирующая часть является частью библиотечного модуля. В ней размещаются исполняемые операторы, содержащие некоторый фрагмент программы. Эти операторы используются для инициализации модуля, например, часть может отсутствовать, в этом случае зарезервированное слово Begin не используется а указывается конец модуля зарезервированным словом End, за которым следует точка.
End - конец модуля.
При построении библиотеки придерживаются следующих этапов:
1) Формирование модуля UNIT в который войдут все процедуры будущей библиотеки. Полученный модуль имеет расширение PAS.
2) Компиляция в режиме Compile,Make,Build главного меню TURBO PASCAL модуля UNIT на диск . Полученный библиотечный модуль будет иметь расширение TPU.
3) Проверка работоспособности вашей библиотеки.
Для примера рассмотрим создание личной библиотеки с именем MyCrt, в которую войдут наиболее oбщие процедуры, дополняющие модуль Crt, описанные в разделе 1.2.
Проверку работоспособности библиотечного модуля MyCrt проверим на примере программы PrimMenu.
ПРИМЕР.
UNIT maycrt;