Смекни!
smekni.com

Информатика и компьютерная техника (стр. 11 из 15)

Таким образом, алгоритмы должны обладать такими основными свойствами: массовостью (результативностью); понятностью; дискретностью; конечностью; определенностью; эффективностью.

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

· Ясное понимание хода решения задачи, а лучше нескольких вариантов, получения решения, начиная с ввода (определения) исходных данных.

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

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

Виды и способы записи алгоритмов

Различают три основных вида алгоритмов:

А) линейные; -

Б) разветвляющиеся;

В) циклические.

Алгоритм называется линейным, если его указания выполняются последовательно в том порядке, в котором они записаны.

Алгоритм— разветвляющийся, если в процессе решения требуется проверять некоторые условия и в зависимости от их выполнения или невыполнения, выполняются те или иные группы указаний.

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

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

· операторная схема алгоритма;

· блок-схема алгоритма;

· программа, запись алгоритма на алгоритмическом языке.

Операторные схемы алгоритмов

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

Операторы мы будем обозначать большими буквами с индексами, Ai и т.п. Операторы классифицируется следующим образом.

1) По структурным свойствам:

а) простой; б) составной; в) циклический.

2) По характеру выполняемых действий:

а) арифметический; б) логический; в) оператор перехода (передачи управления); г) оператор ввода информации в машину; д) оператор вывода информации из машины; е) оператор обмена информацией; ж) оператор остановки и др.

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

Пример 3. Пусть требуется вычислить величины:

(1)

(2)

Исходными данными для решения задачи является значения переменных 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 - операторы остановки.

Тогда операторную схему алгоритма вычисляющего значение корней уравнения можно записать следующим образом:
A2A3B2O1

B1A1P1

B3O2

Циклические алгоритмы

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

Различают два вида циклических операторов:

1) Циклический оператор с заданным количеством повторений;

2) Итерационный циклический оператор.

Схематически оба эти операторы имеют одинаковую структуру, которую можно изобразить следующим образом:

A0A1P1 (продолжение)


A0 - оператор или операторы подготовки цикла.

A1 -группа основных операторов, которые требуется повторить. Эту группу операторов обычно называют телом цикла.

Р1 - условный оператор, который проверяет некоторое условие и если оно выполняемся, то заставляет повторяться еще операторы тела цикла, если нет, то передает управление на продолжение алгоритма.

Управление повторением оператора цикла осуществляется с помощью некоторой переменной, которую называют параметром цикла.

В циклическом операторе первого вида параметр цикла изменяется от одной границыL1 до второй границы L2 с некоторым постоянным интервалом (шагом) h за каждым повторением. В этом случае легко вычислить количество повторений k:

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