Язык Turbo Pascal

Автор работы: Пользователь скрыл имя, 16 Декабря 2014 в 15:43, курсовая работа

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

Цель исследования– изучить основы языка программирования, научиться создавать графические изображения на языке Turbo Pascal.
Задачи исследования :
1.изучить структуру программы
2. освоить основные графические процедуры и функции
Объект исследования: программа Turbo Pascal

Прикрепленные файлы: 1 файл

курсовая.docx

— 123.29 Кб (Скачать документ)

 

2.2 Управление цветом и фоном

Во время инициализации графического режима устанавливается палитра цветов. Палитрой называется максимальный набор цветов, поддерживаемых BGI-драйвером. Она включает 16 цветов, пронумерованных от 0 до 15, которые используются по умолчанию в режимах 640x480 для VGA (и для EGA) как в текстовом, так и в графическом режиме. Названия цветов на английском и русском языках и их номера описаны в таблице.

Таблица 2.2.1

Названия цветов и их номера

Имя цвета

Номер цвета

Название цвета

Black

0

Черный

Blue

1

Синий

Оreeon

2

Зеленый

Cyan

3

Голубой

Red

4

Красный

Magenta

5

Фиолетовый

Brown

6

Коричневый

LightGray

7

Светло-серый

DarkGray

8

Темно-серый

LighiBlue

9

Светло-синий

LightGreen

10

Светло-зеленый

LightCyan

11

Светло-голубой

LightRed

12

Светло-красный

LightMagenla

13

Светло-фиолетовый

White

14

Белый

Yellow

15

Желтый


 

 

Для установки цвета изображения и окна применяются процедуры SetColor и SetBkColor.

Процедура SetColor((ueeT) : word); служит для задания цвета, которым будут обозначены контуры фигуры или текста. Если в качестве цвета указан недопустимый номер  цвета, то текущий  цвет не изменяется.

 Процедура SetBkColor(<цвет>:word); устанавливает новый  цвет фона.

 

 

 

2.3 Работа с текстом

Вывод текста

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

Процедура OutText(Textst: string) выводит строку текста, начиная с текущего положения указателя. Например, OutText(‘нажмите любую клавишу’); Недостаток этой процедуры – нельзя указать произвольную точку начала вывода.

В этом  случае удобнее пользоваться процедурой OutTextXY(x, y: integer, Textst: string), где  x, y – координаты точки начала вывода текста, Textst – константа или переменная типа String. Например, OutTextXY(60, 100, ‘Нажмите любую клавишу’) .

Вывод численных значений

В модуле Graph нет процедур, предназначенных для вывода численных данных. Поэтому для вывода чисел сначала нужно преобразовать их в строку с помощью процедуры Str, а затем подключить посредством ‘+’ к выводимой строке.

Например: Max:=34.56;

 

                   Str(Max : 6 : 2, Smax);{результат преобразования находится в Smax}

 

                    OutTextXY(400, 40, ‘Максимум=’ + Smax);

Для удобства преобразование целочисленных и вещественных типов данных в строку лучше осуществлять специализированными пользовательскими функциями IntSt и RealSt:

function IntSt(Int: integer) : string;

 

 var Buf : string[10];

begin

Str(Int, Buf);

 

            IntSt := Buf;

end;

function RealSt(R : real, Dig, Dec : integer) : string;

var Buf: string[20];

begin

 

            Str(R : Dig : Dec, Buf);

 

            RealSt := Buf;

end;

Эти функции указываются как параметры в процедурах OutText и OutTextXY. Например: x:= 5.295643871;

OutTextXY(20, 20, ‘x=’+RealSt(x,11,9));

В результате на экране появится x=5.29564443871

Шрифты

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

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

Большинство стандартных шрифтом не содержат русских символов. Разработка же собственных шрифтов – довольно сложный и трудоемкий процесс. Он может быть ускорен, если воспользоваться специализированными пакетами TurboFont, BgiToolKit.

Установить нужный шрифт можно процедурой SetTextStyle(Font,d,c:word), где Font – выбранный шрифт,  d – направление ( горизонтальное или вертикальное), с – размер выводимых символов. При организации вертикального вывода необходимо учитывать, что если не установить точку начала вывода с помощью MoveTo, то текст начинается с нижней строки экрана и продолжается вверх. Величина символов устанавливается коэффициентом с. Если с=1, то символ строится в матрице 8х8, если с= 2, то матрица 16х16 и т.д. до 10-кратного увеличения.

Например выведем 2 строки (вертикальную и горизонтальную) шрифтом DefaultFont разной величины:

SetTextStyle(0,11); {буквы стандартной величины}

OutTextXY(200,200, ‘Вертикальная строка’);

SetTextStyle(0,0,2); {размер букв увеличен}

OutTextXY(200,220, ‘Горизонтальная строка’);

Выравнивание текста

В некоторых случаях требуется в пределах одной строки  выводить символы выше или ниже друг друга. Выравнивание текста выполняется с помощью процедуры SetTextJustify(Horiz, Vert : word) как по вертикали, так и по горизонтали посредством задания параметров Horiz и Vert.

 

2.4 Построение графиков функций

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

