Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_Информатика-344 готовый.doc
Скачиваний:
34
Добавлен:
30.04.2019
Размер:
4.96 Mб
Скачать

§6.3. Типы алгоритмов

Структурный подход к построению алгоритмов предполагает использование только нескольких основных структур, комбинации которых дают все многообразие алгоритмов. Все существующие алгоритмы делятся на три типа (рис. 6.2):

  • линейный алгоритм при каждом исполнении предписывает однократное выполнение всех действий алгоритма в определенной последовательности;

  • ветвящийся алгоритм описывает несколько возможных последовательностей действий (ветвей алгоритма) и при каждом исполнении предписывает выполнение одной из ветвей алгоритма в зависимости от определенных условий;

  • циклический алгоритм при каждом исполнении предписывает многократное выполнение одной и той же последовательности действий.

Рис. 6.2. Блок-схемы различных типов алгоритмов.

В отличие от линейных алгоритмов, в которых команды выполняются последовательно одна за другой, в разветвляющиеся алгоритмы входит условие, в зависимости от выполнения или невыполнения которого исполняется та или иная последовательность команд (или их серий).

Условие составляется в виде логического выражения – сравнения некоторых объектов между собой (переменных или констант). Существует шесть операций сравнения:

  • равно (=);

  • не равно (<>);

  • меньше (<);

  • больше (>);

  • меньше или равно (<=);

  • больше или равно (>=).

Часто встречаются задачи, в которых используется совокупность связанных между собой условий – составные условия. Для их обозначения используются две логические операции: конъюнкция (И) и дизъюнкция (ИЛИ). Кроме того, возможны обратные условия, отрицающие какое-либо условие. Такие условия обозначаются логической операцией инверсия (НЕ).

В качестве условия в разветвляющемся алгоритме может быть использовано любое понятное исполнителю утверждение, которое может соблюдаться (быть истинным) или не соблюдаться (быть ложным). Такое утверждение может быть выражено как словами, так и формулой. Таким образом, команда ветвления состоит из условия и двух команд (или их последовательностей).

Существует два частных случая ветвящихся алгоритмов:

  • структура обход, когда одна из ветвей не содержит никакого действия;

  • структура множественный выбор, когда количество вариантов выполняемых действий более двух. Например, в нашем алгоритме расчета стоимости пробега автомобиля было три варианта двигателя.

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

  • цикл с параметром (с заданным количеством повторений), в котором тело цикла выполняется заранее определенное количество раз;

  • цикл с предусловием (цикл «пока»), в котором тело цикла выполняется до тех пор, пока выполняется условие, то есть происходит следующим образом: сначала проверяется справедливость (истинность) условия, а затем выполняется тело цикла (когда условие становится ложным, выполнение цикла прекращается) (рис. 6.3);

  • цикл с постусловием (цикл «до»), в котором выполнение тела цикла происходит следующим образом: сначала выполняется тело цикла, а затем проверяется истинность условия (когда условие становится справедливым, выполнение цикла прекращается) (рис. 6.3).

Рис. 6.3. Блок-схемы двух типов циклических алгоритмов.

По степени детализации алгоритмы подразделяются на два вида:

  • укрупненный алгоритм содержит только наиболее важные (существенные) действия, отражающие суть процесса решения требуемой задачи, то есть описывает алгоритм решения задачи обобщенно, на уровне метода решения;

  • детальный алгоритм точно описывает процесс решения задачи, поэтому его предписания легко могут быть преобразованы в исполняемую программу.

При разработке сложного алгоритма он может разбиваться на отдельные вспомогательные алгоритмы, каждый из которых описывает решение какой-либо подзадачи. Это осуществляется при помощи последовательной детализации – построения алгоритма «сверху вниз», когда сначала строится основной алгоритм и в нем записываются обращения к вспомогательным алгоритмам первого уровня, в которые могут быть поставлены обращения к вспомогательным алгоритмам второго уровня и т.д.

Метод последовательной детализации применяется при любом конструировании сложных объектов. Постепенное углубление в детали – это естественная логическая последовательность мышления конструктора. В нашем случае речь идет тоже о конструировании, но только не технических устройств, а алгоритмов. Достаточно сложный алгоритм практически невозможно построить другим способом. Такая методика позволяет организовать работу коллектива программистов над сложным проектом. Например, руководитель группы строит основной алгоритм, а разработку вспомогательных алгоритмов и составление соответствующих подпрограмм поручает своим сотрудникам.