Реферат: Трассировка печатной платы

Министерство народного образованияРоссийской Федерации

КиГИТ

Кафедра информатики

 вычислительной техники

 

Курсовая работа

По курсу « Программирования ВТ  и  АС »

На тему: «Трассировка печатной платы»

Разработал:                                     студент группы ДПО-42       КудрявцевК.В.

 

Принял:                                           к.т.н., доцент кафедры ВТ  Гафаров Р.М.

Ижевск 2005

Текст программы

Рrogramplata;  {Находит кротчайший путь от одной точки до другой}           

uses crt;            {не пересекая уже проведенные линии}                         

constXm=80;Ym=24; c:word=14;                                                

      d:array[0..3]of record x,y:integerend=                                 

       ((x:-1;y:0),(x:0;y:-1),(x:1;y:0),(x:0;y:1));                          

      str='* — draw; <st1:State w:st=«on»><st1:place w:st=«on»>del</st1:place></st1:State> — clear; 1,2 — contact pointers;';                  

type  plt=array[1..Ym,1..Xm] of integer;                                      

var   Pl:plt;  ch:char;    x1,y1,x2,y2,s:integer;   p1:boolean;             

{-----------------------------------------------------------------------------------------------------------------}   

procedureInitPlata;                                       {Создаетфонэкрана}                                     

varx,y:integer;                                                             

beginTextBackGround(0);TextColor(7);                                         

 for y:=1 to Ym do for x:=1 to Xm do  begin Pl[y,x]:=0; write('.'); end;     

end;                                                                         

{-----------------------------------------------------------------------------------------------------------------}  

procedureClrPlata; {Восстанавливает экран в прежний вид послепрохождения}

var x,y:integer;                      {волны оставляяпроведенные линии}                      

beginTextBackGround(0);TextColor(7);                                         

 for y:=1 to Ym do for x:=1 to Xm do                                          

  if Pl[y,x]>0 then begin Pl[y,x]:=0;GotoXY(x,y); write('.'); end;           

end;      

{----------------------------------------------------------------------------------------------------------------}  

procedure Trassa(xn,yn,xk,yk:integer);{Этапроцедуранаходиткротчайший}   

var xt,yt,x1,y1,min,xp,yp,p:integer;          {путь от одной точки до другой}     

