Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Графические возможности языка программирования Pascal

 

Язык программирования Pascal (назван в честь выдающегося французского математика и философа Блеза Паскаля (1623 – 1662)), разработан в 1968 – 1971 гг. Николаусом Виртом, профессором, директором Института информатики Швейцарской высшей политехнической школы [36, с. 122].

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

Широкой популярности Pascal среди программистов способствовали следующие причины:

– благодаря своей компактности, удачному первоначальному описанию Pascal оказался достаточно легким для обучения;

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

– язык Pascal позволяет четко реализовывать идеи структурного проектирования и структурной организации данных;

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

– применение языка Pascal значительно подняло «планку» надежности разрабатываемых программ за счет требований Pascal к описанию используемых в программе переменных, проверки согласованности программы при компиляции без ее выполнения;

– использование в Pascal простых и гибких структур управления: ветвлений циклов.

Система программирования Turbo Pascal была разработана в середине 80-х годов фирмой Borland International, Inc. (США). Слово Turbo в названии системы программирования – это отражение торговой марка фирмы-разработчика.

Turbo Pascal включает в себя как язык программирования – одно из расширений языка Pascal для ЭВМ типа IBM, так и среду, предназначенную для написания, отладки и запуска программ.

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

Первая версия Turbo Pascal появилась в 1983 году и использовалась недолго. Через год вышла в свет вторая версия, удобная в эксплуатации и более быстродействующая. В четвертой версии появился встроенный компилятор, а в пятой встроенный отладчик. Разработанная в 1989 версия 5.5., позволила перейти к поддержке объектно-ориентированной технологии программирования. Turbo Pascal 6.0 был расширен поддержкой многодокументного интерфейса, обладала встроенным ассемблером, что позволило эффективно выполнять процедуры работы с устройствами компьютера на низком уровне. В 1992 году фирма Borland выпускает пакет Borland Pascal 7.0 и Turbo Pascal 7.0. Эти пакеты позволяют не только использовать в разработке программ объектно-ориентированную методологию, но и разрабатывать приложения с поддержкой защищённого режима работы микропроцессора, а также создавать приложения

для работы под популярную операционную среду Windows.

С помощью Turbo Pascal 7.0 можно создавать любые программы – от программ, предназначенных для решения простейших вычислительных задач до сложных современных систем управления базами данных [10, c. 44].

Систему программирования Turbo Pascal 7.0 называют интегрированной (integration – объединение отдельных элементов в единое целое) средой программирования, так как она объединяет в себе возможности ранее разрозненных средств, используемых при разработке программ: редактора текстов, компилятора, комповщика, отладчика, и при этом обеспечивает программисту великолепные сервисные возможности. Часто ее кратко называют IDE (Integrated Development Envirinment – интегрированная среда разработки).

Интегрированная инструментальная оболочка языка программирования Turbo Pascal 7.0 (рисунок 2) содержит «Меню» возможных режимов – верхняя строка, нижняя – краткую справку о назначении основных функциональных клавиш. Вся остальная часть экрана принадлежит окну редактора, очерченному двойной рамкой и предназначенному для ввода и коррекции текстов программ. В его верхней строке приводятся имя дискового файла, откуда был прочитан текст программы (новому файлу присваивается имя NONAME 00. PAS), два специальных поля, используемых при работе с устройством ввода «мыши» (эти поля выделены квадратными скобками), и цифра 1 – номер окна. Среда Turbo Pascal 7.0 позволяет использовать до 9-ти окон редактора одновременно [23, c. 166].

 

Рис. 2. Интегрированная инструментальная оболочка языка программирования Turbo Pascal 7.0.

Язык Turbo Pascal 7.0 состоит приблизительно из 80 зарезервированных слов и специальных символов. Алфавит языка составляют буквы латинского алфавита, арабские цифры от 0 до 9, а также специальные символы, такие, например, как +, -, _.

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

Программа представляет собой последовательность операторов и других элементов языка, построенную в соответствии с определенными правилами и предназначенную для решения определенной задачи. Первым в программе идет зарезервированное слово Program. За ним, после одного или нескольких пробелов, следует идентификатор – имя программы.

Идентификаторы могут содержать любое количество символы, но Turbo Pascal 7.0 распознает только первые 63 из них. Взятая в целом, фраза Program s _ kate; явяляется заголовком программы с именем s _ kate. Описание должно завершаться точкой с запятой [48, с. 206].

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

