Машинная графика в 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