Сделай Сам Свою Работу на 5

Порядок выполнения работы





Алгоритмические языки и программирование

 

Работа со стандартным графическим модулем

 

Методические указания

к выполнению лабораторной работы №8

для студентов очной формы обучения

специальности 230201 – "Информационные системы

и технологии"

 

 

Брянск 2007


УДК 004.43

 

Алгоритмические языки и программирование. Работа со стандартным графическим модулем: методические указания к выполнению лабораторной работы №8 для студентов очной формы обучения специальности 230201 – "Информационные системы и технологии". – Брянск: БГТУ, 2007. – 12 с.

 

Разработали: С.М. Рощин, к.т.н., доц.

Ю.А. Леонов, асс.

 

Научный редактор Ю.М. Казаков

Редактор издательства Л.И. Афонина

Компьютерный набор С.М. Рощин

 

 

Рекомендовано кафедрой «Компьютерные технологии и системы» БГТУ (протокол № от )

 

 

Темплан 2007г., п. 462

 

Подписано в печать Формат 60х84 1/16. Бумага офсетная. Офсетная печать. Усл. печ. л. 0,7 Уч. – изд. л. 0,7 Тираж 50 экз. Заказ Бесплатно

 

Издательство брянского государственного технического университета, 241035, Брянск, бульвар 50-летия Октября, 7, БГТУ. 58-82-49



Лаборатория оперативной полиграфии БГТУ, ул. Харьковская, 9

ЦЕЛЬ РАБОТЫ

Целью работы является изучение основных процедур и функций стандартного графического модуля Graph, а также овладение навыками перевода координат из декартовой системы в полярную систему.

Продолжительность работы – 4ч.

Теоретическая часть

Отображение информации в графическом режиме

После запуска среды программирования Borland Pascal 7.0 инициализируется текстовый режим. Для того чтобы использовать графические средства, предусмотренные в языке Pascal, программист должен определенным образом инициализировать режим работы графического адаптера. В графическом режиме работой графического адаптера управляет графический драйвер. Для всех существующих типов адаптеров фирма Borland разработала графические драйверы (они имеют расширение *.bgi и находятся на диске в одноименном подкаталоге).

Любая информация при работе в графическом режиме на экране монитора представлена совокупностью светящихся точек – пикселей, которые определяются цветом, и координатами – положением относительно левого верхнего угла экрана с координатами (0,0).



Графический адаптер может работать в нескольких графических режимах, каждому из которых соответствует свой формат изображения, т. е. разрешающая способность (количество пикселей по горизонтали и вертикали) экрана и набор используемых цветов. Для стандартного графического режима VGA разрешающая способность экрана равна 640x480 точек (ширина х высота), количество цветов – 16.

Инициализация графического режима

Необходимые процедуры и функции для работы с графикой собраны в стандартном модуле Graph.

Инициализация графики производится с помощью процедуры InitGraph, которая имеет вид:

InitGraph(драйвер, режим, путь);

Драйвер – переменная целого типа, определяющая тип драйвера. Процедура загружает драйвер в оперативную память и переводит адаптер в графический режим работы. Тип драйвера должен соответствовать типу графического адаптера. Для указания типа драйвера в модуле предопределены следующие константы: Detect, CGA, EGA, VGA и др.

Режим – переменная целого типа, задающая режим работы графического адаптера. Многие адаптеры могут работать в нескольких режимах. Если переменной драйвер присвоено значение Detect, процедура InitGraph сама определит необходимый драйвер и подберет наилучший режим (т.е. задавать номер режима в данном случае не требуется).

Путь – путь к каталогу, в котором находится файл драйвера графического режима. Если путь неуказан, то файл драйвера ищется в текущем каталоге (каталог, в котором находится исполняемый файл). Для графического режима VGA, являющегося режимом по умолчанию для большинства систем, стандартным драйвером является файл egavga.bgi, который находится в каталоге BGI корневого каталога среды программирования.



Пример процедуры инициализации графического режима:

Procedure Init;

Var

GrDriver, GrMode: Integer;

Begin

GrDriver:=Detect;

InitGraph(GrDriver, GrMode, ‘’);

If (GraphResult<>GrOk) Then begin

Writeln(‘При переходе в графический возникла ошибка’, GraphErrorMsg(GraphResult));

Halt(1);

End;

End;

GraphResult – функция, находящаяся в модуле Graph. Возвращает код ошибки последней графической операции.

GrOk – константа, значение которой возвращается функцией GraphResult при успешном выполнении последней графической операции.

GraphErrorMsg (код_ошибки) – функция, которая возвращает строку с полным названием ошибки по её коду.

После окончания работы с графикой необходимо закрыть графический режим. Делается это с помощью процедуры CloseGraph();

Подпрограммы графического режима

Представим список основных процедур и функций модуля Graph.

Procedure PutPixel(X, Y: Integer; Pixel: Word);

Рисует точку с координатами X, Y с определенным цветом Pixel.

Procedure Rectangle(X1, Y1, X2, Y2: Integer);

