Использование графических операторов в Borland Paskal

Міністерство  Освіти і Науки , Молоді та Спорту України

Національний Технічний Університет «ХПІ»

Кафедра «Гідравлічні і пневматичні машини» 
 
 
 

КУРСОВА РОБОТА

З інформатики 
 
 
 
 

      Виконав:

      студент Дикий Р. 0

      група ЕМ-30

      Перевірив:

      Гришин О.М. 
 

Харків 2011

             Зміст

1  Використання графічних  операторів у Borland Pascal 3

1.1 Деталь накреслена в Microsoft Office Visio 3

1.2 Текст програми , що креслить з’єднання деталей , написаної  в  середі програмування  Turbo Pascal 3

1.3 Список  підпрограм 8

1.3.1 Процедура яка креслить  шпильку 8

1.3.2  Процедура яка креслить верхню гайку із шайбою 9

1.3.3 Процедура яка креслить нижню гайку із шайбою 9

1.3.4 Процедура яка креслить  капелюшок болта 10

1.3.5 Процедура яка  креслить осьову  лінію 10

1.3.6 Процедура  яка  креслить дві з’єднанні  деталі 10

1.3.7 Процедура що показує відстань між центрами двох шпильок 11

1.4 Результат роботи програми 11

2 Знаходження коренів нелінійного рівняння 12

2.1 Знаходження коренів нелінійного рівняння графічним методом 12

2.1.1 Текст програми для розрахунку з функції 12

2.1.2 Результат роботи програми 13

2.1.3 Побудова графіка функції за допомогою “Grapher ” 13

2.2 Знаходження коренів нелінійного рівняння методом порозрядного наближення 14

2.2.1 Текст програми 15

2.3 Знаходження коренів нелінійного рівняння за допомогою MS Office Excel 16

Список  джерел 17 
 

             1  Використання графічних операторів у Borland Pascal

       1.1 Деталь накреслена в Microsoft Office Visio

