Трассировка печатной платы
Характеристика и особенности языка программирования Pascal. Текст (листинг) программы, которая соединяет две точки линией кратчайшим путем, не пересекаясь и обходя все препятствия. Анализ и разработка алгоритма, результаты моделирования программы на ЭВМ.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 28.10.2011 |
Размер файла | 1,4 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство народного образования Российской Федерации
КиГИТ
Кафедра информатики
вычислительной техники
Курсовая работа
По курсу « Программирования ВТ и АС»
На тему: «Трассировка печатной платы»
Разработал: студент группы ДПО-42 Кудрявцев К.В.
Принял: к.т.н., доцент кафедры ВТ Гафаров Р.М.
Ижевск 2005
Введение
Язык программирования Pascal был разработан в 1968--1971 гг. Никлаусом Виртом в Цюрихском Институте информатики (Швейцария). Первоначальная цель разработки языка диктовалась необходимостью инструмента "для обучения программированию как систематической дисциплине". Однако очень скоро обнаружилась чрезвычайная эффективность языка Pascal в самых разнообразных приложениях, от решения небольших задач численного характера до разработки сложных программных систем -- компиляторов, баз данных, операционных систем и т.п. К настоящему времени Pascal принадлежит к группе наиболее распространенных и популярных в мире языков программирования. Существуют многочисленные реализации языка практически для всех машинных архитектур; разработаны десятки диалектов и проблемно-ориентированных расширений языка Pascal; обучение программированию и научно-технические публикации в значительной степени базируются на этом языке.
Характеристика и особенности языка. Существует ряд объективных причин, обусловивших выдающийся успех языка Pascal. Среди них в первую очередь необходимо указать следующие:
1. Язык в естественной и элегантной форме отразил важнейшие современные концепции технологии разработки программ: развитая система типов, ориентация на принципы структурного программирования, поддержка процесса пошаговой разработки.
2. Благодаря своей компактности, концептуальной целостности и ортогональности понятий, а также удачному первоначальному описанию, предложенному автором языка, Pascal оказался весьма легок для изучения и освоения. В противоположность громоздким многотомным описаниям таких языков, как PL/I, Cobol, FORTRAN, достаточно полное описание языка Pascal занимает около 30 страниц текста, а его синтаксические правила можно разместить на одной странице.
3. Несмотря на относительную простоту языка, он оказался пригоден для весьма широкого спектра приложений, в том числе для разработки очень больших и сложных программ, например операционных систем.
4. Pascal весьма технологичен для реализации практически для всех, в том числе и нетрадиционных, машинных архитектур. Утверждается, что разработка Pascal-транслятора "почти не превышает по трудоемкости хорошую дипломную работу выпускника вуза". Благодаря этому для многих ЭВМ существует несколько различных реализации языка, отражающих те или иные практические потребности программистов.
Язык Pascal стандартизован во многих странах. В 1983 году был принят международный стандарт (ISO 7185:1983). Готовится (сведения на 1989 год) стандарт СЭВ на Pascal.
Текст программы
трассировка плата программа кратчайший
Р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.
Волна работает по такому принципу:
Когда вы ставите первую точку, то с этого места экран начнет заполняться числами волна начинает расходиться
рис.2
с 1 и до 0 т. е. место которое вы отметили первой точкой на волне будет отмечено единицей «1», вокруг нее появляются двойки, вокруг двоек тройки и т.д. до нуля, после нуля все начинается с 1 см.рис 2. Как только волна достигнет второй точки см. рис.1 распространение прекращается и начинает проводиться линия между точками(линии не могут пересекаться потому что после того как линия будет создана место где она находится будет отмечено отрицательными числами, а при распространении волны экран заполняется положительными числами т.е. линия может пройти только по положительным числам). Прежде чем пройдет трасса от одной точки до другой сначала пройдет волна и если нет мест отмеченных отрицательными числами - (уже проведенные лини или что-то нарисовано), трасса пройдет напрямую ко второй точке, а если есть места отмеченные отрицательными числами, то трасса идет напрямую ко второй точке, огибает преграду и доходит до второй точки не пересёкшись с другой линией. Выбор места установки контактов (первой и второй точек) производится пользователем при помощи курсора.
Принцип работы процедуры управления курсором заключается в том, что экран имеет размеры 80x25 верхний левый угол имеет координаты - (1,1), правый нижний - (80,25) и если при движении курсора по оси Х курсор доходит конца экрана (например - 80), т.к. курсор не может переходить дальше координаты (80), то он автоматически становится на начальную позицию см. рис. 3. То же самое происходит с курсором при его движении.
рис.3
Вывод
Полученный мною практический опыт применительно к программированию на ПАСКАЛЕ позволяет использовать эффективное модульное программирование. Кроме того, изучив представленный в курсовом проектировании материал, я приобрел практические навыки использования процедур, функций. Эта курсовая для меня была интересна и увлекательна потому, что с таким заданием я столкнулся впервые. Раньше я сам занимался радио - электроникой и думаю раньше, мне бы эта программа пригодилась.
Алгоритм программы
Размещено на Allbest.ru
Подобные документы
История создания и развитие языка программирования Pascal, его версии. Особенности и порядок построения графика функции на языке Turbo Pascal с использованием декартовой системы координат. Блок схема алгоритма процедур, листинг и тестирование программы.
курсовая работа [102,7 K], добавлен 23.12.2011Разработка программы с использованием языка программирования Pascal для выполнения алгебраических действий с действительными числами без знака в шестнадцатеричной системе счисления. Описание хода выполнения, схема алгоритма, листинг программы, ее функции.
реферат [687,5 K], добавлен 28.10.2011Разработка программы на языке Pascal. Описание переменных. Действия, которые должна выполнить программа согласно выбранного алгоритма. Детализация графической части программы. Листинг и тестирование программы. Вывод массива данных на экран монитора.
контрольная работа [360,4 K], добавлен 13.06.2012Разработка программы в среде программирования Borland Pascal, которая является электронным тестирующим пособием в области химии для 8-10 классов. Написание алгоритма решения задачи, определение необходимых функций, процедур, модулей, файловых переменных.
контрольная работа [389,3 K], добавлен 19.09.2010Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.
курсовая работа [115,5 K], добавлен 22.05.2010Описание алгоритма решения задачи по вычислению суммы элементов строк матрицы с использованием графического способа. Детализация укрупненной схемы алгоритма и разработка программы для решения задачи в среде Turbo Pascal. Листинг и тестирование программы.
курсовая работа [446,0 K], добавлен 19.06.2014Разработка алгоритма и программы, которая позволяет создавать программное обеспечение для языка программирования Паскаль. Функциональная спецификация программы. Выбор и обоснование комплекса технических средств. Пользовательское меню и интерфейс.
курсовая работа [1,3 M], добавлен 02.02.2014Разработка программы обработки типизированных файлов с кодом на языке Object Pascal, с использованием компонентов Delphi для ввода и вывода данных. Разработка экранных форм и алгоритма программы. Описание программных модулей и инструкция оператору.
курсовая работа [1,5 M], добавлен 08.02.2011Разработка алгоритма и программы управления поворотной платформой лифта при помощи языка программирования Java Script. Проектирование приложения к браузеру в среде Adobe Dreamweaver CS5. Схема алгоритма, текст программы для двухмерной модели лифта.
курсовая работа [353,1 K], добавлен 18.05.2013История и задачи разработки языка программирования Pascal. Понятие и характерные особенности типизированного файла, основные операции с файловыми переменными. Блок-схема алгоритма и исходный текст программы для обработки сведений об учениках школы.
контрольная работа [55,3 K], добавлен 31.07.2013