stringtranslate.com

Pseudocódigo

En informática , el pseudocódigo es una descripción de los pasos de un algoritmo que utiliza una mezcla de convenciones de lenguajes de programación (como operador de asignación , operador condicional , bucle ) con notación informal, generalmente autoexplicativa, de acciones y condiciones. [1] [2] Aunque el pseudocódigo comparte características con los lenguajes de programación regulares , está destinado a la lectura humana en lugar del control de la máquina. El pseudocódigo generalmente omite detalles que son esenciales para la implementación del algoritmo por máquina, lo que significa que el pseudocódigo solo se puede verificar a mano. [3] El lenguaje de programación se amplía con detalles de descripción en lenguaje natural , cuando es conveniente, o con notación matemática compacta . El propósito de usar pseudocódigo es que sea más fácil de entender para las personas que el código del lenguaje de programación convencional, y que sea una descripción eficiente e independiente del entorno de los principios clave de un algoritmo. Se usa 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 amplio 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 para la evaluación académica). El pseudocódigo se parece a los programas esqueleto , que se pueden compilar sin errores. Los diagramas de flujo , los diagramas drakon y los diagramas de lenguaje de modelado unificado (UML) pueden considerarse una alternativa gráfica al pseudocódigo, pero necesitan más espacio en el papel. Los lenguajes como HAGGIS cierran la brecha entre el pseudocódigo y el código escrito en lenguajes de programación.

Solicitud

Los libros de texto y las publicaciones científicas relacionadas con la informática y el cálculo numérico suelen utilizar pseudocódigo en la descripción de los algoritmos, de modo que todos los programadores puedan entenderlos, incluso si no todos conocen los mismos lenguajes de programación. En los libros de texto, suele haber una introducción que explica las convenciones particulares que se utilizan. El nivel de detalle del pseudocódigo puede, en algunos casos, acercarse al de los lenguajes formalizados de propósito general.

Un programador que necesita implementar un algoritmo específico, especialmente uno que no le resulte familiar, a menudo comenzará con una descripción en pseudocódigo y luego "traducirá" esa descripción al lenguaje de programación de destino y la modificará para que interactúe correctamente con el resto del programa. Los programadores también pueden comenzar un proyecto esbozando el código en pseudocódigo en papel antes de escribirlo en su lenguaje real, como un enfoque de estructuración de arriba hacia abajo , con un proceso de pasos a seguir como refinamiento.

El pseudocódigo también se utiliza en la estandarización. Por ejemplo, los estándares MPEG hacen un uso intensivo de pseudocódigo formal similar al C y no se pueden entender sin comprender los detalles del código. [4]

Sintaxis

El pseudocódigo en general no obedece las reglas de sintaxis de ningún lenguaje en particular; no hay una forma estándar sistemática. Algunos escritores toman prestado el estilo y la sintaxis de las estructuras de control de algún lenguaje de programación convencional, aunque esto no se recomienda. [5] [6] Algunas fuentes de sintaxis incluyen Fortran , Pascal , BASIC , C , C++ , Java , Lisp y ALGOL . Las declaraciones de variables generalmente se omiten. Las llamadas a funciones y los bloques de código, como el código contenido dentro de un bucle, a menudo se reemplazan por una oración de lenguaje natural de una línea.

Dependiendo del escritor, el pseudocódigo puede variar ampliamente 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 trae consigo tanto ventajas como inconvenientes importantes: en el lado positivo, ningún lenguaje de programación ejecutable "puede superar la conveniencia de inventar nuevas construcciones según sea necesario y dejar que el lector intente deducir su significado a partir de explicaciones informales", en el lado negativo, "el código no probado suele ser incorrecto". [7]

Pseudocódigo de estilo matemático

En computación numérica , el pseudocódigo a menudo consiste en notación matemática , típicamente de teoría de matrices y conjuntos , mezclada con las estructuras de control de un lenguaje de programación convencional, y quizás también descripciones en lenguaje natural . Esta es una notación compacta y a menudo informal que puede ser entendida por una amplia gama de personas con formación matemática, y se utiliza con frecuencia como una forma de describir algoritmos matemáticos . Por ejemplo, el operador de suma ( notación sigma mayúscula ) o el operador de producto ( notación pi mayúscula ) pueden representar un bucle for y una estructura de selección en una expresión:

Devolver

Normalmente se utiliza composición tipográfica no ASCII para las ecuaciones matemáticas, 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

El siguiente es un ejemplo más extenso de pseudocódigo de estilo matemático para el algoritmo Ford-Fulkerson :

El algoritmo Ford-Fulkerson se  ingresa como: Gráfico G con capacidad de flujo c , nodo fuente s , Nodo sumidero t  salida: Flujo f tal que f es máximo desde s hasta 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  do  f ( u , v ) ←0 f ( v , u ) ←0 mientras exista un camino p desde s hasta t  en la red residual G f  do 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  do  f ( u , v )f ( u , v ) + c f ( p ) f ( v , u ) ← − f ( u , v ) devolver  f

Compilación por máquina de lenguajes de estilo pseudocódigo

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

Varios intentos de incorporar elementos de la gramática del lenguaje natural a la programación informática han dado lugar a lenguajes de programación 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 da lugar a un código bastante verboso. Estos lenguajes suelen tener tipos dinámicos , lo que significa que se pueden omitir las declaraciones de variables y otro código repetitivo . Estos lenguajes pueden facilitar la comprensión del código y, tal vez, también el aprendizaje del lenguaje a una persona sin conocimientos sobre el lenguaje. Sin embargo, la similitud con el lenguaje natural suele ser más cosmética que genuina. 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 implica notación de teoría de conjuntos u operaciones matriciales) para la documentación de algoritmos es utilizar un lenguaje de programación matemática formal que sea una combinación de notación matemática no ASCII y estructuras de control de programas. Luego, una máquina puede analizar e interpretar el código.

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

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

Véase también

Referencias

  1. ^ Reisig 2007, p. 23, Programas de pseudocódigo y su semántica.
  2. ^ Una definición de pseudocódigo que se repite a menudo 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 de 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 Congreso Latinoamericano de Computación (CLEI) . pp. doi :10.1109/CLEI53233.2021.9640222. ISBN 978-1-6654-9503-5.
  4. ^ Mitchell y otros. 1996, pág. 105.
  5. ^ McConnell, Steve (2004). Código completo . Pearson Education. pág. 54. ISBN 978-0-7356-1967-8. Evite elementos sintácticos del lenguaje de programación de destino.
  6. ^ Invitación a la informática, octava edición, de Schneider/ Gersting , "Mantener las declaraciones independientes del lenguaje", como se cita en esta pregunta de StackExchange
  7. ^ Lamport, Leslie (2 de enero de 2009). "El lenguaje del algoritmo PlusCal" (PDF) . Microsoft Research . Consultado el 28 de mayo de 2024 .

Lectura adicional

Enlaces externos