Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование. Модуль GRAPH. Модульное и объектное программирование. Учебно-методическое пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
841 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ АМУРСКИЙ ГУМАНИТАРНО-ПЕДАГОГИЧЕСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ПРОГРАММИРОВАНИЕ.

Модуль GRAPH. Модульное и объектное программирование

Учебно-методическое пособие

Комсомольск-на-Амуре Издательство АмГПГУ

2009

2

УДК 372.851 ББК 74.262

Ж

Рецензенты:

Тачалов А.Н., к.т.н., доцент кафедры информатики ФГОУ ВПО АмГПГУ;

Кангин В.В., д.т.н., профессор кафедры автоматизации производства ГОУ ВПО АПИ НГУ

ПРОГРАММИРОВАНИЕ. Модуль GRAPH. Модульное и объектное программирование: учебно-методическое

Ж пособие /сост. Г.П. Жиганова. – Комсомольск-на-Амуре: Изд-во АмГПГУ, 2009. – 93 с.

ISBN 978-5-85094-370-7

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

Учебно-методическое пособие предназначено для студентов факультета информационных технологий, математики и физики, изучающих курс «Программирование». Пособие может быть также использовано для самостоятельного изучения языка программирования

Pascal.

УДК 372.851 ББК 74.262.

ISBN 978-5-85094-370-7

© Жиганова Г.П., 2009

 

© Издательство АмГПГУ, 2009

 

3

 

 

Оглавление

 

 

Предисловие ................................................................................

4

1.

Библиотечный модуль Graph ......................................................

5

1.1.

Характеристика графических режимов работы адаптера ........

5

1.2.

Основные процедуры и функции графического модуля ...........

5

1.3.

Изображение линий и точек .........................................................

8

1.4.

Изображение многоугольников ...................................................

9

1.5.

Изображение дуг, окружностей, эллипсов .................................

11

1.6.

Краски, палитры, заполнения ......................................................

13

1.7.

Вывод текста ..................................................................................

26

1.8.

Координаты, окна, страницы........................................................

31

1.9.

Сохранение и выдача изображений.............................................

36

2.

Пользовательские модули ............................................................

39

2.1.

Структура модулей........................................................................

39

2.2.

Интерфейсная часть модуля .........................................................

40

2.3.

Исполняемая часть модуля...........................................................

40

2.4.

Инициирующая часть модуля ......................................................

41

2.5.

Компиляция и подключение модулей .........................................

41

3.

Объектно-ориентированное программирование........................

43

3.1.

Основные принципы ООП............................................................

44

3.2.

Создание объектов.........................................................................

46

3.3.

Наследование, правила наследования .........................................

50

3.4.

Виртуальные и динамические методы ........................................

54

3.5.

Отличие виртуальных и динамических методов .......................

58

3.6.

Деструкторы...................................................................................

59

 

Расчетно-графическое задание.....................................................

64

 

Примерный перечень тем курсовых работ .................................

91

 

Библиографический список..........................................................

92

4

ПРЕДИСЛОВИЕ

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

Изначально язык Pascal был создан для обучения процедурному программированию, но начиная с версии 5.5 фирма Borland ввела объектное расширение, что позволило применять объектноориентированную методологию проектирования программ. Использование объектно-ориентированной технологии разработки программ позволяет повысить качество разработок и сократить время.

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

Учебно-методическое пособие предназначено для студентов 1-2 курса специальностей 050201 «Математика» с дополнительной специальностью «Информатика», 050202 «Информатика», 050203 «Физика» с дополнительной специальностью «Информатика», изучающих дисциплину «Программирование», а также может быть использовано для самостоятельного изучения модульного и объектно-ориентированного программирования.

5

1. БИБЛИОТЕЧНЫЙ МОДУЛЬ GRAF

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

1.1. Характеристика графических режимов работы адаптера

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

Драйвер –это специальная программа, осуществляющая управление теми или иными техническими средствами ПК. Графический драйвер управляет дисплейным адаптером в графическом режиме. Графические драйверы разработаны фирмой Borland практически для всех типов адаптеров. Обычно они располагаются на диске в определенном подкаталоге BGI в виде файлов с расширением BGI . Например, CGA. BGI

