Самостійне вивчення Тема: Структурне програмування План: Компоненти структурного програмування Структурне програмування Компоненти структурного програмування На початкових етапах не було конкретних теоретичних концепцій та технологій програмування. Результат створення програм залежав, головно, від мистецтва програміста й ефективності застосованих ним хитрощів. Такі програми важко налагоджувати, вони мало придатні для вдосконалення. Особливо важко компонувати складні програми з частин, розроблених колективом програмістів. Як уже зазначено, методологією сучасного програмування є програмування структурне. Дехто вважає, що це просто програмування згідно з чіткими канонами, інші - що це написання підпрограм (модулів) та об'єднання їх у програму, ще інші -що це програмування "без goto". Можна сказати, що структурне програмування - це проектування, написання і тестування програм згідно з наперед визначеною дисципліною. Мета структурного програмування - створювати програми чіткої структури, тобто такі, які можна було б без великих затрат розуміти, супроводжувати і модифікувати без участі авторів, оскільки на сучасному етапі затрати на супровід і модифікацію програм становлять близько 70% усіх затрат на їхнє створення та експлуатацію. Структурний підхід до програмування передбачає таке: низхідне проектування (проектування зверху вниз); модульне програмування; структурне кодування. Розглянемо реальну економічну задачу керування запасами на підприємстві (рис. 1.1). Розв'язати таку задачу можна двома шляхами - шляхом висхідного та низхідного проектування. З'ясуємо недоліки першого підходу і переваги другого. У випадку висхідного проектування спочатку складають програми найнижчого рівня: витрати, прибуток, звіт про стан запасів тощо, причому їх можуть розробляти різні програмісти. Для відлагодження цих програм потрібно складати додаткові програми, що передаватимуть їм інформацію, яка повинна була б надходити від програм вищого рівня. Відлагоджувальні програми повинні моделювати середовище, в якому працюватиме програма нижчого рівня. Хоча такі програми й нескладні, однак вони не входять у кінцеву програму, тому затрати на їхню розробку є втратними. Коли всі програми найнижчого рівня створені, розробляють програми наступного вищого рівня. Для перевірки їх комбінують з раніше розробленими модулями нижчого рівня, виявляючи похибки і недоробки за допомогою відповідних налагоджувальних програм. Так триває доти, доки не буде створено програму найвищого рівня. Однак часто трапляється, що після цього всі модулі разом не працюють. Причини такої ситуації можуть бути різними. Наприклад, доки складали налагоджувальні програми, специфікації для решти програм могли змінитися; або ж налагоджувальні програми недостатньо адекватно моделюють середовище програм. Крім того, будь-які додаткові зміни в програмах вищого порядку зумовлюють потребу внесення додаткових змін у раніше розроблені і налагоджені програми нижчого рівня або навіть їхнє перепрограмування. У разі низхідної розробки проектування і програмування ведуть зверху вниз. Так вдається уникнути проблем, характерних для висхідної розробки. Відповідність специфікацій перевіряють до переходу на нижчий рівень. Налагоджують програми постійно під час розробки зверху вниз, усі розроблені модулі є в кінцевій програмі. Під час розробки замість програм нижнього рівня можна використовувати так звані заглушки. Вони дуже прості і можуть містити тільки вхідний і вихідний оператори та повідомлення про виконання. Детальніше метод низхідного проектування розглянемо нижче.
рис 1.1 Структурне програмування Головним у структурному програмуванні є те, що будь-який алгоритм можна побудувати за допомогою трьох структур - послідовності, розгалуження і повторення, тобто кожну частину програми можна перетворити в одну з трьох структур або їхню комбінацію так, щоб неструктурована частина програми зменшилась. Після достатньої кількості таких перетворень ця частина програми або зникне взагалі, або стане непотрібною. Це справджується для простих програм, які характеризуються: одним входом; одним виходом; не містять недосяжних фрагментів програми (або точок); не містять безконечних циклів. У цьому розумінні головні структури є простими програмами. У мові Паскаль головні структури виконують оператори: послідовність - складений оператор, розгалуження - умовний оператор if-then-else, повторення - оператор циклу з передумовою while-do. За допомогою головних структур програмування можна складати програми без операторів goto, тому структурне програмування часто називають програмуванням "без goto". Однак таке тлумачення вузьке, оскільки ця ситуація є лише наслідком використання головних структур, як і те, що потік керування буде скерований тільки вниз, тобто оператори будуть виконуватись тільки в порядку їх запису, враховуючи і пропуски (структура if-then-else). Головна ж перевага структурного програмування - це зменшення кількості помилок унаслідок застосування тільки допустимих структур.