Алгоритм должен быть составлен таким образом, чтобы исполнитель, в расчете на которого он создан, мог однозначно и точно следовать командам алгоритма и эффективно получать определенный результат. Это накладывает на записи алгоритмов ряд обязательных требований, суть которых вытекает, вообще говоря, из приведенного выше неформального толкования понятия алгоритма. Сформулируем эти требования в виде перечня свойств, которым должны удовлетворять алгоритмы, адресуемые заданному исполнителю.
1. Одно из первых требований, которое предъявляется к алгоритму, состоит в том, что описываемый процесс должен быть разбит на последовательность отдельных шагов. Возникающая в результате такого разбиения запись представляет собой упорядоченную совокупность четко разделенных друг от друга предписаний (директив, команд, операторов), образующих прерывную (или, как говорят, дискретную) структуру алгоритма. Только выполнив требования одного предписания, можно приступить к выполнению следующего. Дискретная структура алгоритмической записи может. Например, подчеркиваться сквозной нумерацией отдельных команд алгоритма, хотя это требование не является обязательным. Рассмотренное свойство алгоритмов называют дискретностью.
2. Используемые на практике алгоритмы составляются с ориентацией на определенного исполнителя. Чтобы составить для него алгоритм, нужно знать, какие команды этот исполнитель может понять и исполнить, а какие - не может. Мы знаем, что у каждого исполнителя имеется своя система команд. Очевидно, составляя запись алгоритма для определенного исполнителя, можно использовать лишь те команды, которые имеются в его СКИ. Это свойство алгоритмов будем называть понятностью.
3. Будучи понятным, алгоритм не должен содержать предписаний, смысл которых может восприниматься неоднозначно, т.е. одна и та же команда, будучи понятна разным исполнителям, после исполнения каждым из них должна давать одинаковый результат.
Запись алгоритма должна быть настолько четкой, полной и продуманной в деталях, чтобы у исполнителя не могло возникнуть потребности в принятии решений, не предусмотренных составителем алгоритма. Говоря иначе, алгоритм не должен оставлять места для произвола исполнителя. Кроме того, в алгоритмах недопустимы также ситуации, когда после выполнения очередной команды алгоритма исполнителю неясно, какая из команд алгоритма должна выполняться на следующем шаге.
Отмеченное свойства алгоритмов называютопределенностью илидетерминированностью.
4. Обязательное требование к алгоритмам -результативность. Смысл этого требования состоит в том, что при точном исполнении всех предписаний алгоритма процесс должен прекратиться за конечное число шагов и при этом должен получиться определенный результат. Вывод о том, что решения не существует - тоже результат.
5. Наиболее распространены алгоритмы, обеспечивающие решение не одной конкретной задачи, а некоторого класса задач данного типа. Это свойство алгоритма называютмассовостью. В простейшем случае массовость обеспечивает возможность использования различных исходных данных.
1.1. Алгоритмизация и программирование
Алгоритм – это базовое понятие информатики. На понятии алгоритма построены все основные принципы программирования – составление программ для вычислительных машин. Тем не менее, существуют различные понятия алгоритма. Одним из таких определений может быть такое: Алгоритм – это описанная на некотором языке, точная конечная система правил, определяющая содержание и порядок действий над некоторыми объектами, строгое выполнение которых дает решение поставленной задачи. Иначе, это описание называется формальным
Любой алгоритм существует не сам по себе, а предназначен для определенного исполнителя. Исполнитель должен уметь выполнять некоторые команды. Исполнителем наших алгоритмов будет компьютер.
Программа – это логически упорядоченная последовательность команд необходимая для управления компьютером.
Программа, с которой работает процессор, представляет собой последовательность чисел, называемую машинным кодом. Написать программу в машинном коде достаточно сложно и поэтому для представления алгоритма в виде, понятном компьютеру, служат языки программирования.
Свойства алгоритма:
1. Дискретность – разделение информационного процесса на отдельные команды;
2. Определенность (точность) – это однозначность результатов выполнения алгоритмов в одинаковых начальных условиях;
3. Результативность – это завершение выполнения алгоритмов определенными результатами;
4. Массовость – это возможность применения алгоритмов для решения целого класса задач, различающихся исходными данными;
5. Правильность алгоритмов – правильность результатов, получаемых с их помощью. Алгоритм считается правильным, если он дает правильные результаты для любых допустимых начальных условий. Алгоритм содержит ошибки, если его выполнение приводит к сбоям, неправильным результатам, либо вовсе не дает никаких результатов.
Алгоритм можно описать несколькими способами:
ü словесная форма представления алгоритма (описание на естественном языке);
ü описание алгоритма в виде структурированной записи, например на псевдокоде – это описание алгоритма на естественном, частично формализованном языке;
ü представление алгоритма в виде блок – схемы. Это описание структуры алгоритма с помощью геометрических фигур с линиями – связями, показывающими порядок выполнения отдельных инструкций.
ü запись структуры алгоритма на языке программирования или в машинных кодах.
Таблица 11-Обозначение некоторых блоков алгоритма
- Начало и конец алгоритма.
- Ввод / вывод данных.
- Выполнение операции.
- Выбор направления выполнения алгоритма в зависимости от некоторых переменных условий.
- Изображение цикла со счетчиком.
1.2. Основные алгоритмические конструкции
Линейная алгоритмическая конструкция
Линейной называют алгоритмическую конструкцию, реализованную в виде последовательности действий, в которой каждое действие алгоритма выполняется ровно один раз, причем после I –того шага выполняется I+1 шаг, если этот шаг не конец.
Таблица 12 – Пример линейного алгоритма
Блок – схема:
Задача.
Найти площадь прямоугольника, если известны длины его сторон. Исходные данные: a- длина прямоугольника, b- ширина прямоугольника.
Выходные данные: s – площадь.
Запись алгоритма на
структурированном языке:
1. Ввод a,b2. Вычисление s=a*b3. Вывод sКонец
Разветвляющаяся алгоритмическая конструкция
Это алгоритмическая структура, обеспечивающая выбор между двумя альтернативами в зависимости от значения входных данных.
Таблица 13– Виды развилок
Неполная развилка
если – то
Полная развилка
если – то – иначе
Алгоритмическая конструкция «цикл» или повторение.
Циклом называют алгоритмическую конструкцию, в которой идущая подряд группа действий алгоритма может выполняться несколько раз в зависимости от входных данных и условия задачи. Группу повторяющихся действий на каждом шагу цикла называют телом цикла.
Различают три типа циклических алгоритмов: Цикл с параметром – арифметический цикл; цикл с предусловием и цикл с постусловием – итерационные циклы(Таблица 14). В циклах с параметром число повторений полностью зависит от правила изменения параметра, которое задается с помощью начального и конечного значений параметра и шага его изменения.