В информатике сложились вполне определенные традиции в представлении алгоритмов, рассчитанных на различных исполнителей. Средства, используемые для записи алгоритмов, в значительной степени определяются тем, для какого исполнителя алгоритм предназначен. Если алгоритм предназначен для исполнителя – человека, то его запись может быть не полностью формализована, на первое место здесь выдвигаются понятность и наглядность, поэтому для записи таких алгоритмов может использоваться естественный язык, лишь бы запись отражала все основные особенности алгоритма. Для записи алгоритмов, предназначенных исполнителей–автоматов, необходима формализация, поэтому в таких случаях применяют специальные языки.
Рассмотрим основные способы описания алгоритмов.
Словесная запись алгоритма. Словесная форма обычно используется для алгоритмов, ориентированных на исполнителя – человека. Команды алгоритма нумеруют, чтобы иметь возможность на них ссылаться.
Пример. Рассмотрим классический алгоритм Евклида для нахождения наибольшего общего делителя двух натуральных чисел:
1. Если числа равны, то взять первое число в качестве ответа и закончить выполнение алгоритма, иначе перейти к п.2.
2. Определить большее из двух чисел.
3. Заменить большее число на разность большего и меньшего чисел.
4. Перейти к п. 1.
Команды этого алгоритма выполняется в естественной последовательности, если не оговорено противного. Так, после второй команды будет выполняться третья, после третьей – четвертая, а после выполнения четвертой команды необходимо вернуться к снова к выполнению первой команды, т.к. это явно оговорено в четвертой команде. Команды такого типа (команды перехода) нарушают естественный порядок выполнения команд алгоритма.
Форма записи команд не формализуется. В командах помимо слов могут использоваться символы и формулы. Важно лишь то, чтобы каждая команда была понятна исполнителю, точно определяла все его действия и могла быть им выполнена.
Схемы алгоритмов. Схемы представляют алгоритм в наглядной графической форме. Команды алгоритма помещаются внутрь блоков, соединенных стрелками, показывающими очередность выполнения команд алгоритма. Приняты определенные стандарты графических изображений блоков.
наименование
обозначение
функции
Пуск-останов
(начало и конец алгоритма)
Начало, конец, прерывание процесса обработки данных или выполнения алгоритма
Процесс (вычисление)
Выполнение операции или группы операций, в результате которых изменяется значение, форма представления или расположение данных.
Условие (выбор)
Выбор направления выполнения алгоритма в зависимости от некоторых переменных условий
Модификация
Выполнение операций, меняющих команды, или группы команд, изменяющих алгоритм
Предопределенный процесс (подпрограмма)
Использование ранее созданных и отдельно описанных алгоритмов.
Ввод-вывод
Преобразование данных в форму, пригодную для обработки (ввод) или отображения результатов обработки (вывод).
Перфокарта
Ввод-вывод данных, носителем которых является перфокарта
Дисплей
Ввод данных с подключенного к ЭВМ дисплея или вывод данных на дисплей.
Документ
Ввод-вывод данных, носителем которых служит бумага.
Псевдокоды. Псевдокод представляет собой систему обозначений и правил, предназначенную для единообразной записи алгоритмов. Он занимает промежуточное место между естественным и формальным языком.
С одной стороны он близок к обычному естественному языку, поэтому алгоритмы на нем записываются и читаются как обычный текст. С другой стороны, в псевдокоде используются некоторые формальные конструкции и математическая символика, что приближает запись алгоритма к общепринятой математической записи.
В псевдокоде не приняты строгие синтаксические правила для записи команд, присущие формальным языкам, что облегчает запись алгоритма на стадии его проектирования и дает возможность использовать более широкий выбор команд. Однако в псевдокоде обычно имеются некоторые конструкции, присущие формальным языкам, что облегчает переход от записи на псевдокоде к записи алгоритма на формальном языке. В частности, в псевдокоде, так же как и в формальных языках, есть служебные слова, смысл которых определен раз и навсегда. Они выделяются в печатном тексте жирным шрифтом, а в рукописном тексте подчеркиваются.
Единого и формального определения псевдокода не существует, поэтому возможны различные псевдокоды, отличающиеся набором служебных слов и основных (базовых) конструкций. В качестве примера приведем запись на одном из псевдокодов алгоритма нахождения числа гласных букв в тексте: