Представление алгоритма и псевдокод
Алгоритм является абстракцией и поэтому один и тот же алгоритм можно представить многими способами. Если с алгоритмом работает человек, то это может быть традиционный язык (русский, английский), язык картинок и пиктограмм, а также математические формулы.
В программировании эти проблемы решают путем создания четко определенного набора составных блоков, называемых примитивами, из которых могут конструироваться представления алгоритмов. Набор примитивов вместе с набором правил, устанавливающих, как эти примитивы могут комбинироваться для представления более сложных идей, образуют язык программирования.
Каждый примитив состоит из двух частей: синтаксической и семантической. Синтаксис относится к символьному представлению примитива, а семантика - к смысловому значению примитива.
Чтобы получить набор примитивов, пригодных для представления алгоритмов, выполняемых на вычислительной машине, можно использовать машинные команды. Однако описание алгоритма на таком уровне детализации весьма утомительно, поэтому обычно используется набор примитивов более высокого уровня, являющийся высокоуровневым языком программирования.
Псевдокод - это система обозначений, предназначенная для неформального представления идей в процессе разработки алгоритмов.
Один из путей создания псевдокода - ослабление правил того формального языка программирования, на котором требуется записать окончательную версию алгоритма. В подобной ситуации псевдокод может состоять из синтаксических и семантических структур, аналогичных структурам целевого языка программирования, но не столь формализованных.
Альтернатива выражается на псевдокоде следующей структурой: if (условие) then (действие) else (действие)
Сокращенный синтаксис этого конструкта когда не предусмотрено действие для варианта else выглядит так:
if (условие) then (действие)
Цикл-пока является алгоритмической структурой, которая заключается в необходимости продолжать выполнение последовательности действий до тех пор, пока некоторое условие остается верным.
Эта инструкция предписывает проверить условие и, если оно верно, выполнить действие, а затем вновь проверить условие. Если при очередной проверке условие оказывается неверным, следует перейти к инструкции, следующей за данной структурой.
while (условие) do (действие)
Цикл-do на псевдокоде имеет следующий вид: repeat (действие) until (условие)
Оператор присваивания. Часто желательно ссылаться на некоторые значения с помощью описательных имен. Для установки подобных связей будет использоваться следующая конструкция присваивания:
assign имя the value выражение
здесь параметр имя - это описательное имя, а параметр выражение описывает значение, связываемое с этим именем. Например: assign Итог the value Цена + Налог
При ее выполнении результат суммирования значений переменных Цена и Налог будет связан с именем Итог .
Процедуры. Используются для описания действий, которые могут выступать в роли вспомогательных программ в других приложениях. Такие программные элементы имеют несколько различных названий, а именно: подпрограммы, процедуры и функции.
В псевдокоде для обозначения заголовка, по которому можно распознать данный блок псевдокода используется термин procedure: procedure имя
здесь имя — это конкретное название, присвоенное данному блоку. Ниже следуют инструкции, определяющие выполняемые в этом блоке действия.
Процедуры должны разрабатываться так, чтобы быть как можно более общими. Например, процедура сортировки списков имен должна быть способна сортировать любой список, а не какой-то один определенный. Поэтому она должна быть написана таким способом, чтобы подлежащий сортировке список не определялся в самой процедуре, а передавался ей в качестве входных данных, представленных некоторым обобщенным именем.
Такие обобщенные имена в псевдокоде выделяют угловыми скобками и указывают их в круглых скобках а той же строке, в которой определяется имя данной процедуры. В частности, процедура Сортировка, предназначенная для сортировки произвольных списков имен, будет начинаться следующей инструкцией: procedure Сортировка(<список>)
Таким образом, назначение псевдокода состоит в предоставлении средств, позволяющих записывать схемы алгоритмов лишь в общих чертах, а не в написании законченных формальных программ. Поэтому в псевдокоде нет запрета на использование неформальных фраз, запрашивающих такие действия, детали которых не определены достаточно строго.
Поиск более удачных средств представления алгоритмов продолжается и поныне. Существующие тенденции заключаются в использовании графических методов, однако псевдокод остается достаточно эффективным при разработке процедурных компонентов небольшого размера, входящих в состав программных систем.