Графика в PascalABC

Автор работы: Пользователь скрыл имя, 24 Октября 2014 в 02:15, курсовая работа

Краткое описание

В данной курсовой работе рассматривается тема «Графика в PascalАВС». Тема курсовой работы выбрана не случайно, так как графика является довольно интересной областью программирования. Данная курсовая работа показывает, что можно создавать простые рисунки не только в графических программах, таких как Paint, AdobePhotoshop, CorelDraw, но и в среде языка программирования PascalАВС.

Содержание

ВВЕДЕНИЕ 3
ГЛАВА I. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 4
1.1 Краткая история становления языка программирования Pascal. 4
1.2 Основные понятия графики 6
1.3 Основные функции и процедуры работы с графикой в PascalABC 7
ГЛАВА II. СОЗДАНИЕ ГРАФИЧЕСКОГО ПРОЕКТА 13
2.1 Понятие "фрактал" 13
2.2 Реализация треугольника 15
2.3 Построенияфрактала "Дерево" 19
ЗАКЛЮЧЕНИЕ 21
СПИСОК ЛИТЕРАТУРЫ 22

Вложенные файлы: 1 файл

курсовая.docx

— 488.19 Кб (Скачать файл)

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

 

УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ «ВИТЕБСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ П.М. МАШЕРОВА»

 

 

Факультет математический _

 

Кафедра информатики и информационных технологий_

 

 

 

КУРСОВАЯ РАБОТА

 

по дисциплине Технология программирования и методы алгоритмизации

 

 

Графика в PascalABC

 

 

 

 

 

Кралько Виктория Анатольевна,

(фамилия, имя, отчество  студента (слушателя)

 

3 курс, 33 группа 

(курс, группа)

 

Руководитель:

 

Кузьмичёв Денис Романович,

(фамилия, имя, отчество)

 

Преподаватель кафедры

информатики и ИТ

(должность, ученая степень, звание)

 

 

 

 

 

 

 

 

 

 

Витебск, 2013

 

СОДЕРЖАНИЕ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ВВЕДЕНИЕ

В данной курсовой работе рассматривается тема «Графика в PascalАВС». Тема курсовой работы выбрана не случайно, так как графика является довольно интересной областью программирования. Данная курсовая работа показывает, что можно создавать простые рисунки не только в графических программах, таких как Paint, Adobe Photoshop, Corel Draw, но и в среде языка программирования PascalАВС.

Целью курсовой работы является разработка графического проекта в среде программирования PascalАВС. Графические возможности PascalАВС будут реализованы на примере изображения фрактального дерева.

Задачи: 
1)Познакомиться с историей становления языка программирования PascalАВС.

2)Изучить основные понятия  графики, функции и процедуры  работы с графикой PascalАВС.

3) Освоить навыки создания графических изображений в среде программирования PascalАВС

4)Создать графическое  изображение в среде программирования PascalАВС

с использованием фракталов.

Курсовая  работа состоит из двух основных разделов:

    1. Аналитическая часть;
    2. Создание графического проекта.

В первом разделе описывается история  языка PascalАВС, основные понятия графики, работа с графикой в PascalАВС, основные команды построения изображения, графические модули, дается основная структура программы. Во  втором разделе описываются  этапы создания фрактального дерева, дается краткое  изложение основных элементов рисунка. 

Текст созданной программы прикладываются в данной курсовой работе в разделе «Приложение».

 

ГЛАВА I. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

 
1.1 Краткая история становления языка программирования Pascal.

Pascal ABC разработан в 2002 году сотрудниками факультета математики, механики и компьютерных наук Южного федерального университета (Ростов-на-Дону, Россия) во главе с С.С. Михалковичем. Целью авторов было создание обучающей среды программирования, более современной, чем Borland Pascal и Turbo Pascal, более простой для изучения, чем Borland Delphi, но в то же время близкой к стандартным компиляторам языка.