Рисует прямоугольник, который задается координатами двух точек, образующих углы прямоугольника по диагонали.

Procedure Bar(X1, Y1, X2, Y2: Integer);

Рисует закрашенный прямоугольник, который задается координатами двух точек, образующих углы прямоугольника по диагонали.

Procedure Circle(X, Y: Integer; Radius: Word);

Рисует окружность с центром в координатах X, Y и радиусом Radius.

Procedure Arc (X, Y; Integer; StAngle, EndAngle, Radius; Word);

Рисует дугу окружности. Центр окружности – X,Y, радиус – Radius, начальный и конечный углы дуги – StAngle, EndAngle.

Procedure Ellipse(X, Y: Integer; StAngle, EndAngle: Word; XRadius, YRadius: Word);

Рисует эллипс с центром X, Y. StAngle, EndAngle начальный и конечный углы эллипса соответственно. XRadius, YRadius – радиусы эллипса в соответствующих направлениях.

Procedure Line(X1, Y1, X2, Y2: Integer);

Рисует линию от точки с координатами X1, Y1 в точку X2, Y2.

Procedure LineTo(X, Y: Integer);

Рисует линию от текущей точки в точку с координатами X, Y.

Procedure MoveTo(X, Y: Integer);

Устанавливает текущую позицию точки, но не изображает ее.

Function GetPixel(X, Y: Integer): Word;

Получение текущего цвета точки X, Y экрана.

Function GetX: Integer;

Получение значения координаты X.

Function GetY: Integer;

Получение значения координаты Y.

Function GetMaxX: integer;

Функция, возвращающая максимальный X для установленного графического режима.

Function GetMaxY: integer;

Функция, возвращающая максимальный Y для установленного графического режима.

Procedure ClearDevice;

Очистка экрана.

Procedure SetColor(Color: Word);

Устанавливает текущий цвет пера.

Procedure SetBkColor(ColorNum: Word);

Устанавливает цвет заднего фона.

Procedure FloodFill(X, Y: Integer; Border: Word);

Заливка замкнутого контура выбранным типом и цветом. Точка с координатами X, Y должна находиться внутри контура. Border – цвет границы контура.

Procedure SetFillStyle(Pattern: Word; Color: Word);

Установка нового шаблона и цвета заполнения.

Procedure OutText(TextString: string);

Вывод текста в текущую позицию на экране.

Procedure OutTextXY(X,Y: Integer; TextString: string);

Вывод текста в позицию X,Y на экране.

Для задания цвета можно использовать как слово на английском языке (стандартную константу), так и цифру из табл. 1.

 

Таблица 1

Основные цвета

Константа Цвет Код
Black черный
Blue синий
Green зеленый
Cyan бирюзовый
Red красный
Magenta малиновый
Brown коричневый
LightGray светло-серый
White белый

Примеры

Пример 1. Изображение на экране прямоугольного треугольника с вершинами (320,10), (120,210), (520,210).

PROGRAM Primer_1;

Uses Graph; {Подключение стандартного графического модуля}

Var

Gd, {Переменная графического драйвера}

Gm: Integer; {Переменная графического режима}

BEGIN

Gd:=Detect; {Графический драйвер: VGA}

InitGraph(Gd, Gm,''); {Инициализация графического режима.}

{В апострофы '' помещается путь к файлу EGAVGA.BGI}

If GraphResult=grOk Then {Если графический режим включился успешно, то нарисовать отрезки прямых}

Begin

Line(120,210,520,210); {Горизонтальный отрезок}

Line(120,210,320,10); {Левый катет треугольника}

Line(320,10,520,210); {Правый катет треугольника}

ReadLn;

CloseGraph;

End;

END.

Пример 2. Изображение разноцветных лучей одинаковой длины.

PROGRAM Primer_2;

Uses Graph;

Const CenterX=320; CenterY=240; Radius=200;

Var

Gd,Gm: Integer;

i : Integer; dx,dy: Integer;

BEGIN

Gd:=VGA;

Gm:=VGAHi;

InitGraph(Gd,Gm,'');

If GraphResult=grOk Then

Begin

for i:=0 to 160 do

begin

dx:=Round(Radius*Sin(i*PI/80));

dy:=Round(Radius*Cos(i*PI/80));

SetColor(i MOD 16);

Line(CenterX, CenterY, CenterX+dx, CenterY+dy)

end;

ReadLn;

CloseGraph;

End;

END.

Пример 3. Построение графика функции, заданного функцией Func.

PROGRAM Primer_3;

Uses Graph;

Var

x, y, a, b, h: Real;

x0, y0, xg, yg,

xmax, ymax, mx, my,

grd, grm: Integer;

{ ----------------------------------------------------- }

Function Func(x: Real): Real;

Begin

Func:=x*Sin(x/12+4)/2;

End;

{ ----------------------------------------------------- }

BEGIN

x0:=60;

y0:=300; {Координаты центра}

mx:=2;

my:=1; {Масштабные коэффициенты по x и y}

