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

Файл : Kurs.doc (размер : 393,216 байт)

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

КиГИТ

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

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

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

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

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

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

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

Ижевск 2005

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

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

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

const Xm=80;Ym=24; c:word=14;

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

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

str='* - draw; del - 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;

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

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

var x,y:integer;

begin TextBackGround(0);TextColor(7);

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

end;

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

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

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

begin TextBackGround(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; {путь от одной точки до другой}

begin xt:=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 mod 6);

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;

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

procedure volna(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;