Articulo de referencia

Pseudocódigo

En informática , el pseudocódigo es una descripción de los pasos de un algoritmo que utiliza una combinación de convenciones de lenguajes de programación (como el operador de as...

En informática , el pseudocódigo es una descripción de los pasos de un algoritmo que utiliza una combinación de convenciones de lenguajes de programación (como el operador de asignación , el operador condicional , el bucle ) con una notación informal, generalmente autoexplicativa, de acciones y condiciones. [ 1 ] [ 2 ] Aunque el pseudocódigo comparte características con los lenguajes de programación convencionales , está pensado para la lectura humana , no para el control por máquina. El pseudocódigo suele omitir detalles esenciales para la implementación del algoritmo por máquina, lo que significa que solo puede verificarse manualmente. [ 3 ] El lenguaje de programación se complementa con descripciones en lenguaje natural , cuando resulta conveniente, o con notación matemática compacta . Las razones para usar pseudocódigo son que es más fácil de entender que el código de un lenguaje de programación convencional y que constituye una descripción eficiente e independiente del entorno de los principios clave de un algoritmo. Se utiliza comúnmente en libros de texto y publicaciones científicas para documentar algoritmos y en la planificación de software y otros algoritmos.

No existe un estándar general para la sintaxis del pseudocódigo , ya que un programa en pseudocódigo no es un programa ejecutable; sin embargo, existen ciertos estándares limitados (como los utilizados para la evaluación académica). El pseudocódigo se asemeja a programas esquemáticos , que pueden compilarse sin errores. Los diagramas de flujo , los diagramas de Drakon y los diagramas del Lenguaje Unificado de Modelado (UML) pueden considerarse una alternativa gráfica al pseudocódigo, pero requieren más espacio en papel. Lenguajes como HAGGIS salvan la distancia entre el pseudocódigo y el código escrito en lenguajes de programación.

Solicitud

El pseudocódigo se utiliza habitualmente en libros de texto y publicaciones científicas relacionadas con la informática y la computación numérica para describir algoritmos de forma accesible a los programadores, independientemente de su familiaridad con lenguajes de programación específicos. Los libros de texto suelen incluir una introducción que explica las convenciones empleadas, y el nivel de detalle del pseudocódigo a veces puede ser similar al de los lenguajes de programación formales.

Los programadores suelen comenzar a implementar un algoritmo desconocido escribiéndolo en pseudocódigo, para luego traducirlo a un lenguaje de programación y adaptarlo al programa en su conjunto. Este enfoque de estructuración descendente a menudo comienza con un esbozo de pseudocódigo que se refina hasta convertirse en código ejecutable. El pseudocódigo también se utiliza en la estandarización; por ejemplo, los estándares MPEG se basan en un pseudocódigo formal similar al de C , y estos estándares no pueden entenderse sin comprender los detalles del código. [ 4 ]

Sintaxis

El pseudocódigo generalmente no sigue las reglas sintácticas de ningún lenguaje en particular; no existe un formato estándar sistemático. Algunos autores toman prestado el estilo y la sintaxis de las estructuras de control de algún lenguaje de programación convencional, aunque esto no es recomendable. [ 5 ] [ 6 ] Algunas fuentes de sintaxis incluyen Fortran , Pascal , BASIC , C , C++ , Java , Lisp y ALGOL . Las declaraciones de variables suelen omitirse. Las llamadas a funciones y los bloques de código, como el código dentro de un bucle, a menudo se reemplazan por una oración de una sola línea en lenguaje natural.

Por lo tanto, dependiendo del autor, el pseudocódigo puede variar mucho en estilo, desde una imitación casi exacta de un lenguaje de programación real en un extremo, hasta una descripción que se aproxima a la prosa formateada en el otro.

Esta flexibilidad conlleva importantes ventajas e inconvenientes: por un lado, ningún lenguaje de programación ejecutable «puede superar la comodidad de inventar nuevas construcciones según sea necesario y dejar que el lector intente deducir su significado a partir de explicaciones informales»; por otro lado, «el código no probado suele ser incorrecto». [ 7 ]

Pseudocódigo de estilo matemático

En computación numérica , el pseudocódigo suele consistir en notación matemática , generalmente de la teoría de matrices y conjuntos , combinada con las estructuras de control de un lenguaje de programación convencional y, a veces, también con descripciones en lenguaje natural . Se trata de una notación compacta y a menudo informal que puede ser comprendida por un amplio abanico de personas con formación matemática, y que se utiliza frecuentemente para describir algoritmos matemáticos . Por ejemplo, el operador suma ( notación sigma mayúscula ) o el operador producto ( notación pi mayúscula ) pueden representar un bucle for y una estructura de selección en una sola expresión:

DevolverkSincógnitak{\displaystyle \sum _{k\in S}x_{k}}

Normalmente, para las ecuaciones matemáticas se utiliza una tipografía que no emplea caracteres ASCII , por ejemplo, mediante lenguajes de marcado como TeX o MathML , o editores de fórmulas propietarios .

El pseudocódigo de estilo matemático a veces se denomina código pidgin , por ejemplo pidgin ALGOL (el origen del concepto), pidgin Fortran , pidgin BASIC , pidgin Pascal , pidgin C y pidgin Lisp .

Símbolos matemáticos comunes

Ejemplo

A continuación se muestra un ejemplo más extenso de pseudocódigo de estilo matemático para el algoritmo de Ford-Fulkerson :

El algoritmo Ford-Fulkerson es la entrada: Grafo G con capacidad de flujo c , nodo fuente s ,Salida del nodo sumidero t : Flujo f tal que f sea máximo de s a t.(Tenga en cuenta que f (u,v) es el flujo del nodo u al nodo v, y c (u,v) es la capacidad de flujo del nodo u al nodo v)para cada arista ( u , v ) en G E hacer f ( u , v ) ← 0 f ( v , u ) ← 0 Mientras exista un camino p de s a t en la red residual G f , sea c f la capacidad de flujo de la red residual G f c f ( p ) ← min{ c f ( u , v ) | ( u , v ) en p } para cada arista ( u , v ) en p hacer f ( u , v )f ( u , v ) + c f ( p ) f ( v , u ) ← − f ( u , v )devolver f

Compilación automática de lenguajes de estilo pseudocódigo

Gramática del lenguaje natural en lenguajes de programación

Diversos intentos de incorporar elementos de la gramática del lenguaje natural a la programación informática han dado lugar a lenguajes como HyperTalk , Lingo , AppleScript , SQL , Inform y, en cierta medida, Python . En estos lenguajes, los paréntesis y otros caracteres especiales se sustituyen por preposiciones, lo que resulta en un código bastante extenso. Estos lenguajes suelen ser de tipado dinámico , lo que significa que se pueden omitir las declaraciones de variables y otro código repetitivo . Dichos lenguajes pueden facilitar la comprensión del código y, quizás, el aprendizaje del lenguaje a una persona sin conocimientos previos. Sin embargo, la similitud con el lenguaje natural suele ser más superficial que real. Las reglas de sintaxis pueden ser tan estrictas y formales como en la programación convencional, y no necesariamente facilitan el desarrollo de los programas.

Lenguajes de programación matemática

Una alternativa al uso de pseudocódigo matemático (que incluye notación de teoría de conjuntos u operaciones matriciales) para documentar algoritmos es utilizar un lenguaje de programación matemática formal que combine notación matemática no ASCII con estructuras de control de programas. De esta forma, el código puede ser analizado e interpretado por una máquina.

Varios lenguajes de especificación formal incluyen notación de teoría de conjuntos que utiliza caracteres especiales. Algunos ejemplos son:

Algunos lenguajes de programación de matrices incluyen expresiones vectorizadas y operaciones matriciales como fórmulas no ASCII, mezcladas con estructuras de control convencionales. Algunos ejemplos son:

Véase también

Referencias

  1. Reisig 2007 , pág. 23, Programas en pseudocódigo y su semántica.
  2. Una definición de pseudocódigo que se repite con frecuencia desde al menos 2003 es "una descripción detallada pero legible de lo que debe hacer un programa o algoritmo informático, expresada en un lenguaje natural con un estilo formal".
  3. Ulate-Caballero, Bryan Alexander; Berrocal-Rojas, Allan; Hidalgo-Céspedes, Jeisson (2021). "Pseudocódigo concurrente y distribuido: una revisión sistemática de la literatura". 2021 XLVII Conferencia Latinoamericana de Computación (CLEI) . pp. 1–10 . doi : 10.1109/CLEI53233.2021.9640222 . ISBN  978-1-6654-9503-5.
  4. Mitchell et al. 1996 , pág. 105.
  5. McConnell, Steve (2004). Code Complete . Pearson Education. pág. 54. ISBN  978-0-7356-1967-8Evitar elementos sintácticos del lenguaje de programación de destino .
  6. Invitación a la informática, 8.ª edición, de Schneider/ Gersting , "Mantenga las sentencias independientes del lenguaje", como se cita en esta pregunta de Stack Exchange.
  7. Lamport, Leslie (2 de enero de 2009). "El lenguaje de algoritmos PlusCal" (PDF) . Microsoft Research . Recuperado el 28 de mayo de 2024 .

Lecturas adicionales

  • Zobel, Justin (2013). «Algoritmos». Escritura para la informática (Segunda  edición). Springer. ISBN 978-1-85233-802-2.
  • Roy, Geoffrey G (2006). "Diseño y explicación de programas con pseudocódigo legible". Journal on Educational Resources in Computing . 6 (1). Association for Computing Machinery (ACM): 1. doi : 10.1145/1217862.1217863 . ISSN 1531-4278 . S2CID 25810599 .  
  • Ulate-Caballero, Bryan Alexander; Berrocal-Rojas, Allan; Hidalgo-Cespedes, Jeisson (25 de octubre de 2021). «Pseudocódigo concurrente y distribuido: una revisión sistemática de la literatura». 2021 XLVII Conferencia Latinoamericana de Computación (CLEI) . IEEE. pp. 1–10 . doi : 10.1109/clei53233.2021.9640222 . ISBN  978-1-6654-9503-5.
  • Reisig, Wolfgang (2007). «Máquinas de estados abstractos para el aula» . Lógicas de los lenguajes de especificación . Monografías en informática teórica. Serie EATCS. ​​Springer Berlin Heidelberg. pp. 15–46 . ISBN  978-3-540-74107-7. Consultado el 05-10-2023 .
  • Mitchell, Joan L.; Pennebaker, William B.; Fogg, Chad E.; LeGall, Didier J. (1996). «Pseudocódigo y diagramas de flujo». Estándar de compresión de vídeo MPEG . Nueva York, NY: Springer US. págs. 105–116 . doi : 10.1007/0-306-46983-9_6 . ISBN  978-0-412-08771-4.
  • Bellamy, Rachel (1994-06-01). "¿Qué hace el pseudocódigo? Un análisis psicológico del uso del pseudocódigo por programadores experimentados". Interacción persona-ordenador . 9 (2). Informa UK Limited: 225– 246. doi : 10.1207/s15327051hci0902_3 . ISSN 0737-0024 . 
  • Un estándar de pseudocódigo
  • Algoritmos recopilados de la ACM
  • Directrices en pseudocódigo , archivo PDF.