Система Pascal ABC основана на языке Delphi Pascal и призвана осуществить постепенный переход от простейших программ к модульному, объектно-ориентированному, событийному и компонентному программированию. Некоторые языковые конструкции в Pascal ABC допускают, наряду с основным, упрощенное использование, что позволяет использовать их на ранних этапах обучения. Например, в модулях может отсутствовать разделение на секцию интерфейса и секцию реализации. В этом случае модули устроены практически так же, как и основная программа, что позволяет приступить к их изучению параллельно с темой "Процедуры и функции". Тела методов можно определять непосредственно внутри классов (в стиле Java и C#), что позволяет создавать классы практически сразу после изучения записей, процедур и функций.

Ряд модулей системы программирования Pascal ABC специально создавался для учебных целей:

  • Модуль растровой графики GraphABC обходится без объектов, хотя его возможности практически совпадают с графическими возможностями Borland Delphi. Он доступен в несобытийных программах и позволяет легко создавать анимацию без мерцания.
  • Модуль Events позволяет создавать простейшие событийные программы без использования объектов (события представляют собой обычные процедурные переменные).
  • Модули Timers и Sounds позволяют создавать таймеры и звуки, которые также реализованы в процедурном стиле. Эти модули можно использовать даже в консольных программах.
  • Модуль контейнерных классов Containers позволяет работать с основными структурами данных (динамические массивы, стеки, очереди, множества), реализованными в виде классов.
  • Модуль векторной графики ABCObjects предназначен для быстрого изучения основ объектно-ориентированного программирования, а также позволяет создавать достаточно сложные игровые и обучающие программы.
  • Модуль визуальных компонентов VCL позволяет создавать событийные приложения с главной формой в стиле Delphi. Классы VCL немного упрощены по сравнению с аналогичными классами Delphi. Имеется редактор форм и инспектор объектов. Технология восстановления формы по коду программы позволяет обойтись для приложения с главной формой одним файлом (!).

В языке Pascal ABC имеются арифметические операции с типизированными указателями (в стиле языка C), а также тип complex, предназначенный для работы с комплексными числами.

Компилятор Pascal ABC является компилятором переднего плана (front-end). Это означает, что он не генерирует исполняемый код в виде .exe-файла, а создает в результате компиляции дерево программы в памяти, которое затем выполняется с помощью встроенного интерпретатора. В итоге скорость работы программы примерно в 20 раз медленнее скорости работы этой же программы, откомпилированной в среде Borland Pascal, и в 50 раз медленнее этой программы, откомпилированной в среде Borland Delphi.

В системе Pascal ABC ученик может выполнять так называемые проверяемые задания, обеспечивающие постановку задачи со случайными исходными данными, контроль операций ввода-вывода, проверку правильности решения, а также ведение протокола решения задач.

 

 

 

 

 

 

 

 

1.2 Основные понятия графики

Экраны цветных мониторов состоят из прямоугольной решётки точек(пикселей),светящихся разным цветом. Каждый цветной пиксель образован тремя более мелкими по площади участками красного, зелёного и синего цветов. При свечении этих участков с разной интенсивностью цвета смешиваются, создавая элементы изображения различных оттенков и яркости. 
Важной характеристикой растра является его расширение. Расширение экрана-это количество точек(пикселей) на единицу длины. Чем это число выше, тем более мелкими являются сами пиксели, и, соответственно, более плотно они располагаются на плоскости, что и приводит к тому, что мы воспринимаем их как единое, цельное изображение. Из года в год разрешающая способность принтеров, мониторов, сканеров и .т.п. растёт. 
Для использования графических возможностей языка Паскаль необходимо в блоке описания uses подключить графический модуль Graph .Модуль содержит набор графических функций и процедур, основные из них которые рассмотрены ниже. 
Положение каждой точки изображения задано координатами Х и У. Координаты- целые числа, они задают номера колонки и строки и не зависят от физического размера экрана. Оси координат направлены следующим образом: горизонтальная ось Х направлена слева направо; вертикальная ось У направлена сверху вниз; верхний левый угол имеет координаты(0, 0). 
Рисунок 1.1

Очевидно, что запись изображения требует хранения информации о положении множества точек, для каждой из которых должен быть задан цвет. Цветное изображение получается смешиванием трех основных цветов – красного, зеленого и синего. Такая модель представления цвета называется моделью RGB ( Red - Green - Blue ). Управляя интенсивностью компонентов, можно получить различные оттенки и степени интенсивности цвета. В частности, для получения градаций серого надо взять интенсивности трех основных цветов равными друг другу.Стандартный  модуль  GraphABC  системы  PascalABC  содержит  типы, константы, переменные, процедуры и функции, позволяющие создавать изображения в специальнографическом окне.  
1.3 Основные функции и процедуры работы с графикой в PascalABC

Для рисования в Pascal ABC необходимо запустить специальный модуль GraphABC, использование специальных функций и процедур помогут нарисовать точку, отрезок, окружность, прямоугольник и другие фигуры:   
SetPixel(x,y,color) - Закрашивает один пиксел с координатами (x,y) цветом color  
LineTo(x,y) - рисует отрезок от текущего положения пера до точки (x,y); координаты пера при этом также становятся равными (x,y).  
Line(x1,y1,x2,y2) - рисует отрезок с началом в точке (x1,y1) и концом в точке (x2,y2).  
SetPenColor(color) - устанавливает цвет пера, задаваемый параметром color. 
SetPenWidth(n) - устанавливает ширину (толщину) пера, равную n пикселям.  
Rectangle(x1,y1,x2,y2) - рисует прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2).  
FloodFill(x,y,color) - заливает область одного цвета цветом color, начиная с точки (x,y).  
SetBrushColor(color) - устанавливает цвет кисти. Заливка кистью распространяется на замкнутый контур, описание которого следует за процедурой установки цвета кисти. 
Ellipse(x1,y1,x2,y2) - рисует эллипс, заданный своим описанным прямоугольником с координатами противоположных вершин (x1,y1) и (x2,y2). 
Circle(x,y,r) - рисует окружность с центром в точке (x,y) и радиусом r.  
Arc(x,y,r,a1,a2) - Рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки). 

