Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Infa_Teoriya.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
93.65 Кб
Скачать

37 Цикли. Вкладені цикли. Ітераційні цикли.

Цикл — будь-яка багатократно виконувана послідовність інструкцій, організована будь-яким чином.

Послідовність інструкцій, призначена для багаторазового виконання, називається тілом цикла. Одноразове виконання тіла циклу називається ітерацією. Вираз, що визначає чи буде виконуватися ітерація, чи цикл завершиться, називається умовою виходу або умовою завершення циклу (або умовою продовження в залежності від того, як інтерпретується його істинність — як ознака необхідності завершення або продовження циклу). Змінна, в якій зберігається номер поточної ітерації, називається лічильником ітерацій циклу або просто лічильником циклу. Кількість ітерацій може бути задана, або регулюватись під час виконання програми. Коли кількість не задана, то говорять про ітераційні цикли. В ітераційних циклах виробляється перевірка деякої умови, і в залежності від результату цієї перевірки відбувається або вихід з циклу, або повторення виконання тіла циклу. Якщо перевірка умови виробляється перед виконанням блоку операторів, то такий ітераційний цикл називається циклом із передумовою (цикл "поки"), а якщо перевірка виробляється після виконання тіла циклу, те це цикл із після умовою (цикл "до"). Особливість цих циклів полягає в тім, що тіло циклу з після умовою завжди виконується хоча б один раз, а тіло циклу з передумовою може жодного разу не виконатися.

У деяких випадках важливо повторити підзадачу кілька разів усередині більш загальної задачі. Один зі способів написання такої програми - включити цикл у набір інструкцій, що повторюються всередині іншого циклу. Така структура, що складається з циклу в циклі, називається вкладеними циклами.

Вкладені цикли організовуються за принципом «матрьошки»: спочатку повністю відпрацьовує внутрішній цикл, після цього значення параметра зовнішнього циклу міняється на наступне, а внутрішній цикл починає свою роботу спочатку. Правило вкладення циклів: внутрішній цикл цілком укладається в тіло зовнішнього циклу. Вкладення циклів використовується зокрема при розв'язуванні таких задач: задачі на перебір варіантів; табулювання функцій; обробка двовимірних масивів.

39 Зображення алгоритму у вигляді схеми

Блок-схема - Фізичне представлення задачі для її аналізу або розв'язування за допомогою спеціальних символів (геометричних образів), які позначають такі елементи, як операції, потік, дані тощо. Блок вхідних та вихідних даних прийнято позначати паралелограмом, блок обчислень (обробки) даних — прямокутником, блок прийняття рішень — ромбом, еліпсом — початок та кінець алгоритму.

41 Стеки

Стек — різновид лінійного списку, структура даних, яка працює за принципом «останнім прийшов — першим пішов». Всі операції в стеку можна проводити тільки з одним елементом, який знаходиться на верхівці стеку та був введений в стек останнім.

Стек можна розглядати як певну аналогію до стопки тарілок, з якої можна взяти верхню, і на яку можна покласти верхню тарілку (інша назва стеку — «магазин», за аналогією з принципом роботи магазину в автоматичній зброї)

Операції зі стеком

• push ("заштовхнути елемент"): елемент додається в стек та розміщується в його верхівці. Розмір стеку збільшується на одиницю. При перевищенні розміру стека граничної величини, відбувається переповнення стека.

• pop ("виштовхнути елемент"): отримує елемент з верхівки стеку. При цьому він видаляється зі стеку і його місце в верхівці стеку займає наступний за ним відповідно до правила LIFO, а розмір стеку зменшується на одиницю. При намаганні "виштовхнути" елемент з вже пустого стеку, відбувається ситуація "незаповнення" стеку.

Кожна з цих операцій зі стеком виконується за фіксований час O(1) і не залежить від розміру стеку. Додаткові операції (присутні не у всіх реалізаціях стеку):

• isEmpty: перевірка наявності елементів в стеку; результат: істина (true), коли стек порожній.

• isFull: перевірка заповненості стека. Результат: істина, коли додавання нового елементу неможливе.

• clear: звільнити стек (видалити усі елементи).

• top: отримати верхній елемент (без виштовхування).

• size: отримати розмір (кількість елементів) стека.

• swap: поміняти два верхніх елементи місцями.

42. Черги

Черга — динамічна структура даних, що працює за принципом "перший прийшов - перший пішов". У черги є голова та хвіст. Елемент, що додається до черги, опиняється в її хвості. Елемент, що видаляється з черги, знаходиться в її голові.

Така черга повністю аналогічна звичній черзі, в якій хто перший встав в неї, той першим буде обслуженим (але, на відміну від реальної черги, імовірність пройти поза чергою виключена)

Основні операції з чергою

• "поставити в чергу": додавання елемента в "хвіст" черги. При цьому довжина черги збільшується на одиницю. Якщо відбувається намагання додати елемент у вже заповнену чергу, відбувається її переповнення.

• "отримання з черги": повертає елемент з голови та видаляє його з черги, таким чином встановлюючи голову на наступний за видаленим елемент та зменшуючи довжину на одиницю. При намаганні видалити елемент з пустої черги, виникає ситуація "незаповнення".

43. Лінійні списки та їх використання

