Тема: Методи структурування програм Мета: Опанувати методологію
перетворення довільної програми в структуровану.
Завдання:
Перетворити керуючу структуру програми, задану за допомогою скороченою
матриці суміжності, в структуровану програму. Показати їх функціональну еквівалентність
Варіант: 3
SA0
| AX0
| XYC
| YBU
| BU0
| CZ0
| ZCU
| UTD
| TF0
|
DV0
| VGK
| GW0
| WHU
| HV0
| FE0
| KL0
| LP0
| PLE
|
Хід роботи:
1. Використовуючи матрицю суміжності, побудуємо блок-схему вихідної програми:
SHAPE \ * MERGEFORMAT
2. Виконаємо повний аналіз вихідної програми. Покажемо елементи аналізу та результуючі блок-схеми для кожного кроку аналізу.
Знаходимо у вихідній блок-схемі структуровані елементи, для кожного з яких вводиться
функціональний додатковий вузол, в якому зберігається ідентифікатор і лічильник. Ідентифікатор містить номер кроку структурування та номер оператора. Лічильник вказує, скільки вихідних вузлів даними вузлом об'єднано. Даний етап закінчується, коли в програмі не залишається жодного структурованого елемента.
Крок 1:
SHAPE \ * MERGEFORMAT
Крок 2:
SHAPE \ * MERGEFORMAT
Крок 3:
SHAPE \ * MERGEFORMAT
Результат:
SHAPE \ * MERGEFORMAT
3. Виділені неструктуровані фрагменти перетворимо за допомогою теореми про структурування в структуровану форму. При використанні теореми про структуруванні отримаємо позначену і рекурсивну програми. Для структурування програми скористаємося методом введення змінної стану:
Крок 1: Ідентифікуємо всі функціональні і предикатні вузли і викреслюємо всі дуги, причому вихідний дузі присвоюємо «0», а всі інші дуги позначаються номерами вузлів, у які ці дуги входять:
SHAPE \ * MERGEFORMAT
Крок 2: Замінюємо функціональні та предикатні вузли новими елементами з використанням лічильника i:
Крок 3: Будуємо структуровану програму, використовуючи нові позначення, причому вводимо додатковий цикл по лічильнику i:
Крок 4: Спростимо отриману схему шляхом підстановки вузлів і ліній у вузли присвоювання лічильнику нового значення. При цьому не можна допускати утворення рекурсії: