Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава1.doc
Скачиваний:
2
Добавлен:
16.04.2019
Размер:
861.7 Кб
Скачать

1.3. Типовые структуры алгоритмов

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

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

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

1.3.1. Линейная структура

Символы линейной структуры располагаются в схеме алгоритма в той последовательности, в которой будут выполняться соответствующие им операции Р1, Р2,..., Рn, причем каждая операция выполняется только один раз (рис. 1.1). Такой порядок выполнения действий называется естественным.

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

Рис. 1.1. Линейная структура

Линейная структура является основой для построения схем алгоритмов любой сложности.

Пример 1.6

Вычислить x = asin b и y = ln(c/x)

Схема алгоритма

1.3.2. Ветвящаяся структура

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

Ветвящаяся структура (рис. 1.2) предполагает наличие в своем составе:

  • условия L, которое может принимать несколько различных значений;

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

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

В качестве такого условия может выступать, например, операция сравнения двух чисел. Если, допустим, условие записано в виде a > b, то результатом проверки такого условия может быть либо утверждение «да» (истина), либо «нет» (ложь). При этом каждому результату должна соответствовать одна из двух возможных ветвей.

Существует три разновидности ветвящейся структуры: ответвление, разветвление и переключение (рис. 1.2).

a)

б)

в

Рис. 1.2. Разновидности ветвящейся структуры:

а) ответвление; б) разветвление; в) переключение

Для ответвления характерно наличие операций только в одной из двух ветвей, а для разветвления - в обеих. Отличительной особенностью переключения является то, что условие L может принимать несколько значений, в соответствии с каждым из которых будет выполняться одна из нескольких ветвей P1, P2,..., Pn.

Пример 1.7

Даны переменные a и b ( a b ). Переменной max присвоить численное значение наибольшей переменной. Математическая формулировка задачи:

Анализ задачи показывает:

1. Существуют два возможных пути решения задачи:

max = a ( ветвь 1 ) и max = b ( ветвь 2 ).

2. Вопрос о том, численное значение какой из переменных a или b, следует присвоить переменной max, может быть решен только после проверки одного из условий: a > b или a < b. Проверке может быть подвергнуто только одно из двух условий, поскольку они являются взаимоисключающими.

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

Алгоритм состоит из линейной структуры, в которую вложена типовая ветвящаяся структура-разветвление.

Схема алгоритма

Пример 1.8

Сравнить величины a и b. Если a < b, величину b уменьшить вдвое, результат вывести.

При решении этой задачи нужно использовать ответвление, т.к. в одной из ветвей должны производиться уменьшение величины b и вывод результата, а в другой никаких действий выполнять не следует.

Алгоритм представляет собой сложную линейную структуру, в которую вложена ветвящаяся структура – ответвление.

Схема алгоритма

Пример 1.9

Вычислить значение функции

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

Схема алгоритма

А лгоритм так же, как и в двух предыдущих примерах, является сложной линейной структурой с переключением в качестве вложенной структуры.

Пример 1.10

Вычислить значение функции

Схема алгоритма

Здесь в линейную структуру вложена ветвящаяся, ветвь «нет» которой, в свою очередь, составляет еще одна ветвящаяся структура. Глубина вложения такой ветвящейся структуры равна 2.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]