Графический способ представления алгоритмов является более компактным и наглядным по сравнению со словесным.
При графическом представлении алгоритм изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует
выполнению одного или нескольких действий. |
Такое графическое представление называется схемой алгоритма или блок-схемой . В блок-схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий, управлению повторением действий, окончанию обработки и т.п.) соответствует геометрическая фигура, представленная в виде блочного символа . Блочные символы соединяются линиями переходов , определяющими очередность выполнения действий. В таблице приведены наиболее часто употребляемые символы.
Название символа | Обозначение и пример заполнения | Пояснение |
Процесс | Вычислительное действие или последовательность действий |
|
Решение | Проверка условий | |
Модификация | Начало цикла | |
Предопределенный процесс | Вычисления по подпрограмме, стандартной подпрограмме |
|
Ввод-вывод | Ввод-вывод в общем виде | |
Пуск-останов | Начало, конец алгоритма, вход и выход в подпрограмму |
|
Документ | Вывод результатов на печать |
Блок «процесс» применяется для обозначения действия или последовательности действий, изменяющих значение, форму представления или размещения данных. Для улучшения наглядности схемы несколько отдельных блоков обработки можно объединять в один блок. Представление отдельных операций достаточно свободно.
Блок «решение» используется для обозначения переходов управления по условию. В каждом блоке «решение» должны быть указаны вопрос, условие или сравнение, которые он определяет.
Блок «модификация» используется для организации циклических конструкций. (Слово модификация означает видоизменение, преобразование). Внутри блока записывается параметр цикла, для которого указываются его начальное значение, граничное условие и шаг изменения значения параметра для каждого повторения.
Блок «предопределенный процесс» используется для указания обращений к вспомогательным алгоритмам, существующим автономно в виде некоторых самостоятельных модулей, и для обращений к библиотечным подпрограммам.
Источник
Занятие 1. Понятие блок-схемы. Основные виды блоков
Блок-схема – это графическая реализация алгоритма.
Блок-схема представляет собой удобный и наглядный способ записи алгоритма.
Блок-схема состоит из функциональных блоков разной формы, связанных между собой стрелками. В каждом блоке описывается одно или несколько действий. Основные виды блоков представлены в табл. 2.1.
Таблица 2.1. Виды блоков
Форма блока | Назначение блока |
---|---|
![]() |
начало и конец блок-схемы |
![]() |
блок ввода данных |
![]() |
блок выполнения действия |
![]() |
блок условия |
![]() |
блок вывода данных |
Любая команда алгоритма записывается в блок-схеме в виде графического элемента – блока, и дополняется словесным описанием. Блоки в блок-схемах соединяются линиями потока информации. Направление потока информации указывается стрелкой. В случае потока информации сверху вниз и слева направо стрелку ставить не обязательно. Блоки в блок-схеме имеют только один вход и один выход (за исключением логического блока – блока с условием).
Блок начала блок-схемы имеет один выход и не имеет входов, блок конца блок-схемы имеет один вход и не имеет выходов. Блок условия – единственный блок, имеющий два выхода, т.к. соответствует разветвляющемуся алгоритму. На одном выходе указывается «да», на другом – «нет». Все остальные блоки имеют один вход и один выход. Блок выполнения действия может содержать присвоение значения переменной (например ««) или вычисление (например «
«).
Математические выражения и логические высказывания должны быть описаны математическим языком, т.к. блок-схема не должна иметь привязки к какому-то определенному языку программирования. Одна и таже блок-схема может быть реализована в программах на разных языках программирования. К примеру, функция в блок-схеме будет выглядеть таким образом: , а не таким образом:
.
Все три вида алгоритмов реализуются в блок-схеме названными выше типами блоков. К примеру, в линейном алгоритме могут присутствовать все блоки, кроме блока условия. В разветвляющемся и циклическом алгоритмах могут быть использованы все названные виды блоков, но обязательным является блок условия. Внутри блока условия записывается условие, про которое можно однозначно ответить, истинно оно или ложно Если условие истинно, то выполняются действия, соответствующие стрелке «да», иначе стрелке «нет».
Источник
Многие специалисты в области теории программирования считают, что графическое представление алгоритмов в соответствии с ГОСТ 19.701-90 ( ISO 5807-85 , см. п. 2.2.2) скрывают структуру структурированной программы,
представляя структурированность недостаточно очевидной. Поэтому для представления структурированных схем алгоритмов были предложены специальные методы графических обозначений.
В данном пособии рассмотрены два из них – метод Дамке и диаграммы Насси-Шнейдермана.
3.4.1. Метод Дамке
М. Дамке предложил для конструкций структурированных схем алгоритмов специальные обозначения.
Три основных конструкции структурного программирования изображаются следующим образом.
1) Функциональный блок по-прежнему обозначается прямоугольником
Рисунок 3.19 – Представление функционального блока по методу Дамке
2) Конструкция If-Then-Else изображается так, как иллюстрирует рисунок 3.20.
Элементы с выполняемыми действиями находятся справа от символа «Решение». Вход и выход из конструкции находятся соответственно сверху и снизу символя «Решение».
3) Конструкция Do-While (цикл с предусловием “Пока”) изображается так, как показывает рисунок 3.21.
Тело цикла выполняется до тех пор, пока условие истинно. Условие проверяется первым. Графически это изображается положением шестиугольника над выполняемым телом цикла.
Следует обратить внимание, что входы и выходы из всех конструкций метода Дамке находятся в левой части (сверху и снизу) графического представления конструкций. Расширения конструкций в правой части представления выходов не имеют.
Рисунок 3.20 – Представление конструкции If-Then-Else
Рисунок 3.21 – Представление конструкции Do-While по методу Дамке
Помимо трех основных конструкций в структурном программировании допускаются дополнительные конструкции . В методе Дамке они изображаются следующим образом.
1) Конструкция Repeat-Until (цикл с постусловием “До”) изображается так, как иллюстрирует рисунок 3.22.
Если условие истинно, осуществляется выход из цикла. Тело цикла выполняется до проверки условия. Графически это изображается положением шестиугольника под телом цикла.
Рисунок 3.22 – Представление конструкции Repeat-Until по методу Дамке
2) Конструкция цикла с параметром изображается так, как представляет рисунок 3.23.
3) Конструкция Case изображается так, как иллюстрирует рисунок 3.24.
Основным принципом при разработке структурированных схем алгоритмов по методу Дамке является принцип декомпозиции . Он означает, что любой элемент, представляющий собой задачу, можно разделить на несколько элементов, образующих необходимые подзадачи.
Элементы в самой левой части схемы представляют укрупнённую структуру алгоритма. Затем элементы расширяются вправо по мере разделения каждого элемента на подзадачи.
Чтобы исследовать любую подзадачу, достаточно анализировать только те элементы и управляющие структуры, которые находятся справа от данной подзадачи.
Источник
Если по ходу алгоритма приходится в зависимости от выполнения какого-то условия выбирать те или иные варианты действий, то словесная запись становится громоздкой и в ней легко запутаться. Вспомните, как мы искали очередное действие после того, как вы взяли хлеб из хлебницы, а алгоритм все равно посылал вас за хлебом в магазин. В этом случае более наглядным и предпочтительным становится графическое представление алгоритма.
Графическое представление (блок-схема) алгоритма — это набор специальных графических символов, расположенных в порядке выполнения действий алгоритма.
Для этого способа записи алгоритмов используются стандартизованные графические обозначения (символы).
Начало алгоритма обозначается знаком
Идущая вниз линия означает переход к первому действию алгоритма. Таким же знаком обозначается и конец алгоритма, к которому линия от последнего символа подходит сверху:
Любое действие алгоритма изображается прямоугольником, в который обычно вписывают название действия:
Если алгоритм содержит несколько действий, выполняемых последовательно одно за другим, то все они могут быть вписаны в один прямоугольник.
Проверка выполнения условия и выбор ветви алгоритма, соответствующей выполнению или невыполнению условия, представляются ромбом, в который условие вписывается в виде вопроса. При выполнении условия переход к нужной ветви происходит в
направлении ответа «Да», а если условие не выполнено — в направлении ответ «Нет»:
Часто для исполнения алгоритма необходим ввод информации в виде чисел или в иной форме. Результатом исполнения алгоритма (или его части) может быть вывод информации в том или ином виде. Операция ввода данных или вывода результатов обозначается следующим образом:
Символ вызова вспомогательного алгоритма имеет вид
Есть и другие символы для обозначения различных операций в алгоритме.
Графические символы соединяются между собой прямыми линиями в соответствии с последовательностью действий, ведущих к достижению цели. Стандартное направление перехода от символа к символу — сверху вниз и слева направо. Если по каким-то причинам расположить символы в таком порядке не удается и переход к очередному символу должен произойти в ином направлении, то это направление указывают стрелкой.
Символ вызова вспомогательного алгоритма имеет вид
Составим блок-схемы некоторых из рассмотренных ранее алгоритмов. Блок-схемы двух алгоритмов с ветвлением — «Взять хлеб» и сортировки изделий — приведены на рис. 2.1, 2.2. Они наглядно показывают преимущество графического представления алгоритмов — легко прослеживается последовательность действий как при выполнении, так и при невыполнении проверяемого условия.
На рис. 2.3 представлена блок-схема циклического алгоритма, являющегося развитием алгоритма сортировки изделий. Предыдущий алгоритм представляет собой цикл, который повторяется при положительном результате проверки условия наличия изделий на конвейере.
На блок-схеме хорошо видны границы цикла — он охвачен линией, которая поднимается вверх, противоположно стандартному направлению перехода от символа к символу, и заканчивается стрелкой. После выполнения цикла происходит возврат по этой линии к первому действию цикла, в данном случае к проверке наличия изделий на конвейере.
Линия возврата фактически заменяет строку Конец цикла, ограничивающую цикл снизу при словесном описании алгоритма,
и она же указывает на условие Есть изделия на конвейере?, которое является верхней границей цикла. Если условие не выполнено, т. е. изделий на конвейере нет, то цикл не повторяется и выполнение алгоритма заканчивается.
В этом алгоритме проверка условия производится до начала цикла и возможна ситуация, когда цикл не исполнится ни разу: если изделий на конвейере нет, то проверка условия сразу выводит на окончание цикла.
Рассмотрим блок-схему циклического алгоритма погрузки контейнеров из подразд. 2.2.3, где проверка условия повторения цикла производится после его исполнения (рис. 2.4). Вслед за символом Начало следуют действия алгоритма, поэтому цикл исполняется всегда, как минимум, один раз. Если погрузка контейнера
привела к отсутствию свободного места в вагоне, то проверка условия сразу выводит на символ Конец. Линия возврата по-прежнему охватывает цикл, указывая его нижнюю и верхнюю границы.
Блок-схема расширенного варианта этого алгоритма, содержащего условия, проверяемые как до, так и после выполнения команд цикла (см. подразд. 2.2.3), показана на рис. 2.5. Проследите по этому рисунку ход исполнения алгоритма при различных комбинациях условий наличия свободного места в вагоне и наличия контейнеров для погрузки.
Рассмотрим блок-схемы вспомогательных алгоритмов. У алгоритма, используемого в качестве вспомогательного, есть одна особенность: в нем производятся действия с информацией, переданной ему из основного алгоритма, и туда же при необходимости сообщается результат выполнения вспомогательного алгоритма. Поэтому блок-схема вспомогательного алгоритма содержит символ ввода данных, а при необходимости — и символ вывода результатов, что подчеркивает взаимодействие вспомогательного алгоритма с основным.
На рис. 2.6 приведена блок-схема алгоритма «Нагрев до t». Символ ввода данных указывает на получение из основного алгоритма значения температуры нагрева t. После выполнения алгоритма нагрева продолжается выполнение основного алгоритма с дей-
ствия, следующего за командой вызова вспомогательного алгоритма. Сама команда вызова обозначается в блок-схеме основного алгоритма приведенным выше специальным символом, в который вписывается название вызываемого алгоритма.
Алгоритмический язык
Словесное и графическое представления алгоритмов позволяют наглядно проследить последовательность действий как в простых, так и в сложных алгоритмах. Однако наглядность имеет значение только для человека, но не для машины. Машина выполняет одно за другим действия, предписанные алгоритмом, который составил для нее человек.
Возможно, со временем машины научатся мыслить и смогут сами анализировать ситуации, создавать и выполнять алгоритмы, продвигаясь к ими же поставленным целям. У нас вызывает сегодня восхищение «умная» машина, обыгрывающая лучших гроссмейстеров в шахматы. По сути же она просто быстрее, точнее, в большем объеме и за меньшее время перебирает возможные варианты игры, которые заложил в нее человек. Так что единственный способ заставить машину совершить какое-то действие — дать ей команду, точно и однозначно соответствующую именно этому действию. Причем машина должна эту команду правильно и однозначно понять.
Последовательность действий должна четко выражаться последовательностью команд, а поскольку додумывать и догадываться машина не умеет, каждому шагу алгоритма (например, анализу выполнения какого-то условия) должна соответствовать четко понимаемая машиной команда.
Поэтому если предполагается, что исполнителем алгоритма будет машина, то разработанный алгоритм надо представить в виде, учитывающем ограниченные возможности машины правильно понимать и выполнять команды. Для этого существует особый способ описания алгоритмов — запись на алгоритмическом языке.
Алгоритмический язык — это набор специальных служебных слов и правил для записи алгоритмов.
Служебные слова — это обычные слова нашего языка, но их запись в алгоритмическом языке однозначна и никакие другие варианты записи этих слов недопустимы. Например, если вы пишете адрес на конверте, вы можете написать: «город Пенза», или «гор. Пенза», или «г. Пенза». Если бы слово «город» входило в список служебных слов алгоритмического языка, то его всегда нужно было бы писать только в одном виде (например: «гор.»). Даже точка после сокращения слова должна быть особо оговорена — ставить ее или нет.
Перед названием каждого алгоритма, записанного на алгоритмическом языке, ставится служебное слово АЛГ (буквы заглавные, без точки). Для указания начала и конца алгоритма используются служебные слова НАЧ и КОН. Каждый шаг алгоритма записывается отдельной строкой.
Общий вид линейного алгоритма на алгоритмическом языке:
Угловые скобки означают, что в данной строке должно быть записано то, что указано в этих скобках.
Для записи алгоритмов с ветвлением используются служебные слова ЕСЛИ, ТО, ИНАЧЕ, ВСЕ (конец ветвления). Общий вид ветвления:
Запишем на алгоритмическом языке алгоритм, блок-схема которого приведена на рис. 2.2.
АЛГ «Алгоритм сортировки изделий» НАЧ
поместить изделие в измерительное устройство
измерить диаметр изделия ЕСЛИ диаметр больше заданного ТО
поместить изделие в магазин № 1 ИНАЧЕ
поместить изделие в магазин № 2 ВСЕ КОН
Бывает так, что после строки ИНАЧЕ в алгоритме с ветвлением располагается не действие, а новое условие. Тогда это второе условие вводится не в отдельной строке ЕСЛИ, а в той же строке, в которой находится ИНАЧЕ:
Последнее ИНАЧЕ относится к условию 2, т.е. соответствует невыполнению этого условия. Сочетание служебных слов ИНАЧЕ ЕСЛИ часто заменяют служебным словом ИНЕС.
В циклических алгоритмах используются служебные слова ПОКА, ЦИКЛ, КЦИКЛ (конец цикла). Общий вид циклического участка алгоритма:
Запишем циклический алгоритм сортировки изделий, блок-схема которого приведена на рис. 2.3. Судя по блок-схеме, это алгоритм с предусловием. Поэтому верхней границей цикла является условие Есть изделия на конвейере! Далее следуют действия цикла, а расположение нижней границы КЦИКЛ показывает линия возврата. Имеющееся в алгоритме ветвление входит в цикл и заканчивается перед концом цикла. Для удобства чтения алгоритма действия, образующие цикл, сдвигаются при записи вправо — так цикл легче увидеть. Аналогично можно сдвинуть участок с ветвлением. Алгоритм записывается в порядке продвижения по блок-схеме и выглядит следующим образом:
АЛГ «Циклический алгоритм сортировки изделий» НАЧ
ПОКА есть изделия на конвейере
поместить изделие в измерительное устройство
ЕСЛИ диаметр больше заданного ТО
поместить изделие в магазин № 1 ИНАЧЕ
поместить изделие в магазин № 2 ВСЕ КЦИКЛ
Рассмотрим последовательность действий в этом алгоритме. Пока предусловие Есть изделия на конвейере не нарушено, выполняется измерение диаметра изделия и оно помещается в магазин № 1 или № 2. Служебное слово ВСЕ означает конец ветвления, после которого следует переходить к следующей строке алгоритма. В ней помещено слово КЦИКЛ (конец цикла), требующее возврата к
началу цикла, т.е. к строке ПОКА, после чего цикл повторится. Когда условие в строке ПОКА нарушится, по правилам выполнения циклических алгоритмов надо будет перейти к строке, следующей за указателем конца цикла КЦИКЛ (в нашем случае — это строка КОН), и выполнение алгоритма заканчивается.
Запишем на алгоритмическом языке более сложный алгоритм (см. рис. 2.5).
В этом алгоритме, как видно из блок-схемы, есть и предусловие (Есть контейнер для погрузки?), и постусловие (В вагоне есть свободное место?), поэтому в нем сочетаются записи в виде ПОКА. КЦИКЛ и в виде ЦИКЛ . ПОКА.
Первый элемент блок-схемы при продвижении от начала алгоритма — линия возврата, идущая от символа постусловия. В алгоритмах с постусловием она указывает место, с которого возобновляется цикл при его повторении. В алгоритмическом языке это место обозначается служебным словом ЦИКЛ.
Далее расположен графический элемент предусловия, вводимого словом ПОКА, после которого идет последовательность действий вплоть до постусловия. Постусловие тоже вводится служебным словом ПОКА. Если условие выполнено, то в алгоритмах с постусловием следует возврат к строке ЦИКЛ, а если не выполнено — переход к следующей за постусловием строке (в нашем случае — к окончанию алгоритма КОН).
Все это происходит, если не нарушено предусловие Есть контейнер для погрузки. Когда же это условие нарушено, в алгоритмах с предусловием происходит переход к строке, следующей за указателем конца цикла КЦИКЛ (в нашем случае — к окончанию алгоритма КОН).
В итоге этот алгоритм на алгоритмическом языке записывается следующим образом:
АЛГ «Алгоритм погрузки контейнеров» НАЧ
ПОКА есть контейнер для погрузки
поднять очередной контейнер
переместить контейнер к вагону
погрузить контейнер в вагон
вернуть кран в исходное положение ПОКА в вагоне есть свободное место КОН
Сдвиг строк при записи позволяет легко сориентироваться, где начинается и заканчивается цикл ПОКА. КЦИКЛ, а где ЦИКЛ. ПОКА.
Рассмотрим запись на алгоритмическом языке вспомогательных алгоритмов. Так как вспомогательным может быть любой алгоритм, никаких специфических особенностей в такой записи нет. Ввод данных из основного алгоритма, так же как и вывод результатов (при необходимости), является во вспомогательных алгоритмах обычным действием.
Так как в основном алгоритме вызов вспомогательного алгоритма производится простым указанием его заголовка, то общий вид основного алгоритма на алгоритмическом языке может быть, например, следующим:
Как уже указывалось ранее, запись алгоритмов на алгоритмическом языке является подготовительным этапом на пути к представлению последовательности команд в такой форме, в какой она могла бы быть воспринята, понята и выполнена машиной.
Наиболее распространенными машинами, используемыми для этих целей, являются ЭВМ. Алгоритмические языки, ориентированные на их восприятие электронно-вычислительными машинами и учитывающие особенности работы ЭВМ, называются языками программирования.
Контрольные вопросы
1. Сформулируйте понятие алгоритма.
2. В чем особенность восприятия алгоритмов машинами?
3. Дайте определение программы.
4. Назовите виды алгоритмов.
5. Что такое линейный алгоритм? Приведите пример.
6. Что такое условный алгоритм? Приведите пример.
7. Что такое циклический алгоритм? Приведите пример.
8. Что такое вспомогательный алгоритм? Приведите пример.
9. Расскажите о способах записи алгоритмов.
10. Изобразите и поясните графические символы, применяемые для записи алгоритмов.
11. Что такое блок-схема алгоритма?
12. Сформулируйте понятие алгоритмического языка.
Источник