Машинная графика в Turbo Pascal 7.0

Машинная графика, работа в графическом режиме, построение графика функции на заданном отрезке. Инициализация графического режима. Процедуры и функция модуля Graph. Нахождения минимального и максимального значения функции. Расчет масштабных коэффициентов.

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 15.04.2012
Размер файла 243,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Введение

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

Главной задачей нашей работы является углубленное изучение машинной графики и работы в графическом режиме, в частности построение графика функции y=4хsin(x) на заданном отрезке [a;b].

Во время выполнения курсового проекта мы ознакомились с:

· инициализацией графического режима;

· процедурами и функциями модуля Graph;

· нахождением минимального и максимального значения функции;

· расчетом масштабных коэффициентов;

· переводом аналитических координат в экранные координаты;

· особенностями построения системы координат;

· выводом подписей к осям;

· построением графика функции;

· выводом текста в графическом режиме.

Рассмотрим построение графика функции y=4хsin(x) на заданном диапазоне значений [a;b] в среде программирования Borland Pascal 7.0.

Глава I. Построение графика функции

машинная графика функция

Задание: построить график функции y=4xsin(x) на заданном диапазоне значений [a;b].

Этапы решения задачи показывает следующая блок-схема (рис.1):

Рис 1. Основные этапы решения задачи

В программе используются следующие глобальные переменные:

· ox,oy:integer - отступы для осей Oy и Ox соответственно;

· px,py:integer - отступы слева, справа и сверху, снизу от границ экрана;

· a,b:real - используются для хранения концов отрезка [a;b];

· t:real - используется в случае, если a>b, чтобы поменять их местами;

· ymin,ymax:real - хранят минимальное и максимальное значения функции;

· mx,my:real - в них содержатся значения масштабных коэффициентов по осям Ox и Oy;

Также для решения поставленной задачи используются следующие процедуры и функции:

· MyGraphInit; - процедура, которая инициализирует графический режим. Параметры в нее не передаются. Содержит локальные переменные: gd - содержит значение соответствующего графического драйвера (определяется автоматически), gm - хранит значение графического режима (также определяется автоматически), ErCo - в этой переменной находится код ошибки.

· Grafik (ox,oy:integer;a,b,mx,my:real); - процедура, рисующая график функции. В нее передаются следующие параметры: ox,oy - отступы для осей Oy и Ox соответственно; a,b - концы отрезка [a;b]; mx,my - масштабные коэффициенты по осям Ox и Oy. Локальные переменные: x1,y1, x2, y2 - эти переменные содержат координаты по оси Оx и по оси Оy двух точек, которые соединяются линией, h - шаг в соответствии с которым определяется следующая точка по оси Ox.

· osi(ox,oy,px,py); - выводит оси на экран. В эту процедуру передаются: px,py - отступы от левой, правой и верхней, нижней границ экрана; ox,oy - отступы для осей Oy и Ox соответственно. В процедуре не используются локальные переменные.

· podpisi (ymin,ymax,a,b,mx,my:real; ox,oy,px,py: integer); - эта процедура используется для того, чтобы вывести подписи к осям. В нее передаются следующие параметры: a,b - концы введенного пользователем отрезка [a;b]; ymin,ymax - минимальное и максимальное значения функции; mx,my - масштабные коэффициенты по осям Ox и Oy; px,py - отступы от боковых и верхней, нижней границ экрана; ox,oy - отступы для осей Oy и Ox. Также в данной процедуре используются локальные переменные: ymin1,ymax1 - крайние точки подписей по оси Oy; a1,b1 - границы подписей по оси Ox; y,x - хранят значение текущей точки подписи по осям Oy и Ox соответственно; s - используется для хранения значения подписи в строковом типе, чтобы вывести подпись на экран.

