Описание алгоритма вполне допустимо наестественномязыке, таком как русский, французский, английский, немецкий и др. Первое время это устраивало математиков. Однако постепенно выяснилось, что применение естественных языков в точных науках связано с рядом трудностей и даже может приводить к противоречиям. В естественных языках не всегда форме конкретного предложения соответствует единственное содержание. Предложения могут иметь расплывчатый смысл, требовать знания ситуации, контекста. Отдельные слова многозначны. Так, для обеспечения нужд науки стали возникать формальныеподъязыки (смысл каждой фразы такого подъязыка определяется только его формой). Возникла идея построения искусственных формальных языков, в результате чего возникло множество алгоритмических языков.
Алгоритмический язык - это система обозначений формальной записи алгоритмов, предназначенных для некоторого исполнителя. Алгоритмический язык довольно близок к обычному разговорному, но более точный, конкретный, лаконичный. В составе алгоритмического языка - операторы, команды, служебные слова и служебные символы. Как и любой другой язык, он имеет свой синтаксис и семантику. Вот как выглядит алгоритм Евклида на алгоритмическом языке:
алг ЕВКЛИД(цел А, В, Н)
арг А, В
рез Н
нач
нц пока А ? В
если А < В
то Х = А; А = В; В = Х
все
А = А - В
кц
Н = А
вывод Н
кон
Существенным недостатком алгоритмических языков является то, что представленные их средствами алгоритмы недостаточно наглядны, довольно объемны и громоздки. Описания сложных математических задач или процессов управления занимают сотни страниц. Сделать описание алгоритма более наглядным помогает его графическое изображение в виде структурнойсхемы. На рис.1 представлена схема алгоритма Евклида.
Рис. 1.
Структурная схема является ориентированным графом [5], у которого графические обозначения (символы, блоки) являются вершинами графа, а линии потока - ребрами. Укрупненная схема позволяет видеть функциональные связи между отдельными фрагментами, участками алгоритма, а более "мелкие", подробные схемы содержат детали, элементарные действия, составляющие содержание этих фрагментов.
Для реализации на ПК алгоритм необходимо описать на одном из языковпрограммирования. При всем своем разнообразии языки программирования (т.н. языки высокого уровня) основываются на сходстве с естественными языками, совместимы с общепринятыми математическими обозначениями и обладают еще более высокой степенью формализации, чем алгоритмические языки. Теперь алгоритм описывается в виде программы. Ниже приведено описание алгоритма Евклида средствами языка Паскаль:
PROGRAM NOD (INPUT, OUTPUT);
VAR A, B, H, X : INTEGER;
BEGIN
READ (A, B);
WHILE A <> B DO
BEGIN
IF A < B
THEN X := A;
A := B;
B := X
END;
A := A - B;
END;
H := A;
WRITE ('НОД чисел', A, 'и', B, 'равен', H)
END.
При вводе в ПК специальная программа-транслятор "переводит" алгоритм на машинный алгоритмический язык, в котором все данные и все действия представляются, в конечном счете, в виде двоичных чисел. После команды на запуск программа выполняется уже автоматически, а программный процессор при этом является физический моделью алгоритма выполнения программы.