ОПРЕДЕЛЕНИЕ АЛГОРИТМА
Алгоритм Евклида был предназначен для нахождения наибольше1 общего делителя пары натуральных чисел (m, n).
Алгоритм Евклида
1. { Нахождение остатка} r:=m mod n.
2. {Замена} m:=n; n:=r.
3. {Остановка?} Если n¹0, то переход к п.1.
4. {Остановка процесса} m-искомое число.
Представленное описание алгоритма - это последовательность шагов, направленных на достижение некоторого результата (наибольшего общего делителя).
Современное содержание понятия алгоритма можно определить следующим образом.
Алгоритм - точное предписание, которое задает алгоритмический процесс, начинающийся с произвольного исходного данного (из некоторой совокупности возможных для данного алгоритма исходных данных) и направленный на получение полностью определённого этим исходным данным результата.
Алгоритмический процесс - процесс последовательного преобразования конструктивных объектов (слов, чисел, пар слов, пар чисел, предложений и т.п.)., происходящий дискретными <шагами>. Каждый шаг состоит в смене одного конструктивного объекта другим.
Поскольку алгоритмы могут применяться к весьма произвольным объектам (числам, буквам, словам, графам, логическим выражениям и т.д.), в определении алгоритма используется специальный термин <конструктивный объект>, объединяющий в себе все эти возможные случаи. Так, в алгоритме Евклида под конструктивными объектами можно понимать пары чисел.
Смена конструктивных объектов в алгоритме Евклида может быть представлена следующим образом (для пары т=10, т=4): (10, 4)®(4,2)®(2, 0).
Как правило, для заданного алгоритма можно выделить семь характеризующих его независимых параметров:
¨ совокупность возможных исходных данных,
¨ совокупность возможных промежуточных результатов;
¨ совокупность результатов;
¨ правило начала;
¨ правило непосредственной переработки;
¨ правило окончания;
¨ правило извлечения результата.
Для алгоритма Евклида эти семь параметров могут быть определены следующим образом:
1)1={(т, n)|т³n}.
2) Р={(т, n)|т³n}.
3) R={m|m>0}.
4) Ввести пару чисел (m, n) таких, что т³п.
5) (m, n)®(n, т(mod n)).
6) Если в паре (m, n) n=0, то останов.
7) Результатом является первое число пары (m, 0).
Вывод m на устройство вывода.
И теории алгоритмов изучаются алгоритмы, заданные в строгом формализованном виде. Для алгоритма Евклида эта форма может такой:
Определяется решающее правило (функция) - f.
f: P®P;
f(m, n)=(m, n) if n = 0;
f(m, n)=(n, m(mod n)) if n¹0.
На практике в программировании очень часто используется задание алгоритмов в виде блок-схем.
Блок-схема - элементарный граф, вершины которого могут быть одного из трех типов: функциональная вершина, предикатная вершина, объединяющая вершина.
Функциональная вершина используется для представления функции f: X®Y.
Предикатная вершина используется для представления функции (или предиката) p: X®(T,F), т.е. логического выражения, передающего управление по одной из двух возможных ветвей.
Объединяющая вершина представляет передачу управления от одной из двух входящих ветвей к одной выходящей ветви.
Структурная блок-схема - это блок-схема, которая может быть выражена как композиция из четырех элементарных блок-схем: композиция, выбор (альтернатива), итерация (повторение).
Любая программа для машины может быть представлена структурной блок-схемой.
Важной особенностью приведенных структур является то, что они имеют один вход и один выход.
Структурное программирование - процесс разработки алгоритмов с помощью структурных блок-схем.
В более широком плане структурное программирование допускает большее разнообразие элементарных структур управления, чем предложенные четыре. Причиной для расширения множества структур является требование удобства и естественности.
Программирование сверху вниз - это процесс пошагового разбиения алгоритма на все более мелкие части с целью получения таких элементов, для которых можно написать конкретные команды.
Структурное программирование сверху вниз - это процесс программирования сверху вниз, ограниченный использованием структурных блок-схем.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.