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

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

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

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

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

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

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

Содержание

Введение 2

1. Анализ задания на курсовую работу 3

2. Описание программы 5

2.1 Описание структуры программы 5

2.2 Описание работы программы 6

3. Блок схема алгоритма 10

4. Листинг программы 16

5. Результаты тестирования программы 20

Заключение 24

Список использованной литературы 25

Приложение 26

Введение

Язык программирования, одной из поздних версий которого посвящена данная книга, создан швейцарским физиком Никлаусом Виртом (Niklaus Wirth) в 1970 году и назван в честь французского математика XVII века Блеза Паскаля.

Почему язык программирования назван именем французского математика? Дело в том, что Паскаль (в 1640 г.) создал арифметическую (или счетную) машину, которая считается первым подобным устройством. Он даже смог изготовить и продать 10-15 ее экземпляров, причем некоторые из них дошли до наших дней!

Итак, оригинальная версия языка программирования Pascal была предложена в 1970 году. Впоследствии появилось множество версий и расширений этого языка. Наиболее популярным из них стал пакет Turbo Pascal фирмы Borland, выпущенный в 1983 году. Первая версия этого пакета предназначалась для операционной системы СР/М, но уже через год (в 1984 г.) появилась версия для MS DOS. С тех пор было выпущено несколько версий этого пакета, последняя из которых -- Turbo Pascal 7.0

Анализ задания на курсовую работу

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

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

При написании программы используются функции стандартных модулей CTR, GRAPH, языка TURBO PASCAL.

График функции

В данной курсовой работе график будет строится в декартовой системе координат.

Функция существует на всем интервале.

Начальное и конечное значение интервала, на котором строится график, хранятся в переменных LFT и RHT соответственно переменные должны быть вещественного типа (REAL). Для построения графика функций используются переменные Х,У так же вещественного типа. В программе так же используются счетчики цикла (переменные целочисленного типа) переменные для хранения шага приращения по осям t и s, число горизонтальных и вертикальных линий сетки, так же переменные для хранения минимального и максимального значения по оси s и цены деления по осям s и t:

Nx, ny, dx, dy, lx, ly, i, j,ch, dxe, dyc, integer

Mash x, mash y, min y, max y: REAL.

Так же используются переменные MAXPICX, MAXPICY, типа INTEGER, которые показывают количество пикселей по оси s и t. Так же необходимы переменные для инициализации графического режима:

GRAPHDRIVER, GRAPHMODE, ERRCODE.

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

S, S1, S2: STRING.

2. Описание программы

2.1 Описание структуры программы

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

Во-первых, процедура okno которая отображает окна на экране. В этих окнах отображается математическая запись графика функции, информация о разработчике и вводятся коэффициенты. Для этого используются процедуры RECTANGLE, OUTTEXTXY.

Во-вторых, процедура INTER, которая осуществляет ввод интервала по t для которого строится график функции начальное значение t записывается в переменную LFT, а конечное значение в переменную RGH.

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

Процедура OSI осуществляет рисование осей и координатных линий.

Процедура Y_INTER предназначена для определения интервала по S, то есть находит минимальное и максимальное значение S. В этой процедуре используется функция F:REAL. Входными данными для этой функции являются коэффициент и текущее значение аргумента, которое хранится в переменной Х. Функция выдает результат типа REAL (вещественный). Переменной F присваивается значение функции. А так же осуществляется вывод интервала по S.

Процедура OZIFR позволяет оцифровать оси.

Также разработана процедура Zas, которая позволяет вывести на экран титульный лист. Для вывода используется процедура Outtextxy.

Процедура graphic позволяет построить график функции. Для этого используется функция f, описанная ранее. И несколько циклов со счетчиком.

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

Zas;

Okno;

INTER;

koef;

Osi;

Y_INTER;

Graphik;

OZIFR.

2.2 Описание работы программы

После запуска программы осуществляется вывод титульного листа, с помощью процедуры Zas. В этой процедуре используются процедуры модуля CRT, такие как gotoxy - переход на точку с указанными координатами, и outtextxy - вывод сообщения.

