это быстро и бесплатно
Оформите заказ сейчас и получите скидку 100 руб.!
Ознакомительный фрагмент работы:
Міністерство освіти і науки України
Полтавський національний технічний університет
імені Юрія Кондратюка
Факультет інформаційних та телекомунікаційних технологій і систем
Кафедра комп’ютерних та інформаційних технологій і систем
Курсова робота
з дисципліни "Основи програмування та алгоритмічні мови"
Розробив cтудент
групи 101-ТН
Керівник роботи
Полтава 2010
Зміст
Вступ
Постановка задачі
Розв’язання задачі
Алгоритм задачі
Реалізація програми
Демонстрація роботи програми
Висновок
Використана література
Щоб написати цю програму потрібні знання мови програмування TurboPascal, а точніше знання алгоритмів та вміння використовувати графічні примітиви модуля Graph.
TurboPascal- мова програмування навчального призначення. Належить до Алгол-подібних мов. Має жорстку типізацію, тобто ціле значення можна присвоїти лише цілій змінній.
Цю мову створено 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.
Операція "МИМО"
Операція "В"
Операція "ІЗ"
Дана програма дозволяє сортувати вагони двох типів найкоротшим шляхом. Також, виконавши деякі зміни, можна збільшити кількість типів вагонів.
Написанням цієї программи я отримав гарні навики розробки графічних завдань в TurboPascal. Особливо цікаво було розробити процедуру для зображення процесу сортування.
1. Ковалюк Т.В. Основи програмування - К., 2005
Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников
Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.
Цены ниже, чем в агентствах и у конкурентов
Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит
Бесплатные доработки и консультации
Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки
Гарантируем возврат
Если работа вас не устроит – мы вернем 100% суммы заказа
Техподдержка 7 дней в неделю
Наши менеджеры всегда на связи и оперативно решат любую проблему
Строгий отбор экспертов
К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»
Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован
Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн
изменить 3 главу полностью и заключение на проблемы и решения которые...
Диплом, Уголовно-процессуальное право
Срок сдачи к 3 окт.
Написать реферат. Правовые механизмы природопользования и защиты окружающей среды. В-01862
Реферат, Право
Срок сдачи к 12 окт.
Правосубъектность военнослужащих войск национальной гвардии РФ
Курсовая, Правоведение
Срок сдачи к 16 окт.
Контрольная работа по Теоретической и прикладной механике
Контрольная, Теоретическая и прикладная механика
Срок сдачи к 6 окт.
7 вариант, две контрольные работы
Контрольная, Теоретические основы обеспечения устойчивости функционирования объектов экономики и территорий
Срок сдачи к 19 окт.
Необходимо подготовить работу по дисциплине «учебно-проектная деятельность — 2» на основе приложенных материалов упд-1 и методического пособия тусур
Лабораторная, Учебно-проектная деятельность (УПД-2)
Срок сдачи к 9 окт.
Страхование и договор страхования: проблемы правового регулирования
Курсовая, Гражданское право
Срок сдачи к 2 нояб.
Выполнить тесты по Технологическое предпринимательство. В-01861
Решение задач, Менеджмент
Срок сдачи к 9 окт.
Требуется написать качественный и понятный текст для карточки товара...
Другое, Русский язык
Срок сдачи к 8 окт.
Заполните форму и узнайте цену на индивидуальную работу!