Мегаобучалка Главная | О нас | Обратная связь


Описание процедуры risosei.



2018-06-29 313 Обсуждений (0)
Описание процедуры risosei. 0.00 из 5.00 0 оценок




· В данной процедуре указываются переменные, с которыми придётся в ней работать.

· Задаются параметры линий и цвет, количество линий сетки и расстояние между ними.

· Используя цикл, рисуем координатную сетку.

· Задав начальное значение икса и координату начала координатной сетки, рисуем в цикле координатную ось (Ох). Затем выравниваем значения всех указанных иксов около координатной оси.

· Задав начальное значение игрека и координату начала координатной сетки, рисуем в цикле координатную ось (Oу). Затем выравниваем значения всех указанных игреков около координатной оси.

 

ОПИСАНИЕ ПРОГРАММЫ

 

Программа предназначена для построения графика интерполяционного полинома по формулам кусочно-линейчатой интерполяции. Работа начинается с задавания переменных используемых в данной программе. В качестве переменных выступают: значения иксов и игреков, которым в процессе программы присваиваются значения. Далее идет описание глобальных переменных, необходимых для построения графика, оцифровки осей. За описанием переменных идет процедура init.

В процедуре init подключается и проверяется графический модуль.

Gr_driver:=detect; error_code:=graphresult; if error_code<>0 then;

 

Если в графическом модуле присутствует ошибка, то с помощью оператора halt выполняется выход из программы, если же всё в порядке, то программа продолжает выполнение последующих процедур.

Далее следует процедура linii. Она служит для построения таблицы значений. C помощью функции линий:line(40+n,100,40+n,160);

line(40,100,565,100); line(40,130,565,130); line(40,160,565,160);

 

После процедуры linii следует процедура zapol_st. В этой процедуре присваиваются значения иксам и игрекам, данные по заданию:

x0:=110;x1:=120;x2:=130;x3:=140;x4:=150;x5:=160;

y0:=0.23;y1:=0.56;y2:=0.15;y3:=0.1;y4:=0.27;y5:=0.2;

И по координатам заполняет этими значениями таблицу, построенную в процедуре linii посредством функции outtextxy.

Затем следует процедура gr, в которой, пользуясь формулой кусочно-линейчатой интерполяции, строятся линии. При этом так же устанавливается цвет этих линий, построение ведётся по точкам (пикселям). Так строится 1вая линия графика интерполяции.

x:=110;

until x>160;

b:=90;

Repeat

y:=(x-x1)/(x0-x1)*y0+(x-x0)/(x1-x0)*y1

PutPixel (191+round(x), round(a+(y*(-b))),1);

Delay (30);

x:=x+1;

a:=380;

 

За процедурой gr следует процедура risosei. В этой процедуре строится координатная сетка, производится оцифровка осей. Так строятся лини по горизонтали и вертикали в этой координатной сетке:

dx:=Round((600-250)/7); dy:=Round((450-200)/7);

Рисование координатной оси производится так:

line(250,200,250,450); line(250,450,600,450);

Заметим, что нужно задать изменение шага у иксов и игреков (x:=x+10;

y:=y+0.1) и выровнять эти значения у координатной оси (hx:=hx+50;

hy:=hy-dy), для этого используем локальные переменные (которые задали в данной процедуре).

После окончания последний процедуры мы вызываем все процедуры, используемые в программе:

Begin

init;

linii;

zapol_st;

risosei;

gr;

readln;

End.

И при запуске программы мы наблюдаем на мониторе график интерполяционного полинома и таблицу значений (Приложение С).

Затем следует конец программы.

 


ЗАКЛЮЧЕНИЕ

 

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

При выполнении задания, я уяснил постановку задачи, построил математическую модель задачи, составил алгоритм и перевел его на язык программирования Turbo Pascal.

Знакомство и практические навыки выполнения курсовой работы позволили мне лучше освоить и понять весь материал курса.


 

СПИСОК ЛИТЕРАТУРЫ

 

1. ГОСТ 19.701-90. Единая система программной документации. Схемы алгоритмов, программ, данных и систем.

2. ГОСТ 19.002-80. Единая система программной документации. Схемы алгоритмов и программ. Правила выполнения.

3. ГОСТ 19.003-80. Единая система программной документации. Схемы алгоритмов и программ. Обозначения условные графические.

4. ГОСТ 19.402-78. Единая система программной документации. Описание программы.

5. Фараонов, В. В. Турбо Паскаль. Наиболее полный курс: учеб. пособие для опытных программистов / В. В. Фараонов. – М.: Нолидж, 2001. – 1033 с.

6. Волков Е. А. Численные методы, М.: Наука, 1982г.

7. Самарский А. А. Введение в численные методы, М.: 1982 г.

8. Д. Каханер, К. Моулер, С. Нэш Численные методы и программное обеспечение (перевод с английского), М.: 1998 г.

