Геннадий Тышов писал(а):
Сергей Ефанов
здесь привел пример преобразования дракон-схемы "Головное меню_1" в набор дракон-схем-вставок "Головное меню_2" и их программирование.
Просмотрел обе схемы и свои замечания разместил в них в управленческих примечаниях.
По поводу замечаний к первой схеме. Дело в том, что приведённая Дракон-схема транслируется в функцию, которая является членом класса. Поэтому некоторые переменные используются и устанавливаются другими членами класса.
А вот замечания ко второй схеме - гораздо более интересны и важны.
Цитата:
В.Д. Паронджанов рекомендует использовать большую дракон-схему "Силуэт" без декомпозиции на отдельные схемы.
Да, это так. Но, пока монитор не имеет размера стола, а принтер не позволяет печатать листы А1, декомпозиция будет нужна. И даже когда мониторы будут размером со стол, а принтер будет печатать А0 - она будет тоже нужна. Вопрос в том, какой размер/сложность одного листа приемлем - не имеет однозначного ответа. Я пробую и так,и эдак - ищу, что будет мне удобнее.
Цитата:
вместо процедур создали прием программирования вставок.
При этом отошли от стандартной модели формирования програмного кода.
Ветки заменили на отдельные схемы, т.к. каждая схема вызывается только из одного места, то вызовы процедур и возврат из них заменили своими переходами goto и своими метками, взяли на себя функции транслятора.
Причина применения goto не в том, что вставки вызываются из одного места. Я не могу использовать вызовы функций, если в них требуется возврат управления в RTOS. Это ограничение накладывает применённая в проекте примитивная RTOS (если её вообще можно так назвать).
Цитата:
Визуальный алгоритм не стал нагляднее, нарущена целостность. Ветку с двумя выходами пришлось объединить в одной схеме с другой веткой, т.е. вместо декомпозиции произощло объединение разнофункциональных схем.
Я попробовал. Результат мне и самому не кажется однозначным. С одной стороны - я добился того, чего хотел: любая часть целиком помещается на экране моего монитора. С другой стороны - что то потерял. Что больше - потерял или приобрел - пока не могу сказать. Выложенная схема "главного меню" - это было "учебно - тренировочное" упражнение. Я тогда взял уже готовую схему, и преобразовал её. Потом я попробовал в том же стиле сделать другую, новую схему. Мне кажется, эти приёмы помогли решить задачу. Если весь алгоритм "положить" на один лист, работать с ним станет намного сложнее (схема "Шина 1wire").
Цитата:
Мое мнение, так не следует преобразовывать схему "Силуэт", использовать прием программирования вставок вместо процедур не является оправданным.
Надеюсь, что я научусь лучшим образом производить декомпозицию. Одно мне ясно - нужен способ разбиения большой схемы на части. В. Паронджанов приводил где то на этом форуме примеры реальных Дракон-схем. Знаете, что меня в них поразило? Каждый лист содержал, ну очень малое количество икон! А выполнены они были в формате А1.
Цитата:
Извините за отрицательную оценку, ваш опыт программирования с использованием различных приемов позволил сделать некоторые выводы.
Ну что Вы, какие извинения! Ваш отзыв очень важен для меня, я не воспринимаю его как "отрицательный". Он -
полезный!Ефанов Сергей.