Основные алгоритмические структуры

 

Изображены следующие блок-схемы: а -композиция, или следование; б -альтернатива, илиразвилка, в иг - блок-схемы, каждую из которых называютитерацией, илициклом (с предусловием (в), с постусловием (г)). S1 и S2 представляют собой в общем случае некоторые серии команд для соответствующего исполнителя, В - это условие, в зависимости от истинности (Т) или ложности (F) которого управление передаётся по одной из двух ветвей. Можно доказать, что для составления любого алгоритма достаточно представленных выше четырех блок-схем, если пользоваться их последовательностями и/или суперпозициями.

Блок-схема «альтернатива» может иметь и сокращенную форму, в которой отсутствует ветвь S2. Развитием блок-схемы типа альтернатива является блок-схема «выбор».

Развитие структуры типа «альтернатива»;

а) - неполная развилка; б) - структура «выбор»

 

Мы завершили рассмотрение основных структурных элементов алгоритмов: следования, развилки и цикла (повторения), являющихся базовыми элементами. Еще в 1966 году К. Бойм и Д. Якопини доказали, что алгоритм решения любой логической задачи можно составить из этих трех структур. С их помощью можно представлять любые линейные, разветвляющиеся и циклические алгоритмические процессы

Алгоритмические языки. Классификация

Алгоритмический языкформальный язык, предназначенный для записи алгоритмов. Он определяется заданием алфавита (словаря исходных символов), точным описанием его синтаксиса (грамматики) и семантики.

Правила преобразования информации в различных алгоритмах могут быть самыми различными. Однако все алгоритмы могут быть составлены из сравнительно небольшого числа элементарных команд.

Все многообразие существующих в настоящее время алгоритмических языков обычно классифицируют по степени их зависимости от типа машин, от ориентации на сферу применения, по специфике организационной структуры языковых конструкциий.

По первому признаку они делятся на две большие группы: машинно-зависимые и машинно-независимые языки. Машинно-зависимые языки классифицируют на машинные и машинно-ориентированные (автокоды). Различают два уровня машинно-ориентированных языков: символического кодирования (ассемблеры) и макроязыки (макроассемблеры).

В мнемокоде цифровой код операции заменен буквенным (мнемоническим), а цифровые адреса - буквенными именами.

В макроязыках, кроме кодов мнемоязыка, используются макрокоманды, которые не имеют в машинном языке непосредственных аналогов (они включают в себя несколько команд). Сокращая длину исходной программы, макроязыки позволяют несколько повысить производительность программистов.

Программист, работающий с машинно-зависимыми языками, должен хорошо знать конструктивные особенности ЭВМ, для которой он составляет программу. Это требование значительно уменьшается при использовании машинно-независимых языков.

Программы, записанные на машинно-независимых языках, почти не зависят от типа ЭВМ. Структура этих языков ближе к структуре естественных языков, например к структуре английского языка, чем к структуре машинно-ориентированных языков. Поэтому эти языки могут применять непрофессиональные программисты.

Машинно-независимые языки в последние годы обычно разделяют на: процедурно-ориентированные (Бейсик, Паскаль, Фортран, Кобол, ПЛ/1), проблемно-ориентированные (РПГ, Лисп, АПЛ), объектно-ориентированные (ADA, JAVA, Delpi, Visual Basic,Си++).

Каждая группа языков характеризуется некоторым уровнем. Считается, что уровень языка тем выше, чем более он абстрагирован от конкретного машинного языка. Иначе, говоря, язык принадлежит к более высокому уровню, если его операторы инициируют большее число машинных команд, чем операторы другого языка.