Линейный и разветвленный алгоритмы
Алгоритмы, которые мы обсуждали до сих пор, имеют линейную структуру. Описанные в них действия выполнялись последовательно одно за другим. В случае блок-схемы, показанной на рис., после выполнения каждой инструкции есть только один способ продолжить: перейти к выполнению следующей команды.
Нажмите, чтобы начать предварительный просмотрИнструкция содержит следующие шаги: 1: Зеленый эллипс «СТАРТ», 2: Синий прямоугольник «a := 2», 3: Фиолетовый параллелограмм «Загрузка b», 4: Синий прямоугольник «дважды := a b», 5: Фиолетовый параллелограмм : "Печатать дважды", 6: Красный эллипс "СТОП".
рисунок 1
Источник: Contentplus.pl Sp. z o. o., лицензия: CC BY-SA 3.0.
На блок-схеме показан алгоритм вычисления удвоенного числа, предоставленного пользователем. Как вы уже знаете, это линейный алгоритм .
В случае ветвящихся алгоритмов появляется логическое условие. Когда оно выполнено, переходим к выполнению инструкции, к которой ведет строка, отмеченная словом . Если условие не выполняется, выполняем команду, к которой ведет путь, отмеченный словом . Условный блок на блок-схеме представлен в виде ромба с двумя выходами, как на рис.prawdafałsz. Внутри ромба пишем условие, которое нужно проверить.
Нажмите, чтобы начать предварительный просмотрНа графике изображен темно-синий ромб с надписью «a0» с двумя ответвлениями в виде горизонтальных стрелок, прикрепленных к боковым вершинам ромба вершинами, выходящими за пределы фигуры. Левая ветвь описывается как «истинная», а правая ветвь описывается как «ложная».
Рис. 2
Источник: Contentplus.pl Sp. z o. o., лицензия: CC BY-SA 3.0.
Проверка положительности числа
Одним из примеров алгоритма ветвления является алгоритм, который проверяет, является ли введенное пользователем число положительным, и отображает сообщение («Число положительное» или «Число не положительное»). Давайте разработаем блок-схему этого алгоритма. Начнем со стартового блока.
Нажмите, чтобы начать предварительный просмотрНа рисунке показан горизонтально расположенный зеленый эллипс со словом «СТАРТ». От края эллипса идет ответвление в виде вертикальной стрелки, направленной вниз. Стрелка зацеплена в центре нижней части рисунка.
Источник: Contentplus.pl Sp. z o. o., лицензия: CC BY-SA 3.0.
Затем мы получаем номер, который хотим проверить, от пользователя. На блок-схеме мы поместим эту инструкцию в параллелограмм — блок ввода/вывода.
Нажмите, чтобы начать предварительный просмотрНа рисунке показан горизонтально расположенный зеленый эллипс со словом «СТАРТ». От края эллипса идет ответвление в виде вертикальной стрелки, направленной вниз. Стрелка зацепилась за нижний центр фигуры и указывает на следующую фигуру — фиолетовый параллелограмм с надписью «Номер загрузки». От центра нижнего основания параллелограмма также отходит ветвь в виде вертикальной стрелки, направленной вниз.
Источник: Contentplus.pl Sp. z o. o., лицензия: CC BY-SA 3.0.
Следующим шагом будет проверка, является ли число, взятое у пользователя, положительным. На схеме эту операцию запишем с помощью условного блока в виде ромба с двумя выходами: prawdaи fałsz. В результате будет два разных пути продолжения. Если условие выполнено, мы перейдем к блоку, к которому ведет отмеченный как путь prawda. В противном случае мы пойдем по пути, отмеченному словом fałsz.
Нажмите, чтобы начать предварительный просмотрНа рисунке показан горизонтально расположенный зеленый эллипс со словом «СТАРТ». От края эллипса идет ответвление в виде вертикальной стрелки, направленной вниз. Стрелка зацепилась за нижний центр фигуры и указывает на следующую фигуру — фиолетовый параллелограмм с надписью «Номер загрузки». От центра нижнего основания параллелограмма также идет ответвление в виде вертикальной стрелки, направленное вниз к темно-синему ромбу с надписью «число 0». От ромба отходят две боковые ветви: правая описывается как «истинная», левая - как «ложная».
Источник: Contentplus.pl Sp. z o. o., лицензия: CC BY-SA 3.0.
Если число, загруженное у пользователя, окажется больше, чем, мы выберем путь слева ( prawda). Это приведет к выходному блоку в виде параллелограмма, в который мы поместим команду вывода сообщения «Заданное число положительно».
Нажмите, чтобы начать предварительный просмотрНа рисунке показан горизонтально расположенный зеленый эллипс со словом «СТАРТ». От края эллипса идет ответвление в виде вертикальной стрелки, направленной вниз. Стрелка зацепилась за нижний центр фигуры и указывает на следующую фигуру — фиолетовый параллелограмм с надписью «Номер загрузки». От центра нижнего основания параллелограмма также идет ответвление в виде вертикальной стрелки, направленное вниз к темно-синему ромбу с надписью «число 0». От ромба отходят две боковые ветви: правая описывается как «истинная», левая - как «ложная». «Истинная» ветвь указывает на фиолетовый параллелограмм, на котором написано «Выведите «Заданное число положительное»».
Источник: Contentplus.pl Sp. z o. o., лицензия: CC BY-SA 3.0.
Если, с другой стороны, условное выражение окажется ложным, мы пойдем по пути справа ( fałsz). В конце этого пути мы помещаем блок, содержащий инструкцию вывести сообщение «Заданное число не является положительным».
Нажмите, чтобы начать предварительный просмотрНа рисунке показан горизонтально расположенный зеленый эллипс со словом «СТАРТ». От края эллипса идет ответвление в виде вертикальной стрелки, направленной вниз. Стрелка зацепилась за нижний центр фигуры и указывает на следующую фигуру — фиолетовый параллелограмм с надписью «Номер загрузки». От центра нижнего основания параллелограмма также идет ответвление в виде вертикальной стрелки, направленное вниз к темно-синему ромбу с надписью «число 0». От ромба отходят две боковые ветви: правая описывается как «истинная», левая - как «ложная». «Истинная» ветвь указывает на фиолетовый параллелограмм, на котором написано «Выведите «Заданное число положительное»». Из темно-синего бриллианта с надписью «число 0»
Источник: Contentplus.pl Sp. z o. o., лицензия: CC BY-SA 3.0.
После выбора соответствующего пути и отображения сообщения мы можем завершить алгоритм с помощью блока STOP. Разумеется, к нему должны быть подведены соединительные линии от обоих выходных блоков. Для корректного представления алгоритма нам необходимо описать завершение операции в каждом случае — как при положительном числе, так и при отрицательном или равном нулю.
Нажмите, чтобы начать предварительный просмотрНа рисунке показан горизонтально расположенный зеленый эллипс со словом «СТАРТ». От края эллипса идет ответвление в виде вертикальной стрелки, направленной вниз. Стрелка зацепилась за нижний центр фигуры и указывает на следующую фигуру — фиолетовый параллелограмм с надписью «Номер загрузки». От центра нижнего основания параллелограмма также идет ответвление в виде вертикальной стрелки, направленное вниз к темно-синему ромбу с надписью «число 0». От ромба отходят две боковые ветви: правая описывается как «истинная», левая - как «ложная». «Истинная» ветвь указывает на фиолетовый параллелограмм, на котором написано «Выведите «Заданное число положительное»». Из темно-синего бриллианта с надписью «число 0» есть правая ветвь «false» к фиолетовому параллелограмму с надписью «Выведите« Заданное число не является положительным »». И «истинная», и «ложная» ветви ведут к двум разным фиолетовым параллелограммам, от которых отдельные стрелки ведут к одному красному горизонтальному эллипсу с надписью «СТОП».
Источник: Contentplus.pl Sp. z o. o., лицензия: CC BY-SA 3.0.
Вычисление квадратного корня из неотрицательного числа
Следующим примером, который мы разберем, будет алгоритм вычисления квадратного корня из числа, liczbaвзятого у пользователя. Если значение неотрицательное, вычислите и отобразите квадратный корень из числа. В противном случае вы должны увидеть сообщение «Невозможно вычислить квадратный корень из отрицательного числа».
Напишем список действий, составляющих алгоритм. На его основе разработаем блок-схему.
Запустите алгоритм.
Прочитать значение числа liczba.
Еслиliczba 0
pierwiastek :=
Отписаться pierwiastek.
В противном случае
отписаться"Nie można obliczyć pierwiastka kwadratowego
z liczby ujemnej."
Закончите алгоритм.
Блок-схема алгоритма, построенного на основе сохраненного списка действий, выглядит следующим образом:
Нажмите, чтобы начать предварительный просмотрГрафический алгоритм со следующими шагами: 1: зеленый эллипс со словом «СТАРТ», 2: фиолетовый параллелограмм со словом «Загрузить число», 3: темно-синий ромб со словом «число 0». От ромба отходят две боковые ветви. Левая ветвь "истина". 4: Синий прямоугольник «корень := число», 5: Фиолетовый параллелограмм «Вывести квадратный корень», 6: Красный многоточие «СТОП». Вернемся к третьему шагу. 3: Темно-синий ромб «число 0», правая ветвь «ложь», 4: Фиолетовый параллелограмм «Печать «Невозможно извлечь квадратный корень из отрицательного числа»», 5: Красный эллипс «СТОП».
Источник: Contentplus.pl Sp. z o. o., лицензия: CC BY-SA 3.0.
Первые два блока схемы повторяют элементы из предыдущего примера алгоритма ветвления. Затем появляется блок, содержащий условное выражение. Мы проверяем, является ли число, данное пользователем, неотрицательным. Если да, то идем по пути слева к операционному блоку, где вычисляется квадратный корень из заданного числа. Сохраняем результат в переменной pierwiastek. Затем мы выводим значение этой переменной на экран и завершаем алгоритм.
Если заданное число не является неотрицательным, выберем второй путь, отмеченный словом fałsz. Это приводит к блоку вывода, который говорит вам напечатать сообщение «Невозможно вычислить квадратный корень из отрицательного числа». После того, как сообщение напечатано, алгоритм завершается.
Словарь
линейный алгоритм
также называется последовательным алгоритмом; шаги алгоритма следуют друг за другом; завершение одного шага приведет вас прямо к следующему; он не указывает никаких условий
алгоритм ветвления
условный алгоритм; алгоритм, в котором может быть несколько последовательностей действий; после выполнения или невыполнения заданного условия выбирается одна из последовательностей действий