Структурне програмування

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Структурне програмування — методологія програмування (модель конструювання програмного забезпечення) запропонована в 1970-х роках голландським науковцем Дейкстрою (Edsger Wybe Dijkstra), була розроблена та доповнена Ніклаусом Віртом. Ґрунтується на теоремі Бьома-Якопіні (Corrado Bohm, Giuseppe Jacopini), яка була опублікована у 1966 р.

Згідно з цією методологією будь-яка програма може бути створена використовуючи три конструкції:

  • послідовне виконання — одноразове виконання операції в порядку запису їх (операцій) в тексті програми;
  • розгалуження — виконання певної операції або декількох операцій в залежності від стану певної, наперед заданої умови;
  • цикл — багаторазове виконання операції або групи операцій за умови виконання деякої наперед заданої умови. Така умова називається — умова продовження циклу.

Кожна конструкція являє собою блок із одним входом і одним виходом.

Блок Слідування передбачає послідовне (лінійне) виконання операторів програми.

Блок Вибір являє собою точку прийняття рішення про подальший перебіг виконання операторів програми. Вибір здійснюється однією із трьох структур:

  • if (єдиний вибір)
  • if…else (подвійний вибір)
  • switch або case (множинний вибір)

Усі три структури можна звести до одного типу if.

Блок Повторення реалізується одним із трьох способів:

  • структура while
  • структура do/while
  • структура for

Усі три структури можна звести до структури while.

Структурована програма складається із вищеназваних блоків за двома правилами: пакетування (вихід одного блоку з'єднується із входом наступного) і вкладення (будь-який блок може бути замінений на структуру керування вибору або повторення).

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

Переваги:

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

Недоліки:

  • непропорційне зростання складності програми при збільшенні об'єму коду програми;
  • складність створення паралельних програм.