русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Статические и динамические объекты


Дата добавления: 2014-09-29; просмотров: 2353; Нарушение авторских прав


 

Цель лабораторной работы: изучение структуры, свойств и видов объектов; изучение способов доступа к полям и правил вызова методов объектов; получение навыков объектно-ориентированного программирования на языке Турбо Паскаль.

 

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

- с использованием статического объекта;

- с использованием динамического объекта.

 

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

 

1) Получить у преподавателя индивидуальное задание.

2) Разработать иерархию и структуру объектов, связанных на принципах наследования, в соответствии с индивидуальным заданием. Дерево наследования должно содержать не менее трех уровней.

3) Описать типы объектов и методы обработки их полей.

4) Составить спецификации необходимых подпрограмм.

5) Составить две программы на языке Турбо Паскаль, реализующие движение графического объекта по заданной траектории: в виде динамического объекта и в виде статического объекта описанного типа.

6) Проверить и продемонстрировать преподавателю работу программы.

7) Оформить отчет о лабораторной работе в составе: постановка задачи, спецификация подпрограмм, тексты программ, контрольные примеры.

 


Варианты индивидуальных заданий

Движение закрашенного прямоугольника по прямоугольному контуру.

 

Движение окружности по окружности.

 

Движение закрашенного квадрата по окружности.

 

Движение треугольника по треугольному контуру.

 

Движение закрашенного эллипса по эллиптическому контуру.

 

Движение закрашенного прямоугольника по треугольному контуру с изменением цвета при изменении направления движения.



 

Движение закрашенного треугольника по эллиптическому контуру.

 

Движение закрашенного полукруга по полуокружности.

 

Движение закрашенного круга по кромке экрана с изменением цвета при изменении направления движения.

 

Движение закрашенного полукруга по кромке экрана с поворотом на 90 градусов в углах экрана.

 

Движение отрезка линии в центре экрана по вертикали сверху вниз и обратно с изменением цвета.

 

Движение отрезка линии по диагонали экрана из левого нижнего угла в правый верхний угол и обратно с изменением цвета.

 

Движение закрашенного прямоугольника по синусоиде по середине экрана.

Движение закрашенного треугольника в центре экрана по синусоиде сверху вниз.

 

Движение закрашенного круга по синусоиде из левого нижнего угла экрана в правый верхний угол.

 

Движение закрашенного квадрата по синусоиде из левого верхнего угла экрана в правый нижний угол с изменением цвета.

 

Движение креста из двух отрезков линии по синусоиде по середине экрана слева направо и обратно.

 

Движение цветного сектора по синусоиде по середине экрана справа налево и обратно.

 

Движение треугольника по синусоиде по середине экрана справа налево и обратно.

 

Движение окружности по треугольному контуру с изменением цвета при изменении направления движения.

 

Движение закрашенного прямоугольника по полуокружности.

 

Движение закрашенного полукруга по треугольному контуру.

 

Движение окружности по синусоиде по середине экрана справа налево и обратно.

 

Движение закрашенного круга по треугольному контуру.

 


Примеры программ

 

{Демонстрация работы с объектами.

Движение полуокружности заданного цвета по часовой стрелке

по эллиптической траектории. Динамическое выделение памяти.}

Program Din_Obj;

Uses Graph,Crt;

Type

TLocation=Object {"Место"}

x,y:Integer; {Поля данных: координаты местоположения}

Constructor Init(initx,inity:Integer);{Метод "конструктор"}

Destructor Done; {Метод "деструктор"}

End;

TPoint=Object(TLocation) {"Точка". Наследник объекта "место"}

visible:Boolean; {Поле данного: светимость}

Procedure Show(color:Byte);Virtual;{Метод "рисование"}

Procedure Hide;Virtual; {Метод "гашение"}

Procedure MoveTo(newx,newy:Integer;color:Byte);Virtual;{Метод

"перемещение"}

End;

TPolyCirc=Object(TPoint) {"Полуокр". Наследник объекта "точка"}

radius:Integer; {Поле данного: радиус полуокружности}

Constructor Init(initx,inity,initradius:Integer);{Метод

"конструктор"}

Procedure Show(color:Byte); Virtual; {Метод "рисование"}

Procedure Hide; Virtual; {Метод "гашение"}

End;

TGraph=Object {"Графика"}

grdriver:Integer; {Поле данного: драйвер}

grmode:Integer; {Поле данного: мода}

Procedure Init(gb,gm:Integer;path:String);{Метод

"инициализация"}

Procedure Fin; {Метод "закрытие графики"}

End;

TPPolyCirc=^TPolyCirc;

 

{Описание методов объекта "место"}

Constructor TLocation.Init(initx,inity:Integer);

Begin

x:=initx; {текущие координаты}

y:=inity;

End;

 

Destructor TLocation.Done;

