|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Правила составления блок-схем для программ [C/C++;Pascal;Basic]12.04.2010, 22:20. Показов 236753. Ответов 20
Если вам нужно составить блок-схему для вашей программы написанной на [C/C++;Pascal;Basic] (именно для них будут приведены примеры), то прошу изучить данное руководство.
Составление блок-схемы - процесс составления графических блоков из блоков кода. Фактически вы будете смотреть на строчку и добавлять блок. Ещё строчка, блок и вниз вниз вниз. Очень просто, если освоить "строительные блоки". Рассмотрим их: Терминатор Подробнее
Любая программа\подпрограмма начинается и заканчивается данным блоком. Отличие в тексте внутри него. Для начального блока так и пишем "НАЧАЛО", а для завершающего "КОНЕЦ".
Обратите внимание: в блок-схеме должно быть только одно начало, и только один конец. В случаях когда работа программы завершается в разных ветвлениях, нужно не каждую из них завершать блоком терминатора, а с помощью блока "Соединитель" переводить управление на единый конец программы. Данные Подробнее
Если какие-то данные поступают в программу извне (например с клавиатуры), то отобразить это на блок-схеме, вам поможет именно этот блок. Взглянем на код, который отражает этот блок:
Процесс Подробнее
Предыдущий блок фактически дал нам возможность заявить что есть такие то переменные и мы можем уже с ними как то работать. Например, посчитать выражение a = (b * c) / d
В коде это может выглядеть так:
Предопределенный процесс Подробнее
В вашей программе могут быть функции и процедуры. Если вы их вызываете где-то (иначе тогда зачем они писались?), то данный вызов должен помещаться в данный блок. Т.е. если какая то строчка в программе вызывает функцию\процедуру, мы помещаем её в этот блок.
Вот как это может выглядеть в коде:
Решение Подробнее
Участки кода, которые разветвляют работу программы, по определённому условию необходимо выполнять данным блоком. При этом в блоке пишется само условие, а из блока выводят линии справа (для случая "условие не выполняется") и снизу (для случая "условие выполняется").
В коде, этот блок выглядит обычно оператором if
Это выглядит так: Вложение 30531 В сам блок записывается операнд switch'а, а над линиями, исходящими из блока - то с чем он сравнивается. Обратите внимание: линии, исходящие из блока, должны быть подписаны. Для if эта подпись "Да" и "Нет", для switch'а - соответствующие подписи case'ов Границы цикла Подробнее
Это составной блок, который отображает цикличные (повторяемые действия). Первый блок показывает где начинается цикл, а второй - где заканчивается.
...
Рассмотри ещё цикл do - while. Для него блок-схема будет выглядеть немного по другому, т.к. условие окончания проверяться будет в нижнем блоке, а не в верхнем.
Вместо блока в котором написано "тело цикла" может быть другой блок, а может много других блоков Это просто для того чтобы показать как распологаются блоки внутри циклаСоединитель Подробнее
О нет, блок-схема не влезает в лист (во громадина то). Что делать? Используем этот блок!
Цифра в блоке будет обозначать какой кружочек с цифрой искать на другом листе. Я имею ввиду что сначало мы добавим такой блок с цифрой 1. На следующем листе снова разместим кружочек с цифрой 1. А если добавим ещё блок в другое место и он будет соединять уже другие части программы то нужно будет писать цифру 2 и т.д. Документ Подробнее
Через этот блок я всегда выводил переменные. В общем если алгоритм печатает переменную d на экране то можно зарисовать это так:
Не забуде что блок "данные" который был описан выше тоже может обозначить вывод данных. Советы: 1. Блоки должны быть одной ширины. Это важно, к этому могут придраться. Насчет высоты не знаю Делал разную высоту и все было хорошо.2. Если текст не влезает в блок то можно сделать его повыше (но не надо делать его шире!) и разделить по нему текст так что все влезет. А ещё можно вынести "комментарий". Да, на блок схемах они тоже бывают. Все есть в ГОСТ. 3. Все блоки соединяются обычными линиями (БЕЗ стрелок). Стрелочка на конце линии добавляется только тогда когда одна линия входит в другую (при этом стрелка рисуется для той которая "входит") 4. Не заморачивайтесь, блок схема лишь отображает алгоритм. Можно не отображать на ней очень многое - то что не влияет на алгоритм работы программы. 5. Не полагайтесь полностью на это руководство. Оно лишь для быстрого старта. Если хотите сделать очень хорошо, лучше взгляните на ГОСТ ![]() ГОСТ 19.701-90. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения Спасибо кот Бегемот и taras atavin за замечания и предложения
51
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 12.04.2010, 22:20 | |
|
Ответы с готовыми решениями:
20
Про актуальность правил составления блок-схем программ
Правила составления блок-схем |
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
||||||||||||||||
| 13.04.2010, 15:59 [ТС] | ||||||||||||||||
|
Различные примеры:
КОД
Пока что открываю тему для ваших замечаний и предложений. Давайте вместе сделаем все лучше
6
|
||||||||||||||||
|
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
| 14.04.2010, 11:30 | |
|
Цикл ваще-то шестиугольный, а не ввиде начала. И откуда в языково-независимых блок-схемах чисто сёвый инкремент? Заменить математической записью того же самого в порядке:
1. Начальное значение счётчика. 2. Условие завершения цикла. 3. Как менять значение счётчика после каждого выполнения тела цикла. Добавлено через 1 минуту И насколько мне известно, выход из тела цикла просто сразу в левый вход заголовка. Добавлено через 3 минуты Хотя, по ссылке два блока и сказано, что это стандарт. Но и там блоки не скруглены!
1
|
|
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
||||
| 14.04.2010, 16:25 [ТС] | ||||
|
Где то от кого то слышал что это устаревшее что то... но ладно, даже без этого в том ГОСТ что по ссылке есть блок "Подготовка" который выглядит именно так (разве чуть шире). Насчет языконезависимого... впринципе да, не очень хорошо. А насчет записи я согласен, вот только как это записать? Через запятую, на каждой строчке или ещё как. Стандарт молчит. И что за имя цикла понять трудно, вот было бы написано "тип" цикла.
Спасибо! ![]() Добавлено через 13 минут Исправил вид блока цикла, добавил пример цикла с пост-условием
3
|
||||
|
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
|
|
| 15.04.2010, 16:39 | |
|
ofstream Z4("C:\\Kod.txt"); Какой мне блок применять когда я откриваю файл?
1
|
|
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
| 15.04.2010, 17:07 [ТС] | |
|
Фактически, как я понимаю, это ввод данных в программу, поэтому блок "Данные" думаю подойдет
Напишите в нем Z4...
2
|
|
|
49 / 25 / 2
Регистрация: 09.06.2008
Сообщений: 227
|
|
| 19.05.2010, 22:29 | |
|
А какой блок используется для switch - case ?..
1
|
|
|
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842
|
|
| 19.05.2010, 22:53 | |
|
5
|
|
|
cybermolex
|
|
| 30.05.2010, 10:18 | |
|
Здравствуйте, есть такой вопрос.
Алгоритм программы следующий: По нажатию кнопки старт, происходит считывание данных с файла, затем считывания данных с порта, после этого, идет сравнение в цикле, данных с порта и данных с файла, при обнаружении соответствия происходит выход из цикла, и вывод данных на экран, после этого цикл идет заново, если совпадений нет, цикл так же прерывается и на вывод идут другие данные, но в любом случае после этого цикл начинает работать снова. То есть алгоритм циклический. А теперь вопрос: Как на блок-схеме отобразить ручной выход из цикла? Есть кнопка стоп, по нажатию которой цикл прерывается, и программа прекращает свою деятельность. Заранее спасибо. |
|
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
| 30.05.2010, 20:38 [ТС] | |
|
Посмотрите в ГОСТе блок "Ручной ввод", считывается состояние клавиши в переменную допустим а потом блоком "решения" проверить переменную и решить прервать программу или нет. Если да - блок "соединитель" и его вторая копия уже идет к терминатору "КОНЕЦ"
0
|
|
|
1 / 1 / 0
Регистрация: 18.06.2010
Сообщений: 5
|
||
| 18.06.2010, 12:18 | ||
1
|
||
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
||
| 18.06.2010, 21:43 [ТС] | ||
|
Спасибо, а то всегда ограничивался как то этими правилами...
Вот лучше приведу полный список из ГОСТ 19.701-90:
0
|
||
|
0 / 0 / 0
Регистрация: 11.10.2009
Сообщений: 16
|
|
| 03.06.2011, 10:35 | |
|
Пример вложенных циклов FOR
В теле цикла FOR может быть еще один цикл FOR, получаются вложенные циклы, например: http://www.programmer.zp.ua/blsh/img/e3062.png
0
|
|
|
128 / 109 / 103
Регистрация: 16.05.2011
Сообщений: 340
|
|
| 13.02.2012, 14:32 | |
|
Цикл for нас учили через шестиугольник в которм идёт запсиь <параметр цикло>=начало,конец.
0
|
|
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
| 13.02.2012, 18:05 [ТС] | |
|
Владимир_ВМ, насколько я понял верны оба варианта, т.к. ГОСТ строго не регламентирует вид цикла. Естественно лучше делать именно так как вас учили, чтобы не иметь проблем с преподавателями. Я начертил достаточно много блок схем по учёбе, и разным преподавателям сдавалось все это. Прокатывали оба варианта, но иногда преподавателю нужно "именно так и никак иначе". Тут уж лучше сделать как говорит, а не так как правильно. Это касается не только циклов
0
|
|
|
Заблокирован
|
|||
| 16.02.2012, 20:59 | |||
|
insideone, немного критики, надеюсь, Вы не против
![]() 1.
2.
У меня есть сомненья, что блок "документ" правильно использовать для вывода. Читаем с ГОСТ(пусть даже по вашей ссылке) :
3.
Гост, ссылку на который вы привели вроде бы менее строгий чем более старый(который 19.003-80. ЕСПД). Если туда заглянуть - то можно обнаружить что блок "Данные" называется "ввод вывод" - что "как бы" более отражает суть.
4.
все по той же ссылке можно найти пропорции для блока "Пуск-останов"(у Вас это блок "Терминатор"). Этот блок представляет собой прямоугольник со скругленными правым и левым краями, но у вас нарисован прямоугольник со скругленными углами. Еще иногда вместо него рисуют овал(когда блок-схему в Word рисуют xD) - это тоже неверно.
напоследок
А так, все неплохо...вроде бы. добавил: А еще, не помешало бы почистить тему ИМХО.
0
|
|||
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
||||||
| 18.02.2012, 17:40 [ТС] | ||||||
|
rrrFer, спасибо! Материал изначально действительно не претендовал на какую-то академичность, т.к. я больше практик (в свое время пришлось много нарисовать блок-схем для студентов-сотоварищей). К сожалению и сами преподаватели часто не заворачивались и часто требовали рисовать даже не правильно (исходя из своего мировозрения).
Но критика действительно конструктивная, и пора бы немного проапдейтить мануал, займусь этим вскоре ![]() Кстати я уже упоминаю об этом в п.2, но лучше проиллюстрировать.
0
|
||||||
|
Заблокирован
|
||||
| 19.02.2012, 21:40 | ||||
|
Еще точнее тут: "& БЛОК-СХЕМА" Ссылку в ответе PandoraBox2007 я, конечно, ввиду не имел .
Там выше писалось что преподаватель часто требует не по стандарту, а выдвигает свои требования, я щитаю, надо не стесняясь тыкать его мордой в ГОСТ ) Можно заглянуть в соседнюю тему, там есть пост ув. Бурундука, че-то странно выглядит у него блок "терминатор"(походу, наоборот, проблем "с рисованием круглых блоков" нет) и очень странный "соединительный блок". При моем не угасающем уважении к Бурундуку, я бы выпилил статью полностью, ну или написал бы туда комментарий, но нет прав xD. Смотрим раздел "Алгоритм и его свойства", вижу в нем аж 4 предложения, сильно смахивающие на цитаты из энциклопедии(кавычки и ссылку кто-то забыл), но самое главное, про свойства там нет ни одного слова, а могло бы быть интересно .
Не по теме: Пишу тут, чтобы еще 1 пост не создавать(мне лень). Соседняя тема по блок-схемам очень даже интересная. Хотя, я прочитал через строчку по диагонали, но картинки понравились ) Не хватает описания возможностей по экпорту/импорту - например, могу ли я запихнуть в эту программу блок-схему, нарисованную в Dia или Visio (или наоборот, сохранить проект в формате Dia)?
0
|
||||
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|||||
| 22.02.2012, 00:04 [ТС] | |||||
![]() DD интересна именно простотой, её даже устанавливать не обязательно (портабельность). По скорости работы шустра, и возможности вполне достаточны для сабжа.Холивар детектед :)
Некоторые личности могут не терпеть критики, поэтому такой подход может обернуться в будущем большими проблемами. Конечно стоит и ГОСТ показать, но я бы не стал настаивать если бы препод начал противиться этим доводам.
1
|
|||||
|
Заблокирован
|
|
| 04.03.2012, 09:26 | |
|
0
|
|
| 04.03.2012, 09:26 | |
|
Помогаю со студенческими работами здесь
20
Программа для составления блок схем Программа для составления блок-схем
Программа для составления блок схем Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|