Затем выполняется процедура OKNO, где происходит инициализация графического режима, затем происходит установка фона и цвета с помощью функций SETBKCOLOR и SETCOLOR. Далее процедура OKNO с использованием процедур BAR, RECTANGLE вычерчивает на экране окна в которых отображается справочная информация. В этой процедуре используется так же следующие стандартные процедуры SETLINESTYLE - установка линий, SETTEXTSTYLE - установка стиля текста и процедура OUTTEXTXY - вывод строки с заданной позиции. Затем вызывается процедура INTER, которая осуществляет ввод начального и конечного значения аргумента t, в графическом режиме. Для вывода на экран числового значения используется процедура STR которая преобразует числовое значение в строковую переменную. Процедура KOEF осуществляет вывод коэффициентов на экран с помощью процедуры Outtext. После ввода интервала, на котором строится график и вывода коэффициентов вызывается процедура построения координатной сетки OSI. Сначала устанавливается тип линий и цвет. Сначала выводятся линии которые ограничивают область построения графика слева и снизу. Далее выводится название осей.

По оси абсцисс будет отображаться значение аргумента T, по оси ординат - значение функции S.

Далее задается число линий сетки. Оно одинаково по горизонтали и вертикали и определяется переменными nx=10; ny=10;

Затем определяется шаг расстановки линий по горизонтали и вертикали dx и dy. Далее устанавливается стиль линии и цвет. Потом устанавливается начальное значение по горизонтали и вертикали lx = 50, ly = 10.

Далее в цикле происходит увеличение координаты по оси T для перехода на следующую засечку. Так как оси координат уже начерчены, то сразу происходит переход на вторую засечку. Потом вычерчивается линия засечки по оси T, т.к. по оси S первой засечки нет, то сначала вычерчивается она, а только потом происходит переход следующую засечку.

После выполнения процедуры OSI запускается процедура Y_INTER. Переменные MAXPICX и MAXPICY показывают сколько пикселей по горизонтали и вертикали можно использовать для построения графика. Далее считается шаг изменения по оси X от пикселя к пикселю. Для этого используется переменная MASHX. Далее находится минимальное и максимальное значение функции. Для этого сначала полагаем MAXY = 1000000, MINY = 1000000, далее от начала интервала считаем значение и сравниваем это значение с максимальным и минимальным. Затем переходим к следующему пикселю и операция повторяется. После перехода всей области в переменных MAXY, MINY будут храниться минимальные и максимальные значения функции. Затем эти значения выводятся на экран с пояснительным текстом. После завершения процедуры Y_INTER происходит рисование графика с помощью процедуры GRaphik.

Сначала считается шаг изменения по оси S. Начальное значение интервала (переменная LFT). Вычисляется значение функции Y (переменная У). Затем переменной J присваивается значение функции в абсолютных координатах, затем с помощью процедуры PUTPIXEL высвечивается точка с координатами. Указатель перемещается в эту точку. Далее в цикле пока не будет пройдена вся область по оси T выполняются следующие действия. Значение X (абсциссы) увеличивается на шаг mashx. Считается значение функции (переменная Y). Считаются значения абсолютной координаты по S. И строится линия от текущей позиции до точки с полученными координатами. После того как завершается построение графика запускается процедура OZIFR которая производит оцифровку осей. Cначала, выбирается цвет линий. В переменную dxc записывается цена засечки. Переменной ch присваивается начальное значение интервала по T и это значение выводится под первой засечкой. Также вычисляется значение S в этой точке и проводится преобразование в строковую переменную. Далее в цикле происходит переход к следующей засечке. Значение Ch увеличивается на цену деления и выводится на экран. После завершения оцифровки оси S определяется цена деления по оси T. Оцифровка начинается с минимального значения и далее аналогично оцифровке оси T.

После завершения процедуры OZIFR программу ожидание нажатия на любую клавишу. После того как клавиша нажата происходит закрытие графического режима и программа завершает свою работу.

3. Блок схема алгоритма

Схема алгоритма процедуры ZAS.

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

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

Схема алгоритма процедуры okno

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

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

Схема алгоритма функции f

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

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

Схема алгоритма процедуры inter

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

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

Схема алгоритма процедуры koef

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

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

Схема алгоритма процедуры osi

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

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

Схема процедуры Y_inter

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

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

Схема алгоритма процедуры ozifr

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

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

