Перейти к содержанию
СофтФорум - всё о компьютерах и не только

БлокСхемы и паскаль


Рекомендуемые сообщения

Написал первое чтото более мение похожее на програму(400 строк), но это для универа и надо писать долбонутую БлокСхему:rolleyes: . Есть ли програма болие мение нормально составляющяя блоксхему по тексту програмы в паскале?

Ссылка на комментарий
Поделиться на другие сайты

Берешь руки, карандаш и линейку (обязательно чтобы кружочки с ромбиками и прямоугольниками с треугольниками были в ней), подключаешь голову к ним и вперед - к черчению. :D

Да, стерку не забудь :D

Вот линк: http://www.dmitriyo.narod.ru/

Ссылка на комментарий
Поделиться на другие сайты

Редактор блок-схем, на той же странице есть дополнительный модуль импорта паскалевских процедур и функций.

Вот еще парочка freeware: Построитель блок-схем и Flowchart builder

P.S. Цитата из "Нового словаря хакера" Э.С.Рэймонда:

"flowchart (блок-схема) - древний способ представления структуры программы. Хакеры считают этот способ чрезвычайно глупым и поэтому никогда им не пользуются. Рисование блок-схем - удел программистов-коболистов и прочих одноклеточных. С точки зрения обычного хакера, чтение блок-схемы ничуть не легче чтения самой программы. Блок-схемы затемняют особенности поведения программ, созданных по правилам структурного программирования, и, что более важно, совсем не раскрывают структуру данных. "

Ссылка на комментарий
Поделиться на другие сайты

Да... блок-схемы это лажа... Действительно, ничуть не облегчают чтение программы. Лучше всего правильные комментарии и/или описание...

Ссылка на комментарий
Поделиться на другие сайты

Поднял я эту тему в универе с преподом про блоксхемы и про то что это ЛАЖА. Он мне обясняет что сначяла строетса блоксхема а потом пишетса програма, но я на 100% согласен с Троллем, и втирал ему что все сначяла пишут прогу а потоом по ней чертят блоксхему, и довтерался :angry: Словил я тему по курсачю "Построение блоксхем по тексту програмы" :o И все только в паскале! Впринципи построение квадратиков и овальчеков не проблема, но стрелки и прочее...? Тяжело ли будет написать такую прогу и подскажите как?

Ссылка на комментарий
Поделиться на другие сайты

Это практически тот же компилятор, только на выходе не машинный код, а блок-схема. НаписАть такое, ИМХО, непросто. Но для курсяка, вероятно, пойдет вариант с ограниченным набором структурных элементов. А все паскалевские примочки (даже те, которые декларированы Виртом изначально) в рамках курсового проекта многовато будет. Кроме того, разложить структуру программы и заменить элементами блок-схемы - это одно, а надо ж еще эти элементы удобочитаемо разместить на экране.

Ссылка на комментарий
Поделиться на другие сайты

MyP3iK

Согласен с Dear Friend:

НаписАть такое, ИМХО, непросто. Но для курсяка, вероятно, пойдет вариант с ограниченным набором структурных элементов.
Особенно с последним предложением, сам хотел об этом написать. Вообще-то довольно сложная тема. Вот мнение одного программиста:
Собственные проекты.

Одна из самых сложных программ - автоматический зарисовщик блок-схемы по исходнику на Pascal.

Вместо короткого и и понятного оператора Паскаля, например, оператора цикла, получается запутанный рисунок его внутренней логики. Смысла в этом никакого, но иногда программисты используют такие программы, чтобы представить документацию, которая требуется по дурацким требованиям старых стандартов на разработку программ, если заказчик на этом настаивает. Непонятно, зачем сейчас такая программа нужна, вроде программы перевода русского языка на древнеегипетские иероглифы.

Очень общие блок-схемы с человеческим языком внутри квадратиков и ромбиков бывают полезны, чтобы прояснить общую логику программы, но это совсем другое.

Жаль, но тебе надо не с преподавателем спорить, а курсовой сдавать. Для этого лучше всего смотреть в рот преподавателю и подхватывать каждую ересь, которую он скажет. Ибо известно: кто умеет - делает, кто не умеет - учит. Например:

Если трезво взглянуть на контингент учителей информатики - это, как правило, или выпускницы математических факультетов (где их учили максимум рисованию блок-схем и азам программирования, а в основном - теоретической математике), которые не смогли устроиться на высокооплачиваемую работу и совершенно случайно попали в школу, или уволенные по различным причинам программистки, умеющие программировать на устаревших языках, но абсолютно далекие и от педагогики, и от детей вообще. Есть, конечно, приятные исключения, но таких, к сожалению, пока еще мало...
Но я бы попробововал переубедить препода на другую тему, желательно на ту, по которой у тебя есть уже какой-нибудь вариант для небольшой переделки.

Насчет черчения стрелок - это просто. Все реализуй подпрограммами или функциями. Подпрограмма рисования стрелки, например, чертит основную линию и у завершающей точки еще две повернутые короткие линии.

А по этой теме я бы не изобретал велосипед, а попросил помочь кого-либо из авторов упомянутых мною программ, у них наверняка есть первоначальные варианты этих программ, исходными кодами которых уже не жаль поделиться.