Begin

WriteLn;

End;

 

{Описание методов объекта "точка"}

Procedure TPoint.Show(color:Byte);

Begin

visible:=True; {Светимость}

PutPixel(x,y,color); {Рисование точки}

End;

 

Procedure TPoint.Hide;

 

Begin

visible:=False; {Светимость}

PutPixel(x,y,GetBkColor); {Гашение}

End;

 

Procedure TPoint.MoveTo(newx,newy:Integer;color:Byte);

Begin

Hide; {Гашение}

x:=newx; {Новые координаты}

y:=newy;

Show(color); {Рисование}

End;

 

{Описание методов объекта "графика"}

Procedure TGraph.Init(gb,gm:Integer;path:String);

Begin

grdriver:=gb; {Номера драйверов}

grmode:=gm;

IniTGraph(grdriver,grmode,path);

End;

 

Procedure TGraph.Fin;

Begin

CloseGraph;

End;

 

{Описание методов объекта "полуокружность"}

Constructor TPolyCirc.Init(initx,inity,initradius:Integer);

Begin

TPoint.Init(initx,inity);

radius:=InitRadius;

End;

 

Procedure TPolyCirc.Show(color:Byte);

Begin

SetColor(Color); {Текущий цвет}

visible:=True; {Светимость}

Arc(x,y,0,180,radius); {Рисование}

Line(x-radius,y,x+radius,y);

End;

 

Procedure TPolyCirc.Hide;

Begin

SetColor(GetBkColor); {Текущий цвет - это цвет фона}

visible:=False; {Светимость}

Arc(x,y,0,180,radius); {Гашение полуокружности}

Line(x-radius,y,x+radius,y);

SetColor(GetColor); {Текущий цвет}

End;

Var

ppc:TPPolyCirc;

world:TGraph;

x,y,rad,r:Integer;

alf:Real;

col:Byte;

 

Begin

ClrScr;

WriteLn(' Движение полуокружности заданного радиуса со смещением');

WriteLn(' центра по часовой стрелке по эллиптической траектории.');

WriteLn(' Прекращение движения - нажатие ENTER');

Write(' Введите радиус полуокружности->');

ReadLn(r);

Write(' Введите цвет рисования полуокружности (от 1 до 15)->');

ReadLn(col);

Write('Нажмите ENTER->');

ReadLn;

World.Init(Detect,Detect,'C:\TP\BGI');

Delay(10000);

alf:=0;

rad:=GetMaxY Div 2 - 100; {малый радиус траектории движения центра}

x:=Round((GetMaxX - rad + r) Div 2 + 1.5 * r * Sin(alf));

y:=Round((GetMaxY + r) Div 2 - rad * Cos(alf));

New(ppc,Init(x,y,r));

ppc^.Show(col);

Delay(10000);

Repeat

Delay(100);

alf:=alf + 2 * PI / 360;

x:=Round((GetMaxX - rad + r) Div 2 + 1.5 * r * Sin(alf));

y:=Round((GetMaxY + r) Div 2 - rad * Cos(alf));

ppc^.MoveTo(x,y,col);

Until KeyPressed;

Dispose(ppc,Done);

World.Fin;

End.

 


{Демонстрация работы с объектами.

Движение полуокружности заданного цвета по часовой стрелке

по эллиптической траектории. Статическое выделение памяти.}

Program Din_Obj;

Uses Graph,Crt;

Type

TLocation=Object {"Место"}

x,y:Integer; {Поля данных: координаты местоположения}

Constructor Init(initx,inity:Integer);{Метод "конструктор"}

Destructor Done; {Метод "деструктор"}

End;

TPoint=Object(TLocation) {"Точка". Наследник объекта "место"}

visible:Boolean; {Поле данного: светимость}

Procedure Show(color:Byte);Virtual;{Метод "рисование"}

Procedure Hide;Virtual; {Метод "гашение"}

Procedure MoveTo(newx,newy:Integer;color:Byte);Virtual;{Метод

"перемещение"}

End;

TPolyCirc=Object(TPoint) {"Полуокр". Наследник объекта "точка"}

radius:Integer; {Поле данного: радиус полуокружности}

Constructor Init(initx,inity,initradius:Integer);{Метод

"конструктор"}

Procedure Show(color:Byte); Virtual; {Метод "рисование"}

Procedure Hide; Virtual; {Метод "гашение"}

End;

TGraph=Object {"Графика"}

grdriver:Integer; {Поле данного: драйвер}

grmode:Integer; {Поле данного: мода}

Procedure Init(gb,gm:Integer;path:String);{Метод

"инициализация"}

Procedure Fin; {Метод "закрытие графики"}

End;

 

{Описание методов объекта "место"}

Constructor TLocation.Init(initx,inity:Integer);

Begin

x:=initx; {текущие координаты}

y:=inity;

