ТЕОРІЯ АЛГОРИТМІВ
МЕТОДИЧНІ ВКАЗІВКИ
до лабораторної роботи № 8
з дисципліни “Алгоритмізація та програмування, частина 2”
для студентів спеціальності 122 «Комп’ютерні науки та інформаційні технології»
Теорія алгоритмів: Методичні вказівки до лабораторної роботи № 8 / Укл.: В.А. Висоцька, Л.В. Чирун. – Львів: Видавництво Національного університету ”Львівська політехніка”, 2017. – 10 с.
Укладачі
Висоцька В.А., канд. техн. наук, доц.
Чирун Л.В., канд. техн. наук, доц.
Відповідальний за випуск Литвин В.В., доктор техн. наук., проф.
Рецензенти Верес О.М., канд. техн. наук, доц.
Берко А.Ю., доктор техн. наук., проф.
Метою виконання лабораторних робіт є отримання студентами практичних навичок з принципів створення сучасних інформаційних технологій, основ алгоритмізації, процедурного і візуального програмування. Мета роботи: набуття практичних навичок роботи з рекурсивними функціями, набуття навичок програмування дерев, набуття навичок програмування графів, набуття практичних навичок застосування алгоритмів пошуку та сортування, набуття практичних навичок опрацювання структур та роботи з файлами.
В результаті виконання лабораторних робіт студенти повинні:
- знати поняття алгоритму, способи подання алгоритму, основні алгоритмічні конструкції, принципу проектування алгоритму "зверху-вниз" та покрокового уточнення алгоритму, типи даних, операції, визначені над даними різних типів.;
- вміти застосовувати різні форми опису алгоритмів, описувати розв’язки типових навчальних задач мовами програмування, реалізовувати програми на комп’ютері, аналізувати вхідні дані і отримані результати, використовувати навчальні програми для вивчення інформатики та інших предметів.
- Вимоги до лабораторної роботи
- Кожен студент отримує набір завдань відповідно до свого порядкового номеру у списку групи або відповідно до номеру залікової книжки.
- ЗВІТ ПОВИНЕН БУТИ НАДРУКОВАНИЙ.
- Звіт про виконання роботи оформляється у вигляді завдань та розв’язку до них.
- Звіт акуратно оформляється на аркушах А4 та скріпляється скріпкою або вставляється у файлик.
- Звіт про виконання лабораторної роботи необхідно захистити у строго визначені терміни.
- Загальний принцип оформлення титульного листа лабораторної роботи:
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА" Кафедра інформаційних систем та мереж Лабораторна робота № 8 на тему ТЕОРІЯ АЛГОРИТМІВ Виконав (Виконала) студент (студентка) групи KH-%%% Прізвище та ініціали студента Прийняв (Прийняла) Посада Прізвище та ініціали викладача Львів-20%% |
- Порядок роботи
- Ознайомитися iз структурою, командами та функціональними можливостями інтегрованого середовища Python чи С/C++.
- Використовуючи літературні джерела, конспект лекцій, методичні розробки з дисципліни, засвоїти теоретичний матеріал, пов’язаний з тематикою лабораторної роботи.
- Отримати індивідуальне завдання, розробити схему алгоритму для його розв’язування та написати відповідну програму на мові Python чи С/C++;
- Використовуючи вбудований редактор текстів, набрати програму на мові Python чи С/C++.
- Використовуючи засоби інтегрованого середовища мови Python чи С/C++, набрати, відредагувати та відкомпілювати текст програми;
- Вiдкомпiлювати, вiдлагодити та виконати програму.
- Ознайомитися з теоретичним матеріалом по визначенню та застосуванню директив препроцесора.
- При підготовці до лабораторної роботи згідно з індивідуальним завданням скласти програму на мові Python чи С/C++.
- Завантажити інтегроване середовище Python чи С/C++.
- Підготувати текст програми згідно завдання.
- По виданому завданню розробити програму iз застосуванням директив замiни iдентифiкатора, макросів та умовної компiляцiї програм.
- Використовуючи вбудовані засоби інтегрованого середовища ввести та вiдлагодити програму на мові Python чи С/C++.
- Виконати програму. Якщо будуть виявлені помилки в програмі, вияснити причину помилки (використовуючи допомогу) та виправити.
- Ввести вхiднi дані та отримати результат виконання програми.
- Протестувати задачу.
- Підготувати вхідні дані для перевірки правильності виконання програми;
- Виконати програму та зафіксувати отримані результати;
Примітка. Для зменшення часу введення великих об’ємів вхідних даних при відлагодженні програми рекомендується виконати перенаправлення вводу даних з клавіатури на ввід даних з попередньо створеного текстового файлу. Перенаправлення потоків здійснюється у режимі командного рядка, наприклад: C:\Students\KH-215\Lab07.exe < MyData.txt. В результаті дані з файлу MyData.txt будуть прочитані функціями вводу програми Lab07.exe .
- Перевірити правильність роботи програми; при необхідності внести зміни у програму та виконати її повторний запуск.
- Записати текст програми на диск.
- Оформити та захистити звіт по лабораторній роботі згідно вимог. Відповісти керівнику лабораторних занять на поставлені запитання за темою лабораторної роботи;
- Проаналiзувати отриманий результат та оформити звiт по роботi, дотримуючись наступного змiсту:
¨ назва роботи;
¨ мета роботи;
¨ технологiя вводу, компiляцiї, вiдлагодження та виконання програми;
¨ завдання для роботи;
¨ блок-схема програми;
¨ програма та результати її роботи;
¨ висновки.
- Вимоги до оформлення звіту
Звіт по роботі має включати в себе наступні розділи:
- Номер та назва роботи;
- Мета виконання лабораторної роботи;
- Індивідуальне завдання для виконання роботи згідно варіанту з детальним формулюванням розв’язуваної задачі;
- Алгоритми розв’язування задачі;
- Графічна схема алгоритму розв’язування задачі з поясненням (блок-схеми програми, підпрограми та їх опис);
- Текст програми на мові Python чи С/C++. Програма повинна контролювати правильність вводу вхідних даних та мати коментарі до її основних структурних конструкцій.
- Результати комп’ютерної реалізації програми. Вказується формат і значення вхідних даних та отриманих для них результатів;
- Висновки. Вказується призначення програми, обмеження на її застосування, можливі варіанти вдосконалення та які знання отримано в ході виконання роботи.
Звіт повинен бути написаний українською мовою, акуратно та грамотно, з дотриманням правил оформлення ділової документації. Назви розділів звіту візуально виділити розміром, жирністю, курсивом шрифту або підкресленням.
- Завдання
Розв’язати завдання, подані у додатку, відповідно до свого порядкового номеру у списку групи. При оформленні лабораторної роботи дотримуватись вимог, які наведені в методичних вказівках. Оцінювання виконаної лабораторної роботи проводиться згідно кількості правильно розв’язаних завдань з відповідного варіанту. Завдання лабораторної роботи мають три рівня складності. Оцінювання виконання завдань першого рівня в п’ятибальній системі відповідає оцінці “задовільно”, другий рівень – “добре”, третій – “відмінно”. Наприклад, якщо на лабораторну виділено 5 балів, тоді 1 бал за виконання першого рівня, 1.5 балів – другого рівня, та 2.5 балів – третього рівня.
Перший рівень
Розробити програмy згідно алгоритму з використанням рекурсивної функції та без використання рекурсивної функції. Оцінити час виконання та складність алгоритму.
Другий рівень
1. Розробити засоби динамічного збереження дерев та виконання дій над ними згідно варіанту.
Варіанти індивідуальних завдань.
№ |
Завдання |
Перевірити, чи двійкове дерево є збалансованим. |
|
Знайти вершину в дереві. |
|
Розробити програму для роботи з червоно-чорним деревом та процедуру пошуку в ньому. |
|
Розробити програму побудови бінарного дерева за арифметичним виразом (наприклад, 2+3-5+7) |
|
Знищити заданий елемент в бінароному дереві. |
|
Додати вершину у впорядковане бінарне дерево. |
|
Додати вершину у невпорядковане дерево. |
|
Здійснити заміну значення заданої вершини. |
|
Вивести на друк листи дерева. |
|
Вивести на друк ліві вершини дерева. |
|
Вивести на друк всі вершини, значення яких більше за корінь на одиницю. |
|
Вивести на друк праві вершини дерева. |
|
Вивести на друк всі вершини, значення яких більше за корінь на задану величину. |
|
Перевірити зи допомогою дерева, чи стрічка є паліндромом |
|
Побудувати дерево синтаксичного розрору речення |
|
Вивести на друк всі ліві вершини збалансованого дерева |
|
Вивести на друк всі червоні вершини червоно-чорного дерева |
|
Вивести на друк всі чорні вершини червоно-чорного дерева |
|
Знайти в бінарному дереві вершину, сума значень прямих нащдків якої є максимальна |
|
Знайти в бінарному дереві вершину, сума значень прямих нащдків якої є максимальна |
2. Забезпечити зберігання графа у вигляді матриці суміжності.
Варіанти індивідуальних завдань.
№ |
Завдання |
Розробити алгоритм знаходження зв’язних підграфів заданого графа. |
|
Розробити програму обходу графа вшир, поданого матрицею суміжності. |
|
Розробити програму обходу графа вглиб, поданого матрицею суміжності. |
|
Розробити програму пошуку вершини в графі. |
|
Розробити програму пошуку вершини в графі за її значенням. |
|
Розробити програму, результатом якої є стек, сформований на основі послідовності вершин, отриманих при обході вглиб. |
|
Розробити програму, результатом якої є черга, сформований на основі послідовності вершин, отриманих при обході вшир. |
|
Дерево — це зв'язний ациклічний (що не має циклів) граф. Кожен граф, що не містить циклів, називається лісом. Представити алгоритм, що визначає, чи є граф деревом. |
|
Розробити програму, яка за матрицею суміжності формує множину ребер. |
|
Знайти у графі двонаправлені ребра. |
|
Сформувати множину вершин, з яких виходять ребра заданої вартості. |
|
Сформувати множину ребер, які є ациклічними. |
|
Знайти у графі петлі |
|
Знайти вартість шляху між заданими вершинами. Якщо прямого шляху нема, то вивести повідомлення |
Третій рівень
1. Розробити процедури та функції для пошуку в одновимірних масивах посортованих та непосортованих та для їх сортування. В контрольному прикладі забезпечити пошук потрібних елементів в непосортованих масивах. Здійснити їх сортування. Здійснити пошук в посортованих масивах. Оцінити час виконання операцій.
Варіанти індивідуальних завдань.
Розробити процедури та функції для пошуку в одновимірних масивах посортованих та непосортованих та для їх сортування. В контрольному прикладі забезпечити пошук потрібних елементів в непосортованих масивах. Здійснити їх сортування. Здійснити пошук в посортованих масивах. Оцінити час виконання операцій.
№ |
Завдання |
1 |
Елементи, які присутні в обох масивах А і В |
2 |
Елементи, які є тільки в масиві А або тільки в масиві В |
3 |
Елементи, котрі присутні в масиві А, але відсутні в масиві В |
4 |
Елементи, котрі присутні в обох масивах А і В в декількох екземплярах |
5 |
Елементи, котрі присутні в декількох екземплярах в масиві А, але відсутні в масиві В |
6 |
Елементи, котрі присутні в декількох екземплярах або тільки в масиві A, або тільки в масиві В |
7 |
Елементи, котрі присутні в декількох екземплярах або в масиві А, або в масиві В (або в обох масивах) |
8 |
Елементи масиву А, які повторюються в масиві В декілька раз |
9 |
Елементи присутні в обох масивах А і В в одному екземплярі |
10 |
Елементи, присутні в одному екземплярі або тільки в масиві А, або тільки в масиві В |
11 |
Елементи масиву А, які повторюються і одночасно є в масиві В |
12 |
Елементи масиву А, які повторюються і одночасно є в масиві В в одному екземплярі |
13 |
Елементи масиву А, які не повторюються і одночасно є в масиві В в декількох екземплярах |
14 |
Елементи масиву А, які повторюються і одночасно відсутні в масиві В |
15 |
Елементи масиву А в одному екземплярі, котрі є в масиві В тільки в одному екземплярі |
16 |
Елементи масиву А в одному екземплярі, котрі є в масиві В тільки в декількох екземплярах |
17 |
Елементи, які присутні в декількох екземплярах або тільки в масиві А, або тільки в масиві В |
18 |
непарні елементи масиву А, котрі парні в масиві В |
19 |
елементи, присутні в обох масивах А і В і більші числа К |
20 |
елементи, котрі є тільки в масиві А або в масиві В |
21 |
парні елементи масиву А, присутні в масиві В |
22 |
неповторювані елементи масиву А, котрих нема масиві В |
23 |
елементи масиву А в одному екземплярі, котрі присутні в масиві B |
№ |
Завдання |
24 |
елементи масиву A, присутні в одному екземплярі в масиві B |
25 |
елементи масиву В, які повторюються в масиві А декілька раз |
26 |
елементи масивів, котрі присутні в масиві В, але відсутні в масиві А |
27 |
елементи масивів, котрі присутні непарну кількість раз в обох масивах А і В |
28 |
елементи масивів, котрі присутні в декількох екземплярах в масиві В, але відсутні в масиві А |
29 |
елементи масивів, котрі присутні в декількох екземплярах або тільки в масиві A, або тільки в масиві В |
30 |
знайти медіани масивів А і В |
Алгоритми пошуку:
- Лінійний пошук;
- Лінійний пошук з бар’єром;
- Бінарний пошук;
- Пошук Фібоначі;
- Пошук з перестановкою в початок;
- Пошук с транспозицією;
Алгоритми сортування:
- Сортування обміном
- Сортування вибором
- Бульбашкове сортування
- Сортування включениями
- Бульбашкове сортування вставками.
- Швидке сортування
- Сортування Шелла
- Пірамідальне сортування
- Сортування Хоара.
2. Розробити програму яку забезпечує опрацювання структур даних і їх збереження у файлі.
Опис деякого об’єкту здійснюється за допомогою типу даних структура. Необхідно забезпечити опрацювання 3-5 атрибутів об’єкту з використанням різних простих типів даних (стрічки, символи, числа, логічний тип)ю Забезпечити виконання таких операцій:
- Ввід даних;
- Пошук за значенням атрибуту;
- Послідовний перегляд;
- Модифікацію значень атрибутів об’єктів (структури що його описує);
- Видалення об’єкту (структури що його описує);
- Сортування за значеннями атрибутів;
- Результати всіх операцій повинні зберігатись у файлі.
В контрольному прикладі продемонструвати виконання основних операцій з файлом який містить 10-20 збережених описів об’єктів.
Варіанти індивідуальних завдань.
Кожен студент обирає довільний об’єкт для опису у вигляді структури.
- Література
- Троценко В.С., Чаленко П.Й., Старовський А.Б. Техніка програмування мовою Сі. К.:Либідь,1993.
- Абрамов С.А. и др. Задачи по программированию. — М.: Наука, 1988.
- Ван Тассел Д. Стиль, разработка, эффективность, отладка и испытание программ. — М.: Мир, 1981.
- Дейкстра Э. Дисциплина программирования. М.: Мир, 1978.
- Лэгсам Й, Огенстайн М. Структуры данных для персональных ЭВМ — М: Мир, 1989 -586с.
(Для ознайомлення з повним текстом статті необхідно залогінитись)