Escribir pseudocódigo es como escribir código: no es particularmente importante qué estándar sigues, siempre y cuando tú (y las personas con las que escribes) realmente sigan algún estándar.
Pero para que conste, aquí está el estándar idiosincrásico que uso en mis notas de clase, trabajos de investigación y el próximo libro.
Utilice la sintaxis imperativa estándar para el flujo de control y el acceso a la memoria: if, while, for, return, array [index], function (argumentos). Deletrea "si no".
- Pero use Fi e l d( r e c o r d) lugar de
record.field
orecord->field
x yx*y
a mod ba%b
s ≤ ts <= t
¬ p!p
X--√sqrt(x)
πPI
∞MAX_INT
Pero use para la asignación, para evitar el problema.x ← y==
Pero evite la notación (¡y el pseudocódigo!) Por completo si el inglés es más claro.
- Simétricamente, ¡evita el inglés si la notación es más clara!
Minimice el azúcar sintáctico: indique la estructura de bloques mediante una sangría consistente (a la Python). Omita palabras clave azucaradas como "comienzo / fin" o "do / od" o "fi". Omitir números de línea. No no hacer hincapié en palabras clave como "a favor" o "mientras que" o "si" mediante el establecimiento de ellos de una manera diferente typeface
o estilo . Siempre. Solo no lo hagas.
Pero los nombres y constantes de algoritmos tipográficos en \ textc {Small Caps}, nombres de variables en cursiva y cadenas literales en sans serif.
Pero agregue una pequeña cantidad de espacio vertical de "respiración" ( \\[0.5ex]
) entre fragmentos de código significativos.
No especifique detalles sin importancia. Si no importa en qué orden visita los vértices, simplemente diga "para todos los vértices".
Por ejemplo, aquí hay una formulación recursiva del algoritmo de árbol de expansión mínimo de Borůvka . Anteriormente definí como el gráfico obtenido de al contraer todos los bordes en el conjunto , y Flatten como una subrutina que elimina los bucles y los bordes paralelos.G LG / LsolL
Utilizo mi propio algorithm
entorno ligero de LaTeX para componer pseudocódigo. (Es solo un tabbing
entorno dentro de un \fbox
.) Aquí está mi código fuente para el 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}