Программа обязательно должна иметь часть, которая выполняет какие-либо действия и называется разделом оепреторов (иногда – телом программы). Минимально допустимой выполняемой частью программы является составной оператор:

Begin

S 1: S 2; …; Sn;

End.

 

где S 1, …, Sn – операторы, а Begin и End зарезервированные слова. Зарезервированные словаиграют роль скобок, но только для операторов, а не дляматематических выражений. Они также называются операторными скобками.

Ниже приведена схема программы со всеми возможными разделами. Если нет необходимости использовать какие-либо разделы описаний, то они опускаются, последовательность записи разделов описаний не обязательная, причём некоторые разделы могут повторяться:


Program Name; {Заголовок программы}

Uses {Описание используемых модулей}

Label {Описание меток}

Const {Описание констант} Раздел описаний

Type {Описание типов}

Var {Описание переменных}

Procedure {Описание процедур}

Function {Описание функций}

Begin

Оператор 1;

Оператор 2; {Раздел операторов... (тело программы)}

Оператор n

End.

 

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

В Turbo Pascal 7.0 имеется восемь стандартных модулей, в которых содержится большое число разнообразных типов, констант, процедур и функций. Этими модулями являются System, Dos, Crt, Printer, Graph, Overlay, Turbos и Graph 3. Модули Graph, Turbos и Graph 3 выделены в отдельные TPU -файлы, а остальные входят в состав библиотечного файла T urbo. tbl. Лишь один модуль S ystem подключается к любой программе автоматически, все остальные становятся доступны только после указания их имен в списке, следующем за словом

Uses.

Начиная с версии 4.0, в состав Turbo Pascal включена мощная библиотека графических программ Graph, остающаяся практически неизменной во всех последующих версиях.

Модуль Graph cодержит обширный набор типов, констант, процедур и функций для управления графическим режимом работы экрана. С помощью подпрограмм, входящих в модуль Graph, можно создавать разнообразные графические изображения и выводить на экран текстовые надписи стандартными или разработанными программистом шрифтами. Подпрограммы модуля Graph после соответствующей настройки могут поддерживать различные типы аппаратных графических средств. Настройка на имеющиеся в распоряжении программиста технические средства графики осуществляется специальными программами – драйверами. Драйвер хранится в отдельном файле на диске и содержит как исполняемый код, так и необходимые ему для работы данные. Признак файла с драйвером – расширение. big имени файла [36, c. 144].

Для работы графики её надо инициализировать, а для этого необходимо определить возможный графический режим. Для включения графического режима используется процедура: InitGraph (var driver, Mode: Integer; Path: String);.

Простейшая программа может иметь вид:

Program Primer_1;

Uses Graph;

Var Gd,Gm: Integer;

Begin

Gd:= VGA; {Графический адаптер – VGA }

Gm:=VGAHi; {Графический режим VGAHi (640x480) }

InitGraph (Gd,Gm,'..\bgi'); {Включить графический режим}

If GraphResult = grOk then {Если режим включился успешно}

Begin

{теперь можно вызывать графические процедуры }

CloseGraph; {Выключение графического режима}

End;

End.

 

У процедуры InitGraph три параметра. Первый параметр в этой процедуре задает тип видеоадаптера, второй определяет режим, а третий представляет собой строку с указанием расположения драйвера на диске.

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

Любое изображение на экране монитора формируется из отдельных элементов – пикселов (от английского pixel, возникшего в результате объединения слов «рисунок» (picture) и «элемент» (element)) которые можно закрасить в тот или иной цвет. Экран монитора можно рассматривать как матрицу пикселов. Для получения того или иного изображения на экране монитора как в графическом, так и в текстовом режимах необходимо заставить светиться строго определенную группу пикселов. В текстовом режиме на экран могут выводиться только определенные символы, образы которых хранятся в постоянной или оперативной памяти компьютера, а управление отдельными пикселями невозможно. В графическом режиме появляется возможность управления отдельными пикселями, что позволяет формировать любые изображения [34, с. 112].

Каждый пиксель имеет две координаты: x и y. Количество пикселей зависит от типа адаптера и режима его работы (рисунок 3). Значения x max и y max зависят от текущего графического видеорежима. В случае адаптера VGA и режима VGAHi x max = 639, а y max = 479.

В модуле Graph определены две функции GetMax x и GetMax y, возвращающие текущие значения параметров x max и y max, соответственно.


 

 