· min(a,b:real):real; - при помощи данной функции вычисляется минимальное значение функции. Оперирует следующими параметрами: a,b - концы отрезка [a;b]. Локальные переменные: fmin - хранит текущее минимальное значение функции; x - точка по оси Ox, в которой вычисляется значение функции; y - текущее значение функции; h - шаг в соответствии с которым определяется следующая точка по оси Ox.

· max(a,b:real):real; - функция, вычисляющая максимальное значение функции. В нее передаются следующие параметры: a,b - концы отрезка [a;b]. В функции содержатся локальные переменные: fmax - хранит текущее максимальное значение функции; x - точка по оси Ox, в которой вычисляется значение функции; y - текущее значение функции; h - шаг в соответствии, с которым определяется следующая точка по оси Ox.

Глава II. Основные сеансы работы с программой

Рассмотрим основные сеансы работы программы, реализующей алгоритм построения графика функции y=4хsin(x) на заданном диапазоне значений [a;b].

В начале работы программы пользователю предлагается ввести значения a и b. После чего необходимо ввести эти значения (рис.2):

Рис. 2 Ввод диапазона значений [a;b].

Если введён диапазон [-66..-2], то выводится следующее сообщение: (рис.3)

Рис. 3 Сообщение, которое выдаётся при вводе диапазона [-66..-2]

Программа по заданному диапазону [-50..50] выводит график следующего вида: (рис.4):

Рис.4 График функции в диапазоне [-50..50]

Для диапазона [0.1..25] программа выводит следующий график (рис.5):

Рис.5 График функции в диапазоне [0.1..25]

Если пользователь вводит равные значения a и b, то на экран выдается следующие сообщение (рис.6):

Рис.6 Сообщение, выдаваемое при вводе равных значений [a;b]

Заключение

В курсовом проекте мы построили график функции y=4xsin(x) на заданном диапазоне значений [a;b].

Нами было углубленно изучено программирование в графическом режиме на языке Borland Pascal 7.0. А в частности, мы ознакомились с возможностями, которые дает нам машинное графика, реализованными процедурами и функциями модуля Graph, нахождением минимального и максимального значения функции, особенностями масштабирования, построения осей системы координат, вывода подписей к осям.

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

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

1. Марченко А.И. Программирование в среде Borland Pascal 7.0 Киев: Век, Киев: Юниор, 2000.480 с.

2. Немнюгин С.А. Turbo Pascal: Учебник. СПб.: Питер, 2001, 496 с.

3. Немнюгин С.А. Turbo Pascal:Практикум. СПб.: Питер, 2001, 256 с.

4. Фаронов В.В. Turbo Pascal 7.0. Практика программирования. 7-е изд. М.: Нолидж, 2001. 416 с.

Приложение

Program kursovaya;

uses crt,graph;

var ox,oy,px,py:integer;

a,b,t,z,ymin,ymax,mx,my:real;

Procedure MyGraphInit; {инициализирует графический режим}

var gd,gm,ErCo:integer;

begin

gd:=detect;

initGraph(gd,gm,'C:\bp\bgi');

ErCo:=graphresult;

if ErCo<>Grok

then begin

writeln('Ошибка инициализации графики');

readln;

halt(1);

end;

end;

Procedure Grafik(ox,oy:integer;a,b,mx,my:real);{рисует график}

var y1,y2,x1,x2,h:real;

begin

h:=0.05;

x1:=a;

x2:=x1+h;

setcolor(10);

while x2<=b do

begin

if x1>0

then y1:=4*exp(sin(x1)*ln(x1))

else if x1=0

then y1:=0

else y1:=4/exp(sin(x1)*ln(-x1));

if x2>0

then y2:=4*exp(sin(x2)*ln(x2))

else if x2=0

then y2:=0

else y2:=4/exp(sin(x2)*ln(-x2));

line(round(ox+mx*x1),round(oy-my*y1),round(ox+mx*x2),round(oy-my*y2));

x1:=x1+h;

x2:=x1+h;

end;

end;

Procedure osi(ox,oy,px,py:integer); {выводит оси}