– драйвер для CGA адаптера, EGAVGA. BGI – драйвер для адаптеров EGA и VGA и т.д.

Выпускаемые в настоящее время ПК оснащаются адаптерами, разработанными фирмой IBM или совместимыми с ним. Все они имеют возможность работы в графическом режиме. В этом режиме экран дисплея рассматривается как совокупность очень близко расположенных точекпиксел, совместимостью которых можно управлять с помощью программы. Графические возможности конкретного адаптера определяются разрешением экрана (количеством пиксел и количеством цветов, которыми может светиться каждая пиксела) и количеством графических страниц.

У нас используются адаптеры (так называемые SVGA) с разрешением 800х600, использующие 256 цветовых оттенков. Но в библиотеке Graf для них нет драйвера. Поскольку SVGA совместимы с VGA, для управления современными графическими адаптерами приходится использовать драйвер EGAVGA.BGI и довольствоваться его скромными возможностями.

1.2. Основные процедуры и функции графического модуля

Процедура InitGraf.

Инициирует графический режим видеоадаптера.

Заголовок процедуры: Procedure InitGraf (var GrDriver, GrMode Integer; Path: String);

6

Здесь, GrDriver – переменная типа Integer, определяет типизированная графического драйвера;

GrMode – переменная того же типа, задающая режим работы графического адаптера;

Path – выражение типа String, содержащее имя файла драйвера и, возможно, маршрут его поиска.

Тип драйвера должен соответствовать типу графического адаптера. Для указания типа драйвера в модуле предусмотрены следующие константы:

Const

Detect =0; {режим автоопределения типа}

CGA=1;

MCGA=2;

EGA=3;

EGA64=4;

EGAMono=5;

IBM8514=6;

HercMono=7;

ATT400=8;

VGA=9;

PC3270=10;

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

Например,

{Адаптер EGA:}

EGA Lo=0;

(640х200, 16 цветов)

EGA Hi=1;

(640х350, 16 цветов)

EGAMonoHi=3; (640х350, 2 цвета) {Адаптер VGA:}

VGA Lo=0;

(640х200)

VGA Med=1;

(640х350)

VGAHi=2;

(640х480)

{Адаптер IBM8514:} IBM8514Lo=0; (640x480, 256 цветов) IBM8514Hi=1; (1024x768, 256 цветов)

На наших машинах обращение к процедуре имеет вид:

Program DemoGraph; Uses

Graph;

Var

GrDriver:= 9;

GrMode:= 1;

7

InitGraph (GrDriver, GrMode, ‘C: \Bp\BGI’);

. . . . . . . . . . . . . . . . . . .

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

Driver: =Detect;

InitGraph (GrDriver, GrMode, ‘C: \Bp\BGI’ );

После такого обращения устанавливается графический режим работы экрана, а переменные GrDriver и GrMode содержат целочисленные значения, определяющие тип драйвера и режим его работы.

При этом для адаптеров, способных работать в нескольких режимах, выбирается старший режим, т.е. тот, что закодирован максимальной цифрой. Так, в нашем случае выберется режим с разрешением 640х480.

Чаще всего причиной возникновения ошибки при обращении к процедуре InitGraph является неправильное указание местоположения файла с драйвером графического адаптера. В цепочке вызова необходимо указать точное местоположение EGA VGA.B6I.

Процедура CloseGraph

Завершает работу адаптера в графическом режиме и восстанавливает текстовый режим работы экрана.

При использовании графического модуля наиболее часто используют конструкции:

Program…;

Uses

Graph,Crt;

Var

GrDriver, GrMode: integer;

Begin

Driver:= Detect;

InitGraph (GrDriver, GrMode, ‘C: \Bp\BGI’);

. . . . .

. . . . . тело программы

Delay (5000);

CloseGraph;

End.

Здесь используется Delay, поскольку процедура CloseGraph не только закрывает работу адаптера, но и стирает изображение на экране монитора.

