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

26.Рекурсивні функції та їх використання.

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

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

Приклад .

Розглянемо математичну головоломку з книги Ж. Арсак «Програмування ігор і головоломок ».

Побудуємо послідовність чисел таким чином: візьмемо ціле число i > 1 . Наступний член послідовності дорівнює i / 2 , якщо i парне , і 3 i +1 , якщо i непарне . Якщо i = 1 , то послідовність зупиняється.

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

Застосування рекурсії дозволило вирішити завдання без використання циклів , як в основній програмі , так і в процедурі .

Приклад програми з використанням рекурсії

Program

Arsac ;Var first : word ;

Procedure posledov ( i : word ) ;

Begin

Writeln ( i ) ;

    If i = 1 then exit ; 

   If odd ( i ) then posledov ( 3 * i +1 ) else posledov ( i div 2 ) ;

End ;

Begin

    Write ( 'введіть перше значення ');

readln ( first ) ; 

   Posledov ( first ) ;

    Readln ;

End.

Програміст розробляє програму , зводячи вихідну завдання до простішим . Серед цих завдань може виявитися і первісна , але в спрощеній формі. Наприклад , для обчислення F (N) може знадобитися обчислити F ( N- 1 ) . Іншими словами , частиною алгоритму обчислення функції буде обчислення цієї ж функції.

Будь-яке рекурсивне визначення складається з двох частин. Одна частина визначає поняття через нього ж , інша частина - через інші поняття .

Процедура є рекурсивної , якщо вона звертається сама до себе прямо або побічно (через інші процедури) .

 Зауважимо , що при непрямому зверненні всі процедури в ланцюжку - рекурсивні .

 Все сказане про процедури цілком відноситься і до функцій .

Приклад рекурсивної функції обчислення факторіала

Function factorial ( N: integer ) : longint ;

Begin

If N = 0 then   Factorial : = 1

 Else Factorial : = factorial ( N- 1 ) * N

рекурсивна функція для обчислення степеня числа буде мати наступний вигляд:

Function Step(x:real; n:integer):real:

Begin

If n = 0

then Step:=1

else Step:=Step(x,n-1)*x;

End;

27.Поняття модулів. Їх види та використання в програмах.

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

пСам модуль не є програмою, а призначений для використання іншими програмами і модулями.

У Турбо Паскаля є стандартні модулі : DOS, CRT (Cathode Ray Tube, электронно-променева трубка), Printer, Graph, System та інші.

Структура модуля

Модуль має наступну структуру:

UNIT <ім'я модуля>

INTERFACE

<розділ інтерфейсний>

IMPLEMENTATION

<розділ реалізації>

BEGIN

<розділ ініціалізації>

END.

У Паскалі є ряд стандартних модулів , в яких описано велику кількість вбудованих констант , типів , змінних і підпрограм. Кожен модуль містить пов'язані між собою ресурси .

модуль System 

Модуль містить базові засоби мови , які підтримують введення-виведення , роботу з рядками , операції з плаваючою точкою і динамічний розподіл пам'яті. Цей модуль автоматично використовується у всіх програмах , і його не потрібно вказувати в операторі uses . Він містить всі стандартні і вбудовані процедури , функції , константи і змінні Паскаля . 

модуль Crt

Модуль призначений для організації ефективної роботи з екраном , клавіатурою і вбудованим динаміком. При підключенні модуля Crt що виводиться інформація посилається в базову систему введення-виведення ( ВIОS ) або безпосередньо в відеопам'ять .

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