1.2 Текст програми , що креслить з’єднання деталей , написаної в середі програмування Turbo Pascal

             program IIInuJLbka;

             uses crt,graph;

             var

             gd,gm:integer;  df,dr,dx,dy,dd,dp:integer;

             procedure Shp(x,y,l,d:integer);

             begin

             dr:= y+l+round(d*0.2);

             df:= round(d*0.1);

               setcolor(15);

               bar(x,y,x+d,y+L);{Zakrashivayushiy pryamougolnik}

               rectangle(x,y,x+d,y+L);{OSNOVA SHPILKI}

               line(x,y,x+df,y-round(d*0.2));{Granb V tr l}

              line(x+d,y,x+d-df,y-round(d*0.2));{Granb v tr p}

                

                line(x+df,y-round(d*0.2),x+d-df,y-round(d*0.2));{Liniya v tr}

                 line(x,y+l,x+df,dr);{Granb nijney trap. l}

                 line(x+d,y+l,x+d-df,dr);{Granb Nijney trap. p}

                line(x+df,dr,x+d-df,dr);{Krishka nijney trap.}

                setcolor(15);

                line(x+round(0.1*d),y-Round(d*0.2),x+round(0.1*d),dr);{Rezba l}

          line(x+d-round(0.1*d),y-round(d*0.2),x+d-  round(0.1*d),dr);{Rezba }

     end; 

             procedure  GaykaV(x,y,d:integer);

             begin

                   dx:=x-round(0.6*d); dd:=round(d*0.35);

                   dy:=round(d*0.8);dr:=round(d*0.15);

                   bar(dx,y-round(0.8*d),x+d+round(0.6*d),y);

                   rectangle(dx,y-round(0.8*d),x+d+round(0.6*d),y);{Gayka}

                   arc(dx+dd, y-round((0.8*d)/1.9), 0, 180,dd);

                   arc(dx+(dd*3),y-round((0.8*d)/1.9),0,180,dd);

                   arc(dx+(dd*5),y-round((0.8*d)/1.9),0,180,dd);

                   line(dx+(dd*2), y-round((0.8*d)/1.9),x-

                   round(0.6*d)+(dd*2), y);

            line(dx+(dd*4), y-round((0.8*d)/1.9),x-round(0.6*d)+(dd*4), y);

                   bar(dx-dr,y,x+d+round(0.6*d)+dr,y+round(0.2*d));

            rectangle(dx-dr,y,x+d+round(0.6*d)+dr,y+round(0.2*d));{Shayba}

             end; 

             procedure  GaykaN(x,y,d:integer);

             begin

            dx:=x-round(0.6*d); dd:=round(d*0.35); dy:=round(d*0.8); dr:=round(d*0.15);

                   bar(dx,y-round(0.8*d),x+d+round(0.6*d),y);

                   rectangle(dx,y-round(0.8*d),x+d+round(0.6*d),y);{Gayka}

                   arc(dx+dd, y-round((0.7*d)/1.9), 180, 0,dd);{duga1 n}

                   arc(dx+(dd*3),y-round((0.7*d)/1.9),180,0,dd);{duga2 n}

                   arc(dx+(dd*5),y-round((0.7*d)/1.9),180,0,dd);{duga3 n}

                   line(dx+(dd*2), y-round(0.23*d),dx+(dd*2), y-dy);

                   line(dx+(dd*4), y-round(0.23*d),dx+(dd*4), y-dy);

                   bar(dx-dr,y-dy,x+d+round(0.6*d)+dr,y-dy-round(0.2*d));

            rectangle(dx-dr,y-dy,x+d+round(0.6*d)+dr,y-dy-round(0.2*d));{Shayba}

             end; 

             procedure  Shlyapka(x,y,d:integer);

             begin

                   dx:=x-round(0.6*d); dd:=round(d*0.35); dy:=round(d*0.8);

                   bar(dx,y-round(0.8*d),x+d+round(0.6*d),y);

                   rectangle(dx,y-round(0.8*d),x+d+round(0.6*d),y);{Gayka}

                   arc(dx+dd, y-round((0.8*d)/1.9), 0, 180,dd);

                   arc(dx+(dd*3),y-round((0.8*d)/1.9),0,180,dd);

                   arc(dx+(dd*5),y-round((0.8*d)/1.9),0,180,dd);

            line(dx+(dd*2), y-round((0.8*d)/1.9),x-round(0.6*d)+(dd*2), y);

            line(dx+(dd*4), y-round((0.8*d)/1.9),x-round(0.6*d)+(dd*4), y);

             end; 

             procedure Midline(x,y,l,d:integer);

             begin

                  setlinestyle(4,$ff18,1);{Stil Linii}

         line(x+round(d/2),y-round(l/5),x+round(d/2),y+l+round(l/5));{osevaya liniya}

             end;

             procedure Detal(x,y:integer);

             var k,l:integer;

             begin

                setlinestyle(0,15,1);

                setbkcolor(0);{Cvet FONA}

                setcolor(15);{Cvet detali}

                moveto(x,y);

                linerel(500,0);{N liniya detali}

                linerel(0,-140);{Praviy bok}

                linerel(-150,0);

                linerel(0,40);

                linerel(-200,0);

                linerel(0,-40);

                linerel(-150,0);

                linerel(0,140);{leviy bok}

                moveto(x,y-60);

                linerel(130,0);

                linerel(0,15);

                linerel(240,0);

                linerel(0,-15);

                linerel(130,0);

                moveto(200,y-52);{Prokladka}

                linerel(240,0);

                setfillstyle(8,15);

                floodfill(203,y-48,15);

                dx:=200;

                dy:=y-52;

                repeat

                    line(dx,dy,dx+4,dy-4);

                    line(dx+4,dy-4,dx+8,dy);

                    dx:=dx+8;

                until dx>=440;

                setfillstyle(5,8);{Stil Zalivki nijney detali}

                floodfill(x+2,y-2,15);{zalivka nijney detali}

                setfillstyle(4,8);

                floodfill(202,y-65,15);{zakraska v detali}

             end; 

             procedure razm(x1,x2,y:integer);

               begin

                    setlinestyle(0,15,1);

                    line(x1+15,y-38,x2+15,y-38);{osnovanie vinoski}

                    moveto(x2+15,y-38);{Strelka right}

                    linerel(-9,3);

                    moveto(x2+15,y-38);

                    linerel(-9,-3);

                    moveto(x1+15,y-38);{Strelka LEFT}

                    linerel(9,3);

                    moveto(x1+15,y-38);

                    linerel(9,-3);

                    moveto(x1+180,y-46);

                    outtext('500');

             end; 

             begin

                  initgraph(gd,gm,'x:\tp\egavga.bgi');

                  detal(70,300);

                  Shp(125,115,230,30);

                  gaykaV(125,153,30);

                  gaykaN(125,331,30);

                  Shp(500,115,230,30);

                  gaykaV(500,153,30);

                  gaykaN(500,331,30);

                  Shp(295,181,155,30);{bolt}

                  Shlyapka(295,199,30);

                  gaykaN(295,331,30);

                  midline(295,181,155,30);

                  midline(125,125,200,30);{osevie liniyi}

                  midline(500,125,200,30);

                  razm(125,500,125);

                     readkey;

                  closegraph;

             end.

             1.3 Список  підпрограм

             1.3.1 Процедура  яка креслить шпильку

                  Shp(x,y,l,d:integer); 

             Параметрами  x,y  задаються координати  лівого нижнього краю деталі. Параметром  l   задається  довжина деталі. Параметром  d  задається ширина деталі. Усі параметри цілого типу.

             1.3.2 Процедура яка креслить верхню гайку із шайбою

 

             GaykaV(x,y,d:integer);  

             Параметрами  x,y  задаються координати  лівого нижнього краю гайки.

