Министерство Образования и Науки Российской Федерации
Новосибирский Государственный Технический Университет
Рассчётно Графическая Работа
по предмету «Информатика»
Факультет: Прикладной Математики и Информатики
Группа: ПМИ-52
Студенты: Коваленко И. А.
Преподаватель: Шапошникова Т. А.
Новосибирск 2006 г.
Условие
Для данной схемы:
I. Получить непоименованный блок;
II. Структурировать этот непоименованный блок:
1) Построить помеченную структурированную схему;
2) Построить рекурсивную структурированную схему;
3) Построить E-схему и описать функцию непоименованного блока;
III. Провести анализ непоименованного блока:
1) где в блоке нарушен принцип структурированности?
2) как эта проблема решается формальным образом?
3) можно ли найти другое решение этой проблемы – неформальное?
Решение
I. Выделим в схеме все элементарные подпрограммы и заменим каждую новым функциональным узлом.
Элементарная подпрограмма “While do”:
Последовательность:
Элементарная подпрограмма “If then else”:
Элементарная подпрограмма “While do”:
Элементарная подпрограмма “Do while”:
Получаем новую, промежуточную схему, в которой также можно выделить элементарные подпрограммы и заменить их на новые функциональные узлы.
Элементарная подпрограмма “Do while”:
Элементарная подпрограмма “Do while”:
Последовательность:
Последовательность:
Получаем новую, промежуточную схему, в которой также можно выделить элементарные подпрограммы и заменить их на новые функциональные узлы.
Последовательность:
Элементарная подпрограмма “While do”:
Элементарная подпрограмма “If then else”:
Получаем новую, промежуточную схему, в которой также можно выделить элементарные подпрограммы и заменить их на новые функциональные узлы.
Последовательность:
Не осталось ни одной не замещённой элементарной программы. Получили упрощённую схему, функционально эквивалентную исходной – непоименованный блок.
II. Проименуем блоки и дуги:
1) Начнём составление помеченной структурированной схемы. Для этого представим каждый блок в виде блока с ссылками.
Получили помеченную структурированную схему:
2) Любой помеченной структурированной схеме можно построить эквивалентную рекурсивную схему.
Начнём с подпрограммы №3:
Далее подставим подпрограмму №4:
Далее подставим подпрограмму №7:
Далее подставим подпрограмму №6:
Далее подставим подпрограмму №5:
Далее подставим подпрограмму №2:
Завершим построение рекурсивной схемы подстановкой подпрограммы №1:
3) Построим E-схему:
Переименуем блоки для удобства описания функции:
Опишем функцию непоименованного блока:
F(X) = { P1(F1(X)) ^ P2(F2(F1(X))) ^ Y=F3(F2(F1(X))) |
P1(F1(X)) ^ ¬P2(F2(F1(X))) ^ Y=F4(F2(F1(X))) |
¬P1(F1(X)) ^ Y=F6(F5(F1(X))) }
III. Проведём анализ непоименованного блока:
После замены всех элементарных подпрограмм мы получили непоименованный блок. В нём нарушен принцип структурированности: цикл if p4 then f5 else f4 имеет два входа. Неформально проблема может быть решена путём дублирования блока (F4,5; P4). В результате мы получим структурированную программу. Полученная схема эквивалентна исходной. Для доказательства этого достаточно показать, что они эквивалентны по выполнению. E-схема исходного непоименованного блока приведена выше. E-схема программы выглядит следующим образом:
E-схемы эквивалентны -> эквивалентны E-деревья -> эквивалентны программы. При формальном решении мы получили тот же результат: блок (F4,5; P4) продублирован в те же ветки программы.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.