Схема алгоритма процедуры Graphik

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

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

Схема алгоритма основной программы

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

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

4. Листинг программы

USES GRAPH, CRT;

Var

GraphDriver,GraphMode,ErrorCode:Integer;

s,s1,s2,s3:String;

lft,rgh,a,b,ch,dxc,dyc:Real;

nx,ny,dx,dy,lx,ly,i,j:Integer;

MaxPicX,MaxPicY:Integer;

mashX,mashY,miny,maxy,x,y:Real;

Procedure zas;

begin

textbackground(19);

clrscr;

textcolor(11);

gotoxy(12,2);

writeln('КУЗНЕЦКИЙ ИНСТИТУТ ИНФОРМАЦИОННЫХ И УПРАВЛЕНЧЕСКИХ ТЕХНОЛОГИЙ'); textcolor(5);

gotoxy(20,6);

writeln('КУРСОВОЕ ПРОЕКТИРОВАНИЕ ПО КУРСУ ИНФОРМАТИКА');

gotoxy(21,10);

textcolor(4);

writeln('ТЕМА ПРОЕКТА:');

gotoxy(35,10);

textcolor(7);

writeln('Разработка программы решения');

gotoxy(22,12);

writeln('задачи по расчету и построению графиков');

gotoxy(20,14);

writeln('функций в среде программирования Turbo Pascal.');

textcolor(4);

gotoxy(38,24);

writeln('2005г.');

gotoxy(22,18);

textcolor(1);

writeln('Выполнил студент гр. 04КМ1 Калашников В');

gotoxy(22,20);

writeln('Преподаватель: Шевченко Ольга Анатольевна');

readkey;

end;

{******** Исследуемая функция **********************}

Function f:real;

Begin

f:=a*x*x/2;

End;

procedure okno;

Begin

GraphDriver:=Detect;

InitGraph(GraphDriver,GraphMode,'d:\bp\bgi');

SetBkColor(0);

SetColor(White);

{************** Изображение окон *********************} SetColor(Brown);

SetLineStyle(0,0,3);

Rectangle(620,17,478,138);

Rectangle(620,152,478,400);

Rectangle(2,17,469,398);

SetTextStyle(0,HorizDir,1);

end;

{*************** Ввод интервала по Х ****************}

procedure inter;

begin

SetColor(Brown);

SetTextStyle(0,HorizDir,1);

OutTextXY(490,25,'Интервал по t:');

OutTextXY(490,70,'от до'); GotoXY(66,5);

Readln(lft);

GotoXY(74,5);

Readln(rgh);

Str(rgh:5:2,S);

end;

{********** Ввод коэффициентов **************}

procedure koef;

begin

OutTextXY(490,245,'a= ');

GotoXY(66,16);

Readln(a);

Str(a:5:2,S);

end;

{********* Рисование осей и координатных линий ************} procedure osi;

begin

SetViewPort(0,15,635,400,ClipOn);

SetLineStyle(0,0,1);

SetColor(5);

Line(50,10,50,350);

Line(50,350,460,350);

OutTextXY(5,10,'S');

OutTextXY(450,370,'T');

nx:=10; { Число вертикальных линий }

ny:=10; { Число горизонтальных линий } dx:=Round((460-50)/nx); { Шаг расстановки линий по х} dy:=Round((350-10)/ny); { Шаг расстановки линий по y} SetLineStyle(0,0,1);

SetColor(5);

lx:=50;

ly:=10;

For i:=1 To nx do

Begin

lx:=lx+dx;

Line(lx,10,lx,350);

Line(50,ly,460,ly);

ly:=ly+dy;

End;

end;

{ Определение интервала по Y }

procedure y_interval;

begin

MaxPicX:=460-50;

MaxPicY:=350-10;

MashX:=(rgh-lft)/MaxPicX;

MinY:=1000000;

MaxY:=-1000000;

x:=lft;

For i:=50 to 460 do

Begin

y:=f;

If y > maxY then maxY:=y;

If y < minY then minY:=y;

x:=x+mashX;

End;

{Вывод интервала по Y }

SetViewPort(0,0,GetmaxX,GetmaxY,ClipOn); SetColor(Brown); OutTextXY(500,300,'Интервал по Y:'); Str(minY:5:2,s1);

