Алгоритмы. Понятие алгоритма относится к

advertisement
Алгоритмы.
Понятие алгоритма относится к фундаментальным концепциям информатики, оно возникло задолго до появления ЭВМ и стало одним из
основных понятий математики.
Алгоритмизация задачи заключается в выборе подходящего, или
разработке нового алгоритма, т.е. метода решения задачи.
Алгоритм --- это строгая последовательность шагов вычислительного процесса, выполнение которой приводит от исходных данных к искомому результату (т.е. к решению задачи).
Алгоритм формулируется в расчёте на конкретного исполнителя:
человека, машину. Алгоритм – понятное и точное указание исполнителю
совершить определенную последовательность действий.
Всякий алгоритм должен обладать следующими свойствами.
Свойства алгоритма.
Алгоритм должен обладать следующими свойствами:
дискретность (пошаговость) --- заключается в том, что нельзя приступать к следующему шагу алгоритма не завершив предыдущий.
определенность (детерминированность) --- заключается в точном
и однозначно понимаемом порядке вычислений (от исходных чисел до
конечных результатов). Это означает, что сколько бы раз мы ни применяли определенный алгоритм к одним и тем же исходным данным, каждый
раз мы должны получать один и тот же результат;
массовость (универсальность) --- заключается в возможности использовать данный алгоритм не только для решения данной конкретной
задачи (с ее конкретными исходными данными), но и для решения всех
других однотипных (подобных) задач (с другими исходными данными);
результативность (сходимость) --- заключается в неизбежности
получения конечного результата (решения) после выполнения определенного (не бесконечного) количества шагов вычислительного процесса.
Средства записи алгоритмов.
Средства, используемые для записи алгоритмов, в значительной
степени определяются тем, для какого исполнителя предназначается алгоритм. Для записи алгоритмов, предназначенных для исполнителейавтоматов, необходима формализация, поэтому в таких случаях применяют специальные, формальные языки (языки программирования). Используются две формы записи алгоритмов: словесная и графическая.
Словесная форма представляет собой перечень команд. Команды
алгоритма нумеруются, чтобы иметь возможность на них ссылаться.
Приведём пример словесной формы записи алгоритма решения
квадратного уравнения y = x2 + 2x + 3 для всех x в интервале [1 ; 5].
1. Начало.
2. Вводим x, y.
3. Присваиваем x := 1.
4. Вычисляем y = x2 + 2x + 3.
5. Присваиваем x := x + 1.
6. Проверяем условие:
если x ≤ 5, то переходим к пункту 4,
иначе, переходим к пункту 7.
7. Вывод y.
8. Конец.
Форма записи команд не формализуется. В командах помимо слов
могут использовать символы и формулы. Важно лишь то, чтобы каждая
команда была понятна исполнителю, точно определяла все его действия и
могла бы быть им выполнена.
Графическая форма (блок-схема) представляет алгоритм в наглядной форме. Команды алгоритма помещаются внутрь блоков, соединенных
стрелками, показывающими очередность выполнения команд алгоритма.
Приняты определенные стандарты графических изображений блоков.
Для записи внутри блоков команды используется естественный язык
с элементами математической символики. В результате проверки условия
возникают два возможных пути для продолжения алгоритма. Эти пути
изображаются стрелками со знаками «+» и «-», или надписями «Да» и
«Нет». Переход по стрелке со знаком «+» происходит, если условие соблюдено, а переход по стрелке «-», если условие не соблюдено. Схемы
алгоритмов обладают большей наглядностью, чем словесная запись алгоритма.
Блок-схема алгоритма решения того же квадратного уравнения выглядит следующим образом. (Рис 1.)
Разновидностью графической формы записи алгоритма является
структурограмма. Метод структурограмм накладывает некоторые ограничения на условные переходы, благодаря которым читаемость алгоритмов резко повышается. Блоки начала, конца, ввода/вывода и функциональный отображаются также. Блоки условного перехода, ветвления,
циклов имеют следующий вид:
Блок условного перехода
Блок ветвления
Структурограмму решения квадратного уравнения можно представить следующим образом. (Рис. 2.)
Цикл с «предусловием»
Цикл с «постусловием»
Блок-схема алгоритма решения
квадратного уравнения.
Структурограмма решения квадратного уравнения
Структуры алгоритмов.
Алгоритмы можно представлять как некоторые жесткие структуры,
состоящие из отдельных базовых элементов.
Вычислительный процесс называется линейным, если направление
его продолжения, на любом этапе вычисления, является единственным.
Последовательность действий линейного алгоритма не зависит от исходных данных и результатов промежуточных вычислений, т.е. является постоянной.
Разветвляющимся называется вычислительный процесс, который,
в зависимости от исходных данных и результатов промежуточных вычислений, осуществляется по одному из нескольких возможных вариантов
или ветвей.
Простые команды.
Элементарной структурной единицей любого алгоритма является
простая команда, обозначающая один элементарный шаг обработки или
отображения информации. Значение переменной величины может быть
изменено с помощью команды присваивания (:=), которая обозначает
указание исполнителю выполнить действие, состоящее в том, чтобы, вопервых, вычислить значение выражения, стоящего в правой части команды присваивания, и, во-вторых, присвоить это значение переменной, имя
которой стоит в левой части команды. Например, команда х :=1 означает,
что переменной (х) присваивается значение 1, а команда y := y + 1 – что
переменной (у) присваивается значение, которое на 1 больше ее прежнего значения.
Переменной величине может быть присвоено значение и с помощью
команды ввода, которая передает исполнителю значение переменной из
некоторого внешнего источника. Например, команда ввод(х, у) означает,
что исполнитель получает из внешнего источника два значения, которые
должны быть присвоены переменным (х и у). Аналогичная команда вывода вывод(х, у) означает, что исполнитель должен выдать для обозрения значения величин (х и у).
Простая команда на блок-схеме алгоритма изображается в виде
функционального блока, имеющего один вход и один выход, за исключением блоков начала и конца, которые имеют лишь вход или выход и
блока ветвления, имеющего один вход и два выхода.
Составные команды.
Из простых команд и команд проверки условий образуются составные команды, имеющие более сложную структуру.
Команда следования.
Эта команда образуется из последовательности команд. При исполнении алгоритма команды выполняются в том порядке, в каком они записаны. Команда следования может быть представлена так:
начало <действие 1> … <действие n> конец.
Под действием понимается либо простая, либо составная команда.
Эти команды могут записываться либо в строчку, либо в столбец одна
под одной. Служебные слова начало и конец выполняют роль скобок.
Наличие скобок позволяет рассматривать команду следования как единое
действие, распадающееся на последовательность более простых действий.
Команда ветвления.
С помощью команды ветвления (развилки) осуществляется выбор
одного из двух возможных действий в зависимости от условия.
если <условие> то <действие 1> иначе <действие 2>.
Действия, указанные после служебных слов то и иначе, могут
быть простыми или составными командами. При исполнении команды
ветвления выполняется только одно из действий: если условие соблюдено, то выполняется действие 1, в противном случае выполняется действие 2.
Команда ветвления может использоваться в сокращенной форме
(коррекция), когда в случае несоблюдения условия никакое действие не
выполняется.
если <условие> то <действие>
При помощи операторов ветвления можно организовать процедуры
многократного повторения одних и тех же действий. Большинство алгоритмов содержат серии многократно повторяемых команд. Для обозначения многократно повторяемых действий используют специальную конструкцию, называемую циклом. Рассмотрим два типа команды повторения: цикл с предусловием и цикл с постусловием.
Цикл с предусловием записывается в следующем виде:
пока <условие> повторять <действие>
Под действием понимается простая или составная команда. Исполнение такой команды повторения состоит в том, что сначала проверяется
условие и, если оно соблюдено, то выполняется команда, записанная по-
сле служебного слова повторять. После этого снова проверяется условие.
Выполнение цикла завершается, когда условие перестаёт соблюдаться.
Для этого необходимо, чтобы команда, выполняемая в цикле, влияла на
условие.
Команда цикла с постусловием выполняется аналогично, только
условие проверяется после выполнения команды, а повторение выполнения команды происходит в том случае, когда условие не соблюдено, т.е.
повторение производится до соблюдения условия.
Цикл с постусловием записывается в следующем виде:
повторять <действие> до <условие>
Цикл, не содержащий внутри себя других циклов, называется простым. Если же он содержит внутри себя другие циклы или разветвления,
то он называется сложным.
Download