3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Правила составления блок-схем для программ [C/C++;Pascal;Basic]12.04.2010, 22:20. Показов 230600. Ответов 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 [ТС] | 2 | |||||||||||||||
Различные примеры:
КОД
Пока что открываю тему для ваших замечаний и предложений. Давайте вместе сделаем все лучше
6
|
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
|
|
14.04.2010, 11:30 | 3 |
Цикл ваще-то шестиугольный, а не ввиде начала. И откуда в языково-независимых блок-схемах чисто сёвый инкремент? Заменить математической записью того же самого в порядке:
1. Начальное значение счётчика. 2. Условие завершения цикла. 3. Как менять значение счётчика после каждого выполнения тела цикла. Добавлено через 1 минуту И насколько мне известно, выход из тела цикла просто сразу в левый вход заголовка. Добавлено через 3 минуты Хотя, по ссылке два блока и сказано, что это стандарт. Но и там блоки не скруглены!
1
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
14.04.2010, 16:25 [ТС] | 4 |
Да, действительно раньше я всегда шестиугольным и делал. Вот такой:
Где то от кого то слышал что это устаревшее что то... но ладно, даже без этого в том ГОСТ что по ссылке есть блок "Подготовка" который выглядит именно так (разве чуть шире). Насчет языконезависимого... впринципе да, не очень хорошо. А насчет записи я согласен, вот только как это записать? Через запятую, на каждой строчке или ещё как. Стандарт молчит. И что за имя цикла понять трудно, вот было бы написано "тип" цикла. Спасибо! Добавлено через 13 минут Исправил вид блока цикла, добавил пример цикла с пост-условием
3
|
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
|
|
15.04.2010, 16:39 | 5 |
ofstream Z4("C:\\Kod.txt"); Какой мне блок применять когда я откриваю файл?
1
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
15.04.2010, 17:07 [ТС] | 6 |
Фактически, как я понимаю, это ввод данных в программу, поэтому блок "Данные" думаю подойдет Напишите в нем Z4...
2
|
49 / 25 / 2
Регистрация: 09.06.2008
Сообщений: 227
|
|
19.05.2010, 22:29 | 7 |
А какой блок используется для switch - case ?..
1
|
2096 / 1261 / 171
Регистрация: 01.02.2009
Сообщений: 2,842
|
|
19.05.2010, 22:53 | 8 |
5
|
cybermolex
|
|
30.05.2010, 10:18 | 9 |
Здравствуйте, есть такой вопрос.
Алгоритм программы следующий: По нажатию кнопки старт, происходит считывание данных с файла, затем считывания данных с порта, после этого, идет сравнение в цикле, данных с порта и данных с файла, при обнаружении соответствия происходит выход из цикла, и вывод данных на экран, после этого цикл идет заново, если совпадений нет, цикл так же прерывается и на вывод идут другие данные, но в любом случае после этого цикл начинает работать снова. То есть алгоритм циклический. А теперь вопрос: Как на блок-схеме отобразить ручной выход из цикла? Есть кнопка стоп, по нажатию которой цикл прерывается, и программа прекращает свою деятельность. Заранее спасибо. |
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
30.05.2010, 20:38 [ТС] | 10 |
Посмотрите в ГОСТе блок "Ручной ввод", считывается состояние клавиши в переменную допустим а потом блоком "решения" проверить переменную и решить прервать программу или нет. Если да - блок "соединитель" и его вторая копия уже идет к терминатору "КОНЕЦ"
0
|
1 / 1 / 0
Регистрация: 18.06.2010
Сообщений: 5
|
|
18.06.2010, 12:18 | 11 |
В ВУЗе говорили что стрелки на соединительных линиях проставляются только по направлениям влево и/или вверх
1
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
18.06.2010, 21:43 [ТС] | 12 |
Спасибо, а то всегда ограничивался как то этими правилами... Вот лучше приведу полный список из ГОСТ 19.701-90:
0
|
0 / 0 / 0
Регистрация: 11.10.2009
Сообщений: 16
|
|
03.06.2011, 10:35 | 13 |
Пример вложенных циклов 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 | 14 |
Цикл for нас учили через шестиугольник в которм идёт запсиь <параметр цикло>=начало,конец.
0
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
13.02.2012, 18:05 [ТС] | 15 |
Владимир_ВМ, насколько я понял верны оба варианта, т.к. ГОСТ строго не регламентирует вид цикла. Естественно лучше делать именно так как вас учили, чтобы не иметь проблем с преподавателями. Я начертил достаточно много блок схем по учёбе, и разным преподавателям сдавалось все это. Прокатывали оба варианта, но иногда преподавателю нужно "именно так и никак иначе". Тут уж лучше сделать как говорит, а не так как правильно. Это касается не только циклов
0
|
Заблокирован
|
|
16.02.2012, 20:59 | 16 |
insideone, немного критики, надеюсь, Вы не против
1.
2.
У меня есть сомненья, что блок "документ" правильно использовать для вывода. Читаем с ГОСТ(пусть даже по вашей ссылке) : 3.
Гост, ссылку на который вы привели вроде бы менее строгий чем более старый(который 19.003-80. ЕСПД). Если туда заглянуть - то можно обнаружить что блок "Данные" называется "ввод вывод" - что "как бы" более отражает суть.
4.
все по той же ссылке можно найти пропорции для блока "Пуск-останов"(у Вас это блок "Терминатор"). Этот блок представляет собой прямоугольник со скругленными правым и левым краями, но у вас нарисован прямоугольник со скругленными углами. Еще иногда вместо него рисуют овал(когда блок-схему в Word рисуют xD) - это тоже неверно.
напоследок
А так, все неплохо...вроде бы. добавил: А еще, не помешало бы почистить тему ИМХО.
0
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
18.02.2012, 17:40 [ТС] | 17 |
rrrFer, спасибо! Материал изначально действительно не претендовал на какую-то академичность, т.к. я больше практик (в свое время пришлось много нарисовать блок-схем для студентов-сотоварищей). К сожалению и сами преподаватели часто не заворачивались и часто требовали рисовать даже не правильно (исходя из своего мировозрения).
Но критика действительно конструктивная, и пора бы немного проапдейтить мануал, займусь этим вскоре Ни когда бы не догадался так написать потому что никогда не видел такого нигде. Хотя для понятности можно было бы. Ну почему же. Вообще блок скорее означает "печать" на ... (экран). Почему-то у все преподаватели которым сдавались блок схемы хотелось видеть именно такой вывод. Блок-схем с экраном ни разу не видел, но упомянуть стоит Кстати я уже упоминаю об этом в п.2, но лучше проиллюстрировать. У DD в котором все это рисовалось существуют некоторые трудности с рисованием круглых блоков. Хотя в принципе это только отмаза. Постараюсь перерисовать лучше С комментариями очень редко сталкивался, попробую изучить и описать. А вот соединитель - почему-то даже при разделении на несколько листов использовал п.7, но раз уж есть отдельный для страниц, надо описать и его тоже. Что-то не понял где это оно у меня нарушается? Вроде как раз так всегда и рисовал и лишних стрелок избегал.
0
|
Заблокирован
|
|
19.02.2012, 21:40 | 18 |
Правила составления блок-схем для программ [C/C++;Pascal;Basic]
Еще точнее тут: "& БЛОК-СХЕМА" Ссылку в ответе PandoraBox2007 я, конечно, ввиду не имел . Там выше писалось что преподаватель часто требует не по стандарту, а выдвигает свои требования, я щитаю, надо не стесняясь тыкать его мордой в ГОСТ ) Можно заглянуть в соседнюю тему, там есть пост ув. Бурундука, че-то странно выглядит у него блок "терминатор"(походу, наоборот, проблем "с рисованием круглых блоков" нет) и очень странный "соединительный блок". При моем не угасающем уважении к Бурундуку, я бы выпилил статью полностью, ну или написал бы туда комментарий, но нет прав xD. Смотрим раздел "Алгоритм и его свойства", вижу в нем аж 4 предложения, сильно смахивающие на цитаты из энциклопедии(кавычки и ссылку кто-то забыл), но самое главное, про свойства там нет ни одного слова, а могло бы быть интересно . Не по теме: Пишу тут, чтобы еще 1 пост не создавать(мне лень). Соседняя тема по блок-схемам очень даже интересная. Хотя, я прочитал через строчку по диагонали, но картинки понравились ) Не хватает описания возможностей по экпорту/импорту - например, могу ли я запихнуть в эту программу блок-схему, нарисованную в Dia или Visio (или наоборот, сохранить проект в формате Dia)?
0
|
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
|
|
22.02.2012, 00:04 [ТС] | 19 |
Ну так там как раз одна стрелка, как раз в случае "справа-налево"
Не-а, не умеет DD коннектиться с другими "старшими" братьями (т.е. не загружает "их" форматы, и не сохраняет в "их" форматах"). Dia и Visio по сравнению с DD монстры DD интересна именно простотой, её даже устанавливать не обязательно (портабельность). По скорости работы шустра, и возможности вполне достаточны для сабжа. Холивар детектед :)
У меня все и в таком виде "прошло". Проверяющий у нас видимо не шарит в блок-схемах. Хотя согласен, наверное, не везде так. В целом мне вообще редко попадались проблемы "так не правильно", обычно если так говорили, то это скорее была "хотелка" препода, а не обоснованное замечание связанное с ГОСТами.
Тут все очень индивидуально Некоторые личности могут не терпеть критики, поэтому такой подход может обернуться в будущем большими проблемами. Конечно стоит и ГОСТ показать, но я бы не стал настаивать если бы препод начал противиться этим доводам.
1
|
Заблокирован
|
|
04.03.2012, 09:26 | 20 |
0
|
04.03.2012, 09:26 | |
04.03.2012, 09:26 | |
Помогаю со студенческими работами здесь
20
Программа для составления блок схем Программа для составления блок-схем Программа для составления блок-схем Программа для составления блок схем Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |