Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмізація та програмування.docx
Скачиваний:
84
Добавлен:
17.05.2015
Размер:
1.35 Mб
Скачать

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

Структурне програмування - методологія розробки програмного забезпечення, в основі якої лежить уявлення програми у вигляді ієрархічної структури блоків. Запропоновано в 70-х роках XX століття Е. Дейкстри, розроблена і доповнена Н. Віртом.

У відповідності з цією методологією

Будь-яка програма являє собою структуру, побудовану з трьох типів базових конструкцій:

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

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

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

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

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

Розробка програми ведеться крок за кроком, методом «зверху вниз».

Спочатку пишеться текст основної програми, в якому, замість кожного зв'язкового логічного фрагмента тексту, вставляється виклик підпрограми, яка буде виконувати цей фрагмент. Замість справжніх, працюючих підпрограм, в програму вставляються «заглушки», які нічого не роблять. Отримана програма перевіряється та налагоджується. Після того, як програміст переконається, що підпрограми викликаються в правильній послідовності (тобто загальна структура програми вірна), підпрограми-заглушки послідовно замінюються на реально працюючі, причому розробка кожної підпрограми ведеться тим же методом, що і основної програми. Розробка закінчується тоді, коли не залишиться жодної «затички», яка не була б видалена. Така послідовність гарантує, що на кожному етапі розробки програміст одночасно має справу з доступним для огляду і зрозумілим йому безліччю фрагментів, і може бути впевнений, що загальна структура всіх більш високих рівнів програми вірна. При супроводженні та внесення змін у програму з'ясовується, в які саме процедури потрібно внести зміни, і вони вносяться, не зачіпаючи частини програми, безпосередньо не пов'язані з ними. Це дозволяє гарантувати, що при внесенні змін та виправленні помилок не вийде з ладу якась частина програми, що знаходиться в даний момент поза зоною уваги програміста.

Теорема про структурне програмування:

Ця теорема була сформульована італійськими математиками К.Бомом і Дж.Якопіні в 1966 році і говорить нам про те, як можна уникнути використання оператора переходу goto.

Яку схему алгоритму можна представити у вигляді композиції вкладених блоків begin і end, умовних операторів if, then, else, циклів з передумовою (while) і може бути додаткових логічних змінних (прапорів).

Історія

Методологія структурного програмування з'явилася як наслідок зростання складності розв'язуваних на комп'ютерах завдань, і відповідного ускладнення програмного забезпечення. У 70-ті роки XX століття обсяги і складність програм досягли такого рівня, що «інтуїтивна» (неструктурована, або «рефлекторна») розробка програм, яка була нормою в більш ранній час, перестала задовольняти потребам практики. Програми ставали занадто складними, щоб їх можна було нормально супроводжувати, тому потрібна була якась систематизація процесу розробки та структури програм.

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

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