Створення програми "Залізничний вузол"

Використання мови програмування Turbo Pascal, алгоритмів та графічних примітивів модуля Graph. Розробка та реалізація програми для сортування вагонів з довільного порядку в порядок через один. Присвоєння початкових значень та сортувальний алгоритм.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 23.06.2010
Размер файла 1,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

6

Міністерство освіти і науки України

Полтавський національний технічний університет

імені Юрія Кондратюка

Факультет інформаційних та телекомунікаційних технологій і систем

Кафедра комп'ютерних та інформаційних технологій і систем

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

з дисципліни "Основи програмування та алгоритмічні мови"

Розробив 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


Подобные документы

  • Алгоритмічна мова програмування універсального призначення Turbo Pascal. Розробка і створення програми для гри "Шибениця". Алгоритм функціонування программи, блок-схема алгоритму. Використання додаткових модулів Graph та Crt у процессі створення програми.

    курсовая работа [2,0 M], добавлен 23.06.2010

  • Створення програми "Шаховий кінь" в системі програмування Turbo Pascal. Генерування відповідно до заданих початкових кординат маршруту руху коня. Алгоритм задачі: початок, виведення зображення та пошук. Реалізація програми та демонтрація її роботи.

    курсовая работа [1,3 M], добавлен 23.06.2010

  • BMP як формат зберігання растрових зображень, огляд структури файлу. Створення програми для запису та перегляду графічних BMP-файлів на мові програмування Turbo Pascal 7.0, розробка функціональної схеми і алгоритмів, особливості проведення тестування.

    курсовая работа [325,8 K], добавлен 12.06.2011

  • Вирішення задач сортування в програмуванні та розробка ефективних алгоритмів сортування. Знайомство з теоретичним положенням, що стосуються методів сортування файлів, реалізації їх на мові програмування Turbo Pascal. Методи злиття впорядкованих серій.

    курсовая работа [46,9 K], добавлен 16.09.2010

  • Прості та умовні оператори мови С++. Робота з двовимірними масивами. Пошук та сортування даних. Робота з файлами та з динамічними структурами даних. Опис мови програмування Delphi. Складення програми до розроблених алгоритмів. Організація циклів.

    отчет по практике [4,3 M], добавлен 28.08.2014

  • Характеристика мови Turbo Pascal. Опис деяких графічних процедур і функцій модуля Graph. Робота в графічному режимі. Процедури, опції модуля CRT. Створення програми розв'язку системи нерівностей з двома змінними в графічному режимі Турбо Паскаля.

    курсовая работа [35,0 K], добавлен 24.02.2011

  • Розробка програми реєстрації і автоматизованого створення звіту на рік по викраденим машинам. Математична модель задачі, структура зберігаючих даних. Створення алгоритмів основної програми на мові Turbo Pascal і процедур Vvod і Red. Вихідний код програми.

    курсовая работа [25,4 K], добавлен 07.10.2010

  • Розробка програми для вирішення графічної задачі. При вирішенні задачі необхідно cтворювати програму у середовищі програмування Turbo Pascal. Розробка алгоритму функціонування програми і надання блок-схеми алгоритму. Демонстрація роботи програми.

    курсовая работа [1,3 M], добавлен 23.06.2010

  • Аналіз особливостей мови програмування Java та середовища Android Studio. Розробка програмного забезпечення для якісного та ефективного вивчення іноземних слів. Побудова базових алгоритмів і структури даних. Вибір мови програмування, реалізація програми.

    курсовая работа [335,3 K], добавлен 11.01.2015

  • Сутність Pascal як алгоритмічної мови програмування універсального призначення. Історія її виникнення і характерні особливості. Специфіка використання середовища розробки програм Borlan Delphi. Реалізація алгоритму визначення n! для великих значень n.

    курсовая работа [22,9 K], добавлен 04.01.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.