_WELCOMETO Radioland

Главная Схемы Документация Студентам Программы Поиск Top50  
Поиск по сайту



Навигация
Главная
Схемы
Автоэлектроника
Акустика
Аудио
Измерения
Компьютеры
Питание
Прог. устройства
Радио
Радиошпионаж
Телевидение
Телефония
Цифр. электроника
Другие
Добавить
Документация
Микросхемы
Транзисторы
Прочее
Файлы
Утилиты
Радиолюб. расчеты
Программирование
Другое
Студентам
Рефераты
Курсовые
Дипломы
Информация
Поиск по сайту
Самое популярное
Карта сайта
Обратная связь

Студентам


Студентам > Курсовые > Трассировка печатной платы

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

Страница: 1/2

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

Р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;

repeat l:=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 mod 10):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) else GotoXY(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,Where Y);

{del} #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.

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

Задание

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

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

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

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

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

Эта программа работает на принципе волны

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

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

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

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

Когда вы ставите первую точку



12