Esto se trata de cuán efectivamente podemos expresar un algoritmo a mano. Necesito esto para mi enseñanza de pregrado.
Entiendo que no existe una forma estándar de escribir un pseudocódigo. Diferentes autores siguen diferentes convenciones.
Sería útil si las personas aquí señalan la forma en que siguen y piensan cuál es la mejor.
¿Hay algún libro que trate esto con un buen detalle?
ds.algorithms
soft-question
advice-request
writing
usuario3162
fuente
fuente
Respuestas:
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".
record.field
orecord->field
x*y
a%b
s <= t
!p
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.
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 / L sol L
Utilizo mi propio
algorithm
entorno ligero de LaTeX para componer pseudocódigo. (Es solo untabbing
entorno dentro de un\fbox
.) Aquí está mi código fuente para el algoritmo de Borůvka:fuente
Tiendo a usar algo parecido a la sintaxis de Python. Python ya está lo suficientemente cerca del pseudocódigo que, en algunos casos, mi pseudocódigo puede convertirse en un código de trabajo real.
fuente
Si desea tener un código definido (es decir, poco o nada de matemáticas, cerca de la programación real), puede considerar tener un código que realmente compila. Esto tiene varias ventajas:
Un profesor de mi universidad hace esto en su curso de algoritmos. Su lenguaje de elección es Modula. Sin embargo, no creo que la elección particular del idioma importe. Simplemente manténgase en uno (por paradigma) que mejor se adapte a su nivel de abstracción.
fuente