End;

 

Destructor TLocation.Done;

Begin

WriteLn;

End;

 

{Описание методов объекта "точка"}

Procedure TPoint.Show(color:Byte);

Begin

visible:=True; {Светимость}

PutPixel(x,y,color); {Рисование точки}

End;

 

 

Procedure TPoint.Hide;

Begin

visible:=False; {Светимость}

PutPixel(x,y,GetBkColor); {Гашение}

End;

 

Procedure TPoint.MoveTo(newx,newy:Integer;color:Byte);

Begin

Hide; {Гашение}

x:=newx; {Новые координаты}

y:=newy;

Show(color); {Рисование}

End;

 

{Описание методов объекта "графика"}

Procedure TGraph.Init(gb,gm:Integer;path:String);

Begin

grdriver:=gb; {Номера драйверов}

grmode:=gm;

IniTGraph(grdriver,grmode,path);

End;

 

Procedure TGraph.Fin;

Begin

CloseGraph;

End;

 

{Описание методов объекта "полуокружность"}

Constructor TPolyCirc.Init(initx,inity,initradius:Integer);

Begin

TPoint.Init(initx,inity);

radius:=InitRadius;

End;

 

Procedure TPolyCirc.Show(color:Byte);

Begin

SetColor(Color); {Текущий цвет}

visible:=True; {Светимость}

Arc(x,y,0,180,radius); {Рисование}

Line(x-radius,y,x+radius,y);

End;

 

Procedure TPolyCirc.Hide;

Begin

SetColor(GetBkColor); {Текущий цвет - это цвет фона}

visible:=False; {Светимость}

Arc(x,y,0,180,radius); {Гашение полуокружности}

Line(x-radius,y,x+radius,y);

SetColor(GetColor); {Текущий цвет}

End;

 

Var

ppc:TPolyCirc;

world:TGraph;

x,y,rad,r:Integer;

alf:Real;

col:Byte;

 

Begin

ClrScr;

WriteLn(' Движение полуокружности произвольного радиуса со смещением');

WriteLn(' её центра по часовой стрелке по эллиптической траектории.');

WriteLn(' Прекращение движения - нажатие ENTER');

Write(' Введите радиус полуокружности->');

ReadLn(r);

Write(' Введите цвет рисования полуокружности (от 1 до 15)->');

ReadLn(col);

Write('Нажмите ENTER->');

ReadLn;

World.Init(Detect,Detect,'C:\TP\BGI');

Delay(10000);

alf:=0;

rad:=GetMaxY Div 2 - 100; {малый радиус траектории движения центра}

x:=Round((GetMaxX - rad + r) Div 2 + 1.5 * r * Sin(alf));

y:=Round((GetMaxY + r) Div 2 - rad * Cos(alf));

ppc.Init(x,y,r);

ppc.Show(col);

Delay(10000);

Repeat

Delay(100);

alf:=alf + 2 * PI / 360;

x:=Round((GetMaxX - rad + r) Div 2 + 1.5 * r * Sin(alf));

y:=Round((GetMaxY + r) Div 2 - rad * Cos(alf));

ppc.MoveTo(x,y,col);

Until KeyPressed;

World.Fin;

End.

 


Основная литература

 

1 Минакова Н.И. и др. Методы программирования. Учебное пособие. М.: Вузовская книга. 1999. - 280с.

2 Марченко А.И., Марченко Л.М. Программирование в среде Turbo Pascal 7.0. Киев: ВЕК, М.: ДЕСС, 2000. – 496c.

3 Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. М.: Нолидж, 2000. - 616с.

4 Бариков Л.Н. Программирование. Программирование на языках высокого уровня. Учебное пособие. СПб.: ГУАП, 2013. – 125с.

5 Бондарев В.М., Рублинецкий В.И., Качко Е.Г. Основы программирования. Харьков: Фолио, 1997. – 368с.

6 Программирование на языке Паскаль. Задачник / Под ред. Усковой О.Ф. СПб.: Питер, 2002. – 336с.

7 ГОСТ 19.701-90 ЕСПД Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения.

8 ГОСТ 7.32-2001 Система стандартов по информации, библиотечному и издательскому делу. Отчет по научно-исследовательской работе. Структура и правила оформления

 

Дополнительная литература

1 Крук Е.А., Овчинников А.А. Методы программирования и прикладные алгоритмы. Учебное пособие. - СПб.: ГУАП, 2007. - 165с.

2 Delphi 2006: справочное пособие/ А. Я. Архангельский. - М.: Бином, 2006. - 1152 с.

3 Кормен Т. [и др.] Алгоритмы: построение и анализ. - М.: Вильямс, 2005. - 1290 с.

 



<== предыдущая лекция | следующая лекция ==>
Динамические структуры данных: стек, дек, очередь | Методы проецирования


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.327 сек.