-6A82E~1
.PDF51
Вывод текстовой информации в графическом режиме осуществляется с помощью следующих процедур модуля Graph:
GetTextSettings(var TextInfo:TextSettingsType); — воз-
вращает значения параметров текущего шрифта (направление, размер, выравнивание и пр.). Эти параметры объединены в запись типа TextSettingsType, описанную в разделе интерфейса модуля Graph как
type
TextSettmgsType = record Font word; Direction:word; CharSize: word; Horiz: word; Vertword
end;
Значения отдельных полей записи TextSettingsType определяется на основании следующего списка констант в разделе интерфейса модуля Graph:
const
DefaultFont = 0; {Обычный (побитовый) шрифт (8×8)}
TriplexFont = 1; {Тройной шрифт} SmallFont = 2; {Малый шрифт} SansSerifFont = 3; {Гротесковый шрифт}
GothicFont = 4; {Готический шрифт} HorizDir = 0; {Направление слева направо} VertDir = 1; {Направление снизу вверх}
OutText(TextString:string); — вызывает вывод строки
TextString, начиная с позиции текущего указателя. Эта процедура использует шрифт, установленный SetTextStyle (по умолчанию считается установленным побитовый шрифт), с использованием параметров вывода (выравнивание, центровка, поворот на 90 градусов и установленных процедурой SetTextJustify). После вывода TextString значение текущего указателя изменяется, т.е. устанавливается в конце TextString, если направление вывода текста было вертикальное и выравнивание производилось также в горизонтальном направлении по отношению к левой границе поля вывода. Текущий указатель по отношении к выводимому символу располагается в левом углу.
OutTextXY(X,Y: integer, TextString:string); — выводит начиная с точки, имеющей координаты (X,Y). Эта процедура аналогична по своим свойствам OutText. Если вывод строки осуществляется побитовым шрифтом и выводимая строка выходит за пределы вывода, то вывод вообще не производится. Если вывод строки осуществляется штриховым шрифтом, то TextString отсекается на границе области вывода.
52
SetTextJustify(Horiz, Vert : word); — устанавливает значе-
ние выравнивания текста. Для установки значения выравнивания в разделе интерфейса модуля Graph определены следующие константы:
Const {Горизонтальное выравнивание Horiz} LeftText = 0; {Выравнивание слева}
CenterText = 1; {Выравнивание, по центру} RighText = 2; {Выравнивание справа}
{Вертикальное выравнивание — Vert} BottomText = 0; {Выравнивание снизу} CenterText = 1; {Выравнивание по центру} TopText = 2; {Выравнивание сверху}
По умолчанию используется SetTextJustify(LeftText, TopText).
SetTextStyle(Font:word; Direction:word; CharSize:word); —
устанавливает текущий шрифт, тип и коэффициент увеличения символов. CharSize задает следующий коэффициент увеличения символов: если CharSize=1, то шрифт не увеличивается; если CharSize=2, то размер символов увеличивается в два раза по вертикали и горизонтали и т. д. Direction
— задает направление вывода (HorzDir — горизонтальное, слева направо; VertDir — вертикальное, снизу вверх). Font — задает тип устанавливаемого шрифта.
10.5 Определение атрибутов графического изображения
Модуль Graph располагает рядом процедур и функций, позволяющих определять атрибуты выводимого на экран графического изображения. К числу таких атрибутов следует отнести цвет, фон, стиль, шаблон и толщину линий, с помощью которых на экране отображается любое графическое изображение, а также шаблон и цвет заполнения высвечиваемых на экране различных геометрических фигур.
Управление цветом и фоном
SetBkColor(Color:word); — устанавливает текущий фоновый цвет, используя текущую палитру. SetBkColor(0) всегда в качестве фонового цвета устанавливает черный цвет.
SetColor(Color:word); — устанавливает текущий цвет изображения, используя заданную палитру.
Выбор стиля, шаблона и толщины лийии
LineStyle — стиль линии — определяется, исходя из следующего списка констант модуля Graph:
const
SolidLn = 0; {Сплошная линия}
53
DottedLn = 1; {Линия из трех точек} CenterLn = 2; {Линия из точек и тире} DashedLn = 3; {Пунктирная линия}
UserBitLn = 4; {Тип, определенный пользователем}
Thickness принимает одно из следующих значений из соответствующего списка констант:
const
NormWidth = 1; {Нормальная толщина} ThickWidth = 3; {Увеличенная толщина}
SetLineStyle (LineStyle:word; Pattern:word; Thickness:word);
— устанавливает текущую толщину и тип линии. Значения параметров LineStyle, Pattern, Thickness должны соответствовать значениям одноименных элементов записи типа. Если LineStyle=UserBitLn, то тип линии задается шаблоном Pattern по следующему принципу. Если отдельный бит шаблона равен 1, то соответствующий ему пиксель будет высвечиваться на экране. Например, если Pattern = &АААА = 10 10 10 10 10 10 10 10, то такой шаблон соответствует сплошной линии нормальной толщины (50%-ная яркость). Параметры, сформированные SetLineStyle определяют линию в процедурах Line, LineRel, LineTo и Rectangle.
Выбор шаблона и цвета заполнения
Для выбора шаблона и цвета заполнения используются следующие процедуры:
GetFillSettings(var FillInfo: FillSettingsType); — воз-
вращает последний образец заполнения и цвет, установленный предыдущим вызовом SetFillPattern или SetFillStyle. Переменная FillInfo
должна иметь структуру, описанную в разделе интерфейса модуля Graph type
FillSettlngsType = record Pattern:word;
Color: word end;
Поле Pattern содержит текущий выбранный образец заполнения и соответствует одному из значений следующего списка констант:
const
EmptyFill = 0; {Область заполняется фоновым цветом} SolidFill = 1; {Область заполняется сплошным цветом} LineFill = 2; {Шаблон заполнения '---'}
54
LtSlashFill = 3; {Шаблон заполнения '///')
SlashFill = 4; {Шаблон заполнения '///' — толстые линии} BKSlashFill = 5; {Шаблон заполнения '\\\' — толстые линии} LtBKSlashFUl = 6; {Шаблон заполнения '\\\'}
HatchFill = 7; {Редкая штриховка'+++'} XHatchFill = 8; {Частая штриховка'×××'}
InterLeaveFill = 9; {Штриховка в клетку}
WideDotFill = 10; {Заполнение редкими точками} CloseDotFill =11; {Заполнение точками}
UserFill = 12; {Заполнение, определяемое пользователем}
Поле Color содержит текущий цвет заполнения в соответствии с используемой палитрой;
SetFillStyle(Pattern:word; Color:word); — устанавливает шаблон и цвет заполнения, используемые при выполнении процедур FillPoly, Bar, Bar3D. Значение Pattern выбирается из соответствующего списка констант, приведенного в GetFillSettings. Только в случае, если Pattern = UserFill, становится активным шаблон, заданный в
SetFillPattern.
10.6 Вывод графической информации
Модуль Graph позволяет выводить на экран изображение различных геометрических фигур, а также получать информацию о них. Это осуществляется с помощью следующих процедур и функций:
Arc(X,Y:mteger; StAngle, EndAngle, Radius:word); — ри-
сует на экране дугу с центром в точке (X,Y), радиусом Radius, от начального угла StAngle до конечного угла EndAngle с использованием текущего цвета. Отсчет углов осуществляется относительно горизонтальной оси в направлении против часовой стрелки в градусах. Если StAngle = 0, EndAngle = 360 градусов, то будет нарисована окружность;
Bar(Xl,Yl,X2,Y2:integer); — выводит на экран закрашенный прямоугольник с координатами левого верхнего угла (X1,Y1) и правого нижнего угла (X2,Y2). При закраске прямоугольника используются шаблон и цвет,
определенные процедурами SetFillStyle и SetFillPattern;
Circle(X,Y:integer; Radius:word); — выводит на экран изоб-
ражение окружности с центром (X,Y) и радиусом Radius. Окружность рисуется цветом, установленным SetColor;
55
DrawPoly(NumPoints:word; var PolyPoints); — выводит на экран контур многоугольника, используя текущий цвет (SetColor) и стиль линии (SetLineStyle). Число вершин многоугольника задается в Numpoints. В параметре PolyPoints задаются координаты вершин многоугольника. Каждая координат состоит из двух слов: X и Y. Например:
const
Т: array [1..4] of PointType =
(X:10,Y:50),(X:100,Y:50), (X:10, Y:100),(X:100, Y: 00);
…
begin DrawPoly (4,T) …
end.
Тип PointType в разделе интерфейса модуля Graph описан как type
PointType = record Х,Y: integer
end;
Для вывода на экран изображения замкнутого многоугольника с N вершинами следует в PolyPoint задать (N+1) координату, где (N+1)-я координата должна совпадать с первой координатой. Например, для того чтобы вывести изображение треугольника, следует задать в DrawPoly четыре координаты;
Ellipse(X,Y:integer, StAngle,EndAngle:word; XRadius,YRadius:word);
— выводит на экран изображение эллиптической дуги с центром в точке (X,Y) от начального угла StAngle до конечного угла EndAngle с горизонтальной полуосью XRadius и вертикальной полуосью YRadius. Эллиптическая дуга высвечиваете; на экране текущим цветом (SetColor).
FillEllipse(X,Y:integer; Xradius,YRadius:word); — выво-
дит на экран изображение полного закрашенного эллипса с центром (X,Y) с горизонтальной и вертикальной полуосями XRadius и YRadius. Эллипс высвечивается текущим цветом (SetColor) и закрашивается текущим цветом и сти-
лем заполнения. (SetFillStyle, SetFillPattern);
FillPoly(NumPoints:word; var PolyPoints); — аналогична процедуре DrawPoly. Отличие состоит только в том, что изображение многоугольник закрашивается текущим цветом и стилем заполнения (SetFill-
Style, SetFillPattern).
FloodFill(X,Y:integer, Border:word); — заполняет (закра-
шивает ограниченную область текущим цветом |
и стилем |
заполнения |
(SetFillStyle SetFillPattern). Граница |
закрашиваемой области вы- |
|
56
свечивается цветом, задаваемым в Border. Если точка (X,Y) находится внутри области, то эта облает, закрашивается, если же она находится вне области, то заполняется внешняя часть области.
Line(Xl,Y1,X2,Y2:integer); — выводит на экран линию, соединя-
ющую точки с координатами (X1,Y1) и (X2,Y2). Толщина, цвет и линии зада-
ются c помощью SetLineStyle и SetColor;
LineTo(X,Y:integer); — выводит изображение линии, соедини точку, в которой находится текущий указатель, и точку с координатами (X,Y). При изображении линии используются цвет, стиль и шаблон, установленные проце-
дурами SetColor, SetLineStyle;
PieSlice(X,Y:integer; StAngle,EndAngle,Radius:word);
— выводит на экран изображение закрашенного сектора круга, используя в качестве центра круга точку (X,Y), начального угла StAngle, конечного угла EndAngle и радиуса Radius. Контур сектора высвечивается текущим цветом (SetGolor). При заполнении сектора используются шаблон и цвет, опреде-
ленные процедурами SetFillStyle и FillPattern.
PutPixel(X,Y:integer; Pixel:word); — высвечивает в точке с координатами (X,Y) пиксель цвета Pixel.
Rectangle(Xl,Yl,X2,Y2:integer); — выводит на экран изображе-
ние прямоугольника, используя при этом текущий цвет (SetColor) и тип линии (SetLineStyle). X1,Y1 — задает левый верхний угол, а Х2,Y2 — правый нижний угол прямоугольника;
Sector(X,Y:integer; StAngle,EndAngle,XRadius,YRadius:word);
— выводит на экран изображение эллиптического сектора от начального угла StAngle до конечного угла EndAngle, используя в качестве центра точку с координатами (X,Y), а в качестве горизонтальной и вертикальной полуосей — XRadius и YRadius. Сектор выводится на экран с использованием текущего цвета (SetColor) и заполняется с использованием шаблона и цвета, опреде-
ленных в SetFillStyle и SetFillPattern.
57
Практический раздел Лабораторные работы
11 ИНТЕГРИРОВАННАЯ СРЕДА ПРОГРАММИРОВАНИЯ
11.1 Назначение системы программирования
Система программирования Турбо-Паскаль представляет собой интегрированную среду, включающую в себя: экранный редактор, компилятор, редактор связей, отладчик.
Интегрированность среды проявляется не только в единстве принципов построения компонент, но и в их связи друг с другом. Так, при возникновении ошибки трансляции система автоматически переходит в режим экранного редактирования и ставит курсор в точку возникновения ошибки. Аналогичные действия выполняются и отладчиком при возникновении ошибки во время выполнения программы.
Запуск системы Турбо-Паскаль осуществляется при помощи иконки на рабочем столе
либо командой turbo из соответствующей папки, после запуска на экране появляется главное меню системы. Для выхода из системы следует нажать клавиши
<Alt-X>.
11.2 Файлы Турбо-Паскаля
Турбо-Паскаль использует следующие расширения файлов:
com и ехе – запускаемые файлы (программы, готовые для выполнения) ; pas – файл с исходным текстом программы на языке Паскаль;
tpu – отранслированный модуль;
tpl – файл, содержащий стандартные модули Паскаля; tp – файл конфигурации интегрированной среды;
dsk – файл, содержащий информацию о состоянии интегрированной среды; bak – прошлая копия pas-файла;
obj – процедуры на языке Ассемблер.
В Турбо-Паскале возможны также все виды расширений файлов, исполь-
зуемые MS-DOS.
11.3 Главное меню
Общий вид главного меню приведен на рис.11.1.
Первая строка экрана содержит все команды главного меню. В последней строке экрана приведены основные доступные в данный момент функциональные клавиши с указанием их назначения. Предпоследняя строка указывает место положение курсора, вид которого указывает на режимы вставки/замены: ▬
58
- вставка (Insert), █ - замена. Во второй строке экрана указаны имя файла и номер окна.
Рис. 11.1 Главное меню системы Турбо-Паскаль
В главном меню содержатся следующие команды: File (файл), Edit (редактор). Search (поиск), Run (выполнение), Compile (компилирование) , Debug (от-
ладка), Tools (средства), Options (опции), Window (окно), Help (помощь). Все они имеют собственные подменю, а некоторые – и несколько вложенных подменю.
Для входа в главное меню следует нажать клавишу <F10>, а для выхода из него – <Esc> (если не была введена какая-либо команда). Вызов функций подменю осуществляется либо с помощью выделенного прямоугольника, либо нажатием соответствующих функциональных клавиш.
11.4 Команда File
Команда File содержит функции, управляющие работой с файлами. В этом режиме (рис.11.2) возможно следующие действия:
New – открытие нового окна редактирования;
Open – загрузка файла с текущей директории текущего диска в режим экранного редактирования. При выполнении опции Open на экран выдается заставка с перечислением имеющихся файлов (с расширением pas) в текущем месте. Синонимом этой команды является функциональ¬ная клавиша <F3>;
Save – сохранение на диске текущего редактируемого файла и продолжение редактирования. Синоним команды - <F2>;
Save as – сохранение под другим именем (в текущей папке). Save all – сохранение всех файлов во всех окнах;
Change Dir... – изменение директории и диска (выдается на экран заставка в виде дерева текущего диска);
59
Print – печать текущего файла (при наличии принтера);
Printer setup... – изменение setup принтера (на экран выдается заставка); Dos shell – временный выход в DOS;
Exit – выход из интегрированной среды, синоним - <Alt-X>.
New
Open... F3 F2
Save
Save as... Save all
Change Dir...
Print.
Printer setup.
Dos shell
Exit. Alt-X
Рис.10.2. Подменю команды File
11.5 Команда Edit
Команда Edit содержит функции, управляющие работой с файлами. В этом режиме (рис.11.3) возможно следующие действия:
Edit |
|
Отменить последнее действие |
Undo |
Alt-BkSp |
|
Redo |
|
Повторить |
Cut |
Shift-Del |
Взять в карман с удалением |
Copy |
Ctrl-Ins |
Взять в карман для копирования |
Paste |
Shift-Ins |
Вставить из карман |
Clear |
Ctrl-Del |
Очистить |
Show clipbord |
Показать clipbord (в другом окне) |
|
Рис.11.3. Подменю команды Edit
Примечание. Команды Cut, Copy, Clear работают с выделенным блоком. Команда Paste работает, если есть блок, взятый в карман.
11.6 Команда Run
Команда Run объединяет функции и команды, управляющие трассировкой и выполнением программы. В этот режим (рис.11.4) входят следующие составляющие:
Run
Run |
Ctrl-F9 |
|
Step over- |
F8 |
|
Trace into |
F7 |
|
Go. to cursor |
F4 |
|
Program reset |
Ctrl -F2 |
|
Parameters... |
|
|
|
Рис. 11.4. Подменю команды Run |
|
60
Run – запуск программы на выполнение (при необходимости выполняется трансляция программы). По завершении работы программы происходит возврат в интегрированную среду. Синоним команды – <Ctrl-F9>.
Step over – пооператорное выполнение программы (при обращении к процедуре или функции вход в них не производится). Синоним – <F8>.
Trace into – покомандное выполнение (трассировка) программы (производится вход во все процедуры и функции). Синоним – <F7>.
Go to cursor – выполнение программы (без трассировки) от текущей строки (в режиме отладки текущая строка выделяется голубым цветом) до строки, где находится курсор. Синоним – <F4>.
Program reset – выход из режима отладки: все точки прерывания и переменные в окне просмотра сохраняются, но по команде Run, Trace или Step выполнение начнется с начала программы. Синоним – <Ctrl-F2>.
Parameters... – открывается бокс диалога, где вы определяете в командной строке аргументы (значения) для выполнения вашей программы, точно также как вы определяли бы их в командной строке DOS.
11.7 Команда Compile
Команда Compile содержит следующие команды для управления процессом трансляции программ (рис. 11.5.)
Compile
Compile |
Alt-FQ |
Make |
F9 |
Build |
|
Target... |
Real |
Primary File.. |
|
Clear primary |
file |
Information |
|
Рис. 11.5. Подменю команды Compile
Compile – трансляция программы. Синоним команды - <Alt-F9>. Эта команда позволяет получить ехе-файл программы (или tpu-файл для модуля), записывая или нет его на диск (выставляется в команде Орtions.. . –Linker).
Make – трансляция модулей программы, в которые были внесены изменения. Синоним - <F9>.
Build – перетрансляция всех модулей, входящих в программу (независимо от того, были в них внесены изменения или нет).
Target… – выбор типа кода генерации.
Primary File... – определяет файл, который будет компилироваться. Если он не указан, то компилируется файл, загруженный для редактирования. Эта опция полезна при трансляции программ, состоящих из нескольких файлов.
Clear primary file – очистка уcтановленного в предыдущей опции. Information – информация о последней скомпилированной программе.
