Міністерство освіти і науки України
Полтавський національний технічний університет
імені Юрія Кондратюка
Факультет інформаційних та телекомунікаційних технологій і систем
Кафедра комп’ютерних та інформаційних технологій і систем
Курсова робота
з дисципліни "Основи програмування та алгоритмічні мови"
Розробив cтудент
групи 101-ТН
Керівник роботи
Полтава 2010
Зміст
Вступ
Постановка задачі
Розв’язання задачі
Алгоритм задачі
Реалізація програми
Демонстрація роботи програми
Висновок
Використана література
Вступ
Щоб написати цю програму потрібні знання мови програмування Turbo Pascal, а точніше знання алгоритмів та вміння використовувати графічні примітиви модуля Graph.
Turbo Pascal - мова програмування навчального призначення. Належить до Алгол-подібних мов. Має жорстку типізацію, тобто ціле значення можна присвоїти лише цілій змінній.
Цю мову створено 1970 року Ніклаусом Віртом, як алгоритмічна мова. Існує безліч різних версій з підтримкою об'єктно-орієнтованого програмування. Також є функції для відладки програми (нагляд, покрокове виконання та інші).
У моїй програмі потрібно посортувати вагони з довільного порядку в порядок через один. Для цього у нас є набір вагонів, що знаходиться зправа, стек - для проміжних вагонів, та ліва сторона для результату. Для виконання ми можемо користуватися трьома оперіціями: МИМО, В, ІЗ. За один крок можна переміщати лише один вагон.
Постановка задачі
"Залізничний вузол"
Залізнодорожний сортувальний вузол зроблений так, як показано на малюнку. На правій стороні зібрано у випадковому порядку декілька вагонів двох типів по N штук. Тупік може вміщати всі вагони. Користуючись трьома сортувальними оперціями В, ІЗ, МИМО, зібрати вагони на лівій стороні так, щоб вони чергувалися. Для вирішення задачі достатньо 3N-1 операцій. По запиту користувача программа повинна продемонструвати правильне сортування вагонів.
Розв’язання задачіУ задачі є три положення вагонів:
На початку
В стеку
В кінці
Мій алгоритм спочатку виконує операцію МИМО, так як не вказано який вагон повинен бути першим. Потім слідує головна чатина алгоритму поки стек та початок не спорожніють.
Головний алгоритм перевіряє сочатку стек на присутність вогону другого типу. Якщо перший вагон не такий як останній, то виконати операцію "ІЗ". У випадку коли не підходить, виконати пошук у початку. Якщо перший вагон "не такий" то виконати операцію "В" та продовжити пошук доки не знайдеться другий тип та виконати "МИМО".
У програмі замість того, щоб здвигати при добавленні-вилученні вагона всі елементи реалізовано змінні, які вказують на останній елемент, тобто розмірність масиву.
Всі три положення у вигляді масиву змінних цілого типу. Можуть приймати значення 0-пусто, 1-перший тип, 2-другий тип.
Для графічного зображення процесу сортування використано модуль Graph. tpu. Спочатку зображуються чотири лінії: дві горизонтальні, які утворюють ліву та праву частини, та дві вертикальні - стек.
При зображенні вагонів використано цикл із зміщенням. Вагои зображуюються червоним та зеленим кольорами.
У програмі присутній почаковий набір даних, але є можливість вводу з текстового файлу "rail. dat". Цей режим присутній у вигляді неактивного тексту.
При виконанні операцій сортування вимальовуються підказки у вигляді стрілок та напису виконаної операції.
У кінці роботи програма виводить кількість виконаних операцій та число 3N-1 яке є максильмальною кількістю операцій.
Алгоритм задачі
Присвоєння початкових значень та сортувальний алгоритм
Алгоритм графіки
Алгоритм функцій "В", "ІЗ", "МИМО"
Реалізація програми
program railway;
uses graph,crt;
var
left: array [1. .1000] of integer;
right: array [1. .1000] of integer;
stok: array [1. .1000] of integer;
f1: text;
l,r,s: integer;
n,op: integer;
d,m,z: integer;
procedure anim (i: integer);
var j: integer;
begin
clearviewport;
SetLineStyle (DottedLn, 0, NormWidth);
line (10,50,630,50);
line (10,80,630,80);
line (295,50,295,470);
line (325,50,325,470);
SetLineStyle (SolidLn, 0, NormWidth);
setcolor (green);
for j: =r downto 1 do
begin
if right [j] <>0 then
begin
if right [j] =2 then setcolor (red);
rectangle (335+r*35-j*35,50,365+r*35-j*35,80);
if right [j] =2 then setcolor (green);
end;
end;
for j: =1 to l do
begin
if left [j] =2 then setcolor (red);
rectangle (10+j*35,50,40+j*35,80);
if left [j] =2 then setcolor (green);
end;
for j: =1 to s do
begin
if stok [j] =2 then setcolor (red);
rectangle (295,85+j*35,325,115+j*35);
if stok [j] =2 then setcolor (green);
end;
setcolor (white);
case i of
1: begin
line (200,40,440,40);
line (200,40,220,45);
line (200,40,220,35);
outtextxy (200,25,'MIMO');
end;
2: begin
line (335,100,335,250);
line (335,250,330,230);
line (335,250,340,230);
outtextxy (345,240,'B');
end;
3: begin
line (285,100,285,250);
line (285,100,290,120);
line (285,100,280,120);
outtextxy (265,100,'IZ');
end;
end;
delay (20000);
end;
procedure P_OP (i: integer);
begin
case i of
1:
begin
inc (l);
left [l]: =right [r] ;
right [r]: =0;
dec (r);
end;
2:
begin
inc (s);
stok [s]: =right [r] ;
right [r]: =0;
dec (r);
end;
3:
begin
inc (l);
left [l]: =stok [s] ;
stok [s]: =0;
dec (s);
end;
end;
inc (op);
anim (i);
end;
begin
right [1]: =2;
right [2]: =2;
right [3]: =1;
right [4]: =1;
right [5]: =1;
right [6]: =2;
n: =6;
{assign (f1,'rail. dat');
reset (f1);
while not eof (f1) do
begin
read (f1,right [n]);
inc (n);
end;
close (f1); }
d: =detect;
initgraph (d,m,'');
r: =n;
l: =0;
s: =0;
p_op (1);
while (r+s>0) do
begin
if s>0 then
if left [l] <>stok [s] then
p_op (3);
while left [l] =right [r] do
p_op (2);
if r>0 then p_op (1);
end;
anim (0);
readln;
closegraph;
clrscr;
writeln ('Operations: ',op,'<',3*n-1,' (3N-1) ');
readln;
end.
Демонстрація роботи програмиОперація "МИМО"
Операція "В"
Операція "ІЗ"
Висновок
Дана програма дозволяє сортувати вагони двох типів найкоротшим шляхом. Також, виконавши деякі зміни, можна збільшити кількість типів вагонів.
Написанням цієї программи я отримав гарні навики розробки графічних завдань в Turbo Pascal. Особливо цікаво було розробити процедуру для зображення процесу сортування.
Використана література
1. Ковалюк Т.В. Основи програмування - К., 2005
Похожие работы
... , не утратив своїй значимості і пропускній здатності. II розділ. Сучасний стан розвитку та характер розміщення залізниць України 2.1. Рівень розвитку та характер розміщення залізничного транспорту України 2.1.1. Сучасна схема залізничних зв'язків Залізнична мережа України по її конфігурації ортогональна. У ній є більш-менш рівнобіжні магістралі, широтні, меридіональні. За рівнем розвитку залі ...
... транспортування. Залізнична мережа України по її конфігурації ортогональна. У ній є більш-менш рівнобіжні магістралі, широтні, меридіональні. За рівнем розвитку залізничного транспорту на території країни виділяють два регіони: Донбас і Західна Україна, де щільність транспортних магістралей склалася історично й обумовлена дією різних за своєю природою факторів. У Донбасі і Наддніпрянщині - необх ...
... , що не мають відповідного дозволу, створити 2-3 екскурсійних пункти в центральній частині міста; · тощо. РОЗДІЛ 3 ШЛЯХИ РОЗВИТКУ НОВИХ РЕКРЕАЦІЙНИХ ЗОН ТУРИСТИЧНОГО ПРИЗНАЧЕННЯ У м. КИЄВІ 3.1.Мета розвитку рекреаційних зон туристичного призначення в м. Києві Київ – столиця України, один з найважливіших політичних, економічних, наукових, культурно-освітніх та релігійних центрів ...
... ї бази туризму країни та регіону (повні тексти з коментарями експертів); ресурсний паспорт регіону (тексти, таблиці, мультимедійні ресурси); бази даних щодо соціально-економічних та інвестиційно-інноваційних факторів впливу на формування та функціонування регіонального ринку туристичних послуг (таблиці, графіки, тексти експертної оцінки); базу даних щодо впливу туризму на економіку регіону, ...
0 комментариев