ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ КОНСТРУКЦИИ
Ключевые слова
• следование
• ветвление
• повторение
• линейные алгоритмы
• разветвляющиеся алгоритмы
• циклические алгоритмы
Человеку в жизни приходится решать множество различных задач. Решение каждой из них описывается своим алгоритмом, и разнообразие этих алгоритмов очень велико. Вместе с тем для записи любого алгоритма достаточно трёх основных алгоритмических конструкций (структур): следования, ветвления, повторения. Это положение выдвинул и доказал Э. Дейкстра в 70-х гг. прошлого века.
Эдсгер Вибе Дейкстра (1930-2002) — выдающийся нидерландский учёный, идеи которого оказали огромное влияние на развитие компьютерной индустрии.
Ветвление — алгоритмическая конструкция, в которой в зависимости от результата проверки условия («да» или «нет») предусмотрен выбор одной из двух последовательностей действий (ветвей). Алгоритмы, в основе которых лежит структура «ветвление», называют разветвляющимися.
Блок-схема ветвления представлена на рис. 1. Каждая ветвь может быть любой степени сложности (рис. 1, а), а может вообще не содержать предписаний (рис. 1, б).
Рис. 1. Структура «ветвление»: а — полная форма ветвления; б — неполная форма ветвления
На алгоритмическом языке команда ветвления записывается так (рис. 2)
Для записи условий, в зависимости от результатов проверки которых выбирается та или иная последовательность действий, используются операции сравнения:
А<B — А меньше В;
А<=В — А меньше или равно В;
А=B — А равно В;
А>В — А больше В;
А>=В — А больше или равно В;
А<>B — А не равно В.
Здесь буквы А и В можно заменять на любые переменные, числа и арифметические выражения. Приведённые операции сравнения допускаются и для символьных переменных.
Пример 7. Алгоритм вычисления функции f(x) = |x| для произвольного числа х.(рис. 3)
Обратите внимание на второй блок этой блок-схемы. В нём представлены имена и типы величин (данных), обрабатываемых в алгоритме.
Условия, состоящие из одной операции сравнения, называются простыми. В качестве условий при организации ветвлений можно использовать и составные условия. Составные условия получаются из простых с помощью логических связок and (и), or (или), not (не): and означает одновременное выполнение всех условий, or — выполнение хотя бы одного условия, a not означает отрицание условия, записанного за словом not.
Пример 8. Алгоритм определения принадлежности точки х отрезку [а, b]. Если точка х принадлежит данному отрезку, то выводится ответ ДА, в противном случае — НЕТ.(рис.4)
Существует достаточно много ситуаций, в которых приходится выбирать не из двух, а из трёх и более вариантов. Есть разные способы построения соответствующих алгоритмов. Один из них — составить комбинацию из нескольких ветвлений.
Пример 9. Алгоритм, в котором переменной У присваивается значение большей из трёх величин А, В и С.(рис.5)
Пусть А = 10, В = 30 и С = 20. Тогда процесс выполнения алгоритма можно представить в следующей таблице(рис.6)
Пример 10. Алгоритм решения линейного уравнения ax + b = 0.(рис.7)
Пример 11. Исполнитель Робот может выполнять ту или иную последовательность действий в зависимости от выполнения следующих простых условий:(рис.8)
Также Робот может действовать в зависимости от выполнения составных условий.
Подумайте, в какую клетку переместится Робот из клетки, обозначенной звёздочкой, при выполнении следующего фрагмента алгоритма.(рис.9)
(рис.10)
рис.1 (а,б)
рис.2
рис.3
рис.4
рис.5
рис.6
рис.7
рис.8
рис.9
рис.10