8

1.3. Изображение линий и точек

Процедура PutPixel

Выводит заданным цветом точку по указанным координатам.

Заголовок: Procedure PutPixel (X, Y: Integer: Color: word);

Здесь, X, Y – координаты точки; Color – цвет точки.

Координаты задаются относительно левого верхнего угла экрана, либо текущего окна.

Процедура Line

Вычерчивает линию с указанными координатами начала и конца.

Заголовок: Procedure Line (X1,Y1,X2,Y2: Integer);

Здесь, X1 и Y1 – координаты начала, X2 и Y2 – координаты конца линии. Линия вычерчивается текущим стилем и текущим цветом.

Процедура LineTo

Вычерчивает линию от текущего положения указателя до положения, заданного его новыми координатами.

Заголовок: Procedure LineTo (X, Y: Integer);

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

Процедура LineRel

Вычерчивает линию от текущего положения указателя до положения, заданного приращениями его координат

Заголовок: Procedure LineRel (Dx, Dy: Integer);

Здесь, Dx и Dy – приращение координат нового положения указателя.

Впроцедурах LineTo и LineRel линия вычерчивается текущим стилем

итекущим цветом.

Процедура SetLineStyle

Устанавливает новый стиль вычерчиваемых линий Заголовок: Procedure SetLineStyle (Type, Pattern, thick:Word);

Здесь, Type, Pattern, thick –соответственно тип, образец и толщина линии.

Тип линии может быть задан с помощью одной из следующих констант:

const

SolidLn =0; (сплошная линия) DottedLn =1; (точечная линия)

CenterLn =2; (штрих пунктирная линия)

9

DashedLn=3; (пунктирная линия)

UsesBitLn=4; (узор линии определяется пользователем)

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

Таким образом, параметр PATTERN устанавливает отрезок линии длиной в 16 пиксел. Этот образец периодически повторяется по всей длине линии.

Параметр THICK может принимать одно из двух значений:

const

NormWidth =1; (толщина в один пиксел) ThickWidth =3; (толщина в три пиксела)

Для выбора типа линии удобно использовать программу:

Program DemoPattern; Uses

CRT, Graph:

Var

GrDriver, GpMode, i, j: Integer;

Begin

GrDriver: Detect;

InitGraph (GrDriver, GrMode, ‘C :\Bp\ BGI’);

Line (0, 0, 350, 0); For i: =1 To 465 Do

Begin

SetLineStyle (4, i, 1); j: =j+3;

Line (0, j, 350, j);

End;

Delay (10000); CloseGraph;

End.

1.4. Изображение многоугольников

Процедура Rectangle

Вычерчивает прямоугольник с указанными координатами углов.

Заголовок: Procedure Rectangle (X1, Y1, X2, Y2: integer);

Здесь, X1 и Y1 – координаты левого верхнего угла прямоугольника; X2 и Y2 – координаты нижнего правого угла прямоугольника.

10

Прямоугольник вычерчивается с использованием текущего цвета и текущего стиля линий.

Процедура DrawPoly

Вычерчивает произвольную ломаную линию, заданную координатами точек излома.

Заголовок: Procedure DrawPoly (N: Word, Var Points);

Здесь, N – количество точек излома, включая обе крайние точки; Points – переменная типа PointType, содержащая координаты точек излома.

Координаты точек излома задаются парой значений типа Word: первое значение определяет горизонтальную координату, второе значение

– вертикальную.

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

Пример: Изобразить в центре экрана пятиконечную звезду. Координаты точек излома и направление построения звезды имеют вид:

(300, 70)

(150,150)

(450,150)

(200,300) (400,300)

Program DemoDrawPoly: Uses

CRT, Graph;

Type

Cs =Array [1..6, 1..2] of Integer;

Const

ass:Cs = ((300, 70), (200, 300), (450, 150), (150, 150), (400,300), (300, 70));

Var

GrDriver, GrMode, x: Integer;

Begin

GrDriver: =Detect;

InitGraph (GrDriver, GrMode, 'C: \Bp\BGI');

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]