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

Модуль не являє собою програми, що виконується, а тільки містить набір засобів для використання в файлу програми: типи даних, змінні, процедури і функції. Вихідний текст модуля має розширення .pas. Модуль компілюється окремо від основної програми, відкомпільований модуль має розширення .tpu (Turbo Pascal Unit). Готовий відкомпільований модуль може бути використаний в основній програмі за допомогою пропозиції uses, який записується відразу ж після імені програми. Модуль Graph містить багатий набір графічнихпроцедур і функцій: проведення ліній, робота з кольором, виклик графічних примітивів, робота з текстом в графічному режимі, зафарбування замкнутих областей і т.п. Екран в графічному режимі розглядається як набір пікселів. Модуль Printer служить для виведення інформації на принтер. Крім стандартних модулів, в Турбо Паскаля можливі модулі користувача, Вони вимагають описания, яке починається ключовим словом мови unit і містять 3 розділу: розділ інтерфейсу (interface), розділ реалізації (implementation), розділ ініціалізації (необов'язковий).

Після введення модулів Турбо Паскаль став одним з найбільш поширених мов професійного програмування. За допомогою модулів виявилося можливим виконувати великі роботи колективом програмістів, розбивши завдання на окремі частини, кожна з яких розробляється одним програмістом.

За рахунок паралельної роботи багатьох програмістів термін розробки скорочується у багато разів. Керівник проекту розподіляє роботу і забезпечує стиковку окремих модулів в єдине ціле. При цьому кожен програміст може користуватися своїми ідентифікаторами, незалежно від інших. Збіг ідентифікаторів в різних модулях не впливає на програму, оскільки кожен ідентифікатор використовується в своєму модулі.

Розглянемо приклад модуля для роботи з комплексними числами. Комплексне число складається з двох дійсних чисел, дійсної та уявної частини відповідно. Нехай є два комплексні числа x та y: x=a+bi; y=c+di. Тут i квадратний корінь з мінус одиниці (уявна одиниця), причому i2= - 1. Якщо комплексне число z=e+fi, і z є результат операції над x і y, то

z=x+y; e=a+c: f=b+d; (складання) z=x-y; e=a-c: f=b-d; (віднімання) z=x*y; e=a*c-b*d: f=a*d+b*c; (множення) z=x/y; e=(a*c+b*d)/(c2+d2): f=(c*b-a*d)/(c2+d2): (поділ)

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

Для організації операцій над комплексними числами представимо кожне комплексне число у вигляді запису з двох полів речового типу: Re-дійсна частина, Im - уявна частина. Створимо модуль complex, в якому опишемо комплексний тип com з двома полями. У цьому ж модулі в розділі інтерфейсу опишемо процедури ad (складання), su (віднімання), mu (множення), di (поділ) комплексних чисел (тільки заголовки). Тіла процедур помістимо в розділ реалізації модуля. Розділ ініціалізації має вигляд:

begin  оператори end.

  1. Динамічна структура даних: дерево (основні поняття, створення, обхід).

Динамічні змінні та динамічна пам'ять. Поняття покажчика та його оголошення Статичні змінні характеризуються тим, що їх значення зберігаються в ділянках оперативної пам'яті, які визначаються на етапі компіляції програми і не змінюються під час її виконання. Динамічні змінні створюються і знищуються у процесі виконання програми, їх значення зберігаються в динамічній пам'яті. Оскільки обсяг оперативної пам'яті, що використовується для збереження значення динамічної змінної, компілятору не відомий, він не позначає динамічну змінну ідентифікатором. Доступ до динамічних змінних здійснюється за їх адресами в динамічній пам'яті. Для збереження адреси динамічної змінної використовується посилальний тип даних, а змінна посилального типу даних називається покажчиком. Значенням покажчика є адреса області пам'яті, де зберігається певний елемент даних. У мові Pascal розрізняють типізовані та нетипізовані покажчики. Покажчик, що може посилатися лише на дані певного типу, називається типізованим, а відповідний тип даних називається базовим. Для оголошення типізованого покажчика використовується символ «^», який записується перед іменем базового типу даних. Var <ім'я покажчика> : ^<ім'я базового типу>; Лексема ^<ім'я базового типу> є ідентифікатором певного посилального типу. Проте в розділі оголошень типів даних tyde для посилального типу можна оголосити і окреме ім'я, яке згодом використовуватиметься для оголошення покажчиків у розділі var: type <ім'я посилального типу> = ^<ім'я базового типу>; var <ім'я покажчика> : <ім'я посилального типу>;  Приклади оголошення типізованих покажчиків. type {оголошення типів } vector = array[l..5] of integer; filetype = file of integer; BytePtr = ^Byte; {тип покажчика на змінні типу Byte} ArrayPtr = ^vector; {тип покажчика на масиви типу vector} FilePtr = ^filetype; {тип покажчика на типізовані файли } var {оголошення змінних} pbyte : BytePtr; parray : ArrayPtr; pfile : FilePtr; Нетипізований покажчик не зв'язується з певним типом даних і оголошується як змінна типу pointervar <ім'я покажчика> : pointer;

 Основні поняття Дерево з базовим типом Т - це або порожня структура, або вузол типу Т, з яким зв'язана скінченна кількість дерев із базовим тилом Т, що їх називаютьпіддеревами. Піддерева (гілки) будь-якого вузла не перетинаються, тобто не мають спільних вузлів. Наведемо графічне зображення дерева. Вузол дерева, який не має предків, називається коренем. Серед будь-якої пари безпосередньо зв'язаних вузлів дерева можна виділити предка та нащадка.Вважається, що корінь дерева розташований на першому рівні. Кожний вузол-нащадок рівня k має предка на рівні k - 1. Максимальний рівень дерева називається його глибиною або висотою. Наприклад, на рис. 10.1 зображено дерево, глибина якого дорівнює трьом. Вузол дерева, який не має нащадків, називається листком. Кількість безпосередніх нащадків вузла називається його степенем. Максимальний степінь вузла у певному дереві називаєтьсястепенем дерева. Рис.10.1 Дерево називається бінарним, якщо кожен його вузол може бути зв'язаним не більше ніж із двома піддеревами, які називаються лівим і правим піддеревами вузла. type ptr=^Node; Node-record data:string: left.right:ptr; end; {тип покажчика на вузол дерева} {тип вузла дерева } {інформаційне поле вузла } {покажчики на ліве та праве піддерево }  Алгоритми роботи з бінарними деревами Найпоширенішими операціями під час роботи з деревами є: створення дерева, включення вузла в дерево, видалення вузла з дерева, обхід дерева та пошук у ньому. Створення бінарного дерева Найпростіший спосіб побудови бінарного дерева полягає у створенні дерева симетричної структури із наперед відомою кількістю вузлів. Усі вузли-нащадки, що створюються, рівномірно розподіляються зліва та справа від кожного вузла-предка. При цьому досягається мінімально можлива глибина для заданої кількості вузлів дерева.

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

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

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