50150 (609966)

Файл №609966 50150 (Створення програми "Залізничний вузол")50150 (609966)2016-07-30СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

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

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

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

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

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

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

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

Розробив cтудент

групи 101-ТН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

Характеристики

Тип файла
Документ
Размер
10,53 Mb
Тип материала
Учебное заведение
Неизвестно

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов курсовой работы

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6487
Авторов
на СтудИзбе
303
Средний доход
с одного платного файла
Обучение Подробнее