Лекції з інформатики - структурне програмування, керуючі конструкції, покрокова деталізація

Протягом 60-х років спроби створення багатьох великих програмних систем наштовхувалися на ряд труднощів. Графіки створення програмного забезпечення зазвичай не виконувалися, а кінцеві продукти відрізнялися ненадійністю. Люди почали розуміти, що створення програмного забезпечення більш складне завдання, ніж вони представляли. Дослідницькі роботи 60-х років привели до розвитку структурного програмування - дисциплінованого підходу до написання програм, що відрізняються від неструктурованих програм ясністю, простотою тестування і налагодження та легкістю модифікації.

Одним з найбільш відчутних результатів цих досліджень була розробка в 1971 році Ніклаус Віртом мови програмування Pascal. Pascal, названий на честь математика і філософа сімнадцятого століття Блеза Паскаля, був розроблений для вивчення структурного програмування в академічному середовищі і незабаром став найбільш віддається перевага мовою програмування в багатьох університетах.

Приступимо до опису структурної методології.

Блок-схема - це графічне представлення алгоритму або фрагмента алгоритму. Блок-схема малюється з використанням спеціальних символів, таких, як прямокутники, ромби, овали, і малі кола; ці символи з'єднуються стрілками, званими лініями зв'язку.

Вузол злиття - 2 входи 1 вихід, операції над даними не здійснюються

Простий присудок - обчислює логічне вираз і відповідно до отриманим результатом визначає напрямок. Обчислення без побічних ефектів. Функція - перетворення вхідних даних.

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

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

Існує 15 елементарних програм (не більше 4 вузлів). 7 з них мають функціональні вузли:

Цикл з передумовою:

Цикл з умовою поста:

Цикл з внутрішнім умовою:

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

Зазвичай оператори програми виконуються один за одним в тій послідовності, в якій вони написані. Це називається послідовним виконанням. Однак деякі оператори дозволяють програмісту вказати, що наступним має виконуватися не черговий оператор, а якийсь інший. Це називається передачею управління.

У 60-і роки стало ясно, що необмежене використання передач управління є джерелом безлічі неприємностей при груповій розробці програмного забезпечення. Вина була покладена на оператор goto. який дозволяє передавати управління в дуже широких межах.

Дослідження Бома і Джопіні показало, що програми можуть бути написані без використання оператора goto. Також в цьому дослідженні була доведена наступна теорема.

Теорема про структуруванні: будь-яка проста програма може бути перетворена в функціонально їй еквівалентну програму, побудовану на основі 3 наступних структур:

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

До неструктурних операторам в мові Pascal відносяться:

Покрокова деталізація і спадний проектування

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

Висновок: покрокова реалізація це тактика розробки програми, а спадний проектування це стратегія програмування.

Цілі структурного програмування

  1. Забезпечити дисципліну програмування
  2. Поліпшити Новомосковскбельность програми
  3. Підвищити ефективність програми
  4. Підвищити надійність програми