Pseudocódigo
En informática, pseudocódigo es una descripción en lenguaje sencillo de los pasos en un algoritmo u otro sistema. El pseudocódigo a menudo usa convenciones estructurales de un lenguaje de programación normal, pero está destinado a la lectura humana en lugar de la lectura automática. Por lo general, omite detalles que son esenciales para la comprensión del algoritmo por parte de la máquina, como las declaraciones de variables y el código específico del idioma. El lenguaje de programación se complementa con detalles de descripción en lenguaje natural, cuando sea 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 de 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 esqueléticos, que se pueden compilar sin errores. Los diagramas de flujo, los diagramas de drakon y los diagramas de lenguaje de modelado unificado (UML) se pueden considerar como una alternativa gráfica al pseudocódigo, pero necesitan más espacio en papel. 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 la computación numérica suelen utilizar pseudocódigo en la descripción de los algoritmos, de modo que todos los programadores puedan entenderlos, aunque no todos conozcan los mismos lenguajes de programación. En los libros de texto, generalmente hay una introducción que explica las convenciones particulares en uso. El nivel de detalle del pseudocódigo puede, en algunos casos, acercarse al de los lenguajes de propósito general formalizados.
Un programador que necesita implementar un algoritmo específico, especialmente uno desconocido, a menudo comenzará con una descripción de pseudocódigo y luego "traducir" esa descripción en el lenguaje de programación de destino y modificarla 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.
Sintaxis
Por lo general, el pseudocódigo no obedece las reglas de sintaxis de ningún idioma en particular; no existe 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. Algunas fuentes de sintaxis incluyen Fortran, Pascal, BASIC, C, C++, Java, Lisp y ALGOL. Las declaraciones de variables normalmente 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 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.
Este es un ejemplo de pseudocódigo (para el juego matemático fizz buzz):
Seudocódigo de estilo Fortran: programa Fizzbuzz Do i = 1 a 100 set print_number a verdadero Si i es divisible por 3 impresión "Fizz" set print_number a falso Si i es divisible por 5 impresión "Buzz" set print_number a falso Si print_number, impresión i impresión a newline final do | pseudocódigo de estilo pascal: procedimiento Fizzbuzz; para i := 1 a 100 do print_number := verdadero; si i es divisible por 3 entonces comenzar impresión "Fizz"; print_number := falso; final; si i es divisible por 5 entonces comenzar impresión "Buzz"; print_number := falso; final; si print_number, impresión i; impresión a newline; final | Seudocódigo de estilo C: Fizzbuzz() {} para ()i = 1; i . 100; i++) {} print_number = verdadero; si ()i es divisible por 3) {} impresión "Fizz"; print_number = falso; } si ()i es divisible por 5) {} impresión "Buzz"; print_number = falso; } si ()print_number) impresión i; impresión a newline; }} | Seudocódigo de estilo básico estructurado: Subsidio Fizzbuzz() Para i = 1 a 100 print_number = Cierto. Si i es divisible por 3 Entonces... Imprimir "Fizz" print_number = Falso Final Si Si i es divisible por 5 Entonces... Imprimir "Buzz" print_number = Falso Final Si Si print_number = Cierto. Entonces... impresión i Imprimir a newline Siguiente iFinal Subsidio |
Pseudocódigo de estilo matemático
En la computación numérica, el pseudocódigo suele consistir en notación matemática, normalmente de la teoría de matrices y conjuntos, combinada con las estructuras de control de un lenguaje de programación convencional y quizás también con 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:
Regreso .. k ▪ ▪ S x k {displaystyle sum _{kin S}x_{k}
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 patentados.
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
Tipo de operación | Signatura | Ejemplo |
---|---|---|
Asignación | ← o:= | c ← 2πr , c:= 2πr |
Comparación | =, √≥, √≥, | |
Arithmetic | +, −, ×, /, mod | |
Piso/ceiling | ⌊, ⌋, ⌉, ⌉ | a ← ⌊b⌋ + ⌈c⌉ |
Lógica | y, o | |
Sumas, productos | Alternativa | h ← Σa∈A 1/a |
Ejemplo
Aquí sigue un ejemplo más largo de pseudocódigo de estilo matemático, para el algoritmo de Ford-Fulkerson:
algoritmo Ford-fulkerson es entrada: Gráfico G con capacidad de flujo c, nodo de origen s, hundimiento t Producto: Flujo f tales que f es maximal desde s a t (Nota eso f(u,v) es el flujo de nodo u a nodo v, y c(u,v) es la capacidad de flujo del nodo u al nodo v) para cada uno bordeu, v) dentro GE do f()u, v) ← 0 f()v, u) ← 0 mientras existe un camino p desde s a t dentro la red residual Gf doDeja cf ser la capacidad de flujo de la red residual Gf cf()p← min{cf()u, vSilencio.u, v) dentro p} para cada uno bordeu, v) dentro p do f()u, v) ← f()u, v) + cf()p) f()v, u) ← −f()u, v) retorno f
Compilación automática de lenguajes de estilo pseudocódigo
Gramática del lenguaje natural en lenguajes de programación
Varios intentos de llevar elementos de la gramática del lenguaje natural a la programación informática han producido lenguajes de programación como HyperTalk, Lingo, AppleScript, SQL, Inform y, hasta cierto punto, Python. En estos idiomas, los paréntesis y otros caracteres especiales se reemplazan por preposiciones, lo que da como resultado un código bastante detallado. Estos lenguajes suelen escribirse dinámicamente, lo que significa que se pueden omitir las declaraciones de variables y otro código repetitivo. Dichos lenguajes pueden facilitar que una persona sin conocimientos sobre el lenguaje comprenda el código y quizás también aprenda 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áticos
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 usar un lenguaje de programación matemática formal que es una combinación de notación matemática que no es ASCII y estructuras de control de programa. Luego, 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 usando caracteres especiales. Los ejemplos son:
- Z notación
- Vienna Development Method Specification Language (VDM-SL).
Algunos lenguajes de programación de matrices incluyen expresiones vectorizadas y operaciones matriciales como fórmulas que no son ASCII, combinadas con estructuras de control convencionales. Los ejemplos son:
- Un lenguaje de programación (APL), y sus dialectos APLX y A+.
- MathCAD.
Contenido relacionado
Foobar
Enchufes de Berkeley
Rubí (lenguaje de programación)