Un algoritmo es la descripción de un método sistemático (siempre se repite igual) para resolver un problema concreto. Para que el problema se resuelva, tiene que haber un estado inicial del problema y un estado final del problema ya resuelto.
Entre estos dos estados, hay momentos intermedios entre el problema inicial y el final del problema ya resuelto. Y los objetos que determinan esos estados iniciales, intermedios y finales son las variables, las cuales determinan el entorno del algoritmo.
De esto se deduce que un proceso (ejecución del algoritmo) sólo puede modificar el entorno si cambia el valor de la variables del programa o algoritmo.
Ejemplo (queremos hacer una tortilla francesa):
- Estado inicial: Tenemos un huevo, sal, aceite, una sartén y un fogón.
- Estado intermedio: Rompemos huevo, le echamos la sal y lo batimos.
- Estado intermedio: Encendemos el fuego, ponemos la paella y le echamos aceite.
- Estado intermedio: Cuando el aceite esta caliente, echamos el huevo batido y lo cuajamos.
- Estado intermedio: Cuando está cuajada a nuestro gusto, la ponemos en un plato y apagamos el fuego.
- Estado final: Tenemos la tortilla lista en el plato para comer.
Tabla de contenidos
¿Qué entendemos por especificar un algoritmo?
Especificar un algoritmo es dar la información necesaria y suficiente para definir el problema a resolver de una forma clara, concisa y lo menos ambigua posible.
Por lo que especificar un algoritmo, te dice cuál es el problema que tienes que resolver y el algoritmo, en si, te dice cómo resolver el problema.
Sabiendo esto, tienes que especificar el estado inicial en el que se encuentra el entorno, es decir, de donde partimos. Y después especificar el estado final al cual has llegado para resolver el problema.
Al estado inicial lo llamarás precondición y al estado final, postcondición.
Hay que ver la especificación de un algoritmo como una caja negra:

A la hora de especificar tienes que tener claro qué forma parte del qué tienes que resolver y separar del cómo tienes que resolverlo. Por lo que es útil que sigas una serie de pautas:
- A la hora de especificar la precondición, tienes que describir todo aquello que tenga que ver con las condiciones en las cuales tu algoritmo ha de poder resolver el problema.
- En la postcondición, pondrás todo aquello que quieras conseguir, el resultado que tiene que obtener el programa para resolver el problema. Normalmente, tendrás que relacionar la postcondición con el estado inicial o precondición.
Elementos que intervienen en la especificación
La especificación de algoritmos consta de 4 elementos o partes:
- Declaración de variables
- La precondición
- El nombre del algoritmo
- La postcondición.
Declaración de variables
La declaración de variables define le conjunto de variables que utilizaremos para resolver el problema. También tienes que especificar su tipo.
La precondición
Descripción del estado inicial de las variables.
Le nombre del algoritmo
Nombre que darás a tu algoritmo o función.
La postcondición
Descripción del estado de las variables la terminar el algoritmo.
Comentarios
la especificación además de servirte como un paso previo al diseño del algoritmo, también puede servir, una vez acabado el algoritmo, para recordar qué es lo que hace.
Además de la especificación, se pueden incluir comentarios dentro del código, ya sea para aclarar pasos intermedios o para explicar ciertas construcciones más complicadas.
Los comentarios, en algoritmia, se pondrán entre llaves igual que la precondición y postcondición. Por convención, se añadirá Pre: y Post: al principio de la precondición y postcondición.
Hay que tener en cuenta que estas prácticas tienen mucha importancia en la construcción de algoritmos, ya que dependerá de lo bien comentado que lo hagas para los futuros mantenimientos.
Ejemplos de especificaciones algorítmicas
a, b: enter;
{ Pre: a = A y b = B }
intercambiaVariables
{ Post: a = B y b = A}
Es código de arriba pretende especificar el intercambio de dos variables dadas.
x, nDivisores: enter; { Pre: x = X y X > 0 } nombreDivisores { Post: nDivisores es el cantidad de números entre 1 y X que dividen X }
En este ejemplo, se especifica un algoritmo que calcula el número de divisores de un número dado. Como se ve, no se pretende saber cómo se hará, sinó qué se hará.
n, factorial: enter { Pre: n tiene como valor inicial N y N >= 0 } calculoFactorial { Post: factorial es el factorial de N }
En el ejemplo anterior, se especifica un algoritmo para calcular el factorial de un número dado. Recuerda que el factorial de un número son todos los números naturales (1,2,3…) desde 1 hasta el número dado. Así, por ejemplo el factorial de 10 es 10*9*8*7*6*5*4*3*2*1 = 362880
Deja una respuesta