Форум программистов, компьютерный форум, киберфорум
Наши страницы
Алгоритмы
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 1309, средняя оценка - 4.77
insideone
Модератор
Автор FAQ
3657 / 937 / 112
Регистрация: 10.01.2010
Сообщений: 2,513
#1

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

12.04.2010, 22:20. Просмотров 177834. Ответов 20

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



Терминатор
Название: terminator.png
Просмотров: 66556

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

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





Данные
Название: input.png
Просмотров: 66481

Размер: 1.7 Кб
Подробнее
Если какие-то данные поступают в программу извне (например с клавиатуры), то отобразить это на блок-схеме, вам поможет именно этот блок. Взглянем на код, который отражает этот блок:
C++
1
cin >> a >> b >> c >> d;
Pascal
1
read(a); read(b); read(c); read(d);
PureBasic
1
2
3
4
Input a
Input b
Input c
Input d
Обратите внимание: В ГОСТе указываются и другие блоки ввода информации, например блок "Ручной ввод" в виде трапеции. Этот же блок можно использовать для обозначения вывода информации, однако как и в случае с вводом в ГОСТе указываются отдельные блоки для вывода информации, например блок "Дисплей" (см. ниже)





Процесс
Название: process_block.png
Просмотров: 77878

Размер: 1.5 Кб
Подробнее
Предыдущий блок фактически дал нам возможность заявить что есть такие то переменные и мы можем уже с ними как то работать. Например, посчитать выражение a = (b * c) / d

В коде это может выглядеть так:
C++
1
a = (b * c) / d;
Pascal
1
a := (b * c) / d;
PureBasic
1
a = (b * c) / d
Обратите внимание: стоит избегать "языковых" особенностей. Например, инкремент (i++) в блоке лучше записать как i = i + 1, т.к. блок-схемы должны избегать зависимостей от конкретной реализации и отражать алгоритм, логику работы.





Предопределенный процесс
Название: preprocess.png
Просмотров: 78046

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

Вот как это может выглядеть в коде:
C++
1
SomeFunction(a, b);
Pascal
1
SomeFunction(a, b);
PureBasic
1
Call SomeFunction(a, b)
Обратите внимание: "Внутренности" вызываемой функции должны быть отображены на отдельной блок-схеме. Другими словами, если у вас программа с 10 функциями, то у вас будет 1 + 10 блок схем.





Решение
Название: solution.png
Просмотров: 61554

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

В коде, этот блок выглядит обычно оператором if
C++
1
if ( a > b && c < d )
Pascal
1
if (( a > b ) and ( c < d )) then
PureBasic
1
If (( a > b ) and ( c < d )) Then
Однако, если вам встретился switch, то его вам нужно изобразить тоже через этот блок.
Это выглядит так: Вложение 30531
В сам блок записывается операнд switch'а, а над линиями, исходящими из блока - то с чем он сравнивается.

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





Границы цикла
Название: loop_new.png
Просмотров: 61586

Размер: 2.4 Кб

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

...

Название: loop_new.png
Просмотров: 61586

Размер: 2.4 Кб
C++
1
for (int i = 0; i < n; i++)
Pascal
1
for i:=0 to n - 1 do
PureBasic
1
For i = 0 to n
Первой строкой идет название цикла. Ну for цикл.. так и пишем. Был бы while цикл написали while. А дальше собственно какую то информацию о нем, но главное - условие его окончания. Второй блок закрывает границы цикла. Все что расположено между этими двумя блоками - будет выполняться в цикле.
Рассмотри ещё цикл do - while. Для него блок-схема будет выглядеть немного по другому, т.к. условие окончания проверяться будет в нижнем блоке, а не в верхнем.
C++
1
2
3
do {
   // тело цикла
} while (x > 10);
Pascal
1
2
3
repeat
  { тело цикла }
until (x <= 10);
PureBasic
1
2
3
Do
   ' тело цикла
Loop While (x > 10)
Условие в таком случае проверятся в конце каждой итерации а не в её начале. На блок схеме это отобразится так:
Название: loop_do_while.png
Просмотров: 61288

Размер: 2.4 Кб
Вместо блока в котором написано "тело цикла" может быть другой блок, а может много других блоков Это просто для того чтобы показать как распологаются блоки внутри цикла







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

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





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

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





Советы:
1. Блоки должны быть одной ширины. Это важно, к этому могут придраться. Насчет высоты не знаю Делал разную высоту и все было хорошо.
2. Если текст не влезает в блок то можно сделать его повыше (но не надо делать его шире!) и разделить по нему текст так что все влезет. А ещё можно вынести "комментарий". Да, на блок схемах они тоже бывают. Все есть в ГОСТ.
3. Все блоки соединяются обычными линиями (БЕЗ стрелок). Стрелочка на конце линии добавляется только тогда когда одна линия входит в другую (при этом стрелка рисуется для той которая "входит")
4. Не заморачивайтесь, блок схема лишь отображает алгоритм. Можно не отображать на ней очень многое - то что не влияет на алгоритм работы программы.
5. Не полагайтесь полностью на это руководство. Оно лишь для быстрого старта. Если хотите сделать очень хорошо, лучше взгляните на ГОСТ

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

Спасибо кот Бегемот и taras atavin за замечания и предложения
http://www.cyberforum.ru/algorithms/thread1310846.html
48
Изображения
   
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.04.2010, 22:20
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Правила составления блок-схем для программ [C/C++;Pascal;Basic] (Алгоритмы):

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

Прошу объяснить условие для составления блок-схемы
Задание очень простое, о кодинге пока речь не идет. По условию нужно составить...

Посоветуйте программу для блок-схем
Посоветуйте какую-нибудь хорошую бесплатную программу для рисования блок-схем...

Составление блок-схем для двух задач
Привет! Нужна помощь! Мне необходимо составить блок-схему для такой...

Какие существуют приложения для отрисовки блок-схем?
Можно ли сделать алгоритм в c++ как делали на бумаги(фигурами)

20
LK
Заблокирован
23.04.2012, 18:18 #21
Правила оформления алгоритмов по ГОСТУ
2
23.04.2012, 18:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2012, 18:18
Привет! Вот еще темы с решениями:

Какие есть файлы-сырцы для построения блок схем известного формата?
Друзья! Суть: хочу написать программу, которая создавала бы дерево папок и...

Блок схемы для 2 программ
Уважаемы форумчане, помогите составить блок-схемы для двух программ. 1....

Составить блок-схемы для программ
Ребят,помогите пожалуйста сделать блок схемы для программ: ...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru