Normas para pseudo código?

votos
24

Necesito traducir algunas rutinas de Python y Java en pseudo código para mi tesis de maestría, pero tienen problemas para llegar a una sintaxis / estilo que es:

  • consistente
  • fácil de comprender
  • no demasiado prolijo
  • no demasiado cerca de lenguaje natural
  • no demasiado cerca de algún lenguaje de programación concreto.

¿Cómo se escribe pseudo código? ¿Hay alguna recomendación estándar?

Publicado el 20/02/2010 a las 10:58
fuente por usuario
En otros idiomas...                            


7 respuestas

votos
16

Yo recomiendo mirar el libro "Introducción a los algoritmos" (por Cormen, Leiserson y Rivest). Siempre he encontrado su descripción pseudo-código de algoritmos muy clara y consistente.

Un ejemplo:

DIJKSTRA(G, w, s)
1  INITIALIZE-SINGLE-SOURCE(G, s)
2  S ← Ø
3  Q ← V[G]
4  while Q ≠ Ø
5      do u ← EXTRACT-MIN(Q)
6         S ← S ∪{u}
7         for each vertex v ∈ Adj[u]
8             do RELAX(u, v, w)
Respondida el 20/02/2010 a las 11:03
fuente por usuario

votos
4

Si el código es de procedimiento, lo normal pseudo-código es probablemente fácil (Wikipedia tiene algunos ejemplos).

orientado a objetos pseudo-código podría ser más difícil. Considerar:

  • el uso de diagramas de clase UML para representar las clases / inheritence
  • usando diagramas de secuencia UML para representar la secuencia de código
Respondida el 20/02/2010 a las 11:05
fuente por usuario

votos
5

Le sugiero que eche un vistazo en el lenguaje de programación Fortaleza .

Se trata de una verdadera lenguaje de programación, y no pseudocódigo, pero fue diseñado para ser lo más cercano a pseudocódigo ejecutable como sea posible. En particular, para el diseño de la sintaxis, que leen y analizan cientos de CS y papeles de matemáticas, cursos, libros y revistas para encontrar los patrones de uso comunes para pseudocódigo y otras anotaciones computacionales / matemática.

Puede aprovechar todo lo que la investigación con sólo mirar el código fuente y fortaleza de la abstracción de las cosas que no necesita, ya que su público objetivo es humano, mientras que la fortaleza de es un compilador.

He aquí un verdadero ejemplo de cómo ejecutar código de Fortaleza de la NAS de referencia paralelo (NASA Supercomputación Avanzada) gradiente conjugado . Para una experiencia de diversión, comparar la especificación del índice de referencia con la aplicación de la fortaleza y observe cómo hay casi una correspondencia 1: 1. También comparar la aplicación de un par de otros idiomas, como el C o Fortran, y observe cómo no tienen absolutamente nada que ver con la especificación (y también a menudo son un orden de magnitud mayor que la especificación).

Debo subrayar: esto no es pseudocódigo, se trata de código real Fortaleza de trabajo! Código Fortaleza Ejemplo http://ProjectFortress.Sun.Com/Projects/Community/raw-attachment/wiki/FortressQuestions/NAS-CG.png

Editar: el código de ejemplo de enlace está muerto. Posiblemente ejemplo similar se puede encontrar aquí: https://umbilicus.wordpress.com/2009/10/16/fortress-parallel-by-default/

Respondida el 20/02/2010 a las 15:33
fuente por usuario

votos
3

No entiendo el requisito de "no demasiado cerca de algún lenguaje de programación concreto".

Python es considerado generalmente como un buen candidato para la escritura de pseudo-código. Tal vez una versión ligeramente simplificada del pitón podría funcionar para usted.

Respondida el 20/02/2010 a las 15:39
fuente por usuario

votos
2

Pascal siempre ha sido tradicionalmente el más similar al pseudocódigo, cuando se trata de campos matemáticos y técnicos. No sé por qué, sólo era siempre así.

Tengo algunos (oh, no sé, tal vez 10 libros en un estante, que concreta esta teoría).

Python como se sugiere, puede ser código agradable, pero puede ser tan ilegible, así, que es una maravilla por sí mismo. idiomas de mayor edad son más difíciles de hacer ilegible - ellos es "simple" (tomar con precaución) que los de hoy en día. Ellos tal vez sean más difíciles de entender lo que está pasando, pero más fácil de leer (menos características de sintaxis / lenguaje es necesario para entender lo que hace el programa).

