Таким образом, алгоритмы должны обладать такими основными свойствами: массовостью (результативностью); понятностью; дискретностью; конечностью; определенностью; эффективностью.
Среди других свойств алгоритмов, следует отметить оптимальность и элегантность. Правда понятие оптимальности в алгоритмах имеет компромиссный характер, так как можно оптимизировать количество необходимых для получения результата операций, или объем требуемой памяти, или скорость выполнения и даже понятность алгоритма. Поэтому, составляя алгоритм, следует определиться, что надо оптимизировать в первую очередь и как этого достичь. Составление алгоритмов является не только трудоемким процессом, но и, в некотором смысле искусством, поэтому так ценятся хорошие элегантные алгоритмы. Составление алгоритма предполагает от составителя следующего:
· Ясное понимание хода решения задачи, а лучше нескольких вариантов, получения решения, начиная с ввода (определения) исходных данных.
· Знание возможностей исполнителя по выполнению тех указаний, с помощью которых записывается данный алгоритм.
· Если алгоритм составляется под написание программы на алгоритмическом языке, то желательно для составителя алгоритма иметь хорошее представление о синтаксисе языка и наборе операторов языка.
Виды и способы записи алгоритмов
Различают три основных вида алгоритмов:
А) линейные; -
Б) разветвляющиеся;
В) циклические.
Алгоритм называется линейным, если его указания выполняются последовательно в том порядке, в котором они записаны.
Алгоритм— разветвляющийся, если в процессе решения требуется проверять некоторые условия и в зависимости от их выполнения или невыполнения, выполняются те или иные группы указаний.
Алгоритм - циклический, если в нем имеется хотя бы одна группа указаний, которая в процессе выполнения повторяется.
Для реальных задач, как правило, алгоритмы обладают всеми тремя видами, т.е. в них существуют и линейные группы указаний, и разветвляющиеся участки, и циклические группы. Существует несколько способов записи алгоритмов, которые применяются при составлении программ для решения задач на ЭВМ:
· операторная схема алгоритма;
· блок-схема алгоритма;
· программа, запись алгоритма на алгоритмическом языке.
Операторные схемы алгоритмов
Группа указаний, которая имеет свой законченный смысл, называется оператором.
Операторы мы будем обозначать большими буквами с индексами, Ai и т.п. Операторы классифицируется следующим образом.
1) По структурным свойствам:
а) простой; б) составной; в) циклический.
2) По характеру выполняемых действий:
а) арифметический; б) логический; в) оператор перехода (передачи управления); г) оператор ввода информации в машину; д) оператор вывода информации из машины; е) оператор обмена информацией; ж) оператор остановки и др.
Почти каждый алгоритм можно разделить на несколько групп указаний различных по назначению, т.е. операторов. Обозначив, операторы буквами, и указав последовательность выполнения операторов стрелками,мы получим операторную схему алгоритма.
Пример 3. Пусть требуется вычислить величины:
(1)Исходными данными для решения задачи является значения переменных x, a. Обозначим оператор ввода исходных данных через B1. Оператор вывода результата (значений y, z) через – B2. Оператор вычисления значения y по формуле (I) - через A1 . Оператор вычисляющий z- по формуле (2), через – A2. Оператор остановки процесса решения через O1 . Переход между операторами обозначим стрелками. Тогда операторную схему алгоритма решения данной задачи можно представить следующим образом:
т.е. вначале следует ввести значения исходных данных –x, a (оператор B1); затем вычислить значение y (оператор A1); вычислив значение y, требуется вычислить значение z(оператор A2); напечатать результат - значения y, z (оператор B2) и остановить процесс – оператор О1.
Если операторы выполняются в том порядке, в котором они записаны, то стрелки можно опустить, т.е. операторную схему можно записать в следующем сокращенном виде:
.Это пример линейного алгоритма. Приведем пример разветвляющегося алгоритма.
Пример 4. Написать операторную схему алгоритма по определению корней квадратного уравнения
при . Опишем процесс (план) решения задачи:1) вычисляем значение дискриминанта,
;2) сравниваем значения дискриминанта с нулем;
3) если
, то вычисляем x1, x2по формулампечатаемполученные значения, и останавливаем процесс решения;
4) если
,то выводим фразу«Действительных корней нет»иостанавливаем процесс решения.Запишем теперь операторную схему,
Обозначим:
B1 - оператор ввода значений a, b, c;
A1 - оператор вычисляющий дискриминант D;
P1 - оператор проверяющий условие D<0;
A2 - оператор вычисляющий значение x1;
A3 - оператор вычисляющий значение x2;
B2 - оператор вывода значений x1, x2;
B3 - оператор вывода фразы «Действительных корней нет»;
O1, O2 - операторы остановки.