9. Буслов В. А., Яковлев С. Л. Численные методы I и II, Санкт-Петербург: 2001 г.

 

Приложение А
program Kursovaja;

uses crt, graph;

var

i,a,b,n:integer;

x,x1,x2,x3,x4,x5,x0: real;

y,y1,y2,y3,y4,y5,y0: real;

t1:string;

 

procedure init; {процедура подключение графического модуля}

var gr_driver, gr_mode, error_code:integer;

begin

Gr_driver:=detect; {Автоматически определяем графический драйвер}

initgraph(gr_driver,gr_mode,''); {Инициализация графического режима - файл с дравером должен располагаться в текущем каталоге}

error_code:=graphresult; {Проверяем ошибки}

if error_code<>0 then {установление правильности графика}

begin

writeln('сообщение об ошибке',grapherrormsg(error_code));

halt; { Выход из программы}

end;

end;

 

procedure linii; {процедура постройки линий для таблицы}

begin

n:=0;

for i:=1 to 8 do

 

begin

line(40+n,100,40+n,160); {рисует параллельные линии по вертикали}

n:=n+75; {расстояние между линиями}

end;

line(40,100,565,100); {рисует линию по горизонтали}

line(40,130,565,130); {рисует линию по горизонтали}

line(40,160,565,160); {рисует линию по горизонтали}

end;

 

 

procedure zapol_st; {процедура заполнения таблицы, данными по заданию значениями}

begin

setcolor(3); {задаём цвет (Cyan- бирюзовый)}

x0:=110;x1:=120;x2:=130;x3:=140;x4:=150;x5:=160;

y0:=0.23;y1:=0.56;y2:=0.15;y3:=0.1;y4:=0.27;y5:=0.2;

outtextxy(125,150,'0.23'); {заполнение таблицы значениями Y}

outtextxy(200,150,'0.56'); {заполнение таблицы значениями Y}

outtextxy(275,150,'0.15'); {заполнение таблицы значениями Y}

outtextxy(350,150,'0.1'); {заполнение таблицы значениями Y}

outtextxy(425,150,'0.27'); {заполнение таблицы значениями Y}

outtextxy(500,150,'0.2'); {заполнение таблицы значениями Y}

outtextxy(125,120,'110'); {заполнение таблицы значениями Х}

outtextxy(200,120,'120'); {заполнение таблицы значениями Х}

outtextxy(275,120,'130'); {заполнение таблицы значениями Х}

outtextxy(350,120,'140'); {заполнение таблицы значениями Х}

outtextxy(425,120,'150'); {заполнение таблицы значениями Х}

outtextxy(500,120,'160'); {заполнение таблицы значениями Х}

outtextxy(70,120,'x'); {заполнение таблицы значениями Х}

outtextxy(70,150,'y'); {заполнение таблицы значениями Y}

end;

 

procedure gr; {процедура построения графика интерполяционного полинома}

begin

x:=110; {координата начала для 1вой линии}

a:=380; {выравнивание по координатам на оси ОY}

b:=90; {выравнивание по координатам на оси ОY}

repeat

y:=(x-x1)/(x0-x1)*y0+(x-x0)/(x1-x0)*y1; {формула линейной интерполяции }

PutPixel (191+round(x), round(a+(y*(-b))),1); {строим прямую по точкам синим (Blue) цветом}

Delay (30); {приостанавливает программу на 30 миллисекунд}

x:=x+1; {скорость рисования одной точки}

until x>160;

x:=160; {координата начала для 2вой линии}

a:=120; {выравнивание по координатам на оси ОY}

b:=85; {выравнивание по координатам на оси ОY}

repeat

y:=(x-x2)/(x1-x2)*y1+(x-x1)/(x2-x1)*y2; {формула линейной интерполяции }

PutPixel (191+round(x), round(a+(y*(-b))),2); {строим прямую по точкам зелёным (Green) цветом}

Delay (30); {приостанавливает программу на 30 миллисекунд}

x:=x+1; {скорость рисования одной точки}

until x>210;

x:=210; {координата начала для 3ий линии}

a:=363; {выравнивание по координатам на оси ОY}

b:=90; {выравнивание по координатам на оси ОY}

repeat

y:=(x-x3)/(x2-x3)*y2+(x-x2)/(x3-x2)*y3; { формула линейной интерполяции }

PutPixel (191+round(x),round(a+(y*(-b))),4); {строим прямую по точкам красным (Red) цветом}

delay(30); {приостанавливает программу на 30 миллисекунд}

x:=x+1; {скорость рисования одной точки}

until x>260;

x:=260; {координата начала для 4ой линии}

a:=590; {выравнивание по координатам на оси ОY}

b:=85; {выравнивание по координатам на оси ОY}

repeat

y:=(x-x4)/(x3-x4)*y3+(x-x3)/(x4-x3)*y4; {формула линейной интерполяции }