a:=0; b:=200; h:=0.1; {Область задания функции по x и шаг}

grd:=Detect;

InitGraph(grd, grm, '');

If GraphResult=grOk Then

Begin

SetColor(15);

xmax:=GetMaxx;

ymax:=GetMaxy;

Line(10, y0, xmax-100, y0); {Ось OX}

Line(x0, 10, x0, ymax-100); {Ось OY}

x:=a;

While x<=b Do

Begin

xg:=x0+Trunc(mx*x);

yg:=y0-Trunc(my*Func(x));

If (xg>=0) AND (xg<=xmax) AND (yg>=0) AND (yg<=ymax) then PutPixel(xg, yg, 10);

x:=x+h;

End;

ReadLn;

CloseGraph;

End;

END.

 

2.5. Перевод координат из декартовой координатной системы в полярную и наоборот

       
   
 

 


Как видно из рисунков 1 и 2, точка М в декартовой системе координат задается двумя координатами: абсциссой и ординатой, а в полярной системе координат – радиус-вектором и углом j. Формулы перевода значений из одной системы в другую:

из декартовой системы в полярную

из полярной системы в декартовую

 

Порядок выполнения работы

Работа выполняется студентом самостоятельно и состоит из этапов:

1) изучение методических указаний по выполнению лабораторной работы и получение индивидуального задания;

2) составление алгоритма и программы на алгоритмическом языке Pascal;

3) составление контрольного примера;

4) отладка программы;

5) защита лабораторной работы.

Конечным результатом выполнения лабораторной работы является работоспособная программа. Текст программы представляется в электронном виде и должен включать постановку задачи, сведения об авторе и подробные комментарии.

После выполнения лабораторной работы преподаватель проверяет качество оформления текста и правильность функционирования программы. Все используемые обозначения должны быть расшифрованы.

Текст программы должен включать подробные комментарии, поясняющие назначения процедур, их параметры, использование переменных, смысл и особенности реализации отдельных программных блоков.

Список заданий

Для выполнения данной работы необходимо написать программу в среде Borland Pascal 7.0, которая вычерчивает математическую кривую с помощью графических функций, доступных в модуле Graph. Функция кривой дана в полярной системе координат F(r, j).

Программа состоит из следующих шагов:

1. Инициализация графического режима.

2. Организация цикла, в котором при изменении угла j вычисляется значение радиус-вектора r по предложенной функции.

3. Внутри цикла производится перевод полярной координаты в декартову (координату экрана).

4. Также в цикле рисуется точка, полученная по данной формуле, затем она соединяется с предыдущей точкой.

5. Вычерчивание асимптот и осей координат.

6. Выход из графического режима.

Варианты заданий указаны в табл. 2.

Таблица 2

№ варианта
Функция
№ варианта
Функция
№ варианта
Функция
№ варианта
Функция
№ варианта
Функция
№ варианта
Функция
№ варианта
Функция
№ варианта
Функция
             

5. Контрольные вопросы

1. Что значит инициализировать графический режим? Что для этого нужно сделать?

2. Что значит присвоить переменной типа драйвера значение Detect? Как в этом случае будет происходить инициализация графики?

3. Где находятся стандартные графические функции и процедуры? Что нужно сделать, чтобы ими воспользоваться?

4. Какие есть графические процедуры вывода текста на экран?

5. С помощью какой процедуры можно поменять цвет рисования линии?

6. Какие параметры нужно задать, чтобы нарисовать прямоугольник?

7. Как перейти из полярной системы координат в декартовую?

Список рекомендуемой литературы

1. Немнюгин, С.А. Turbo Pascal: программирование на языке высокого уровня / С.А. Немнюгин. – 2-е изд. – СПб.: Питер, 2006. – 544с.

2. Немнюгин, С.А. Turbo Pascal: практикум / С.А. Немнюгин. – 2-е изд. – СПб.: Питер, 2006. – 272с.

3. Фаронов, В.В. TurboPascal: учебное пособие / В.В. Фаронов. – М.: Изд.: ОМД Групп, 2007. – 368с.

4. Иванова, Г.С. Основы программирования: учебник для вузов / Г.С. Иванова. – 3-е изд., испр. – М.: МГТУ им. Н.Э. Баумана, 2004. – 416с.

5. Марченко, А.И. Программирование в среде Turbo Pascal 7.0. / А.И. Марченко, Л.А. Марченко. – М.: Бином Универсал, К.: ЮНИОР, 1997. – 496с.

6. Культин, Н.Б. Turbo Pascal в задачах и примерах / Н.Б. Культин. – СПб.: БХВ-Петербург, 2007. – 256с.

7. Коффман, Э.М. Turbo Pascal / Э.М. Коффман. – 5-е изд. – М.: Вильямс, 2005. – 896с.

8. Рапаков Г.Г. Программирование на языке Pascal: учебное пособие / Г.Г. Рапаков, С.Ю. Ржеуцкая – СПб.: БХВ-Петербург, 2004. – 480с.

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.