Понятие алгоритма, его свойства и изображение
Слово алгоритм происходит от имени математика IX века Аль - Хорезми, который сформулировал правила выполнения арифметических действий над многозначными числами. записанными в десятичной системе счисления.
Первоначально под алгоритмом и понимали только правила выполнения четырех арифметических действий над многозначными числами. В настоящее время понятие алгоритма - одно из фундаментальных понятий науки информатика. С одной стороны алгоритм является предметом изучения такой отрасли математики как теория алгоритмов, с другой стороны в информатике существует неформальное определение алгоритма, и алгоритмизация выступает в качестве общего метода информатики.
Алгоритм – это точно определенная последовательность действий для некоторого исполнителя, выполняемых по строго определенным правилам и приводящих через некоторое количество шагов к решению задачи.
Исполнитель алгоритмов определяет элементарные действия, из которых формируется алгоритм. Отдельные действия, составляющие алгоритм, называются операциями. При этом под операцией понимается как какое-то единичное действие, например, сложение, так и группа взаимосвязанных действий.
Говоря об алгоритме вычислительного процесса, необходимо понимать, что объектами, к которым применяется алгоритм, являются данные. Алгоритм решения вычислительной задачи представляет собой совокупность правил преобразования исходных данных в результатные данные (см. рис. 6.1).
Входные данные Выходные данные
|
Рис. 6.1. Представление алгоритма вычислительного
процесса.
Основными свойствамиалгоритма являются:
1. Детерминированность (определенность). Предполагает получение однозначного результата процесса при заданной исходной информации. Благодаря этому свойству процесс выполнения алгоритма носит механический характер.
2. Результативность. Указывает на возможность наличия таких исходных данных, для которых реализуемый по заданному алгоритму вычислительный процесс должен через конечное число шагов остановиться и выдать искомый результат.
3. Массовость. Это свойство предполагает, что алгоритм должен быть пригоден для решения всех задач данного типа ( в теории алгоритмов число задач бесконечно)..
4. Дискретность. Означает расчлененность определяемого алгоритмом вычислительного процесса на отдельные этапы, возможность выполнения которых исполнителем (компьютером) не вызывает сомнений.
5. Понятность для исполнителя — исполнитель алгоритма должен понимать, как его выполнять. Иными словами, имея алгоритм и произвольный вариант исходных данных, исполнитель должен знать, как надо действовать для выполнения этого алгоритма.
Процесс составления алгоритмов называют алгоритмизацией.
Алгоритм, реализующий решение задачи, можно представить различными способами. Наиболее распространены следующие формы представления алгоритмов:
-словесная (запись на естественном языке);
-графическая (изображения из графических символов);
-псевдокоды (полуформализованные описания алгоритмов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.);
-в рамках математического понятия алгоритма (машина Тьюринга, с неограниченным регистрами).
-программная (тексты на языках программирования).
Словесный способ записи алгоритмов представляет собой описание последовательных этапов обработки данных. Алгоритм задается в произвольном изложении на естественном языке.
Словесный способ не имеет широкого распространения, так как он: строго не формализован, страдает излишней многословностью и главное допускает неоднозначность толкования отдельных предписаний.
Графический способ позволяет представить алгоритм в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий.
Такое графическое представление называется схемой алгоритма или блок-схемой. В блок-схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий, управлению повторением действий, окончанию обработки и т.п.) соответствует геометрическая фигура, представленная в виде блочного символа.
Псевдокод представляет собой систему обозначений и правил, предназначенную для единообразной записи алгоритмов.
Псевдокод занимает промежуточное место между естественным и формальным языками. С одной стороны, он близок к обычному естественному языку, поэтому алгоритмы могут на нем записываться и читаться как обычный текст. С другой стороны, в псевдокоде используются некоторые формальные конструкции и математическая символика, что приближает запись алгоритма к общепринятой математической записи. В псевдокоде не приняты строгие синтаксические правила для записи команд, присущие формальным языкам, что облегчает запись алгоритма на стадии его разработки. Единого или формального определения псевдокода не существует, поэтому возможны различные псевдокоды, отличающиеся набором служебных слов и основных (базовых) конструкций.
Наибольшее распространение благодаря своей наглядности получил графический (блок-схемный) способ записи алгоритмов.
Перечень символов, их наименование, отображаемые ими функции, форма и размеры определяются стандартом ГОСТ 19701-90.
В соответствии со стандартом схема программы состоит из:
- символов процесса, указывающих фактические операции обработки данных (включая символы, определяющие путь, которого следует придерживаться с учетом логических условий);
- линейных символов, указывающих поток управления;
- специальных символов, используемых для облегчения написания и чтения схемы.
Не вдаваясь во все тонкости проектирования блок- схем алгоритмов, используем в педагогических целях обозначения некоторых символов для описания логики рассматриваемых нами вычислительных процессов (табл. 6.1.).
Некоторые символы стандарта ГОСТ 19701-90 (ISO 5807-85)
Таблица 6.1
Символ | Наименование символа | Функция |
Данные | Символ отображает данные, носитель данных не определен. Используется для представления операций ввода или вывода данных. | |
Процесс | Символ отображает функцию обработки данных любого вида (выполнение определенной операции или группы операций, приводящее к изменению значения, формы или размещения информации или к определению, по которому из нескольких направлений потока следует двигаться). | |
Предопределенный процесс | Символ отображает предопределенный процесс, состоящий из одной или нескольких операций или шагов программы, которые определены в другом месте (в подпрограмме, модуле). | |
Подготовка | Символ отображает модификацию команды или группы команд с целью воздействия на некоторую последующую функцию (установка переключателя, модификация индексного регистра или инициализация программы). | |
Решение | Символ отображает решение или функцию переключательного типа, имеющую один вход и ряд альтернативных выходов, один и только один из которых может быть активизирован после вычисления условий, определенных внутри этого символа. Соответствующие результаты вычисления могут быть записаны по соседству с линиями, отображающими эти пути. | |
Граница цикла | Символ, состоящий из двух частей, отображает начало и конец цикла. Обе части символа имеют один и тот же идентификатор. Условия для инициализации, приращения, завершения и т.д. помещаются внутри символа в начале или в конце в зависимости от расположения операции, проверяющей условие. | |
Линия | Символ отображает поток данных или управления. В схемах программ используется для соединения блочных символов. Линии переходов определяют очередность выполнения действий. | |
Соединитель | Символ отображает выход в часть схемы и вход из другой части этой схемы и используется для обрыва линии и продолжения ее в другом месте. Соответствующие символы-соединители должны содержать одно и то же уникальное обозначение. | |
Терминатор | Символ отображает выход во внешнюю среду и вход из внешней среды (начало или конец схемы программы, внешнее использование и источник или пункт назначения данных). |
При проектировании алгоритмов общими являются следующие правила:
- в алгоритме должен быть только один блок начала и один блок окончания;
- в алгоритме должны присутствовать блоки ввода значений входных данных, блоки обработки и блоки вывода значений выходных данных;
- связи между блоками указываются направленными линиями.
При построении алгоритмов для сложной задачи используют системный подход с использованием декомпозиции (нисходящее проектирование сверху-вниз). Как и при разработке любой сложной системы, при построении алгоритма используют дедуктивный и индуктивный методы. При дедуктивном методе рассматривается частный случай общеизвестных алгоритмов. Индуктивный метод применяют в случае, когда не существует общих алгоритмических решений.
Одним из системных методов разработки алгоритмов является метод структурной алгоритмизации. Этот метод основан на визуальном представлении алгоритма в виде последовательности управляющих структур. Выделяют три базовые управляющие процессом обработки информации структуры: композицию, альтернативу и итерацию.
С помощью этих структур можно описать любые процессы обработки информации.
Композиция (следование) - это линейная управляющая конструкция, не содержащая альтернативу и итерацию. Она предназначена для описания единственного процесса обработки информации.
Альтернатива - это нелинейная управляющая конструкция, не содержащая итерацию. Она предназначена для описания различных процессов обработки информации, выбор которых зависит от значений входных данных.
Итерация - это циклическая управляющая структура, которая содержит композицию и ветвление. Она предназначена для организации повторяющихся процессов обработки последовательности значений данных.