Warning: session_name(): Cannot change session name when session is active in /home/stalko/rodina-ru.com/docs/dokuwiki/inc/init.php on line 231

Warning: session_set_cookie_params(): Cannot change session cookie parameters when session is active in /home/stalko/rodina-ru.com/docs/dokuwiki/inc/init.php on line 232
======Блок-схема====== {{wiki:250px-пример-расчет-факториала-svg.png?250x396|Пример блок-схемы расчета факториала с использованием цикла}}**Схе́ма** — графическое представление определения, анализа или метода решения задачи, в котором используются символы для отображения данных, потока, оборудования и т. д.(([[http://cert.obninsk.ru/gost/282/282.html|ГОСТ 19.701-90. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения]])) **Блок-схема** — распространенный тип схем (//графических [[модель|моделей]]//), описывающих [[алгоритм|алгоритмы]] или процессы, в которых отдельные шаги изображаются в виде блоков различной формы, соединенных между собой линиями, указывающими направление последовательности. Правила выполнения регламентируются ГОСТ 19.701-90 "Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения"(([[http://cert.obninsk.ru/gost/282/282.html|ГОСТ 19.701-90. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения]])). Стандарт в частности регулирует способы построения схем и внешний вид их элементов. =====Основные элементы схем алгоритма===== При начертании элементов рекомендуется придерживаться строгих размеров, определяемых двумя значениями a и b. Значение a выбирается из ряда 15, 20, 25.. мм, b рассчитывается из соотношения 2a = 3b. Определение размеров несет рекомендательный характер, однако, стоит отметить, что при соблюдении выполнения размеров блок-схемы имеют более аккуратный вид. ====Процесс==== Символ отображает функцию обработки данных любого вида (выполнение определенной операции или группы операций, приводящее к изменению значения, формы или размещения информации или к определению, по которому из нескольких направлений потока следует двигаться). {{wiki:350px-элементы-процесс-svg.png?350x129|Элементы - Процесс.svg}} ====Данные==== Символ отображает данные, носитель данных не определен. {{wiki:350px-элементы-данные-svg.png?350x122|Элементы - Данные.svg}}Преобразование данных в форму, пригодную для обработки (ввод) или отображения результатов обработки (вывод). Данный символ не определяет носителя данных (для указания типа носителя данных используются специфические символы). ====Предопределенный процесс==== Символ отображает предопределенный процесс, состоящий из одной или нескольких операций или шагов программы, которые определены в другом месте (в подпрограмме, модуле). Например, в программировании − вызов процедуры или функции. {{wiki:350px-элементы-подпрограмма-svg.png?350x126|Элементы - Подпрограмма.svg}} ====Решение==== Символ отображает решение или функцию переключательного типа, имеющую один вход и ряд альтернативных выходов, один и только один из которых может быть активизирован после вычисления условий, определенных внутри этого символа. Соответствующие результаты вычисления могут быть записаны по соседству с линиями, отображающими эти пути. {{wiki:625px-элементы-условие-svg.png?625x184|Элементы - Условие.svg}}Отображает решение или функцию переключательного типа с одним входом и двумя или более альтернативными выходами, из которых только один может быть выбран после вычисления условий, определенных внутри этого элемента. Вход в элемент обозначается линией, входящей обычно в верхнюю вершину элемента. Если выходов два или три, то обычно каждый выход обозначается линией, выходящей из оставшихся вершин (боковых и нижней). Если выходов больше трех, то их следует показывать одной линией, выходящей из вершины (чаще нижней) элемента, которая затем разветвляется. Соответствующие результаты вычислений могут записываться рядом с линиями, отображающими эти пути. Примеры решения: в общем случае − сравнение (три выхода: ''>'', ''<'', ''=''); в [[программирование|программировании]] − условные операторы ''if'' (два выхода: ''true'', ''false'') и ''case'' (множество выходов). ====Терминатор==== Символ отображает выход во внешнюю среду и вход из внешней среды (начало или конец схемы программы, внешнее использование и источник или пункт назначения данных). {{wiki:350px-элементы-терминатор-svg.png?350x110|Элементы - Терминатор.svg}}На практике имеют смысл следующие описания терминаторов: начало/конец, запуск/останов, перезапуск (подразумевает перезапуск данной блок-схемы), ошибка (подразумевает завершение алгоритма с ошибкой), исключение (подразумевает генерацию программного исключения) {{wiki:250px-пример-терминаторы-проверка-данных-svg.png?250x311|Проверка введенных данных с возможной ошибкой}} ====Цикл==== Символ, состоящий из двух частей, отображает начало и конец цикла. Обе части символа имеют один и тот же идентификатор. Условия для инициализации, приращения, завершения и т.д. помещаются внутри символа в начале или в конце в зависимости от расположения операции, проверяющей условие. {{wiki:350px-элементы-цикл-svg.png?350x215|Элементы - Цикл.svg}} ===Пример блок-схемы расчета факториала с использованием цикла=== {{wiki:250px-пример-расчет-факториала-svg.png?250x396|Пример блок-схемы расчета факториала с использованием цикла}} ===Пример вложенных циклов=== {{wiki:250px-пример-вложенные-циклы-svg.png?250x382|Пример вложенных циклов в блок-схемах}} ====Соединитель==== Символ отображает выход в часть схемы и вход из другой части этой схемы и используется для обрыва линии и продолжения ее в другом месте. Соответствующие символы-соединители должны содержать одно и то же уникальное обозначение. {{wiki:475px-элементы-соединитель-svg.png?475x115|Элементы - Соединитель.svg}} ===Разделение алгоритма на две части с использованием соединителей=== {{wiki:250px-пример-применение-соединителей-svg.png?250x271|Пример - Применение соединителей.svg}} ====Комментарий==== Символ используют для добавления описательных комментариев или пояснительных записей в целях объяснения или примечаний. Пунктирные линии в символе комментария связаны с соответствующим символом или могут обводить группу символов. Текст комментариев или примечаний должен быть помещен около ограничивающей фигуры. {{wiki:425px-элементы-комментарий-svg.png?425x90|Элементы - Комментарий.svg}}Также символ комментария следует использовать в тех случаях, когда объём текста, помещаемого внутри некоего символа (например, символ процесса, символ данных и др.), превышает размер самого этого символа. Комментарии используют совместно с терминаторами для описания входных аргументов алгоритма при описании функций {{wiki:350px-пример-входные-переменные-svg.png?350x204|Пример - Входные переменные.svg}} ====Параллельные действия==== Символ представляется двумя параллельными линиями, отображает синхронизацию двух или более параллельных операций. В случае входа нескольких операций в параллельные линии, выполнение алгоритма будет продолжено только в случае окончания всех входящих процессов. {{wiki:500px-пример-параллельные-действия-svg.png?500x274|Пример - Параллельные действия.svg}}Параллельные действия могут быть использованы для асинхронных процессов или для процессов, последовательность которых не важна. В представленном примере стоит обратить внимание, что созданные в одних параллельных линиях процессы не обязаны также параллельно заканчиваться. Описание других элементов схем можно найти в соответствующих ГОСТ (указаны выше). Среди элементов существуют: * Запоминаемые данные * Документ * Ручной ввод * Карта * Дисплей * Ручная операция * Передача управления * Альтернативная связь между двумя или более символами * и др. =====Представление алгоритмов в виде графов===== Порядок выполнения действий задается путём соединения вершин дугами, что позволяет рассматривать блок-схемы не только как наглядную интерпретацию алгоритма, удобную для восприятия человеком, но и как взвешенный ориентированный [[граф-математика-|граф]] (т. н. граф-схема алгоритма, ГСА). Подобное представление алгоритмов используется при построении [[система-логического-управления|систем логического управления]], реализующих заданные управляющие алгоритмы, в задачах [[параллельные-вычислительные-системы|распараллеливания вычислений]] и т. д. =====Программы===== Свободные программы * [[dia|Dia]]; * [[kivio|Kivio]]; * [[openoffice.org draw|OpenOffice.org Draw]]; Коммерческие программы * [[microsoft-visio|Microsoft Visio]]; Онлайн-сервисы * [[creately|Creately]]; * [[lucidchart|LucidChart]]. * [[https://www.draw.io/|Draw.io]] Во многих представленных программах, помимо ручного создания блок-схем, существуют решения для автоматического создания блок-схем из исходного кода программ. =====Критика===== Распространённой и ошибочной практикой является попытка использования блок-схем для иллюстрации алгоритма на низком уровне (на уровне кода) — то есть, попытка вписывать в блоки схемы фрагменты кода на каком-либо искусственном языке. Такой подход применим только к программам, организованным согласно структурному подходу, и не может отразить, к примеру, алгоритма, который реализуется во взаимодействии абстракций при объектно-ориентированном подходе. Для целей описания алгоритмов, взаимодействия частей системы и иллюстрации многих других сопутствующих вещей существует нотация [[uml|UML]]. =====См. также===== * [[диаграмма-насси-шнейдермана|Диаграмма Насси — Шнейдермана]] * [[диаграмма-связей|Диаграмма связей]] * [[псевдокод-язык-описания-алгоритмов-|Псевдокод (язык описания алгоритмов)]] \\ {{tag>"Теория алгоритмов" "Разработка программного обеспечения" "Визуализация данных" Моделирование Проектирование}}