· Результативность (конечность) - алгоритм должен приводить к решению задачи за конечное число шагов.
· Массовость - алгоритм решения задачи разрабатывается в общем виде, то есть, он должен быть применим для некоторого класса задач, различающихся только исходными данными. При этом исходные данные могут выбираться из некоторой области, которая называется областью применимости алгоритма.
Средства, используемые для записи алгоритмов, в значительной степени определяются тем, для какого исполнителя предназначается алгоритм. Если алгоритм предназначен для исполнителя — человека, то его запись может быть не полностью формализована, на первое место здесь выдвигаются понятность и наглядность, поэтому для записи таких алгоритмов может использоваться естественный или графический язык, лишь бы запись отражала все основные особенности алгоритма. Для записи алгоритмов, предназначенных для исполнителей — автоматов, необходима формализация, поэтому в таких случаях применяют специальные формальные языки.
Словесная запись алгоритма. Словесная форма обычно используется для алгоритмов, ориентированных на исполнителя — человека. Команды алгоритма нумеруют, чтобы иметь возможность на них ссылаться. Приведем в качестве еще одного примера словесной формы записи алгоритма классический алгоритм Евклида для нахождения наибольшего общего делителя двух натуральных чисел:
Даны два целых положительных числа m и n. Требуется найти их наибольший общий делитель, т.е. наибольшее положительное число, на которое делится без остатка как m, так и n.
Суть алгоритма Евклида можно представить следующими тремя этапами.
1. Нахождение остатка. Разделим m на n. Пусть остаток равен г:
0<г< n.
2. Проверка остатка на равенство нулю. Если г = О, вычисление кончается, n — искомое число.
3. Замена m ← n, n ← г. Повторить этап 1.
Пример
1. Даны m = 125, n = 75. Наши наибольший общий делитель.
1) 125: 75 = 1. Частное равно 1, остаток от деления равен 50,
2) Остаток от деления не равен 0. Проводим замену переменных:
m = 75, n = 50 и повторяем процесс,
1) 75: 50= 1, m = 25.
2) m = 50, n = 25, г = 0.
Повторяем процедуру.
1) 50:25= 2.
2) Остаток от деления равен 0, поэтому n = 25 является наибольшим общим делителем.
2. К отрезку АВ в точке М восстановить перпендикуляр. Алгоритм решения этой геометрической задачи может быть описан в виде четырех последовательных шагов (рис. 1).
1) Из произвольной точки О плоскости радиусом ОМ описать окружность, пересекающую отрезок АВ.
2) Отметить точку С пересечения окружности с отрезком АВ,
3) Найти точку D пересечения окружности с прямой ОС.
Рис. 1. Восстановление перпендикуляра к отрезку в данной точке
4) Соединить точку М и D.
Если строго выполнять все предписания, то будет получен однозначный ответ,
Форма записи команд не формализуется. В командах помимо слов могут использоваться символы и формулы. Важно лишь то, чтобы каждая команда была понятна исполнителю, точно определяла все его действия и могла бы быть им выполнена.
Для решения задачи можно разработать несколько алгоритмов. Каждый алгоритм создается в расчете на вполне конкретного исполнителя. Если планируется реализация алгоритма на машине, следует учитывать его приспособляемость к ЭВМ, простоту и время реализации на машине. Алгоритм должен быть разработан таким образом, чтобы исполнитель мог даже не вникать в смысл того, что он делает, и вместе с тем получать нужные результаты. Исполнение уже имеющегося алгоритма можно поручить субъекту или объекту, который не обязан вникать в существо дела, а возможно, и не способен его понять.
Описание алгоритма
Правила выполнения арифметических операций или геометрических построений представляют собой алгоритмы.
Указание формулы или последовательности формул, расчеты по которым нужно выполнить для получения результатов.
Пример
Вычислить объем круглого конуса. Для вычисления следует воспользоваться формулой
При заданных двух размерах (r — радиус основания и h — высота конуса) эта формула дает предписание исполнителю, как действовать, т. е. определены характер и последовательность действий.
Представление алгоритма в виде схемы.
При реализации задачи на ЭВМ, особенно в случае написания программ на машинно-ориентированных языках, и задач сложных алгоритмов используются схемы алгоритмов.
Схема алгоритма — графическое представление хода решения задачи.
При выполнении схем алгоритмов и программ отдельные функции алгоритмов и программ (с учетом их детализации) отображаются в виде условных графических обозначений — символов (ГОСТ 19.003—80 и ГОСТ 19.002—80). В табл. 1 приведены основные символы, используемые в схемах алгоритмов. Схемы должны быть выполнены в форматах, установленных по ГОСТ 2.301—68.
Такое графическое представление называется схемой алгоритма или блок-схемой. В блок-схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий, управлению повторением действий, окончанию обработки и т.п.) соответствует геометрическая фигура, представленная в виде блочного символа. Блочные символы соединяются линиями переходов, определяющими очередность выполнения действий. В таблице приведены наиболее часто употребляемые символы.
При выполнении схем символам присваивают порядковые номера. Порядковый номер проставляют слева в верхней части символа в разрыве его контура. Символы соединяются прямыми линиями (линиями потока).
Линии потока должны быть параллельны линиям внешней рамки схемы. Направления линий потока сверху вниз и слева направо принимают за основные и, если они не имеют изломов, их можно стрелками не обозначать. В остальных случаях направление линии потока обозначать стрелкой обязательно.
Записи внутри символа выполняются чертежным шрифтом по ГОСТ 2.304—81. Записи внутри символа или рядом с ним должны быть краткими. Символы применяются с учетом выполняемых функций.
Таблица 1. Основные символы для схем алгоритмов
Название символа | Обозначение и пример заполнения | Пояснение |
Процесс | Вычислительное действие или последовательность действий | |
Решение | Проверка условий | |
Модификация | Начало цикла | |
Предопределенный процесс | Вычисления по подпрограмме, стандартной подпрограмме | |
Ввод-вывод | Ввод-вывод в общем виде | |
Пуск-останов | Начало, конец алгоритма, вход и выход в подпрограмму | |
Документ | Вывод результатов на печать |
№ п/п | Графическое изображение элемента | Описание элемента |
1 | а b | Процесс - блок обработки данных, в котором указываются действия, изменяющие значение, форму представления или расположение данных. |
2 | Данные – блок описания операции ввода/вы-вода данных, для которой не определено конкретное устройство. | |
3 | Решение – блок выбора направления выполнения алгоритма в зависимости от некоторых условий. В результате проверки условия осуществляется выбор одного из нескольких возможных путей. | |
4 | · · · | Границы цикла - символ состоит из двух частей и определяет начало и конец цикла. |
5 | Предопределенный процесс – блок описания процесса из одной или нескольких операций, описанных в отдельном модуле (самостоятельном алгоритме). | |
6 | Комментарий – содержит пояснение функции блока, с которым связан. | |
7 | Терминатор – обозначает начало и конец алгоритма. | |
8 | Линия потока – отображает потоки данных и управления в алгоритме. | |
9 | Соединитель – указание связи между прерванными линиями потока, связывающими блоки. |
Пример описания алгоритма нахождения максимального из трех чисел XI, Х2, ХЗ с помощью схемы алгоритма представлен на рис. 2.
Графический метод описания алгоритма очень наглядный, но в случае сложного алгоритма схема получается громоздкой и это ее достоинство теряется. Использование схем алгоритмов значительно упрощает написание программ начинающими программистами.
Рис. 2 Схема алгоритма поиска Схема алгоритма Евклида максимального числа из трех чисел