Str(maxY:5:2,s2); OutTextXY(480,320,'от'+s1+' до'+s2); end;

{Рисование графика }

procedure graphik;

begin

SetViewPort(10,15,480,400,ClipOn);

mashY:=(maxY-minY)/MaxPicY;

x:=lft;

y:=f; j:=(350+round(minY/mashy)-round(y/mashY)); PutPixel(60,j,red);

MoveTo(50,j);

For i:=51 to 460 do

Begin

x:=x+mashX;

y:=f; j:=(350+round(minY/mashy)-round(y/mashY)); LineTo(i-10,j);

End;

end;

{Оцифровка осей }

procedure ozifr;

begin

SetColor(4);

Dxc:=abs(rgh-lft)/nx;

lx:=2;

ch:=lft;

Str(ch:5:2,s);

OutTextXY(lx-57,355,s);

For i:=1 to nx do

Begin

lx:=lx+dx;

ch:=ch+dxc;

x:=ch;

y:=f;

str(y:5:2,s3);

Str(ch:5:2,s);

OutTextXY(lx,355,s);

s1:=s1+' '+s;

s2:=s2+' '+s3;

End;

dyc:=abs(maxY-minY)/ny;

ly:=345;

ch:=minY;

Str(ch:5:2,s);

OutTextXY(1,ly+52,s);

For i:=1 to ny do

Begin

ly:=ly-dy;

ch:=ch+dyc;

Str(ch:5:2,s);

OutTextXY(1,ly,s);

End; SetViewPort(0,0,GetmaxX,GetmaxY,ClipOn);

{ SetViewPort(10,410,620,480,ClipOn); }

SetTextStyle(0,HorizDir,1); outtextxy(12,420,'x= '+s1); outtextxy(12,440,'y= '+s2);

readln;

CloseGraph;

End;

{end;}

Begin

zas;

okno;

inter;

koef;

osi;

Y_interval;

graphik;

ozifr;

End.

5. Результаты тестирования программы

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

Заключение

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

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

Список использованной литературы

1. О. А. Меженный. TURBO PASCAL. Учитесь программировать. - М.: Диалектика, 2001г.

2. А. М. Епанешников, В. А. Епанешников. Turbo Pascal 7.0. - М.: «ДИАЛОГ-МИФИ», 2001г.

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

Приложение

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


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

  • История создания и развитие Pascal. Особенности пакета программирования Turbo. его возможности редактора текстов, компилятора и отладчика. Построения программы на языке Turbo Pascal, ее структура, типы алгоритмов, одномерные и многомерные массивы.

    курсовая работа [519,3 K], добавлен 25.06.2011

  • Векторная компьютерная графика. Графические примитивы. Графические возможности языка программирования Pascal. Методические рекомендации к изучению графики в языке программирования Pascal. Построение графиков функций.

    курсовая работа [28,3 K], добавлен 13.06.2007

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

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

  • История появления и распространения Turbo Pascal - среды разработки для языка программирования Паскаль. Общий вид объявления файлового типа. Входная, выходная и промежуточная информация. Алгоритм решения задачи: словесный алгоритм, блок-схема, программа.

    курсовая работа [359,4 K], добавлен 05.01.2010

  • Изучение текстового режима языка программирования Turbo Pascal. Написание игры "Змейка" с помощью средств, процедур и функций языка программирование Turbo Pascal. Структурное и функциональное описание разработки. Листинг и общие примеры работы программы.

    контрольная работа [286,3 K], добавлен 10.04.2011

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

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

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

    курсовая работа [41,5 K], добавлен 15.03.2012

  • Решение трансцендентного уравнения методом Ньютона. Построение графика функции. Блок-схема алгоритма решения задачи и программа решения на языке Pascal. Вычисление значения интеграла методом трапеции, блок-схема алгоритма, погрешности вычисления.

    задача [163,4 K], добавлен 16.12.2009

  • Переменные типа integer, real, их функции. Общее понятие о массиве, файлы для Pascal. Информационный и информанизационный набор списка. Реализация и тестирование программы. Выбор базы данных, внесение имени, меню. Блок-схема алгоритма, листинг программы.

    курсовая работа [306,0 K], добавлен 04.02.2013

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

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

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