Как сделать блок-схему удобной для чтения, если в ней множество разветвлений и циклов? Есть какие-то заготовки или советы, чтобы она читалась удобно?
Получается много разветвления и она неудобна для чтения - как мне кажется. Плюс не знаю, как выделить главную линию, а альтернативы убрать больше на второй план.
Спасибо за помощь!
C/C++
Как сделать блок-схему удобной для чтения, если в ней множество разветвлений и циклов?
Особо правил нет. С моего сайта можно попасть на страницу https://koi.tspu.ru/vav/vav_umk_inf/algoritmiz/algorithm8.htm и в кое-чем я согласен.
Все эти блок-схемы удобны если алгоритм небольшой. Ну и не пишут в них подробно код, так как предполагалось, что блок-схема не привязана к языку программирования, а описывает в общем всё. Если же пишут, тогда предполагают, что этот язык пояснений знают все.
Идеальный код мол должен поместиться на странице, а идеальная блок-схема по сути тоже должна быть на странице. Так что надо изначально разбивать код на части, модули и повторяющиеся части в функции. Тогда мы как бы имеем главную блок-схему которая будет показывать связь модулей, разные кусочки-функции подпрограммы которые где-то там будем показывать. Главная цель блок-схемы показать, что с чем связано, за чем идет, что никакой код не покажет. По сути в технике это так же, мы разбиваем изделие на модули, которые имеют номер в котором зашифровано местоположение модуля и его функцию, то бишь то, что он выполняет. На уровень эл. схем мы не опускаемся.
В программировании все бывает сложнее, модуль по сути может породить копию или вообще другой модуль, который может встроиться в схему и как это обозначить? Все будет условно и конечно не идеально.
Посмотрите этот проект http://www.flowgorithm.org/ — они рисуют в блок-схеме даже переменные, мол в оперативной памяти они, ну и схему так, для обучения чисто. По схеме генерируют код на разных языках. То есть схема — описание алгоритма, в общем дает как работает, а код отличим на разных языках. У них можно выполнять по шагам, что повышает удобство в образовательных целях.
Все эти блок-схемы удобны если алгоритм небольшой. Ну и не пишут в них подробно код, так как предполагалось, что блок-схема не привязана к языку программирования, а описывает в общем всё. Если же пишут, тогда предполагают, что этот язык пояснений знают все.
Идеальный код мол должен поместиться на странице, а идеальная блок-схема по сути тоже должна быть на странице. Так что надо изначально разбивать код на части, модули и повторяющиеся части в функции. Тогда мы как бы имеем главную блок-схему которая будет показывать связь модулей, разные кусочки-функции подпрограммы которые где-то там будем показывать. Главная цель блок-схемы показать, что с чем связано, за чем идет, что никакой код не покажет. По сути в технике это так же, мы разбиваем изделие на модули, которые имеют номер в котором зашифровано местоположение модуля и его функцию, то бишь то, что он выполняет. На уровень эл. схем мы не опускаемся.
В программировании все бывает сложнее, модуль по сути может породить копию или вообще другой модуль, который может встроиться в схему и как это обозначить? Все будет условно и конечно не идеально.
Посмотрите этот проект http://www.flowgorithm.org/ — они рисуют в блок-схеме даже переменные, мол в оперативной памяти они, ну и схему так, для обучения чисто. По схеме генерируют код на разных языках. То есть схема — описание алгоритма, в общем дает как работает, а код отличим на разных языках. У них можно выполнять по шагам, что повышает удобство в образовательных целях.
Блок-схему всегда, за исключением блок-схем программ на Ассемблере, читать неудобнее, чем текст программы. Блок-схемы - чисто формальное требование, пережиток прошлого. Поэтому плюнь на легкость или сложность ее чтения.
"Чтение блок-схемы ничуть не легче чтения самой программы. Блок-схемы затемняют особенности поведения программ, созданных по правилам структурного программирования, и, что более важно, совсем не раскрывают структуру данных."
Э.С.Рэймонд
"Я никогда не видел, чтобы опытный программист чертил блок-схемы, прежде чем написать программу. Когда стандарты организации требуют блок-схем, то почти неизменно они рисуются после. Многие программистские организации с гордостью пользуются специальными программами для построения "этого незаменимого инструмента программиста" по готовой машинной программе. Я не считаю этот универсальный опыт прискорбным проявлением дурного тона, признание в котором сопровождается нервным смехом. Напротив, это свидетельство здравого смысла, урок, проливающий свет на истинную пользу блок-схем.
Апостол Петр так говорил о новообращенных язычниках и иудейских законах: "Что же вы желаете возложить на выи (их) иго, которого не могли понести ни отцы наши, ни мы?" (Деяние 15, 10). Я хотел бы сказать то же самое о начинающих программистах и устаревшей практике использования блок-схем."
Фредерик П. Брукс, "Мифический человеко-месяц". 1975 г.( !)
"Чтение блок-схемы ничуть не легче чтения самой программы. Блок-схемы затемняют особенности поведения программ, созданных по правилам структурного программирования, и, что более важно, совсем не раскрывают структуру данных."
Э.С.Рэймонд
"Я никогда не видел, чтобы опытный программист чертил блок-схемы, прежде чем написать программу. Когда стандарты организации требуют блок-схем, то почти неизменно они рисуются после. Многие программистские организации с гордостью пользуются специальными программами для построения "этого незаменимого инструмента программиста" по готовой машинной программе. Я не считаю этот универсальный опыт прискорбным проявлением дурного тона, признание в котором сопровождается нервным смехом. Напротив, это свидетельство здравого смысла, урок, проливающий свет на истинную пользу блок-схем.
Апостол Петр так говорил о новообращенных язычниках и иудейских законах: "Что же вы желаете возложить на выи (их) иго, которого не могли понести ни отцы наши, ни мы?" (Деяние 15, 10). Я хотел бы сказать то же самое о начинающих программистах и устаревшей практике использования блок-схем."
Фредерик П. Брукс, "Мифический человеко-месяц". 1975 г.( !)
Применить модульность. Блоки скомпановать в модули.
Михаил Рыжков
Также обратить внимание на Mind Mapping (прога Xmind, SimpleMind). Если это применимо в Вашем случае.
Похожие вопросы
- Как работают циклы For, while, do while можно пример в виде блок схемы?
- Программирование пожалуйста быстрее, и блок схему нужно тоже, помогите пожалуйста
- Написать программу на c++ с готовым кодом и блок схемой
- Для задачи индивидуального варианта разработать блок-схему алгоритма и программу на С++.
- Помогите С++ с цикла for нужно сделать while цикл и do while цикл точнее у меня вышла только с циклом for
- Преобразование матрицы в строку по схеме
- Учу с++, можете объяснить на пальцах? не понимаю работу условия в теле цикла... if ((i+1)%3 != 0)
- Циклы C++. Создание программ с циклическими конструкциями.
- Нужно написать программу с вложенным циклом
- Запись и чтение двумерного массива в бинарный файл