Правила составления блок-схем для программ [C/C++;Pascal;Basic]

Если вам нужно составить блок-схему для вашей программы написанной на [C/C++;Pascal;Basic] (именно для них будут приведены примеры), то прошу изучить данное руководство.

Составление блок-схемы - процесс составления графических блоков из блоков кода. Фактически вы будете смотреть на строчку и добавлять блок. Ещё строчка, блок и вниз вниз вниз. Очень просто, если освоить "строительные блоки". Рассмотрим их:

Терминатор

Подробнее

Любая программа\подпрограмма начинается и заканчивается данным блоком. Отличие в тексте внутри него. Для начального блока так и пишем "НАЧАЛО", а для завершающего "КОНЕЦ".

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

Данные

Подробнее

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

PureBasicВыделить код

1
2
3
4

Input a
Input b
Input c
Input d

Обратите внимание

: В ГОСТе указываются и другие блоки ввода информации, например блок "Ручной ввод" в виде трапеции. Этот же блок можно использовать для обозначения вывода

информации

, однако как и в случае с вводом в ГОСТе указываются отдельные блоки для вывода информации, например блок "Дисплей"

Процесс

Подробнее

Предыдущий блок фактически дал нам возможность заявить что есть такие то переменные и мы можем уже с ними как то работать. Например, посчитать выражение

a = (b * c) / d

В коде это может выглядеть так:

Обратите внимание

: стоит избегать "языковых" особенностей. Например, инкремент (i++) в блоке лучше записать как

i = i + 1

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

Предопределенный процесс

Подробнее

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

Вот как это может выглядеть в коде:

Обратите внимание

: "Внутренности" вызываемой функции должны быть отображены на отдельной блок-схеме. Другими словами, если у вас программа с 10 функциями, то у вас будет 1 + 10 блок схем.

Решение

Подробнее

Участки кода, которые разветвляют работу программы, по определённому условию необходимо выполнять данным блоком. При этом в блоке пишется само условие, а из блока выводят линии справа (для случая "условие не выполняется") и снизу (для случая "условие выполняется").

В коде, этот блок выглядит обычно оператором if

Однако, если вам встретился

switch

, то его вам нужно изобразить тоже через этот блок.

Это выглядит так:

Вложение 30531

В сам блок записывается операнд switch'а, а над линиями, исходящими из блока - то с чем он сравнивается.

Обратите внимание

: линии, исходящие из блока, должны быть подписаны. Для if эта подпись "Да" и "Нет", для switch'а - соответствующие подписи case'ов

Границы цикла

Подробнее

Это составной блок, который отображает цикличные (повторяемые действия). Первый блок показывает где начинается цикл, а второй - где заканчивается.

...

Первой строкой идет название цикла. Ну for цикл.. так и пишем. Был бы while цикл написали while. А дальше собственно какую то информацию о нем, но

главное - условие его окончания

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

Рассмотри ещё цикл do - while. Для него блок-схема будет выглядеть немного по другому, т.к. условие окончания проверяться будет в нижнем блоке, а не в верхнем.

PascalВыделить код

1
2
3

repeat
  { тело цикла }
until (x <= 10);

PureBasicВыделить код

1
2
3

Do
   ' тело цикла
Loop While (x > 10)

Условие в таком случае проверятся в конце каждой итерации а не в её начале. На блок схеме это отобразится так:

Вместо блока в котором написано "тело цикла" может быть другой блок, а может много других блоков

Это просто для того чтобы показать как распологаются блоки внутри цикла

Соединитель

Подробнее

О нет, блок-схема не влезает в лист (во громадина то). Что делать? Используем этот блок!

Цифра в блоке будет обозначать какой кружочек с цифрой искать на другом листе. Я имею ввиду что сначало мы добавим такой блок с цифрой 1. На следующем листе снова разместим кружочек с цифрой 1. А если добавим ещё блок в другое место и он будет соединять уже другие части программы то нужно будет писать цифру 2 и т.д.

Документ

Подробнее

Через этот блок я всегда выводил переменные. В общем если алгоритм печатает переменную d на экране то можно зарисовать это так:

Не забуде что блок "данные" который был описан выше тоже может обозначить вывод данных.

Советы:

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

Делал разную высоту и все было хорошо.

2. Если текст не влезает в блок то можно сделать его повыше (но не надо делать его шире!) и разделить по нему текст так что все влезет. А ещё можно вынести "комментарий". Да, на блок схемах они тоже бывают. Все есть в ГОСТ.

3. Все блоки соединяются обычными линиями

4. Не заморачивайтесь, блок схема лишь отображает алгоритм. Можно не отображать на ней очень многое - то что не влияет на алгоритм работы программы.

5. Не полагайтесь полностью на это руководство. Оно лишь для быстрого старта. Если хотите сделать очень хорошо, лучше взгляните на ГОСТ

ГОСТ 19.701-90. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения

Спасибо

кот Бегемот

и

taras atavin

за замечания и предложения