begin

line(ox,round(getmaxy-py/2),ox,round(py/2));

line(ox,round(py/2),ox-3,round(py/2)+7);

line(ox,round(py/2),ox+3,round(py/2)+7);

line(round(px/2),oy,round(getmaxx-px/2),oy);

line(round(getmaxx-px/2),oy,round(getmaxx-px/2)-7,oy+3);

line(round(getmaxx-px/2),oy,round(getmaxx-px/2)-7,oy-3);

outtextxy(ox+3,oy+3,'0');

outtextxy(ox,round(py/2)-13,'y');

outtextxy(round(getmaxx-px/2)-13,oy+3,'x');

end;

Procedure podpisi(ymin,ymax,a,b,mx,my:real;

ox,oy,px,py:integer); {выводит подписи}

var ymin1,ymax1,a1,b1,y,x:real;

s:string;

begin

settextstyle(2,0,4);

if ymin>0

then ymin1:=0

else ymin1:=ymin;

if ymax<0

then ymax1:=0

else ymax1:=ymax;

y:=ymin1;

while y<=ymax1+0.01 do

begin

if (y<>0)

then begin

setcolor(15);

line(ox-5,round(oy-my*y),ox+5,round(oy-my*y));

str(y:2:1,s);

setcolor(14);

outtextxy(ox-38,round(oy-my*y),s);

end;

y:=y+(ymax1-ymin1)/10;

end;

if a>0

then a1:=0

else a1:=a;

if b<0

then b1:=0

else b1:=b;

x:=a1;

while x<=b1+0.01 do

begin

if (x<>0)

then begin

setcolor(15);

line(round(ox+mx*x),oy+5,round(ox+mx*x),oy-5);

str(x:2:1,s);

setcolor(14);

outtextxy(round(ox+mx*x)-13,oy+20,s);

end;

x:=x+(b1-a1)/10;

end;

end;

Function min(a,b:real):real; {вычисление min значения у}

var fmin,h,y,x:real;

begin

fmin:=100;

h:=0.05;

x:=a;

while x<=b do

begin

if x>0

then y:=4*exp(sin(x)*ln(x))

else if x=0

then y:=0

else y:=4/exp(sin(x)*ln(-x));

if y<fmin

then fmin:=y;

x:=x+h;

end;

min:=fmin;

end;

Function max(a,b:real):real; {вычисление max значения y}

var fmax,h,y,x:real;

begin

fmax:=-100;

h:=0.05;

x:=a;

while x<=b do

begin

if x>0

then y:=4*exp(sin(x)*ln(x))

else if x=0

then y:=0

else y:=4/exp(sin(x)*ln(-x));

if y>fmax

then fmax:=y;

x:=x+h;

end;

max:=fmax;

end;

Begin

clrscr;

writeln('Введите a,b');

readln(a); {ввод отрезка a,b}

readln(b);

if a>b {контроль соответствия введенного отрезка a,b условию}

then begin

t:=a;

a:=b;

b:=t;

end;

if a=b

then begin

writeln('Введены равные значения');

readln;

exit;end;

if (a<0) and (b<=0)

then begin

writeln('nevozmojno');

readln;

exit;

end;

if (a<0) and (b>0)

then begin

z:=a;

a:=0;

end;

ymin:=min(a,b); {вычисление min значения y}

ymax:=max(a,b); {вычисление max значения y}

mygraphinit; {инициализация графического режима}

cleardevice;

setcolor(15);

setlinestyle(0,0,3);

px:=round(getmaxx/6);

py:=round(getmaxy/6);

if z<0

then a:=z;

if a*b<0 {расчет масштабных коэффициентов по горизонтали и

отступа для оси оу}

then begin

mx:=(getmaxx-px)/(b-a);

ox:=round(getmaxx-px/2-b*mx);

end

else if (a<0) and (b<=0)

then begin

mx:=(getmaxx-px)/(-a);

