Покрокова деталізація і поняття про псевдокоді - life-prog

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

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

Головним описом на псевдокоді можна вважати зовнішнє оформлення модуля на базовому мовою програмування, яке
має містити:

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


дотримання:
обобщенний_оператор
обобщенний_оператор
розгалуження:
ЯКЩО умова ТО
обобщенний_оператор
ІНАКШЕ
обобщенний_оператор
ВСЕ ЯКЩО
повторення:
ПОКИ умова РОБИТИ
обобщенний_оператор
ВСЕ ПОКА

Мал. 8.2. Основні конструкції структурного програмування на псевдокоді.


Вихід з повторення (циклу):
ВИЙТИ
Вихід з процедури (функції):
ПОВЕРНУТИСЯ
Перехід на обробку виняткової ситуації:
порушила імя_ісключенія

Мал. 8.3 Окремі випадки оператора переходу як узагальненого оператора.

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

ВИКЛЮЧЕННЯ імя_ісключенія
обобщенний_оператор
ВСЕ ИСКЛЮЧЕНИЕ

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

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


ВИДАЛЕННЯ В ФАЙЛІ ЗАПИСІВ ДО ПЕРШОЇ,
Задовольняти заданому фільтру:
ВСТАНОВИТИ ПОЧАТОК ФАЙЛА.
ПОКИ ЩО НЕ КІНЕЦЬ ФАЙЛА РОБИТИ
ПРОЧИТАТИ ЧЕРГОВИЙ ЗАПИС.
ЯКЩО ЧЕРГОВА ЗАПИС ЗАДОВОЛЬНЯЄ
фільтри ТО
ВИЙТИ
ІНАКШЕ
ВИДАЛИТИ ЧЕРГОВИЙ ЗАПИС З ФАЙЛУ.
ВСЕ ЯКЩО
ВСЕ ПОКА
ЯКЩО ЗАПИСИ НЕ ВИДАЛЕНІ ТО
НАДРУКУВАТИ "ЗАПИСИ НЕ ВИДАЛЕНІ".
ІНАКШЕ
НАДРУКУВАТИ "УДАЛЕНО н ЗАПИСІВ".
ВСЕ ЯКЩО

Мал. Приклад одного кроку деталізації на псевдокоді.

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