Лінійний список визначається як екземпляр абстрактного типу даних, що формалізує концепцію впорядкованої множини елементів. Наприклад, абстрактний тип даних для безтипових, змінних списків можна визначити із допомогою конструктора та чотирьох операцій:

• конструктор для створення порожнього списку;

• операція визначення порожності списку;

• операція для додавання елемента в початок списку;

• операція отримання першого елемента списку (або «голови»);

• операція для визначення списку, що складається із всіх елементів списку окрім першого (або його «хвоста»).

За визначенням, список — це послідовність з n?0 елементів X[1],X[2], … X[n], для якої виконується наступна умова: якщо n>0 та X[1] — перший елемент у списку, а X[n] — останній, то k-й елемент розташований між X[k-1] та X[k+1] елементами для усіх 1<k<n.

З такими структурами даних виконуються наступні операції:

• отримання k-го елемента списку для читання чи запису в нього нового значення;

• додавання нового елемента в будь-яку позицію в списку;

• видалення елемента списку;

• об'єднання в одному списку двох або більше лінійних списків;

• розбиття списку на два або більше фрагментів;

• створення копії списку;

• визначення кількості елементів в списку;

• сортування елементів списку;

• пошук елемента, що задовільняє певним критеріям.

Важливими окремими випадками лінійних списків, в яких операції додавання та вилучення певних значень можуть бути виконані лише для першого чи останнього елементу, є: стек, черга, дек (або двобічна черга - лінійний список, в якому всі операції вставки та видалення виконуються на обох кінцях списку).

Не менш важливим окремим випадком лінійного списку є зв'язаний список, в якому кожний елемент окрім поля даних зберігає також вказівник на наступний. Така структура дозволяє зняти обмеження на зберігання лінійного списку в безперервній області пам'яті. Важливим узагальненням лінійного списку є багатовимірний масив.

44Дерева, бінарні дерева

Дерево — одна з найпоширеніших структур даних. Дерево визначається як скінченна множина Т з однієї або більше вершин (вузлів), яке задовольняє наступним вимогам:

1. існує один відокремлений вузол — корінь дерева

2. інші вузли (за виключенням кореня) розподілені серед m ? 0 непересічних множин T1…Tm і кожна з цих множин в свою чергу є деревом. Дерева T1…Tm мають назву піддерев даного кореня.

З визначення випливає, що кожна вершина є в свою чергу коренем деякого піддерева. Кількість піддерев вершини має назву ступеня цієї вершини. Вершина ступеню нуль має назву кінцевої або листа. Некінцева вершина називається вершини розгалуження. Нехай x — довільна вершина дерева з коренем r. Тоді існує єдиний шлях з r до x. Усі вершини на цьому шляху називаються предками x; якщо деяка вершина y є предком x, то x називається нащадком y. Нащадки та предки вершини x, що не збігаються з нею самою, називаються власними нащадками та предками. Якщо вершини x є предком y та не існує вершин поміж ними (тобто x та y з'єднані одним ребром), а також x не є коренем, то вершина x називається батьком до y, а y — дитиною x. Коренева вершина єдина не має батьків. Вершини, що мають спільного батька, називаються братами. Вершини, що мають дітей, називаються внутрішніми. Глибиною вершини x називається довжина шляху від кореня до цієї вершини. Максимальна глибина вершин дерева називається висотою. Якщо існує відносний порядок на піддеревах T1…Tm, то таке дерево називається впорядкованим. Ліс - називають множину дерев, які не перетинаються. Найчастіше дерева в інформатиці зображують з коренем, який знаходиться зверху.

Операції над деревом

• обхід вершин в різному порядку

• перенумерація вершин

• пошук елемента

• додавання елемента у визначене місце в дереві

• видалення елемента

• видалення цілого фрагмента дерева

• додавання цілого фрагмента дерева

• повороти фрагментів дерева

• знаходження кореня для будь-якої вершини

Бінарне дерево — структура даних, множина вершин, яка має корінь та два піддерева (праве та ліве), що не перетинаються, або є пустою множиною вершин (на відміну від звичайного дерева, яке не може бути пустим).

. Різновиди бінарних дерев

• Бінарне дерево — кореневе дерево, в якому кожна вершина має не більше двох дітей.

• Повне (закінчене) бінарне дерево — бінарне дерево, в якому кожна вершина має нуль або двох дітей.

• Ідеальне бінарне дерево — це таке повне бінарне дерево, в якому листя (вершини без дітей) лежать на однаковій глибині (відстані від кореня).

Бінарне дерево на кожному n-му рівні має від 1 до 2n вершин.

Існує єдине та взаємно однозначне відображення довільного впорядкованого дерева в бінарне.

Для цього слід послідовно зв'язати усіх дітей кожної сім'ї з першою дитиною та видалити усі вертикальні з'єднання за виключенням з'єднання батька з першою дитиною в сім'ї. Тобто кожна вершина N впорядкованого n-арного дерева відповідає вершині M деякого бінарного дерева. Ліва дитина вершини M відповідає першій дитині вершини N, а права дитина M відповідає першому з наступних братів N (тобто першому з наступних дітей батька вершини N).Така відповідність має назву природної відповідності між n-арним та бінарним деревом.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]