Escrever pseudocódigo é como escrever código: não é particularmente importante qual padrão você segue, desde que você (e as pessoas com quem você escreve) realmente siga algum padrão.
Mas, para constar, aqui está o padrão idiossincrático que uso em minhas anotações de aula, trabalhos de pesquisa e próximo livro.
Use a sintaxe imperativa padrão para fluxo de controle e acesso à memória - se, enquanto, para, retornar, matriz [índice], função (argumentos). Soletre "else if".
- Mas use o vez de oufield(record)
record.field
record->field
Use notação matemática padrão para matemática - Escreva vez de , vez de , vez de , não vez de , vez de , em vez de vez de , vez de , etc.a mod bxyx*y
amodba%b
¬ p √s≤ts <= t
¬p!p
π∞x−−√sqrt(x)
πPI
∞MAX_INT
Mas use para atribuição, para evitar o problema.x←y==
Mas evite a notação (e o pseudocódigo!) Inteiramente se o inglês for mais claro.
- Simetricamente, evite o inglês se a notação for mais clara!
Minimize o açúcar sintático - Indique a estrutura do bloco por recuo consistente (à la Python). Omita palavras-chave açucaradas como "começo / fim" ou "faça / od" ou "fi". Omita números de linha. Você não enfatizar palavras-chave como "a favor" ou "quando" ou "se", definindo-as de uma forma diferente typeface
ou estilo . Sempre. Apenas não.
Porém, nomes e constantes de tipos de algoritmos em \ textc {Small Caps}, nomes de variáveis em itálico e cadeias literais em sans serif.
Mas adicione uma pequena quantidade de espaço "respiratório" vertical ( \\[0.5ex]
) entre pedaços de código significativos.
Não especifique detalhes sem importância. Se não importa qual ordem você visita os vértices, basta dizer "para todos os vértices".
Por exemplo, aqui está uma formulação recursiva do algoritmo de spanning tree mínimo de Borůvka . Eu já defini como o gráfico obtido de contratando todas as arestas no conjunto e Flatten como uma sub-rotina que remove loops e arestas paralelas.G LG/LGL
Eu uso meu próprio algorithm
ambiente leve do LaTeX para digitar pseudocódigo. (É apenas um tabbing
ambiente dentro de um \fbox
.) Aqui está o meu código-fonte para o algoritmo de Borůvka:
\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}