Рис. 3. Система координат

 

«Текущий указатель» (CP – Current Pointer) или, как его еще называют, графический курсор выполняет те же функции, что и курсор в текстовом режиме, однако является при этом невидимым. Положение графического курсора указывает на начальные координаты изображения графического примитива, выводимого «от текущей позиции». Текущий указатель перемещается специальными процедурами. В частности, процедура MoveTo (x, y); перемещает его в точку экрана, с координатами (x, y). Другая процедура – MoveRel (d x, d y); перемещает текущий указатель на d x пикселов по горизонтали и на d y пикселов по вертикали относительно последнего положения текущего указателя.

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

Вывод точки осуществляется процедурой PutPixel (x, y, Color), где x и y – экранные координаты точки, а Color – ее цвет.

Пример:

x:= GetMaxx div 2; {Вывод красной точки в центр экрана}

y:= GetMaxy div 2;

PutPixel (x, y, Red);


При выводе на экран точки ее цвет указывается непосредственно в процедуре PutPixel. Во всех остальных случаях, при построении графических примитивов (линий, прямоугольников, окружностей и т.п.), а также при выводе текста, цвет их контуров (цвет пера) задается специальной процедурой: SetColor (Color), где Color – цвет.

Для установки цвета фона графического экрана имеется процедура: SetBkColor (Color). При выполнении процедуры SetBkColor экран сразу же окрашивается в заданный цвет.

Для построения отрезков прямых имеется специальная процедура Line (x 1, y 1, x 2, y 2), где x 1, y 1 – координаты начала, а x 2, y 2 – координаты конца отрезка.

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

Program Primer_2;

Uses Graph;

Var Gd,Gm: Integer;

Begin

Gd:=VGA; Gm:=VGAHi; InitGraph (Gd,Gm,'..\bgi');

If GraphResult=grOk

Then begin

SetColor (LightMagenta); {Цвет - светло-сиреневый}

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

SetColor (LightCyan); {Цвет - светло-циановый}

Line (120, 210, 320, 10); {Левый катет}

Set Color (Green); {Цвет - зеленый}

Line (320, 10,520,210); {Правый катет}

ReadLn;

CloseGraph;

End

End.


Процедура LineTo (x, y) строит отрезок прямой из точки текущего положения указателя в точку с координатами x, y.

Turbo Pascal 7.0 позволяет вычерчивать линии самого различного стиля:

тонкие, широкие, пунктирные.

Установка стиля производится процедурой SetLineStyle (Style, Pattern, Thickness), где Style – параметр, определяющий стиль линии. Возможные значения этого параметра приведены в «таблице 1» [23, с. 143].

 

Таблица 1.

Стили линии

Описание стиля Константа
сплошная линия SolidLn = 0
точечная линия DottedLn = 1
штрих-пунктирная линия CenterLn = 2
пунктирная линия DashedLn = 3
стиль, определяемый пользователем UserBitLn = 4

 

Pattern – образец; Thickness – толщина линии. Если применяется один из стандартных стилей, значение параметра Pattern должно быть равно 0.

Параметр Thickness может принимать всего два значения:

NormWidth = 1 – линия толщиной в один пиксел;

ThickWidth = 3 – линия толщиной в три пиксела.

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

Для построения прямоугольных фигур имеется несколько процедур. Первая из них – процедура вычерчивания одномерного прямоугольника: Rectangle (x 1, y 1, x 2, y 2), где x 1, y 1 – координаты верхнего левого угла, x 2, y 2 – координаты правого нижнего угла прямоугольника.


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

Program Primer_3;

Uses Graph;

Var grDriver: Integer;

grMode: Integer;

i,x,y: Integer;

Procedure Rect (x,y,x1,y1: Integer);

{Рисует прямоугольник, у которого левый нижний угол}

{имеет координаты (x,y), а правый верхний – (x1,y1) }

Begin

Line (x,y,x,y1); {Левая сторона}

Line (x1,y,x1,y1); {Правая сторона}

Line (x,y1,x1,y1); {Верхняя сторона}

Line (x,y,x1,y) {Нижняя сторона}

End;

Begin

GrDriver:=VGA; GrMode:=VGAHi;

InitGraph (grDriver,grMode,'..\bgi');

If GraphResult=grOk

Then begin

For i:=1 to 15 do

Begin

x:=i*30; y:=i*25; SetColor (i);

Rect (x,y,x+50,y+60)

