Файл: Актуальность На сегодняшний день графика имеет не маловажное значение для языков программирования Она разрешает визуализировать все возможные программы, что придаёт яркость и удобство использования Так как живём в трехмерном мире,.docx

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 23.11.2023

Просмотров: 105

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Содержание
Введение

§1Понятие модулей и принципы их использования

§2Описание алгоритма работы программы

§3Работа с графическим модулем средствами Pascal ABCNet

Заключение

Список литературы

Приложение

Введение

Актуальность На сегодняшний день графика имеет не маловажное значение для языков программирования Она разрешает визуализировать все возможные программы, что придаёт яркость и удобство использования Так как живём в трехмерном мире, то создание графических приложений в языках программирования не в состоянии оставить данную тему в стороне
Целью курсовой работы является использования графического модуля в среде программировании PascalАВСNet

Для достижения поставленной цели решить ряд задач


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




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




  1. Разработать работу с графическим модулем средствами PascalАВСNet


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

В первом параграфе описывается понятие модулей и принципы их использования


Во втором параграфе описывается основные функции и процедуры работы с графикой в PascalABCNet



В третьем параграфе описывается работа с графическим модулем средствами Pascal ABCNet


§1 Понятие модулей и принципы их использования

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


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

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

Раздел uses состоит из нескольких подряд идущих секций uses, каждая из кoтopыx имеет вид:

uses список имен;

Имена в списке перечисляются через запятую и могут быть либо именами подключаемых внешних модулей PascalABCNET, либо пространствами имен NET Например:

uses System, SystemCollectionsGeneric, MyUnit;

Здесь MyUnit - модуль PascalABCNET, представленный в виде исходного текста или откомпилированного pcu-модуля, System и SystemCollectionsGeneric - пространства имен NET

В модуле или основной программе, которая содержит раздел uses, можно использовать все имена из подключаемых модулей PascalABCNET и пространств имен NET Основное отличие между модулями и пространствами имен NET состоит в том, что модуль содержит код, а пространства имен NET содержат лишь имена - для использования кода его необходимо подключить с помощью директивы компилятора {$reference ИмяСборки}, где ИмяСборки - имя dll-файла, содержащего NET-код Другое не менее важное отличие состоит в том, что в модуле или основной программе нельзя использовать имена, определенные в другом модуле, без подключения этого модуля в разделе uses Напротив, если сборка NET подключена директивой $reference, то можно использовать ее имена, явно уточняя их пространством имен, не подключая это пространство имен в разделе uses Например:

begin
SystemConsoleWriteLine('Pascal.ABCNET');
end

По умолчанию в первой секции uses неявно первым подключается системный модуль PABCSystem, содержащий стандартные константы, типы, процедуры и функции Даже если раздел uses отсутствует, модуль PABCSystem подключается неявно Кроме того, по умолчанию с помощью неявной директивы $reference подключаются сборки Systemdll, SystemCoredll и mscorlibdll, содержащие основные NET-типы

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



ИмяМодуляИмя

или

ИмяПространстваИменNETИмя

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

Библиотеки dll


Библиотеки dll (dynamically linked libraries):

  • содержат группу взаимосвязанных подпрограмм

  • находятся в откомпилированном файле

  • предназначены для обращения к ним из различных программ

Они находятся в файле с расширением dll либо в текущем каталоге приложения (локальные), либо в системном каталоге (глобальные библиотеки) Глобальными библиотеками могут пользоваться одновременно несколько приложений

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

Отличия библиотек от модулей


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

  2. Библиотеки dll при выполнении программы полностью загружаются в оперативную память

  3. Библиотеки dll часто используются одновременно несколькими программами

  4. Библиотека dll может быть написана и откомпилирована на одном языке, а обращаться к ней можно из программ, написанных на других языках Например, программа на PascalABCNET может вызывать функцию из библиотеки, созданной на языке C# и наоборот Таким образом, библиотеки обеспечивают межъязыковое взаимодействие

Структура библиотеки


Библиотека имеет практически ту же структуру, что и модуль:

library имя библиотеки;

interface

раздел интерфейса

implementation

раздел реализации

end

Имя библиотеки должно совпадать с именем pas-файла, в котором библиотека находится

Имеется также упрощенный синтаксис библиотек - без разделов интерфейса и реализации, совпадающий с упрощенным синтаксисом модулей (за исключением заголовка)