Respondida el 20/02/2010 a las 16:15
fuente por usuario

votos
7

Responder a mi propia pregunta, sólo quería llamar la atención sobre la siguiente página web acerca de composición tipográfica, pseudo código en LaTeX: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=algorithms . Describen una serie de diferentes estilos, ventajas e inconvenientes de la lista. Dicho sea de paso, resulta que hay existiendo dos hojas de estilo para escribir pseudo código en la forma utilizada en "Introductin a Algoritmos" por Cormen, como se recomienda arriba: newalg y clrscode. Este último fue escrito por el propio Cormen.

Respondida el 25/02/2010 a las 15:08
fuente por usuario

votos
0

Este post es viejo, pero espero que esto ayude a otros.

libro "Introducción a los algoritmos" (por Cormen, Leiserson y Rivest) es un buen libro para leer acerca de los algoritmos, pero el "pseudo-código" es terrible. Cosas como Q [1 ... n] no tiene sentido cuando uno tiene que entender lo que Q [1 ... n] se supone que significa eso. ¿Qué tendrá que hacer notar fuera de la "pseudo-código." Por otra parte, los libros como "Introducción a los algoritmos" les gusta usar una sintaxis matemática, que está violando uno de los propósitos de la pseudo-código.

Pseudo-código debe hacer dos cosas. Resumen lejos de la sintaxis y sea fácil de leer. Si el código real es más descriptivo que el pseudo-código y el código real es más descriptivo, entonces no es pseudo-código.

Digamos que estuviera escribiendo un programa sencillo.

diseño de pantalla:

Welcome to the Consumer Discount Program!
Please enter the customers subtotal: 9999.99
The customer receives a 10 percent discount
The customer receives a 20 percent discount
The customer does not receive a discount
The customer's total is: 9999.99

Lista de variables:

TOTAL:         double
SUB_TOTAL:     double
DISCOUNT:      double

Pseudo-código:

DISCOUNT_PROGRAM

    Print "Welcome to the Consumer Discount Program!"
    Print "Please enter the customers subtotal:"
    Input SUB_TOTAL

    Select the case for SUB_TOTAL
        SUB_TOTAL > 10000 AND SUB_TOTAL <= 50000
            DISCOUNT = 0.1
            Print "The customer receives a 10 percent discount"
        SUB_TOTAL > 50000
            DISCOUNT = 0.2
            Print "The customer receives a 20 percent discount"
        Otherwise
            DISCOUNT = 0
            Print "The customer does not a receive a discount"

    TOTAL = SUB_TOTAL - (SUB_TOTAL * DISCOUNT)
    Print "The customer's total is:", TOTAL

Tenga en cuenta que esto es muy fácil de leer y no hace referencia a ninguna sintaxis. Esto apoya las tres estructuras de control de Bohm y de Jacopini.

Secuencia:

Print "Some stuff"
VALUE = 2 + 1
SOME_FUNCTION(SOME_VARIABLE)

Selección:

if condition
    Do one extra thing

if condition
    do one extra thing
else
    do one extra thing

if condition
    do one extra thing
else if condition
    do one extra thing
else
    do one extra thing

Select the case for SYSTEM_NAME
    condition 1
        statement 1
    condition 2
        statement 2
    condition 3
        statement 3
    otherwise
        statement 4

Repetición:

while condition
    do stuff

for SOME_VALUE TO ANOTHER_VALUE
    do stuff

que para comparar este N-Queens "pseudo-código" ( https://en.wikipedia.org/wiki/Eight_queens_puzzle ):

PlaceQueens(Q[1 .. n],r)

    if r = n + 1
        print Q
    else
        for j ← 1 to n
            legal ← True
            for i ← 1 to r − 1
                if (Q[i] = j) or (Q[i] = j + r − i) or (Q[i] = j − r + i)
                    legal ← False
        if legal
            Q[r] ← j
            PlaceQueens(Q[1 .. n],r + 1) 

Si no se puede explicar en pocas palabras, usted no entiende lo suficientemente bien. - Albert Einstein

Respondida el 11/01/2019 a las 15:02
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more