Para cualquier proceso computacional, el algoritmo correspondiente debe estar rigurosamente definido, es decir, debe especificarse la forma en que se aplica a cada posible circunstancia que pueda surgir. Todos los casos deben estar contemplados, y el criterio que determina cada uno de ellos debe ser claro y computable.

En general, no existe un único algoritmo para cada problema que se quiere resolver.

Diferentes algoritmos pueden completar la misma tarea, requiriendo cada uno diferentes cantidades de tiempo, espacio o esfuerzo. Sin embargo, la especificación puede ser exactamente la misma para todos ellos.

Para especificar un algoritmo de forma tal que su implementación sea correcta –es decir, que haga exactamente lo que se espera de él– y que, a la vez, pueda implementarse con diferentes lenguajes o herramientas, un método consiste en definir sus entradas y salidas, con sus correspondientes precondiciones y poscondiciones.

A modo de ejemplo, veamos la especificación de un algoritmo que busca el máximo
número en una lista:
Algoritmo: BuscarMaximo
• Datos de entrada: una lista l de n elementos numéricos.
• Datos de salida: un número m.
• Precondiciones:
n es un número natural.
n es mayor que cero (o sea, la lista no puede estar vacía).
todos los elementos de l son números racionales.
• Poscondiciones:
m es un número racional.
m es el mayor de los elementos de l.

Esta especificación define de manera inequívoca cómo debe funcionar nuestro algoritmo. Sin embargo, por estar expresado en lenguaje natural –con toda su carga de ambigüedades–, puede prestarse a confusiones (quizá no en este caso, porque es un algoritmo muy simple, pero sí para casos más complejos). Por ese motivo, conviene expresar las especificaciones en un lenguaje más riguroso, como por ejemplo, las expresiones matemáticas usadas en el cálculo de predicados lógicos. Con tales consideraciones, podemos expresar nuestro algoritmo en forma más precisa:

Algoritmo: BuscarMaximo
• Datos de entrada: l1 … ln
• Datos de salida: m
• Precondiciones:
n ? N
n > 0
li ? Q ? 1 ? i ? n
• Poscondiciones:
m ? Q
m ? li ? 1 ? i ? n
No cabe duda de que esta especificación es más rigurosa, aunque seguramente es más
difícil de entender para quien no domina esta clase de expresiones matemáticas.
En el Capítulo 3 se analizan con mayor nivel de detalle las definiciones de precondiciones
y poscondiciones de algoritmos, aplicadas a la especificación de tipos
abstractos de datos (TADs).

 

Web Hosting Glossary,Terms Letter: A ActiveX ActiveX is a model for writing programs.Developed by Microsoft ActiveX technologies are based on COM (Component Object Model). For exampl...
Android 4.2 Jelly Bean que trae de nuevo este excelente software Con la llegada de los nuevos terminales Nexus, el smartphone Nexus 4 y el tablet Nexus 10, Google ha presentado una nueva versión de su sistema operat...
Spotify llega a BlackBerry Los usuarios de BlackBerry llevaban tiempo pidiéndolo. Ellos también querían escuchar toda la música de Spotify en sus teléfonos móviles y no ser meno...
Twitter con mas de 200 millones de usuarios activos.. Crear una cuenta en Twitter es una tarea muy fácil de realizar. Sin embargo, una gran parte de esas cuentas permanecen inactivas. Ni el usuario se ha ...
Windows Phone supera 300 mil aplicaciones Microsoft anunció que Windows Phone superó las 300 mil aplicaciones disponibles a la fecha. En diciembre de 2013, superaron las 200.000 en la Windows ...
Android será libre y gratuito al menos 5 años más, dulce o truco? Si tenía miedo de que Google acabara con el espíritu de Android puede estar tranquilo, al menos los próximos cinco años. Es sistema operativo para...
Los internautas pasan la cuarta parte de su tiempo online en redes sociales y blogs El social media y las plataformas 2.0 siguen ocupando un tiempo muy importante en la vida de los internautas. Una encuesta realizada por Nielsen duran...
RockMelt: el navegador de Facebook El navegador web RockMelt y Facebook han llegado a un acuerdo de colaboración por el que la nueva versión del conocido como navegador social, alcanc...
El Nuevo Logo de Microsoft , plano, estilizado y moderno Junto con la completa remodelación de diseño que llega con Windows 8, Microsoft estrenó un nuevo logo corporativo. Se trata del primer gran cambio d...
La NASA enviará un robot a Marte en 2020 La NASA lanzará un vehículo robótico en el año 2020 que tendrá una nueva misión: saber si Marte es un planeta con las condiciones necesarias para mont...