В результате компиляции библиотеки в текущем каталоге создаётся dll-файл, содержащий откомпилированную библиотеку

Подключение библиотеки к основной программе


Для подключения библиотеки к основной программе используется директива компилятора {$reference ИмяБиблиотеки} Например:

{$reference.ABCdll}
{$reference.ABC1dll}

begin
writeln(aGetType);
end

Подключение библиотеки может проводиться в любом месте исходного файла


Библиотеки ABC и ABC1 имеют соответственно вид:

library ABC;

var a: integer;

end

и

library ABC1;

var a: real;

end

Алгоритм поиска имен в библиотеках


В первую очередь имя ищется в исходном модуле, затем в модулях, подключенных в разделе uses в порядке справа налево, и только потом - в подключенных библиотеках в порядке подключения

Согласно этому правилу в примере из предыдущего пункта переменная a будет иметь тип integer

В случае коллизии имен используемое имя можно предварять именем библиотеки с последующей точкой:

{$reference ABCdll}
{$reference ABC1dll}

begin
writeln(ABC1aGetType);
end

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

Модуль Graph3D предназначен для обучения основам объектно-ориентированного программирования и основам 3D-графики Он позволяет создавать простейшие трехмерные анимации и простейшие интерактивные трехмерные программы и игры

Модуль Graph3D основан на библиотеке Helix Toolkit WPF

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

Модуль растровой графики GraphABC обходится без объектов, хотя его возможности практически совпадают с графическими возможностями Borland Delphi Он доступен в несобытийных программах и позволяет легко создавать анимацию без мерцания

Модуль GraphABC представляет собой простую графическую библиотеку и предназначен для создания несобытийных графических и анимационных программ в процедурном и частично в объектном стиле Рисовaние осуществляется в специальном графическом окне, возможность рисования в нескольких окнах отсутствует Кроме этого, в модуле GraphABC определены простейшие события мыши и клавиатуры, позволяющие создавать элементарные событийные приложения Основная сфера использования модуля GraphABC - обучение

Модуль GraphABC основан на графической библиотеке GDI+, но запоминает текущие перо, кисть и шрифт, что позволяет не передавать их в качестве параметров при вызове графических примитивов К свойствам пера, кисти и шрифта можно получать доступ как в процедурном, так и в объектном стиле Например, для доступа к цвету текущего пера используется процедура SetPenColor(c) и функция PenColor, а также свойство PenColor


В модуле GraphABC можно управлять самим графическим окном и компонентом GraphABCControl, на котором осуществляется рисование По умолчанию компонент GraphABCControl занимает всю клиентскую часть графического окна, однако, на графическое окно можно добавить элементы управления, уменьшив область, занимаемую графическим компонентом (например, так сделано в модулях Robot и Drawman)

Модуль GraphWPF представляет собой простую графическую библиотеку и предназначен для создания графических и анимационных программ в процедурном и частично в объектном стиле Рисование осуществляется в специальном графическом окне, возможность рисования в нескольких окнах отсутствует Кроме этого, в модуле GraphWPF определены простейшие события мыши и клавиатуры, позволяющие создавать элементарные событийные приложения Основная сфера использования модуля GraphWPF - обучение

Модуль GraphWPF основан на графической библиотеке WPF и является современной и усовершенствованной версией устаревшего модуля GraphABC

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

Модуль WPFObjects предназначен для раннего обучения основам объектно-ориентированного программирования, а также для реализации анимационных и интерактивных проектов средней сложности Модуль WPFObjects основан на графической библиотеке WPF и является современной и усовершенствованной версией устаревшего модуля ABCObjects

Модуль ABCSprites реализует спрайты - анимационные объекты с автоматически меняющимися кадрами Спрайт представляется классом SpriteABC и является разновидностью мультикартинки MultiPictureABC, однако, обладает двумя дополнительными возможностями:

1 Спрайты автоматически анимируются в цикле, что управляется специальным таймером Можно регулировать скорость анимации каждого спрайта, а также останавливать/запускать все спрайты

2 Спрайты могут иметь состояния, задаваемые строками Каждое состояние имеет свой независимый набор кадров, меняющихся циклически Например, игровой объект в состоянии "Идти" имеет три кадра, а в состоянии "Сидеть" - один кадр (в этом состоянии анимация отсутствует) Переключая состояния, можно моделировать различное поведение игрового объекта