beginxt:=xk; yt:=yk; Pl[yt,xt]:=-1;                                         

 repeat min:=maxint;                                                          

  for p:=0 to 3 do                                                            

   begin x1:=xt+d[p].x; y1:=yt+d[p].y; Sound(p*abs((xk-x1)*(yk-y1)));        

    if(x1>0)and(x1<=Xm)and(y1>0)and(y1<=Ym)and(Pl[y1,x1]>0)and(Pl[y1,x1]<min)

      then begin min:=Pl[y1,x1]; xp:=x1; yp:=y1;end;                        

   end;                                                                       

  xt:=xp; yt:=yp; Pl[yt,xt]:=-1; TextColor(9+c mod6);                       

  GotoXY(xt,yt); write(#219); Delay(130);                                     

 until (xt=xn)and(yt=yn);                                                     

 TextColor(12); GotoXY(xn,yn); write(#219); GotoXY(xk,yk);write(#219);      

 NormVideo; ClrPlata; inc(c); NoSound;                                       

end;                                                                          

{---------------------------------------------------------------------------------------------------------------}   

procedurevolna(xn,yn,xk,yk:integer; var s:integer); {Процедурапрохожденияволны}                       

var A:array[1..600] of record x,y:integer; end;                             

    i,p,k,l,xt,yt,x1,y1,ia,ib,f:integer;                                     

begin f:=2;Pl[yn,xn]:=1; A[1].x:=xn; A[1].y:=yn; ib:=300; ia:=1; k:=1;      

repeatl:=0;  {Sound(l*170);}                                                

  for i:=ia to ia+k-1 do                                                      

   begin xt:=A[i].x; yt:=A[i].y;Sound(i*70);                                 

    for p:=0 to 3 do                                                          

     begin x1:=xt+d[p].x; y1:=yt+d[p].y; Sound(p*k*7);                       

     if(x1>0)and(x1<=Xm)and(y1>0)and(y1<=Ym)and(Pl[y1,x1]=0)then           

       begin A[ib+l].x:=x1; A[ib+l].y:=y1; inc(l);TextColor(9+f mod 6);     

        Pl[y1,x1]:=f; GotoXY(x1,y1); write((f mod10):1);                    

        if(x1=xk)and(y1=yk)then begin NoSound;s:=0;exit;end; Delay(13);     

       end;                                                                   

     end;                                                                     

   end;                                                                       

  i:=ia;ia:=ib; ib:=i; k:=l; inc(f);                                         

 until l=0; NoSound;                                                          

 s:=1; GotoXY(20,25); TextColor(12); write(‘ Трасса не может быть проведена!!!’);

 Delay(3000); GotoXY(xk,yk); TextColor(7); write('.');GotoXY(20,25);        

 write(str); ClrPlata;                                                        

end;                                                                          

{----------------------------------------------------------------------------------------------------------------}     

begin                                                                         

 ClrScr; InitPlata; GotoXY(20,25); write(str); GotoXY(40,12);  p1:=false;    

  repeat                                                                      

  ch:=ReadKey; if ch=#0 then ch:=ReadKey;                                     

  case ch of                                                                  

{up}   #72: if WhereY=1 then GotoXY(WhereX,24) elseGotoXY(WhereX,WhereY-1); 

{left} #75:if WhereX=1 then GotoXY(80,WhereY) else GotoXY(WhereX-1,WhereY); 

{right}#77:GotoXY((WhereX+1) mod 80+(WhereX+1) div 80 ,WhereY);             

{down} #80:GotoXY(WhereX,(WhereY+1) mod 25+(WhereY+1) div 25);              

{*} #56:begin Pl[WhereY,WhereX]:=-1; TextColor(10);write(#176); GotoXY(Where X-1,WhereY);

{<st1:State w:st=«on»><st1:place w:st=«on»>del</st1:place></st1:State>}  #83: begin Pl[WhereY,WhereX]:=0;  write('.'); GotoXY(WhereX-1,WhereY);end;

{1}    #49: if(not p1)and(Pl[WhereY,WhereX]=0)                                

             then begin x1:=WhereX; y1:=WhereY;p1:=true;                    

              TextBackGround(14);TextColor(12);write(#176);NormVideo; end;  

{2}    #50: if p1 and(Pl[WhereY,WhereX]=0)                                   

             then begin x2:=WhereX; y2:=WhereY;p1:=false;                   

              TextBackGround(14);TextColor(12);write(#176);NormVideo;       

              Volna(x1,y1,x2,y2,s);                                           

              if s=0 then trassa(x1,y1,x2,y2);  end;                         

  end;                                                                        

 until ch=#27;                                                                

 NormVideo;                                                                   

END.                                                                         

 

                                                                  

<img src="/cache/referats/20380/image002.gif" v:shapes="_x0000_i1025">

Результаты моделирования программы нареальной ЭВМ

<img src="/cache/referats/20380/image004.jpg" align=«left» hspace=«12» v:shapes="_x0000_s1035">        

 

<img src="/cache/referats/20380/image005.gif" v:shapes="_x0000_s1040">


<img src="/cache/referats/20380/image007.jpg" align=«left» hspace=«12» v:shapes="_x0000_s1036">

<img src="/cache/referats/20380/image008.gif" v:shapes="_x0000_s1041">


<img src="/cache/referats/20380/image010.jpg" align=«left» hspace=«12» v:shapes="_x0000_s1037">

Задание

Составить программутрассировки платы (программа, которая соединяет две точки линией кротчайшимпутем, не пересекаясь и обходя все препятствия).

Цель работы

Целью курсового проектирования являетсяприобретение и закрепление навыков в организации вычислительных процессов ипрограммирования на алгоритмическом языке ПАСКАЛЬ. Основной акцент в работеуделяется рассмотрению модульного программирования, использованию процедур и функций.Полученные знания помогут в будущем более эффективно подходить к процессуразработки программного обеспечения.

Постановка задачи

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

 

                                                                

Анализ и разработка алгоритма

<img src="/cache/referats/20380/image012.jpg" align=«left» hspace=«12» v:shapes="_x0000_s1027">Эта программа работает на принципе волны

которая начинаетраспространяться от первой

точки заполняя экран числамиот 0 до 9 пока

не достигнет второй точки см. рис.1.

Волна работает по такому принципу:

<img src="/cache/referats/20380/image013.jpg" align=«left» hspace=«12» v:shapes="_x0000_s1028">Когда вы ставите первую точку

то с этого места экран начнет

заполняться числами

Волна начинает расходиться

рис.2          с 1 и до 0 т. е. место которое вы

отметили первой точкой

на волне будет отмечено единицей«1»,

вокруг нее появляются двойки,вокруг двоек тройки                                                                                    рис.1

 и т.д. до нуля, после нуля все начинается с 1

 см.рис2. Как только волна достигнет второй точки              

см. рис.1распространение прекращается и начинает проводитьсялиния между точками(линии не могут пересекаться потому что после того как линиябудет создана место где она находится будет отмечено отрицательными числами, апри распространении волны экран заполняется положительными числами т.е. линияможет пройти только по положительным числам). Прежде чем пройдет трасса отодной точки до другой сначала пройдет волна и если нет мест отмеченныхотрицательными числами — (уже проведенные лини или что-то нарисовано), трассапройдет напрямую ко второй точке, а если есть места отмеченные отрицательнымичислами, то трасса идет напрямую ко второй точке, огибает преграду и доходитдо  второй точки не пересёкшись с другойлинией.  Выбор места установки контактов (первойи второй точек) производится  пользователемпри помощи курсора.

<img src="/cache/referats/20380/image015.jpg" align=«left» hspace=«12» v:shapes="_x0000_s1029">Принцип работы процедуры управления курсоромзаключается в том, что экран имеет размеры 80x25 верхний левый угол имеет координаты — (1,1), правыйнижний — (80,25) и если при движении курсора по оси Х курсор доходит конца экрана(например — 80), т.к. курсор не может переходить дальше координаты (80), то онавтоматически становится на начальную позицию см. рис. 3. То же самое происходит с курсором при его движении                                                                                                      рис.3

пооси У.                                                                                        

 

Вывод

Полученный мною практический опытприменительно к программированию на ПАСКАЛЕ позволяет использовать эффективноемодульное программирование. Кроме того, изучив представленный в курсовомпроектировании материал, я приобрел практические навыки использования процедур,функций. Эта курсовая для меня была интересна и увлекательна потому,  что с таким заданием я столкнулся впервые. Раньше я сам занимался радио –электроникой и думаю раньше, мне бы эта программа пригодилась.  

<span Arial",«sans-serif»">

<img src="/cache/referats/20380/image017.jpg" v:shapes="_x0000_s1034">Алгоритмпрограммы

                                                    

Введение

<span Arial",«sans-serif»">Язык программирования Pascal был разработан в 1968—1971 гг.Никлаусом Виртом в Цюрихском Институте информатики (Швейцария). Первоначальнаяцель разработки языка диктовалась необходимостью инструмента «для обученияпрограммированию как систематической дисциплине». Однако очень скорообнаружилась чрезвычайная эффективность языка Pascal в самых разнообразныхприложениях, от решения небольших задач численного характера до разработкисложных программных систем — компиляторов, баз данных, операционных систем ит.п. К настоящему времени Pascal принадлежит к группе наиболее распространенныхи популярных в мире языков программирования. Существуют многочисленныереализации языка практически для всех машинных архитектур; разработаны десяткидиалектов и проблемно-ориентированных расширений языка Pascal; обучениепрограммированию и научно-технические публикации в значительной степенибазируются на этом языке.

<span Arial",«sans-serif»">Характеристика и особенностиязыка. Существует ряд объективных причин, обусловивших выдающийся успех языкаPascal. Среди них в первую очередь необходимо указать следующие:

<span Arial",«sans-serif»">1. Язык в естественной иэлегантной форме отразил важнейшие современные концепции технологии разработкипрограмм: развитая система типов, ориентация на принципы структурногопрограммирования, поддержка процесса пошаговой разработки.

<span Arial",«sans-serif»">2. Благодаря своейкомпактности, концептуальной целостности и ортогональности понятий, а такжеудачному первоначальному описанию, предложенному автором языка, Pascal оказалсявесьма легок для изучения и освоения. В противоположность громоздкиммноготомным описаниям таких языков, как PL/I, Cobol, FORTRAN, достаточно полноеописание языка Pascal занимает около 30 страниц текста, а его синтаксическиеправила можно разместить на одной странице.

<span Arial",«sans-serif»">3. Несмотря на относительнуюпростоту языка, он оказался пригоден для весьма широкого спектра приложений, втом числе для разработки очень больших и сложных программ, напримероперационных систем.

<span Arial",«sans-serif»">4. Pascal весьма технологичендля реализации практически для всех, в том числе и нетрадиционных, машинныхархитектур. Утверждается, что разработка Pascal-транслятора «почти непревышает по трудоемкости хорошую дипломную работу выпускника вуза».Благодаря этому для многих ЭВМ существует несколько различных реализации языка,отражающих те или иные практические потребности программистов.

Язык Pascal стандартизован во многих странах. В 1983 году был принятмеждународный стандарт (ISO 7185:1983). Готовится (сведения на 1989 год)стандарт СЭВ на Pascal.

Содержание<span Arial",«sans-serif»">

Введение………………………………………………………………….3

Задание........................................................................................................4

Цельработы………………………………………………………………4

Постановказадачи………………………………………………………..4

Анализ и разработка алгоритма………………………………………….5

Алгоритмпрограммы……………………………………………………..6

Текст программы………………………………………………………....7

Результаты моделированиепрограммы на реальной ЭВМ…………….9

Вывод………………………………………………………………………10

    

еще рефераты
Еще работы по радиоэлектронике