Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3768.doc
Скачиваний:
111
Добавлен:
13.11.2022
Размер:
15.23 Mб
Скачать

Глава 1. Алгоритмизация

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

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

1. Алгоритм и его свойства

1.1. Понятие алгоритма

П онятие «алгоритм» является одним из основных понятий информатики и математики. Название алгоритм происходит от Algorithmi – латинской формы написания имени великого учёного средневекового Востока Мухаммеда ибн Мусса Аль Хорезми. Его годы жизни приблизительно с 783 по 850 гг. Он сформулировал правила выполнения арифметических действий над многозначными числами.

Что же будем понимать под алгоритмом?

Задача 1. Даны два натуральных числа1 a и b. Напишите алгоритм нахождения НОД(ab) – наибольшего общего делителя a и b.

Решение. a и b – входные данные задачи. По существу, мы имеем не одну задачу, а бесконечное множество однотипных задач, столько, сколько существует различных пар натуральных чисел (ab). Возникает вопрос: существует ли общий метод, позволяющий для любой частной задачи, получаемой подстановкой вместо a и b конкретной пары натуральных чисел, за конечное число шагов определить НОД(ab).

Для решения задачи необходимо иметь последовательность каких-то действий над входными данными и результатами предыдущих действий, если такие уже имеются, позволяющих найти НОД(ab). Желательно, чтобы набор этих действий был невелик и в то же время достаточен для нахождения наибольшего общего делителя для любых a, bN. Тогда должно существовать нечто такое, обозначим его «А», что после каждого действия оно должно указывать, что делать дальше: либо окончить процесс и указать результат, либо перейти к выполнению следующего определенного действия.

Вот это «А» и принято называть алгоритмом.

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

Алгоритмом решения поставленной задачи для выбранного исполнителя является, например, алгоритм Евклида.

Шаг 1. Сравни два числа a и b. Обозначь большее число через r, а меньшее через r1. Найди остаток r2 от деления r на r1. Сравни r2 с нулем, если r2 равно нулю, то НОД(ab) присвой значение r1 и иди на шаг 3, иначе иди на шаг 2.

Шаг 2. Переменной r присвой значение r1, а r1 – значение r2. Найди остаток от деления r на r1 и обозначь его r2. Сравни r2 с нулем, если r2 равно нулю, то НОД(ab) присвой значение r1 и иди на шаг 3, иначе иди на шаг 2.

Шаг 3. Процесс вычисления НОД(ab) закончи.

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

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

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