Параметром  d  задається діаметр гайки. Усі параметри цілого типу.  
 

             1.3.3 Процедура  яка креслить нижню гайку із шайбою

             GaykaN(x,y,d:integer);

             Параметрами  x,y  задаються координати  лівого нижнього краю гайки. Параметром  d  задається діаметр гайки. Усі параметри цілого типу.

             1.3.4 Процедура яка креслить  капелюшок болта

             Shlyapka(x,y,d:integer);

             Параметрами  x,y  задаються координати  лівого нижнього краю капелюшка. Параметром  d  задається діаметр капелюшка. Усі параметри цілого типу.

             1.3.5 Процедура яка креслить осьову лінію

             Midline(x,y,l,d:integer);

             Параметрами  x,y  задаються координати  лівого нижнього краю деталі , для якої креслиться осьова лінія. Параметри l,d  допоміжні. Усі параметри цілого типу.

             1.3.6 Процедура  яка креслить дві з’єднанні деталі

             Detal(x,y:integer);

             Параметрами  x,y  задаються координати  лівого нижнього краю деталі. Усі параметри цілого типу.

             1.3.7 Процедура що показує відстань між центрами двох шпильок

             razm(x1,x2,y:integer);

             Параметрами  x1, x2 задаються іксові координати осьових  ліній шпильок. Параметром  у  задається висота розмірної лінії.

             

             1.4 Результат роботи програми

              Програма виконує креслення двох деталей з’єднаних двома шпильками та болтом.

 

             

             2 Знаходження коренів нелінійного рівняння

    2.1 Знаходження коренів нелінійного рівняння графічним методом

             2.1.1 Текст програми для розрахунку з функції

             uses crt;

             var x,y:real;f:text;

             begin

             clrscr;

             assign(f,'123.txt');

             rewrite(f);

               x:=0;

               repeat

                 y:=sin(x)-x+0.15;

               x:=x+0.1;

                writeln(f,x:4:3,'   ',y:4:3);

               until x>2;

             close(f);

             readkey;

             end. 
 
 
 
 
 
 

             2.1.2 Результат роботи програми

                   X              Y
                   0,100              0,150
                   0,200              0,149
                   0,300              0,146
                   0,400              0,139
                   0,500              0,129
                   0,600              0,115
                   0,700              0,094
                   0,800              0,067
                   0,900              0,033
                   1,000              -0,009
                   1,100              -0,059
                   1,200              -0,118
                   1,300              -0,186
                   1,400              -0,265
                   1,500              -0,353
                                   

             2.1.3 Побудова графіка функції за допомогою “Grapher ”

             

             Чорна точка на графіку  – корінь рівняння (перетин графіка  з віссю Х), згідно з графіком X≈0.9

             2.2 Знаходження коренів нелінійного рівняння методом порозрядного наближення

             Метод порозрядного наближення. Перевага  цього  методу  полягає  у  можливості пошуку усіх коренів  відрізка [а,в] він дозволяє відмовитись  від підготовчого етапу  знаходження  та відсіювання коренів.

             2.2.1 Текст програми

             uses crt;

             const r=4;eps=1e-5;h=100*eps;x_end=10;

             var c,x,y:real;i,n,k,w:integer;

             function sign(x:real):integer;

             begin

               sign:=0;

                if x>0

                  then sign:=1

                  else if x<0 then sign:=-1;

             end;

             function f(x:real):real;

             begin

                f:= SIN(x)-x+0,15;

             end;

             {++++++++++++++++++++++++++++++++++}

             begin

               clrscr;

               x:=-10;

               c:=h;

               w:=sign(f(x));

               repeat

                 repeat

                   x:=x+c;

                   if f(x)*w/c<0

                     then c:=-c/r;

                   if x>x_end

                     then

                       begin

                         readkey;

                         exit;

                       end;

                 until (abs(c)<eps/r);

                 c:=h;

                 w:=sign(f(x));

                 writeln('root=',x:8:5);

               until false;

               readkey;

             end.  

             Результатом роботи програми є знайдений корінь , який дорівнює  Х=0.980 

 

             

             2.3 Знаходження коренів нелінійного рівняння за допомогою MS Office Excel

             Вводимо початкове значення Х пошуку в комірку А2, формулу записуємо у комірку В2.

             
                            A2              B2
                            0,6                            = SIN(A2)-A2+0,15
              
 
 

             Коренем рівняння є значення в комірці А2 у випадку, коли у комірці В2 значення функції буде дорівнювати 0. Для знаходження кореня використовуємо пункт меню Сервіс->Підбір параметра.  

             

             
                            A2              B2
                            0,980              0
              
 
             
             Х              У
             0,820              0,061
             0,840              0,055
             0,860              0,048
             0,880              0,041
             0,900              0,033
             0,920              0,026
             0,940              0,018
             0,960              0,009
             0,980              0,000
             1,000              -0,009
             1,020              -0,018
              

             Корінь рівняння можна  побачити у комірці А2.

             Список джерел

             1. Фаронов В.В. Turbo Pascal. Курс для начинающих. М.-2005.

             2. Поляков, Круглов.  Язык программирования Turbo Pascal.-М.:МАИ, 1992.

             3. Абрамов, Трифонов, Трифонова.  Введение в язык Паскаль.-М.:Наука, 1988.

             4. Фурунжиев В.И., Бабушкин  Ф.М. Применение математических  методов и ЭВМ. Практикум: Учеб. пособие для вузов. –М.:Наука,1988.

             5. Численные методы: Учеб. для техникумов /Под ред. Н.И.  Данилина.-М.: Высш.шк.,1976. 
 

Использование графических операторов в Borland Paskal