PutPixel (191+round(x),round(a+1+(y*(-b))),5); {строим прямую по точкам фиолетовым (Magenta) цветом}

delay(30); {приостанавливает программу на 30 миллисекунд}

x:=x+1; {скорость рисования одной точки}

until x>308;

x:=308; {координата начала для 5ой линии}

a:=280; {выравнивание по координатам на оси ОY}

b:=70; {выравнивание по координатам на оси ОY}

repeat

y:=(x-x5)/(x4-x5)*y4+(x-x4)/(x5-x4)*y5; {формула линейной интерполяции }

PutPixel (191+round(x),round(a+(y*(-b))),6); {строим прямую по точкам коричневым (Brown) цветом}

delay(30); {приостанавливает программу на 30 миллисекунд}

x:=x+1; {скорость рисования одной точки}

until x>358;

end;

 

procedure risosei; {продцедура построения координатной сетки, и координатных осей}

var dx,dy,lx,ly,hx,hy:integer;

begin

SetLineStyle(1,0,0); {задаём текущие параметры линий}

SetColor(3); {задаём цвет линий (Cyan- бирюзовый)}

dx:=Round((600-250)/7); {количество линий по горизонтали}

dy:=Round((450-200)/7); {количество линий по вертикали}

line(250,200,250,450); {рисовании оси ОY по координатам}

line(250,450,600,450); {рисовании оси ОХ по координатам}

lx:=250; {расстановка линий координатной сетки по вертикали с данной координаты}

ly:=200; {расстановка линий координатной сетки по горизонтали с данной координаты}

for i:=1 to 7 do

begin {построение координатной сетки}

lx:=lx+dx; {соединяет линии построенные по горизонтали и вертикали}

line(lx,200,lx,450); {ограничивает линии в данных диапазонах (по вертикали)}

line(250,ly,600,ly); {ограничивает линии в данных диапазонах (по горизонтали)}

ly:=ly+dy; {расстояние между линиями координатной сетки}

end;

setcolor (7); {задаём цвет значений на осях координатной сетки (LightGray - светло-серый)}

hx:=225; {координата начала координатной сетки по Ox}

x:=100; {начальное значение Х-ов}

for i:=1 to 8 do

begin { построение оси Ох}

Str(x:5:0,t1); {записывает результат в строку t1 с установленным типом Х-ов}

OutTextXY(hx,460,t1); {выравнивание по вертикали все значения Х-ов }

x:=x+10; {увеличивает значение Х-ов на 10}

hx:=hx+50; {расстояние между иксами на координатной сетке}

end;

hy:=447; {координата начала координатной сетки по Oy}

y:=0; {начальное значение Y-ов}

for i:=1 to 8 do

begin { построение оси Оy}

Str(y:5:2,t1); {записывает результат в строку t1 с установленным типом Y-ов}

OutTextXY(210,hy,t1); {выравнивание по горизонтали все значения Y-ов }

y:=y+0.1; {увеличивает значение Y-ов на 0.1}

hy:=hy-dy; {расстояние между игреками на координатной сетке}

end;

end;

 

 

begin {вызов процедур используемых в программе}

init;

linii;

zapol_st;

risosei;

gr;

readln;

end.

 

Приложение Б

 

Блок схема основной программы:

 

       
 
   
 

 


i,a,b,n:integer; x,x1,x2,x3,x4,x5,x0: real; y,y1,y2,y3,y4,y5,y0: real; t1:string;  

 

 

 

 

 


 

       
   
 
 

 

 


Процедура init

 

 

 

 

Процедура linii

 

n- переменная построения линий в таблице значений i – переменная цикла

 

Процедура zapol_st

 

 

 

Процедура gr

 

 

x:=110 a:=380 b:=90  
y:=(x-x1)/(x0-x1)*y0+ +(x-x0)/(x1-x0)*y1
да
  x:= x+1  
x:=160 a:=120 b:=85  
y:=(x-x2)/(x1-x2)*y1+ +(x-x1)/(x2-x1)*y2
  x:= x+1  
нет

x:=210 a:=363 b:=90  
y:=(x-x3)/(x2-x3)*y2+ +(x-x2)/(x3-x2)*y3
  x:= x+1  
x:=260 a:=590 b:=85  
y:=(x-x4)/(x3-x4)*y3+ +(x-x3)/(x4-x3)*y4
  x:= x+1  

 

 


 

Процедура risosei

 

Переменные, используемые для построения координатной сетки и регулировки положение её на экране
Количество линий сетки по горизонтали (dx) и по вертикали (dy)
Расстояние между линиями сетки по горизонтали (ly) и по вертикали (lx) i- Переменная цикла

 

 

 


 

 

Приложение С

 



2018-06-29 313 Обсуждений (0)
Описание процедуры risosei. 0.00 из 5.00 0 оценок









Обсуждение в статье: Описание процедуры risosei.

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

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



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (313)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)