pseudocode - segun - pseudocodigo pseint
¿Normas para el pseudo código? (6)
Le sugiero que eche un vistazo al lenguaje de programación de la fortaleza .
Este es un lenguaje de programación real , y no pseudocódigo, pero fue diseñado para ser lo más cercano posible al pseudocódigo ejecutable. En particular, para diseñar la sintaxis, leyeron y analizaron cientos de CS, artículos de matemáticas, cursos, libros y revistas para encontrar patrones de uso comunes para pseudocódigo y otras notaciones computacionales / matemáticas.
Puede aprovechar toda esa investigación con solo mirar el código fuente de Fortress y abstraer las cosas que no necesita, ya que su público objetivo es humano, mientras que Fortress es un compilador.
Este es un ejemplo real de la ejecución de código de Fortress desde el banco de pruebas paralelo paralelo conjugado NAS (Supercomputación avanzada de la NASA) . Para una experiencia divertida, compare la especificación del punto de referencia con la implementación en Fortress y observe cómo hay casi una correspondencia 1: 1. También compare la implementación en un par de otros idiomas, como C o Fortran, y observe que no tienen absolutamente nada que ver con la especificación (y que a menudo son un orden de magnitud más largo que la especificación).
Debo enfatizar: ¡esto no es un pseudocódigo, es un código de Fortress que funciona realmente! Ejemplo de código de fortaleza http://ProjectFortress.Sun.Com/Projects/Community/raw-attachment/wiki/FortressQuestions/NAS-CG.png
Edición: el enlace del ejemplo del código anterior está muerto. Posiblemente un ejemplo similar se puede encontrar aquí: https://umbilicus.wordpress.com/2009/10/16/fortress-parallel-by-default/
Necesito traducir algunas de las rutinas de python y java en pseudo código para mi tesis de maestría, pero tengo problemas para encontrar una sintaxis / estilo que sea:
- consistente
- fácil de entender
- no demasiado detallado
- no muy cerca del lenguaje natural
- No muy cerca de algún lenguaje de programación concreto.
¿Cómo se escribe el pseudo código? ¿Hay recomendaciones estándar?
No entiendo su requisito de "no muy cerca de algún lenguaje de programación concreto".
Python es generalmente considerado como un buen candidato para escribir pseudocódigo. Quizás una versión ligeramente simplificada de python funcione para ti.
Pascal siempre ha sido tradicionalmente el más parecido al pseudocódigo, cuando se trata de campos matemáticos y técnicos. No sé por qué, siempre fue así.
Tengo algunos (oh, no sé, 10 tal vez libros en un estante, lo que concreta esta teoría).
Python, como se sugiere, puede ser un buen código, pero también puede ser tan ilegible, que es una maravilla por sí misma. Los idiomas más antiguos son más difíciles de hacer ilegibles, ya que son "más simples" (se toman con precaución) que los de hoy. Quizás sean más difíciles de entender lo que sucede, pero más fáciles de leer (se necesitan menos características de sintaxis / idioma para entender lo que hace el programa).
Recomiendo mirar el libro "Introducción a los algoritmos" (de Cormen, Leiserson y Rivest). Siempre he encontrado su descripción de algoritmos de pseudocódigo 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)
Respondiendo a mi propia pregunta, solo quería llamar la atención sobre la siguiente página web sobre tipificación de pseudo código en LaTeX: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=algorithms . Describen varios estilos diferentes, enumerando ventajas e inconvenientes. Incidentalmente, existen dos hojas de estilo para escribir pseudocódigo de la manera utilizada en "Introducción a los algoritmos" de Cormen, como se recomendó anteriormente: newalg y clrscode. Este último fue escrito por el propio Cormen.
Si el código es de procedimiento, el pseudocódigo normal es probablemente fácil (Wikipedia tiene algunos ejemplos).
El pseudocódigo orientado a objetos podría ser más difícil. Considerar:
- usando diagramas de clases UML para representar las clases / herencia
- utilizando diagramas de secuencia UML para representar la secuencia de código