Рисунок 2.4.1


 

 

 

 

 

 

 

Рисунок получается маленьким, поэтому требуется увеличить масштаб изображения. Если для функции будет использован весь экран, надо увеличить рисунок по x и по y в зависимости от выбранного экрана.

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

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

-определить масштаб (сначала  определяются масштабы изображения  по горизонтали и вертикали  с учетом размеров выбранного  экрана по формуле: масштаб(г/в) = размер экрана (по г/в) / размер графика (по г/в), затем из них выбирается меньший, который и принимается за необходимый масштаб. В нашем случае графический экран имеет размеры 640 на 480.

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

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

nx:=round((x-xmin)/(maxx-minx)*nx_max);

ny:=round((y-ymax)/(maxy-miny)*ny_max);

где: x,y – координаты текущей точки;

 xmax, xmin – диапазон изменения x в декартовой системе координат;

 ymax, ymin -  диапазон изменения y в декартовой системе координат;

 nx_max – количество пиксел по ширине экрана, можно получить при помощи функции Getmaxx;

 ny_max - количество пиксел по высоте экрана, можно получить при помощи функции Getmaxy;

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

Лучше для рисования графика использовать процедуру line, а не putpixel, т.к. график получится без разрывов.

Рассмотрим построение графика функции, заданной параметрически. В отличие от функции, заданной в явном виде y=f(x), параметр х в этом  случае также является функцией, зависящей от некоторого  значения.

 

2.5 Построение простейших графических изображений

Отображение точки

Какие бы изображения не выводились на экран, все они  построены  из точек. Процедура PutPixel(X,Y:integer; Color:word); отображает точку на экране, где X и Y — экранные координаты точки. Color   - её  цвет.

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

Отображение отрезков прямых линий

Процедура Line(Xl,Yl,X2,Y2: integer); выводит на экран отрезок прямой линии. Здесь (X1,Y1)—координаты начальной точки, a (X2,Y2) — координаты конечной точки отрезка.

Для построения отрезков можно применять также следующие процедуры:

LineTo(X,Y); — проводит отрезок из текущей точки до точки с координатами (X,Y);

LineRel(dX,dY|; — проводит отрезок из текущей точки до точки, удаленной от нее на расстояние (dX,dY). Линии можно вычерчивать самых различных стилей: тонкие, широкие, штриховые, пунктирные и т. д. Процедура SetLineStyle(<тип линии> :word;<yзop(maблон)> : word;(толщина линии) :word); производит установку стиля. Константы типа линий и их толщины приведены в таблице.

 

 

Таблица 2.5.2

Константы типа линий и их толщины

Имя

Значение

Назначение

Коды типов линий (для процедуры SetLineStyle)

SolidLn

0

Cплошная

DottedLn

1

Пунктирная

CenterLn

2

Штрихпунктирная

DashedLn

3

Штриховая

UserBitLn

4

Заданная пользователем

Коды толщины линии

NormWidth

1

Нормальная

ThickWidth

3

Толстая


 

 

Если тип линии не равен UserBitLn, то параметр "узор(шаблон)" не используется и обычно задается равным нулю, например SetLineStyle(0,0,3) — стиль линии — сплошная, жирная. 

Построение прямоугольников

Процедура Rectangle(Xl,Yl,X2,Y2: integer); строит изображение прямоугольника на плоскости. Здесь XI,Y1— координаты левого верхнего угла, X2,Y2 — координаты правого нижнего угла прямоугольника. При этом используется текущий цвет (SetColOf) и стиль линии (SetLineStyle). Область внутри прямоугольника не закрашена и совпадает по цвету с фоном.

Процедура Bar(Xl,Yl,X2,Y2:integer); позволяет строить более эффектные прямоугольники. Она рисует прямоугольник, внутренняя область которого залита по текущему шаблону. Обычно используется в деловой графике для построения столбиковых диаграмм, а также для "закраски" графического окна, чтобы фон графического окна не сливался с общим фоном экрана.

Рассмотрим, как производить «заливку» замкнутых областей экрана с помощью различных узоров, т. е. как выбрать узор (шаблон) и   цвет  заполнения фигуры. Комбинацию узор-цвет принято называть стилем заполнения.

    Процедура SetFillStyle(<шаблон>:word;<цвет>:word); устанавливает шаблон и цвет заполнения замкнутой фигуры.

 

 

Таблица 2.5.3

Константы шаблонов закраски приведены в таблице

Имя константы

Значение

Назначение

EmptyFill

0

Заполнение цветом фона

SolidFill

1

Однородное заполнение цветом

LineFill

2

Заполнение вида -

LtSlashFill

3

Заполнение вида ///

SlashFill

4

Заполнение вида /// толстыми линиями

BkSlashFill

5

Заполнение вида \ толстыми линиями

LtBkSlashFill

6

Заполнение вида \

HatchFill

7

Заполнение клеткой

XHatchFill

8

Заполнение косой клеткой

InterleaveFill

9

Заполнение частой клеткой

WideDotFill

10

Заполнение редкими точками

CloseDotFill

11

Заполнение частыми точками

UserFill

12

Определяется пользователем

Информация о работе Язык Turbo Pascal