Pseudocódigo
En ciencias de la computación, y análisis numérico, el
pseudocódigo (o falso lenguaje) es una descripción de alto nivel compacta e
informal1 del principio operativo de un programa informático u otro algoritmo.
Utiliza las convenciones estructurales de un lenguaje de
programación real,2 pero está diseñado para la lectura humana en lugar de la
lectura mediante máquina, y con independencia de cualquier otro lenguaje de
programación. Normalmente, el pseudocódigo omite detalles que no son esenciales
para la comprensión humana del algoritmo, tales como declaraciones de
variables, código específico del sistema y algunas subrutinas. El lenguaje de
programación se complementa, donde sea conveniente, con descripciones
detalladas en lenguaje natural, o con notación matemática compacta. Se utiliza
pseudocódigo pues este es más fácil de entender para las personas que el código
del lenguaje de programación convencional, ya que es una descripción eficiente
y con un entorno independiente de los principios fundamentales de un algoritmo.
Se utiliza comúnmente en los libros de texto y publicaciones científicas que se
documentan varios algoritmos, y también en la planificación del desarrollo de
programas informáticos, para esbozar la estructura del programa antes de
realizar la efectiva codificación.
No existe una sintaxis estándar para el pseudocódigo,
aunque los ocho IDE's que manejan pseudocódigo tengan su sintaxis propia.
Aunque sea parecido, el pseudocódigo no debe confundirse con los programas
esqueleto que incluyen código ficticio, que pueden ser compilados sin errores.
Los diagramas de flujo y UML pueden ser considerados como una alternativa
gráfica al pseudocódigo, aunque sean más ampios en papel.
Aplicaciones
Generalmente se utiliza pseudocódigo en los libros de
texto y publicaciones científicas relacionadas con la informática y la
computación numérica, para la descripción de algoritmos, de manera que todos
los programadores puedan entenderlo, aunque no todos conozcan el mismo lenguaje
de programación. Generalmente, en los libros de texto se adjunta una
explicación que acompaña a la introducción y que explica las convenciones
particulares en uso. El nivel de detalle del pseudocódigo puede, en algunos
casos, acercarse a la de formalizar los idiomas de propósito general.
Un programador que tiene que aplicar un algoritmo
específico, sobre todo uno desfamiliarizado, generalmente comienza con una
descripción en pseudocódigo, y luego "traduce" esa descripción en el
lenguaje de programación meta y lo modifica para que interactúe correctamente
con el resto del programa. Los programadores también pueden iniciar un proyecto
describiendo la forma del código en pseudocódigo en el papel antes de
escribirlo en su lenguaje de programación, como ocurre en la estructuración de
un enfoque de Top-down y Bottom-up arriba hacia abajo.
Sintaxis
En la actualidad y por lo general, el pseudocódigo, como
su nombre lo indica, no obedece a las reglas de sintaxis de ningún idioma en
particular ni es de forma estándar sistemática, a pesar de que cualquier
escritor en particular vaya a pedir prestado las estructuras de control
general, la sintaxis y el estilo, por ejemplo, de algún lenguaje de
programación convencional. Pero en caso de que se quiera ejecutar, se debe
llevar a forma tipo, para que no genere mensajes de error. Las fuentes
populares incluyen la sintaxis de Pascal, BASIC, C, C++, Java, Lisp, y ALGOL.
Por lo general, se omiten las declaraciones de variables. A veces, las llamadas
a funciones, los bloques de código y el código contenido dentro de un loop se
remplazan por una sentencia de una línea en lenguaje natural.
Dependiendo del escritor, el pseudocódigo puede variar
mucho en su estilo, yendo desde en un extremo, una imitación casi exacta de un
lenguaje de programación real, hasta al acercarse a una descripción en prosa de
formato de pseudocódigo en el otro extremo.
Características
y partes
Las principales características de este lenguaje son:
Se puede
ejecutar en un ordenador (con un IDE como por ejemplo SLE, LPP, PilatoX, Maruga
Script, Seudocódigo o PSeInt. Otros Ides de consideración son Inter-P y Algor)
Es una forma de
representación sencilla de utilizar y de manipular.
Facilita el
paso del programa al lenguaje de programación.
Es
independiente del lenguaje de programación que se vaya a utilizar.
Es un método
que facilita la programación y solución al algoritmo del programa.
Todo documento en pseudocódigo debe
permitir la descripción de:
Instrucciones
primitivas.
Instrucciones
de proceso....
Instrucciones
de control.
Instrucciones
compuestas.
Instrucciones
de descripción.
Estructura a seguir en su realización:
Cabecera.
Programa.
Módulo.
Tipos de
datos.
Constantes.
Variables.
Cuerpo.
Inicio.
Instrucciones.
Fin.
Definición de datos del pseudocódigo
La definición de datos se da por supuesta, sobre todo en
las variables sencillas, si se emplea formaciones: pilas, colas, vectores o
registros, se pueden definir en la cabecera del algoritmo, y naturalmente
cuando empleemos el pseudocódigo para definir estructuras de datos, esta parte
la desarrollaremos adecuadamente.
Funciones y operaciones
Cada autor usa su propio pseudocódigo con sus respectivas
convenciones. Por ejemplo, la instrucción "reemplace el valor de la
variable x por el valor de la variable y" puede ser representado como:
asigne a x, el valor de y,
Las operaciones aritméticas se representan de la forma
usual en matemáticas.
Estructuras
de control
En la redacción del pseudocódigo se utiliza tres tipos de
estructuras de control: las secuenciales, las selectivas y las iterativas.
Estructuras secuenciales
Las
instrucciones se siguen en una secuencia fija que normalmente viene dada por el
número de renglón. Es decir que las instrucciones se ejecutan de arriba hacia
abajo
Estructuras selectivas
Las instrucciones selectivas representan instrucciones
que pueden o no ejecutarse, según el cumplimiento de una condición.
La condición es
una expresión booleana. Instrucciones es ejecutada sólo si la condición es
verdadera.
Selectiva doble (alternativa)
La instrucción alternativa realiza una instrucción de dos
posibles, según el cumplimiento de una condición.
La condición
es una variable booleana o una función reducible a booleana (lógica,
Verdadero/Falso). Si esta condición es cierta se ejecuta Instrucciones1, si no
es así, entonces se ejecuta Instrucciones2.
Selectiva
múltiple
También es común el uso de una
selección múltiple que equivaldría a anidar varias funciones de selección.
En
este caso hay una serie de condiciones que tienen que ser mutuamente
excluyentes, si una de ellas se cumple las demás tienen que ser falsas
necesariamente, hay un caso si no que será cierto cuando las demás condiciones
sean falsas.
En
esta estructura si Condición1 es cierta, entonces se ejecuta sólo
Instrucciones1. En general, si Condición es verdadera, entonces sólo se ejecuta Instrucción
si
Selectiva
múltiple-Casos
Una construcción similar a la
anterior (equivalente en algunos casos) es la que se muestra a continuación.
En este caso hay un Indicador es una variable o una
función cuyo valor es comparado en cada caso con los valores "Valori",
si en algún caso coinciden ambos valores, entonces se ejecutarán las
Instruccionesi correspondientes. La sección en otro caso es análoga a la
sección si no del ejemplo anterior.
Estructuras
iterativas
Las instrucciones iterativas representan la ejecución de
instrucciones en más de una vez.
Bucle mientras Bucle while
El bucle se repite mientras la condición sea cierta, si al
llegar por primera vez al bucle mientras la condición es falsa, el cuerpo del
bucle no se ejecuta ninguna vez.
Bucle repetir
Existen otras variantes que se derivan a partir de la
anterior. La estructura de control repetir se utiliza cuando es necesario que
el cuerpo del bucle se ejecuten al menos una vez y hasta que se cumpla la
condición:
La estructura anterior
equivaldría a escribir
Bucle hacer
El Bucle hacer se utiliza para repetir un bloque de código
mientras se cumpla cierta condición.
Bucle para Bucle for
Una estructura de control muy común es el ciclo para, la cual
se usa cuando se desea iterar un número conocido de veces, empleando como
índice una variable que se incrementa (o decrementa): Plantilla: Definiciones
la cual se define como:
Bucle para cada
Por último, también es común usar la
estructura de control para cada. Esta sentencia se usa cuando se tiene una
lista o un conjunto L y se quiere iterar por cada uno de sus elementos:
Si asumimos que los elementos
de L son L_0,L_1,dots,L_n, entonces esta sentencia equivaldría a:
Que es lo mismo que:
Sin embargo,
en la práctica existen mejores formas de implementar esta instrucción
dependiendo del problema.
Es
importante recalcar que el pseudocódigo no es un lenguaje estandarizado. Eso
significa que diferentes autores podrían dar otras estructuras de control o
bien usar estas mismas estructuras, pero con una notación diferente. Sin
embargo, las funciones matemáticas y lógicas toman el significado usual que
tienen en matemática y lógica, con las mismas expresiones.
El anidamiento
Cualquier
instrucción puede ser sustituida por una estructura de control. El siguiente
ejemplo muestra el pseudocódigo del ordenamiento de burbuja, que tiene varias
estructuras anidadas. Este algoritmo ordena de menor a mayor los elementos de
una lista L.
En general, las estructuras anidadas se muestran
indentadas, para hacer más sencilla su identificación a simple vista. En el
ejemplo, además de la indentación, se ha conectado con flechas los pares de
delimitadores de cada nivel de a