End;

ReadLn;

CloseGraph;

End;

End.


Для построения закрашенных прямоугольников используется процедура: Bar (x 1, y 1, x 2, y 2), где параметры x 1, y 1, x 2 и y 2 имеют то же смысл, что и в процедуре Rectangle.

Цвет и стиль закраски устанавливается процедурой SetFillStyle (Pattern, Color), где параметр Pattern определяет стиль (шаблон) заливки, а параметр Color – ее цвет.

Для построения «объемных» закрашенных прямоугольников используется процедура: Bar 3 D (x 1, y 1, x 2, y 2, Depth, Top).

Тип и цвет заливки устанавливается процедурой SetFillStyle. Параметр Depth определяет глубину трехмерного контура. Чаще всего его значение равно четверти ширины прямоугольника: Depth:= (x 2- x 1) div 4;

Параметр Top определяет, строить над прямоугольником вершину (True) или нет (False). Например:

SetFillStyle (XhatchFill, Red);

Bar 3 D (10, 10, 50, 100, 10, True);

 

Процедура вычерчивания окружностей текущим цветом имеет вид: Circle (x, y, Radius), где x, y – координаты центра окружности, а Radius – ее радиус. Например, следующий фрагмент выводит ярко-зеленую окружность c радиусом 50 пикселов и центром в точке 450, 100:

SetColor (LightGreen);

Circle (450, 100, 50);

 

Для вычерчивания дуг используется процедура Arc (x, y, StartAngle, EndAngle, Radius), где x, y – координаты центра дуги, StartAngle и EndAngle – начальный и конечный угол (в градусах), Radius – радиус. Очевидно, что если StartAngle = 0, а EndAngle = 359, то вычерчивается полная окружность.

Для заполнения внутренней или внешней области фигуры определенным образцом закраски используется процедура: FloodFill (X, Y, Border), где x, y – координаты точки внутри или вне фигуры, Border – цвет контура фигуры. Если точка (x, y) находится внутри замкнутой области, то заполняется внутренняя область. Если эта точка находится вне замкнутой области, то заполняется ее внешняя часть [23, с. 222].

Пример: красная окружность, заполненная зеленой штриховкой

SetColor (Red); Circle (450, 100, 50);

SetFillStyle (SlashFill, Green);

FloodFill (450, 100, Red);

 

В графическом режиме стандартные процедуры вывода Write и Writeln не работают. Для вывода текстовой информации на графический экран используют две процедуры OutText и OutText xy.

Процедура: OutText (TextString) выводит на экран строку текста, начиная с текущего положения графического курсора.

Например: OutText (‘Добро пожаловать!’);

Явный недостаток этой процедуры – нельзя указать произвольную точку начала вывода. Его можно устранить с помощью процедуры MoveTo, которая перемещает указатель в нужную позицию, но лучше воспользоваться процедурой: OutText xy (x, y, TextString),где x, y – координаты точки начала вывода текста, TextString – константа или переменная строкового типа string. Например, чтобы вывести сообщение «Для продолжения нажмите любую клавишу...», начиная с точки 20, 400 надо записать:

OutText xy (20, 400, ‘Для продолжения нажмите любую клавишу...’);

Для начинающих проблемой является вывод числовых данных на графический экран, ибо в модуле Graph нет предназначенных для этого процедур. Выход прост: преобразовать числовое значение в строковое с помощью процедуры Str.


Пример:

x:= 12.5;

Str (x:4:1, S) {преобразование числа x в строку S }

OutTextxy (10, 10, S); {вывод строки S }

max:= 345.55;

Str (max:6:2, S) {преобразование числа max в строку S }

OutText xy (10, 50, ‘Максимальное значение = ’ + S);

{ вывод суммы двух строк}.

 

Таким образом, модуль Graph содержит обширный набор процедур и функций, позволяющий управлять графическим режимом работы экрана: создавать разнооборазные графические изображения и выводить на экран текстовые надписи. Как уже говорилось раннее, особенностями языка Pascal, является строгая типизация и наличие средств структурного (процедурного) программирования. Язык Pascal относительно прост в изучении, довольно ясен и логичен и, будучи первым изучаемым языком программирования, приучает к хорошему стилю, воспитывает дисциплину структурного программирования. Начинающему программисту целесообразно начать изучение языка среды именно с этого пакета. На сегодняшний день Pascal практически повсеместно применяется как учебный язык программирования.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...