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

Рекурсія зсередини

Це може здатися надзвичайним, але cамозвернення процедури нічим не відрізняється від виклику іншої процедури. Що відбувається, якщо одна процедура (або програма) викликає іншу? Загалом наступне:

1) в пам'яті розміщаються параметри, передані процедурі (але не параметри-змінні!);

2) в іншому місці пам'яті зберігаються значення внутрішніх змінних процеду ком відноситься і до функцій. Повернемося до рекурсивного визначення факторіала. Достатньо записати його на Паскалі й утвориться опис рекурсивної функції.

Function Factorial (N: Integer) : Integer;

Begin

  If N=0 Then Factorial:=1 Else Factorial:=Factorial(N-1)*N

End;

Рекурсія зсередини

Це може здатися надзвичайним, але cамозвернення процедури нічим не відрізняється від виклику іншої процедури. Що відбувається, якщо одна процедура (або програма) викликає іншу? Загалом наступне:

1) в пам'яті розміщаються параметри, передані процедурі (але не параметри-змінні!);

2) в іншому місці пам'яті зберігаються значення внутрішніх змінних процедури;

3) запам'ятовується адреса повернення в процедуру;

4) керування передається викликаній процедурі.

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

Правила локалізації змінних:

  1. змінна (константа) існує в рамках того блока де вона описана;

  2. кожна змінна в межах блока повинна бути описана тільки один раз;

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

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

Поняття структурного програмування

     Історично склалося так, що імперативні мови на даний час домінують у програмуванні. Проте дослідження, проведені ще у 70-80-х роках XX сторіччя, показали, що аплікативна методика забезпечує більш ефективні способи верифікації програм і доказ їхньої коректності. Писати складні програми в тисячі й десятки тисяч рядків без розчленовування на самостійні фрагменти, тобто без структурування, просто неможливо.

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

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

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

     Структурний підхід до програмування являє собою методологію створення програм. Його впровадження забезпечує:

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

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

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

  • закінчення створення програм у заданий термін.

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

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