P.S. В отношении самих блок-схем - дело в том, что структурное программирование, начиная с того же Паскаля, обзавелось массой стандартных структур, которые обычные блок-схемы не отображают как единицы программирования. Например, даже обычный цикл приходится рисовать в виде довольно сложной структуры квадратиков и ромбиков. А есть еще разные виды циклов, оператор выбора из нескольких вариантов... Блок-схемы - слишком детальный язык программирования. При рисовании блок-схем нам приходится переходить с уровня Паскаля на более детальный уровень, затемняя работу программы мелкими деталями, которые мы и не собирались программировать.

Были поэтому изобретены всякие дополнительные обозначения для блок-схем, соответствующие именно операторам Паскаля, например, разным видам циклов. Но в стандарт для блок-схем они не вошли. Впрочем, это было временное решение, Паскаль быстро ушел дальше, к объектно-ориентированному программированию. Но все равно и при классическом Паскале при вычерчивании блок-схем мы по правилам должны использовать только стандартные обозначения. Мы в положении человека, которому предписано использовать в описании программы только двоичную систему счисления, поскольку компьютер считает в ней. Поэтому мы остаемся у разбитого корыта и должны истолковывать и рисовать то, что Паскаль, чтобы облегчить нам работу, сделал автоматически.

В современных языках появилось много средств, для описания которых блок-схемы не годятся. Центр тяжести в разработке программ сейчас не на реализации алгоритмов, а на создании взаимодействующих объектов из готовых частей. Ловушки исключений, наследование свойств - этого не было в классическом Паскале, сейчас это есть и опять же делается скрыто языком, логика работы этих конструкций не описывается программистом.

Есть и еще возражения, например, уже давно программы не создаются как законченное целое, не изменяющееся после их сдачи заказчику, как было когда-то. Сейчас другой подход к созданию программ, они часто дорабатываются и меняются, и все эти изменения часто не попадают в блок-схемы. Правильный путь - это так называемые самодокументированные программы, содержащие много комментариев, и если посмотреть, например, на C#, одним из его отличий от более старых языков служит наличие специальных комментариев (XML-комментариев), предназначенных для построения автоматических описаний программы после ее написания и возможных корректировок.

А при разработке программ имхо самое полезное - это псевдокод, но не буду сейчас о нем писать.

В программировании есть несколько классических книг типа работ Кнута, Дейкстры, Страуструпа. Одной из них является книга Фредерика П. Брукса "Мифический человеко-месяц" о разработке крупных программных проектов. Ее нетрудно найти в Internet в разных видах. Она была написана довольно давно, и с тех пор языки программирования ушли намного дальше от блок-схем, но и тогда уже Брукс убедительно доказал ненужность блок-схем. Вот цитата из этой книги, с которой я абсолютно согласен, хотя при использовании современных языков можно было бы привести против использования блок-схем и побольше аргументов. Итак, откуда пришли и почему ушли блок-схемы:

  Несостоятельность блок-схем

Блок-схемы  -  это  та часть  документации  к  программе, которая почти всегда имеется в  избытке. Между  тем многие программы вообще не нуждаются в блок-схемах  и  лишь  очень  немногие  из  них  требуют больше  одного листа таковых.

Блок-схемы показывают структуру ветвления программы только  в одном  ее аспекте.  Но даже  эта структура видна  достаточно четко,  только  если  вся блок-схема  помещается  на  одной странице,  и о  ней очень трудно  получить хорошее  представление, если блок-схема располагается на нескольких  листах, связанных вместе нумерованными стрелками.

Блок-схема,  помещающаяся на  одной странице, для  большой программы по существу  превращается в общий  план программы, перечень  ее основных этапов или блоков, и, как таковая, она  очень  удобна. Конечно, такой граф и не следует стандартам блок-схем, и не нуждается в них.

Подробные блок-схемы,  однако, устарели; они только мешают, и  в лучшем случае  пригодны  для  обучения  повичков,  еще  не  умеющих  алгоритмически мыслить.  В свое  время  предложенные Голдстайном  и  Нейманом маленькие квадратики на блок-схемах  вместе со своим  содержанием выступали в качестве языков высокого уровня, объединяя абсолютно  непонятные операторы  машинного языка  в  группы,  имеющие определенный смысл.  Как  давно уже  указал Айверсон, в систематическом  языке  высокого  уровня  такая группировка уже осуществлена, так что  каждый квадратик просто соответствует оператору. 

...

В действительности блок-схемы гораздо больше превозносятся, чем используются  на практике. Я никогда не видел, чтобы опытный программист чертил блок-схемы, прежде чем написать программу. Когда стандарты организации требуют блок-схем, то почти неизменно они рисуются после. Многие программистские организации с гордостью пользуются специальными программами для  построения "этого  незаменимого инструмента  программиста" по готовой машинной программе. Я не считаю этот универсальный  опыт прискорбным проявлением дурного топа, признание в котором сопровождается нервным смехом. Напротив, это свидетельство здравого смысла,  урок, проливающий  свет на истинную пользу блок-схем.

Апостол Петр так  говорил о новообращенных  язычниках  и  иудейских законах: "Что же вы желаете возложить на выи  (их)  иго,  которого не  могли понести ни  отцы  наши, ни мы?"  (Деяние 15, 10).  Я хотел бы сказать то же самое о начинающих  программистах и устаревшей  практике использования блок-схем.

Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...