Написание псевдокода похоже на написание кода: не очень важно, какой стандарт вы соблюдаете, если вы (и люди, с которыми вы пишете) действительно следует некоторому стандарту.
Но для справки, вот особенный стандарт, который я использую в своих конспектах лекций, исследовательских работах и будущих книгах.
Используйте стандартный императивный синтаксис для потока управления и доступа к памяти - если, пока, для, return, array [index], function (arguments). Разобрать "еще, если".
- Но использование вместо илиfield(record)
record.field
record->field
xyx*y
amodba%b
s≤ts <= t
¬p!p
x−−√sqrt(x)
πPI
∞MAX_INT
Но используйте для назначения, чтобы избежать проблемы.x←y==
Но избегайте обозначений (и псевдокодов!) Полностью, если английский понятнее.
- Симметрично, избегайте английского, если обозначения понятнее!
Минимизируйте синтаксический сахар - укажите блочную структуру с помощью последовательного отступа (как на Python). Пропустите сладкие ключевые слова, такие как «начало / конец» или «do / od» или «fi». Опустить номера строк. Вы не подчеркнуть ключевые слова , как «за» или «а» или «если», установив их в другой typeface
или стиле . Когда-либо. Просто не надо.
Но набирайте имена алгоритмов и константы в \ textc {Small Caps}, имена переменных в курсиве и буквенные строки в sans serif.
Но добавьте небольшое количество вертикального «дышащего» пространства ( \\[0.5ex]
) между значимыми кусками кода.
Не указывайте неважные детали. Если не имеет значения, в каком порядке вы посещаете вершины, просто скажите «для всех вершин».
Например, вот рекурсивная формулировка алгоритма минимального связующего дерева Боровки . Ранее я определил как график, полученный из G путем сжатия всех ребер в множестве L , и Flatten как подпрограмму, которая удаляет петли и параллельные ребра.G/LGL
Я использую свою собственную облегченную algorithm
среду LaTeX для набора псевдокода. (Это просто tabbing
среда внутри \fbox
.) Вот мой исходный код для алгоритма Боровки:
\begin{algorithm}
\textul{$\textsc{Borůvka}(G)$:}\+
\\ if $G$ has no edges\+
\\ return $\varnothing$\-
\\[0.5ex]
$L \gets \varnothing$
\\ for each vertex $v$ of $G$\+
\\ add the lightest edge incident to $v$ to $L$\-
\\[0.5ex]
return $L \cup \textsc{Borůvka}(\textsc{Flatten}(G / L))$
\end{algorithm}