Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Зачем нужны блок-схемы? |
Автор: Mastodont 20.1.2010, 15:38 |
Приходилось слышать мнение, что блок-схемы строятся по программному коду для каких-либо целей, например, объяснения алгоритма работы программы заказчику. А по-моему, блок-схема - это первый шаг на пути разработки программы, помогающий получить начальное представление о том, какой будет программа. Далее схема уточняется написанием псевдо-кода, по которому уже пишется программный код. Какое ваше мнение? |
Автор: kemiisto 20.1.2010, 15:51 | ||
Блок-схемы - пережиток прошлого, доструктурной эпохи. Исходный код программы, записанный на любом (почти ![]() ![]() Так что только:
|
Автор: _Y_ 20.1.2010, 20:13 | ||
Гы! насмешил ![]() ![]() |
Автор: FraiDex 20.1.2010, 21:04 |
Если разобраться в блок-схеме, становиться понятен общий принцип работы программы, не зависимо от того на каком она языке написана. сейчас используются в основном в учебных целях. Существует язык, который в принципе и основан на блок-схемах. Называется http://ru.wikipedia.org/wiki/%D0%94%D0%A0%D0%90%D0%9A%D0%9E%D0%9D_%28%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%29. Если кто заинтересуется, у мя есть учебник... |
Автор: ~FoX~ 21.1.2010, 10:25 | ||||||
Заказчику, за частую, в лучшем случае либо откровенно наплевать на квадратики и стрелочки, в худшем он тупой и просто не поймет что к чему... Возможности не исключают друг друга )))))
Откровенно говоря мне совершенно не удобно писать код/псевдокод по блоксхеме, особенно если схема не маленькая, то скорее в ней запутаешься, чем непосредственно в коде...
Если мне не изменяет память лицензирование ПО и ЕСПД требуют наличия блоксхемы главного алгоритма... |
Автор: SoWa 21.1.2010, 10:57 | ||
Аха, так он и поймет, если Вы в блок-схеме пару тысяч строк кода нарисуете... ![]() Вместо того, чтобы возюкаться с квадратиками и стрелочками я сперва черкаю на доске поверхностную схему пробежки данных туда-сюда(так уж повелось, клиент-серверные приложения делаю), а потом уже по надобности дописываю какие-то важные моменты, которые надо реализовать завтра, потому что сегодня оказывается уже 10 вечера и пора бы пойти домой ![]() Поэтому- только для сдачи зачетов в универе. ИМХО. Пинайте меня в зубы, всего вон два осталось ![]() |
Автор: Mastodont 21.1.2010, 11:30 | ||
Это где ты столько работаешь? ![]() |
Автор: SoWa 21.1.2010, 11:56 |
Там, где мне очень нравится ![]() А до дома идти всего минут семь, поэтому позволяю иногда себе такое счастье- посидеть и поработать ![]() Офтоп, в общем. По блок-схемам есть еще мысли? ) |
Автор: Фантом 21.1.2010, 22:11 |
Вариант №3, но с поправкой - для сдачи зачетов в плохом универе. |
Автор: GoldFinch 22.1.2010, 13:58 |
в любом случае, двумерное представление алгоритма нагляднее чем одномерное представление кто реверсил большие функции в IDA - тот знает) |
Автор: Фантом 22.1.2010, 14:51 | ||
Во-первых, это. Во-вторых, далеко не всегда написание программы - это запись алгоритма решения. Не всякий язык программирования является императивным. ![]() |
Автор: _Y_ 23.1.2010, 12:04 | ||||||
Прямо даже и не знаю. Ваши аргументы против блоксхем показывают что вы либо гении, либо просто не умеете пользоваться тем, чему в универе учили. Извините, но
Код это не алгоритм, это програмный продукт, алгоритм использующий. Алгоритм же это последовательность ключевых действий, записанная в виде обычного текста или (что гораздо лучше) в виде схемы. Вот пример чтения текстового файла в список текстовых переменных. Пример на Java, но это не важно:
Здесь куча информации, к алгоритму отношения не имеющей: это и декларирование списка dataArray и служебной переменной str, и путь к файлу, и способ чтения именно с помощью FileReader и BufferedReader, и способ выхода из цикла, и метод обработки ошибок. В общем, куча общеизвестных операций, затрудняющих восприятие. Алгоритм же должен сообщать только Ввести данные или Прочитать файл в dataArray - не больше. Максимум что нужно на схеме:
Это совсем другой уровень абстракции. Грамотно представленный алгоритм позволяет увидеть именно алгоритм, а не все и вся. Из этого, впрочем, следует, что блоксхемы нужно рисовать далеко не всегда, а только тогда, когда надо именно разбираться в алгоритме. Мне очень помогает, когда, например, надо сделать метод со сложными ветвлениями или разобраться в алгоритме, написанном человеком, алгоритмы излагать не умеющим. Имеется, кстати, незаслуженно пнутый в этой ветке, язык UML. В нем куча вариантов схематических представлений. Ни один человек, видимо, не пользуется всеми. Каждый пользуется только парой-тройкой, но выбор этой пары-тройки разнится. Мы, например, широко пользуемся диаграммами классов. Нужны они для того, чтобы делить задания внутри команды разработчиков, а потом без проблем собирать код воедино. Наши менеджеры используют диаграммы взаимодействий - для работы с клиентами. Ну и т.д. Но это ОФФ поскольку обсуждаем именно блок-схемы. |
Автор: Фантом 23.1.2010, 15:02 | ||
Это правильно. Но дело в том, что блок-схемы - совсем не самый удобный вариант для представления алгоритмов. Почти всегда полезнее использовать для описания алгоритмов и прототипирования какой-либо язык (или подмножество языка). Конечно, во многих случаях при обсуждении алгоритмов рисуется что-то, отдаленно напоминающее блок-схему. Но при этом 99% рисующих используют это только для очень простых случаев, к тому же не соблюдая правила оформления. Попытки же использовать блок-схемы всерьез, как правило, приводят к тому, что большая часть усилий тратится на красивое рисование, а не на обдумывание смысла рисуемого. |
Автор: ruX 23.1.2010, 16:07 |
По моему только блок схемы - действительно пережитки прошлого, в универе заставляют рисовать. Причём кто рисовал в университете, тот знает, что нужно обозначать буквально каждую строчку кода в квадратик. От такого "кода" никакой наглядности. Уходит время и в конце концов запутываешься. Эти гиганские схемы вряд ли чему научат - сколько раз я видел ситуацию, когда человек при мне за считаные минуты рисовал что то внятное, а переложить на язык не мог. Не только потому что плохо владеет языком, а из за того что мало чего-то реального в этом. Уж не говоря о том, что невозможно отразить некоторые вещи, как уже упомянули например шаблоны. А если и получиться - опять же километровые связи между фигурами, смотря на которые врядли поймёшь сразу что имелось ввиду. НО Рисовать условные схемы(а не программный код) - это совсем другое. Например связи между компонентами, их зависимостями. Также просто идеально чтоб скомпоновать мысли на коленке(грубо - прямоугольники со стрелочками). В таком формате удобно с коллегами обсуждать опять же общий вид какой либо проблеммы. Я никогда не рисовал код фигурами и не знал как, пока не заставили в универе. Но от этого я ничуть не чувствую себя ущемлённым - на оборот. Часто говорят, что блоксхемы устанавливают алгоритмическое мышление - имхо бред, оглядываясь на других. + добавление например пары условий приводит к сильному изменению внешнего вида блок-схемы. Код же при этом остаётся такой же читаемый |
Автор: _Y_ 23.1.2010, 17:38 | ||
А я согласная. Когда пишешь записку, не стОит заботиться о красоте почерка. Степень красоты должна зависить от цели. Пытаешься вытащить алгоритм из чужого, еще и написанного "по гениальному наитию" кода - берешь обратную сторону старого письма, карандаш и рисуешь кое-как. Придумал новый алгоритм и готовишь публикацию в журнале - стараешься соблюсти все правила и сделать иллюстрацию красиво . ЗЫ: Будете смеяться, но препы в универе - тоже люди. Знают они, как правило, больше студентов, но в остальном очень разные. Кто-то обращает внимание на суть, кто-то - на внешнее оформление. Кому-то просто трудно искать ошибку в вашем алгоритме, если не все правила соблюдены. Кто-то готов принять зачет в курилке - главное что ты во всем разобрался. Кто-то считает личным оскорблением, если ты пришел без галстука. ![]() |
Автор: nworm 24.1.2010, 00:09 |
Блок-схемы полезны, если нужно КОРОТКИЙ кусок алгоритма объяснить или разобрать. Или связи какие-то между крупными блоками (например алгоритмами). Люди картинки лучше воспринимают чем буквы. И ещё, по-моему, картинка может восприниматься целиком, то есть когда блок-схема огромная, на простыне, то с ней только хуже. |
Автор: nerezus 24.1.2010, 10:04 | ||
Но по сути это будет код на динамически-типизированном ЯП. И останется картинкой, т.к. выравнивание сделает свое дело. |
Автор: Finarfin 21.6.2010, 18:50 |
Если послать к чертям собачьим эти дебильные госты, то сама по себе идея визуально выражать предельно абстрактно-концептуальную мыслю - прекрасна. Всё портят сраные госты, особенно b=1,5a. МАЛО!!!! а что не вмешается - типа в комменты, и весь лист превращается в сплошные комментарии ![]() ГОСТ must die, свободу студентам и аспирантам! ![]() |
Автор: hente 22.6.2010, 19:09 |
Почитал посты, и самое интересно что в каждом есть доля правды ;) Например я и все наши в отделе программирования схематично накидываем что и как будет, так проще потом проект разбивать на более мелкие задачи! Но в то же время никогда (кроме как в универе) не чертил подробную схема совсеми логическими исходами, исключительно делал наброски чтоб не запутаться. + ко всему например при создании БД ЕР-модель строго обазательна (если в ней конечно больше 2х связанных таблиц), а к стате по этому поводу ведь никто не устроил опрос "нужна ли модель БД (физ. и лог-ая)" а без не никак не реализовать даже средний проект тем более передать его другом программисту. ЗЫ: все таки для понимания и структуризации нужна блок-схема хотябы обобщенная! |
Автор: hente 22.6.2010, 19:30 |
![]() |