Алгоритмы сложной структуры.

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

Пример. Известны величины запасов топлива по каждому из N районов области, представленные в виде последовательности . Требуется определить величину максимального и минимального запасов топлива.

 

Этап 1. Математическое описание решения задачи. Для данного примера математическое описание имеет вид:

x = min{}; y = max {},

где х и у - минимальное и максимальное значения из последовательности значений функции ; min и max - обозначения нахождения минимума и максимума соответственно.

Этап 2. Определение входных и выходных данных. Входными данными являются значения функции; выходными данными - минимальное и максимальное значения функции.

Словесное описание алгоритма решения в общем виде:

1. Начало алгоритма.

2. Ввод значений функции

3. Поиск максимума и минимума.

4. Вывод значений максимума и минимума.

5. Конец алгоритма.

 

Рис. 2.5.12.Обобщенная блок-схема поиска минимума и максимума

На рис. 2.5.12 представлена укрупненная схема алгоритма. Здесь использован новый блок 3 «предопределенный процесс» для того, чтобы показать необходимость дополнительного шага раскрытия алгоритма. Здесь дополнительный шаг должен определить алгоритм поиска максимума и минимума. Разработаем такой алгоритм и тем самым раскроем содержание блок 3 (рис. 2.5.12).

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

Параметр цикла. В качестве параметра цикла возьмем номер значения функции по порядку. Начальное значение параметра цикла равно 1, конечное n и шаг цикла 1.

Подготовка цикла. Чтобы начать сравнение с максимумом (минимумом), надо определить их начальные значения. Обычно в качестве начальных значений максимума и минимума берут значение первого по порядку значения функции. Тогда сам поиск максимума и минимума начинается со второго по порядку значения функции, поэтому в качестве начального значения параметра цикла возьмем 2.

Тело цикла.В теле цикла будем определять, является ли очередное значение функции максимальным или минимальным, и при этом увеличивать значение параметра цикла

Условие продолжения цикла. Алгоритм поиска можно закончить, когда будут просмотрены все значения функции.

Введем обозначения: Х - значение минимума функции; У - значение максимума функции; i - параметр цикла; N - число значений функции (конечное значение параметра цикла); - значения функции.

3.1. Подготовка цикла: Х:=, У:=, i=2.

3.2. Поиск максимума и минимума.

3.3. Изменение параметра цикла i=i+1.

3.4. Если iN, то перейти к шагу 3.2, иначе к шагу, следующему за данным.

 

На рис. 2.5.13 приведена схема алгоритма поиска максимума и минимума. В приведенном алгоритме необходимо детализировать шаг 3.2. На рис. 2.5.13 - это блок 3.2.

Будем исходить из того, что нам известно текущее значение максимума У и минимума Х. Это предположение верно, так как при подготовке цикла были заданы начальные значения для Х и У. Теперь остается только определить, является ли очередной элемент больше текущего максимума или меньше текущего минимума. Если это так, следует заменить максимальное или минимальное значение на значение этого элемента.

Рис. 2.5.13 Блок –схема шага 3.2

Рис. 2.5.14 Блок-схема алгоритм нахождения максимума и минимума

Словесное описание алгоритма определения максимума и минимума (шаг 3.2):

3.21. Если <Х, то Х:=.

3.22. Если >У, то У:=.

 

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

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

Шаг 1.Начало алгоритма.

Шаг 2. Ввод значений функции .

Шаг 3. Поиск максимума и минимума.

Шаг 3.1. Подготовка цикла: Х:=У:=, i:=2.

Шаг 3.2. Определение максимума и минимума.

Шаг 3.2.1. Если <Х, то Х:=.

Шаг 3.2.2. Если >У, то У:=.

Шаг 3.3. Изменение параметра цикла.

Шаг 3.4. Если iN, то перейти к шагу 3.2, иначе - к шагу, следующему за данным.

Шаг 4.Вывод значений максимума и минимума.

Шаг 5.Конец алгоритма.

 

Рис. 2.5.15 Блок – схема полного алгоритма поиска минимума и максимума

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

Контрольные вопросы

1. Каково происхождение слова «алгоритм»?

2. Приведите определение алгоритма.

3. Что такое исполнитель? Приведите примеры.

4. Из каких элементов состоят алгоритмы?

5. Охарактеризуйте способы представления алгоритмов.

6. Какова роль языка в представлении алгоритмов? Что называют «алгоритми­ческим языком»?

7. В чем состоит свойство дискретности алгоритма?

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

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

В чем состоит свойство элементарности (локальности) шагов алгоритма?

10. Что означает «массовость алгоритма»?

11. Каковы основные алгоритмические конструкции?

12. Какие элементы графических схем представления алгоритмов используются для отображения основных алгоритмических конструкций?

13. Каковы основные конструкции алгоритмического языка?