ox:=round(getmaxx-px/2);

end

else begin

mx:=(getmaxx-px)/(b);

ox:=round(px/2);

end;

if ymin*ymax<0 {расчет масштабных коэффициентов по вертикали и отступа для оси ох}

then begin

my:=(getmaxy-py)/(ymax-ymin);

oy:=round(getmaxy-py/2+ymin*my);

end

else if (ymax<=0) and (ymin<0)

then begin

my:=(getmaxy-py)/(-ymin);

oy:=round(py/2);

end

else begin

my:=(getmaxy-py)/(ymax);

oy:=round(getmaxy-py/2);

end;

osi(ox,oy,px,py); {рисование осей}

setlinestyle(0,0,1);

podpisi(ymin,ymax,a,b,mx,my,ox,oy,px,py);{вывод подписей к осям}

if z<0

then a:=0;

grafik(ox,oy,a,b,mx,my); {рисование графика}

setcolor(14);

settextstyle(2,0,7);

outtextxy(round(getmaxx/2)-35,2,'y=4*exp(sin(x)*ln(x))'); {вывод подписи к графику}

readln;

closegraph; {закрытие графического режима}

End.

Размещено на Allbest.ru


Подобные документы

  • Методика разработки, практической апробации программы в среде Turbo Pascal по построению графика прямой линии регрессии. Формирование блок-схемы данной программы, ее листинг. Построение графика с помощью математических формул и графического модуля Graph.

    контрольная работа [46,2 K], добавлен 22.07.2011

  • Использование графических возможностей Турбо Паскаля, подключение графического модуля Graph. Графические функции и процедуры. Общая структура графической программы. Построение фигур, определение цветов и стилей, работа с текстом, сообщения об ошибках.

    реферат [109,3 K], добавлен 28.04.2010

  • История создания и развитие языка программирования Pascal, его версии. Особенности и порядок построения графика функции на языке Turbo Pascal с использованием декартовой системы координат. Блок схема алгоритма процедур, листинг и тестирование программы.

    курсовая работа [102,7 K], добавлен 23.12.2011

  • Определение минимума функции на заданном отрезке методами перебора, поразрядного поиска, дихотомии, золотого сечения и методом парабол. Нахождение и расчет нулей функции методом Ньютона. Построение графика данной функции, ее минимальное значение.

    реферат [55,6 K], добавлен 09.04.2013

  • Построение графика функции. Поиск корней уравнения методом половинного деления. Определение минимума функции методом перебора и значения аргумента. Вычисление определенного интеграла на заданном отрезке с использованием метода правых прямоугольников.

    контрольная работа [316,1 K], добавлен 13.11.2014

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

    курсовая работа [6,2 M], добавлен 09.03.2012

  • Файлы BGI и содержимое модуля Graph, инициализация и закрытие графических режимов, их классификация, анализ и управление. Рисование графических примитивов и фигур, управление цветами и шаблонами, вывод текста, выбор шрифта и стиля, сжатия изображения.

    реферат [65,3 K], добавлен 31.05.2010

  • Краткая история становления языка программирования Pascal и основные понятия графики. Основные функции и процедуры работы с графикой в PascalABC. Создание графического проекта: понятие "фрактал" и реализация треугольника. Построения фрактала "Дерево".

    курсовая работа [1,4 M], добавлен 26.10.2014

  • Разработка программы построения графика экспериментальных точек и полинома регрессии второй степени в среде Turbo Pascal. Блок-схемы алгоритмов используемых процедур. Листинг программы. Составление вектора свободных членов и матрицы коэффициентов.

    курсовая работа [46,6 K], добавлен 24.11.2013

  • Особенности использования графического режима в среде Турбо Паскаль. Типы драйверов. Инициализация графики. Построение изображения на экране. Графические примитивы и работа с текстом. Разработка и реализация программ в среде Турбо Паскаль "Графика".

    курсовая работа [1,2 M], добавлен 26.09.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.