Цвета в PascalABC:

clBlack  черный  
clPurple  фиолетовый  
clWhite белый  
clMaroon  темно-красный  
clRed  красный  
clNavy  темно-синий  
clGreen  зеленый  
clBrown  коричневый  
clBlue синий  
clSkyBlue  голубой  
clYellow  желтый  
clCream  кремовый  
clAqua  бирюзовый  
clOlive  оливковый  
clFuchsia  сиреневый  
clTeal  сине-зеленый  
clGray  темно-серый  
clLime  ярко-зеленый  
clMoneyGreen  цвет зеленых денег  
clLtGray  светло-серый  
clDkGray темно-серый 
clMedGray  серый 
clSilver серебряный 
Функции для работы с цветом:

Тип цвета Color является синонимом System.Drawing.Color.

function RGB(r,g,b: byte): Color; Возвращает цвет, который содержит красную (r), зеленую (g) и синюю (b) составляющие (r,g и b - в диапазоне от 0 до 255)

function ARGB(a,r,g,b: byte): Color; Возвращает цвет, который содержит красную (r), зеленую (g) и синюю (b) составляющие и прозрачность (a) (a,r,g,b - в диапазоне от 0 до 255)

function RedColor(r: byte): Color; Возвращает красный цвет с интенсивностью r (r - в диапазоне от 0 до 255)

function GreenColor(g: byte): Color; Возвращает зеленый цвет с интенсивностью g (g - в диапазоне от 0 до 255)

function BlueColor(b: byte): Color; Возвращает синий цвет с интенсивностью b (b - в диапазоне от 0 до 255)

function clRandom: Color; Возвращает случайный цвет

function GetRed(c: Color): integer;Возвращает красную составляющую цвета

function GetGreen(c: Color): integer; Возвращает зеленую составляющую цвета

function GetBlue(c: Color): integer; Возвращает синюю составляющую цвета.

Свойства:

property Width: integer;Ширина рисунка.

property Height: integer; Высота рисунка.

property Transparent: boolean; Прозрачность рисунка. Если Transparent=True, то при выводе рисунка его фон не отображается. Фоновым считается цвет левого нижнего пиксела рисунка.

property NeedDestroy: boolean;  Определяет, должен ли рисунок разрушаться при вызове деструктора и метода Load. NeedDestroy обычно устанавливается в False, если несколько объектов классаPicture разделяют один рисунок.

Методы:

procedure Load(fname: string);

Загружает рисунок из файла с именем fname. Если NeedDestroy установлено в True, то рисунок, находившийся ранее в объекте Picture, разрушается. Рисунок с именем fname ищется вначале в текущем каталоге, а затем в подкаталоге Media\Images\ каталога программы PascalABC.exe.

procedure Save(fname: string);

Сохраняет рисунок в файле с именем fname. Формат рисунка устанавливается расширением имени файла. Допустимые расширения: .bmp, .gif, .jpg, .png.

function Handle: integer;

Возвращает описатель рисунка.

procedure Draw(x,y: integer);

Выводит рисунок в позицию (x,y) графического окна.

procedure Draw(x,y,w,h: integer);

Выводит рисунок в позицию (x,y) графического окна, масштабируя его к размеру (w,h). Если w<0 или h<0, то выводится зеркальное отражение рисунка относительно вертикалоной или горизонтальной оси соответственно.

procedure Draw(x,y: integer; r: Rect);

Выводит часть рисунка, заключенную в прямоугольнике r, в позицию (x,y) графического окна.

procedure Draw(x,y,w,h: integer; src: Rect);

Выводит часть рисунка, заключенную в прямоугольнике r, в позицию (x,y) графического окна, масштабируя ее к размеру (w,h).

procedure CopyRect(dest: Rect; p: Picture; src: Rect);

Копирует в прямоугольник dest текущего рисунка часть рисунка p, заключенную в прямоугольнике src.

procedure FlipHorizontal;

Зеркально отображает картинку относительно горизонтальной оси симметрии.

procedure FlipVertical;Зеркально отображает картинку относительно вертикальной оси симметрии.

Рисование графических объектов

Рисование графических объектов осуществляется пером и кистью. Линии,

ограничивающие объекты, рисуются пером.

Информация о работе Графика в PascalABC