En informática , el pseudocódigo es una descripción en lenguaje sencillo de los pasos de 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 a la lectura automática. Por lo general, omite detalles que son esenciales para la comprensión de la máquina del algoritmo, como declaraciones de variables y código específico del idioma. El lenguaje de programación se amplía con detalles de descripción del lenguaje natural , cuando sea conveniente, o con notación matemática compacta.. El propósito de usar pseudocódigo es que es más fácil de entender para las personas que el código de lenguaje de programación convencional, y que es 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 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 de esqueleto , que se pueden compilar sin errores. Diagramas de flujo , drakon-gráficos y Unified Modeling Language diagramas (UML) se pueden considerar como una alternativa gráfica para pseudocódigo, pero necesitan más espacio en el papel. Los lenguajes como HAGGIS acortan 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 a menudo usan pseudocódigo en la descripción de 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 adjunta que explica las convenciones particulares en uso. 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 desconocido, a menudo comenzará con una descripción de pseudocódigo y luego "traducirá" esa descripción al lenguaje de programación de destino y la modificará para interactuar correctamente con el resto del programa. Los programadores también pueden iniciar 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 un refinamiento.
Sintaxis
El pseudocódigo generalmente no obedece realmente a las reglas de sintaxis de ningún idioma en particular; no existe un formulario estándar sistemático. Algunos escritores toman prestados el estilo y la sintaxis de las estructuras de control de algún lenguaje de programación convencional, aunque esto no se recomienda. [1] [2] Algunas fuentes de sintaxis incluyen Fortran , Pascal , BASIC , C , C ++ , Java , Lisp y ALGOL . Por lo general, se omiten las declaraciones de variables. 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 en 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.
Este es un ejemplo de pseudocódigo (para el juego matemático fizz buzz ):
Pseudocódigo estilo Fortran: program fizzbuzz Do i = 1 a 100 establecer print_number en verdadero Si i es divisible por 3 imprimir "Fizz" establecer print_number en falso Si i es divisible por 5 imprimir "Buzz" establecer print_number en falso Si print_number , imprimir i imprimir una nueva línea end do | Pseudocódigo de estilo Pascal: procedimiento fizzbuzz Para i : = 1 a 100 , establezca print_number en verdadero ; Si i es divisible por 3 , imprima " Fizz " ; establezca print_number en falso ; Si i es divisible por 5 , imprima " Buzz " ; establezca print_number en falso ; Si es print_number , imprime i ; imprimir una nueva línea ; final | Pseudocódigo de estilo C: void function fizzbuzz { for ( i = 1 ; i <= 100 ; i ++ ) { establecer print_number en verdadero ; Si i es divisible por 3 { imprima "Fizz" ; establezca print_number en falso ; } Si i es divisible por 5 { imprime "Buzz" ; establezca print_number en falso ; } Si es print_number , imprime i ; imprimir una nueva línea ; } } | Pseudocódigo estructurado de estilo básico: Sub fizzbuzz () Para i = 1 a 100 print_number = True Si i es divisible por 3 Entonces imprime "Fizz" print_number = False End If Si i es divisible por 5 Entonces imprime "Buzz" print_number = False End If If print_number = True Entonces imprimir i Imprimir una nueva línea Siguiente i Fin Sub |
Pseudocódigo de estilo matemático
En el cálculo numérico , el pseudocódigo a menudo consiste en notación matemática , típicamente de la teoría de conjuntos y matrices , 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 capital-sigma ) o el operador de producto ( notación capital-pi ) pueden representar un bucle for y una estructura de selección en una expresión:
Regreso
Normalmente, la composición tipográfica no ASCII se utiliza 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 | Símbolo | Ejemplo |
---|---|---|
Asignación | ← o: = | c ← 2πr , c := 2πr |
Comparación | =, ≠, <,>, ≤, ≥ | |
Aritmética | +, -, ×, /, mod | |
Piso / techo | ⌊, ⌋, ⌈, ⌉ | a ← ⌊b⌋ + ⌈c⌉ |
Lógico | y , o | |
Sumas, productos | Σ Π | h ← Σa∈A 1/a |
Ejemplo
A continuación, se muestra un ejemplo más extenso de pseudocódigo de estilo matemático, para el algoritmo Ford-Fulkerson :
algoritmo de Ford-Fulkerson es entrada: Gráfico G con capacidad de flujo c , nodo de origen s , fregadero nodo t salida: Flow f tal que f es máxima desde 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 borde ( u , v ) en G E hacer f ( u , v ) ← 0 f ( v , u ) ← 0 mientras que existe un camino p de s a t en la red residual G f do dejó c f sea la capacidad de flujo de la red residual G f c f ( p ) ← min { c f ( u , v ) | ( u , v ) en p } para cada borde ( u , v ) en p do f ( u , v ) ← f ( u , v ) + c f ( p ) f ( v , u ) ← - f ( u , v ) volver f
Compilación automática 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 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 resulta en un código bastante hablador. Por lo general, estos lenguajes se escriben 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 conocimiento del idioma comprenda el código y quizás también aprenda el idioma. 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 involucra notación de teoría de conjuntos u operaciones matriciales) para la documentación de algoritmos es usar un lenguaje de programación matemático formal que sea una mezcla de notación matemática no 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 formales incluyen la notación de teoría de conjuntos utilizando caracteres especiales. Algunos ejemplos son:
- Notación Z
- Lenguaje de especificación del método de desarrollo de Viena (VDM-SL).
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:
- Un lenguaje de programación (APL) y sus dialectos APLX y A + .
- MathCAD .
Ver también
- Programación de conceptos
- Drakon-gráfico
- Diagrama de flujo
- Programación alfabetizada
- Lenguaje de diseño de programas
- Código corto
- Ingles estructurado
Referencias
- ^ McConnell, Steve (2004). Código completo . pag. 54. ISBN 978-0-7356-1967-8.
Evite elementos sintácticos del lenguaje de programación de destino
- ^ Invitación a la informática, octava edición de Schneider / Gersting , "Mantenga el lenguaje de las declaraciones independiente" como se cita en [1]
Otras lecturas
- Zobel, Justin (2013). "Algoritmos". Escritura para Ciencias de la Computación (Segunda ed.). Saltador. ISBN 978-1-85233-802-2.
enlaces externos
- Un estándar de pseudocódigo
- Algoritmos recopilados del ACM
- Directrices de pseudocódigo , archivo PDF.