Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_informatika / Лекции.doc
Скачиваний:
50
Добавлен:
14.02.2016
Размер:
761.86 Кб
Скачать

5.4. Алгоритмизация.

Алгоритмизациейназывается процесс разработки алгоритма для решения какой либо задачи. Процесс разработки алгоритма какой либо задачи обычно связан с определенными трудностями. Для примера возьмем задачу: составить алгоритм отыскивания максимального числа среди последовательности изNчисел. Подобные задачи зачастую носят только психологические трудности, «что выбирать? Посмотрел и выбрал», при этом редко задумываемая о том, как мы это делаем. Хотя алгоритм решения очень простой:

  1. Считаем что максимальным является первое число;

  2. Сравниваем то число, которое считаем максимальным со следующим, и если оно окажется больше, то считаем что максимальным стало следующее число;

  3. Повторяем второй пункт до тех пор пока не переберем все числа.

По окончании перебора получим максимальное число в заданной последовательности.

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

Разработка алгоритма неразрывно связана с математическим моделированием. То есть алгоритм решения задачи, это заключительная фаза математического моделирования. Этот процесс отражен на рисунке 10.

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

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

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

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

Пример 1.

Рассмотрим процесс алгоритмизации на том же примере поиска максимального числа из последовательности из Nчисел.

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

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

  2. M– сама последовательность чисел. В качестве типа объектов, представляющих исходных данных определяем множество вещественных чисел.

Далее определимся с результатами, которые будут получены в процессе выполнения алгоритма результаты выполнения алгоритма у нас будут представлены как:

  1. Mmax– максимальное число из заданной последовательности.

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

Построим математическую модель, то есть опишем процесс поиска языком математических формул:

Математическая модель процесса поиска максимального числа из последовательности вещественных чисел MразмерностьюN построена.

Разрабатываем алгоритм в виде описательных инструкций:

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

  2. Получить количество элементов последовательности Nи саму последовательностьM.

  3. Присвоить значению Mmax, значение элемента последовательностиM1.

  4. Присвоить счетчику элементов i– значение равное двум. Начинаем перебор со второго элемента, так как первый у нас уже и так считается максимальным.

  5. Если не дошли до конца массива, то есть i<=N, то:

    1. Если Mi>Mmax, то считаем это элемент максимальнымMmax=Mi.

    2. Переходим к следующему элементу, для этого увеличиваем значение номера элемента iна единицу.

    3. Переходим к пункту 5.

  6. Записываем результат работы алгоритма Mmax;

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

Итак, мы разработали алгоритм, с помощью которого можно найти максимальное число в последовательности Mимеющей количество элементовN.

Следующим этапом идет проверка правильности работы алгоритм. Для этого возьмем произвольную последовательность {1,6,2} размерностью 3 и «проиграем» этот алгоритм пошагово, заранее зная ответ (Mmax=6):

  • Начало алгоритма;

  • Получаем количество элементов последовательности N=3 и саму последовательностьM={1,6,2};

  • Присваиваем Mmaxзначение первого элементаMmax=M1=1;

  • Присваиваем счетчику элементов значение номера второго элемента i=2;

  • Не дошли до конца последовательности? 2<=3? «да»;

  • Сравниваем текущий элемент с максимальным Mi>Mmax? или 6>1? «да», значит тот элемент который мы считали максимальным таковым не является. Теперь будем считать максимальным второй элемент последовательностиMmax=Mi=M2=6;

  • Увеличиваем значение счетчика элементов на единиц i=i+1, то есть теперь значение счетчика равно 3;

  • Не дошли до конца последовательности? 3<=3? «да»;

  • Сравниваем текущий элемент с максимальным Mi>Mmax? или 2>6? «нет», не выполняем никаких действий;

  • Увеличиваем значение счетчика элементов на единиц i=i+1, то есть теперь значение счетчика равно 4;

  • Не дошли до конца последовательности? 4<=3? «нет»;

  • Записываем результат работы алгоритма. На данном шаге получили, что Mmax=6.

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

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

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

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