Процедурна декомпозиція програм, застосування підпрограм в мові високого рівня Паскаль (Лабораторна робота № 4)

Страницы работы

Содержание работы

Лабораторна робота №4

Тема: "Процедурна декомпозиція програм, застосування підпрограм в мові високого рівня Паскаль"

Мета: Вивчити методи застосування процедурної декомпозиції, визначити її переваги.

Завдання:

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

2. Написати функцію для обчислення логарифма довільної основи.

3. Написати функцію, що обчислює площу трикутника за формулою Герона (по 4довжинам сторін).

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

5. Написати функцію для обчислення факторіала числа.

Теоретичні відомості:

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

Вирішення вказаної проблеми є одним з найбільш актуальних завдань, що стоять перед сучасною наукою, оскільки в нинішній час саме розвиток програмного забезпечення в основному визначає темпи науково-технічного прогресу і є вузьким місцем в більшості галузей. Всього 5% вартості сучасної високотехнологічної продукції припадає на виробничі витрати (енергію, сировину, матеріали тощо) і 95% припадає на працю розробників програмного та апаратного забезпечення – проектувальників. Тому розвиток теорії програмування не зупиняється і в результаті наполегливої роботи великої кількості дослідників з різних країн світу постійно виникають нові та удосконалюються існуючі методи та засоби програмування, частину з яких (об’єктно-орієнтований підхід (ООП) та застосування шаблонів) буде розглянуто також в даному курсі.  

В основі всіх існуючих підходів до підвищення ефективності розробки ПЗ лежить декомпозиція алгоритмів та програм. Ідея декомпозиції полягає в розбитті складної системи на окремі складові частини за певною ознакою і подальшому аналізі одержаних фрагментів та способів їх взаємодії. Декомпозиція є природним механізмом, що застосовується людьми при аналізі достатньо складних об’єктів та процесів. Так, наприклад, при вивченні автомобіля студент автошколи не намагається зрозуміти його роботу в цілому, а виділяє ряд структурних складових – двигун, кузов, електрообладнання і т.п. Після такого розбиття стає набагато простіше зрозуміти принципи роботи кожного з компонентів окремо і, потім, зрозуміти спосіб функціонування системи в цілому не тримаючи в пам’яті деталі реалізації кожного з компонентів, а розглядаючи їх як "чорні ящики" з певними функціями.

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

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

Простий приклад процедурної декомпозиції – процес розв’язання квадратного рівняння, який можна розділити на дві підзадачі – "розрахунок дискримінанта" та "розрахунок кореня". Кожна процедура повинна реалізовувати окремий етап алгоритму, що є закінченою дією.

Переваги процедурної декомпозиції програм розглянемо на наступному прикладі. На рис. 4.1 показано зображення принципової електричної схеми, що містить такі стандартні елементи як резистори, індуктивності, конденсатор, вузли, клеми та лінії.    

4.1. Зображення принципової електричної схеми

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

Під "зрозумілістю" в даному випадку розуміється легкість визначення алгоритму та призначення (цілі) програми при аналізі програмістом її тексту. Визначити яка з двох програм є більш зрозумілою досить легко поглянувши на тексти основних програм (виділено на обох фрагментах світло-сірим кольором). Якщо на правому тексті програми, написаному в процедурному стилі, можна одразу побачити 4 резистори, 2 індуктивності, конденсатор і т.д., то на лівому тексті, розробленому без застосування процедур, ми бачимо лише велику кількість ліній (Line) та дуг (Arc) і зрозуміти, який саме рисунок буде зображено цими графічними примітивами можна лише шляхом запуску програми, або внаслідок детального аналізу її тексту (в цьому випадку, скоріше за все, малювати зображення доведеться самому програмісту).   


Похожие материалы

Информация о работе