lunes, 18 de noviembre de 2013

¿Qué es un algoritmo? Extracto del próximo Experto en C++

¿Quieres que te demuestre que aunque a penas comienzas este post, ya estas casi listo para escribir programas para computadoras?

Imagina la siguiente situación: Hace un calor terrible y has estado todo el día fuera de casa.  Llegas, y lo primero que se te ocurre es tomar un jugo muy frío, de la fruta que prefieras. Por ejemplo, jugo de limón. Ahora piensa en cuales son los pasos, uno a uno, que debes dar para preparar el jugo.

¿Listo? Entonces, toma lápiz y papel y escribe cada uno de esos pasos, por separado, en cada línea de la hoja de papel (como si estuvieras escribiendo una receta).
 Anda… ¡Atrévete a hacerlo!, escríbelo. Estarás haciendo un algoritmo! (Haz clic en play para conocer su definición)

Excelente. Ahora pensemos en otra situación. Antes de llegar a casa. Antes de preparar la limonada. Podríamos preguntarnos, ¿cómo hacer para llegar lo antes posible a la esquina de nuestra casa?

Escribe nuevamente, en una hoja distinta esos pasos.

(Ten cerca las hojas donde escribiste los pasos para llegar a casa y como hacer una limonada, luego verás por qué te pedí que hicieras eso. Antes de continuar, es necesario comentar lo siguiente.)

            Dependiendo de la situación, el sitio y circunstancia en la que nos encontremos, hay una serie de pasos que tendríamos que dar, o quizás acciones que tendríamos que realizar.

Esas acciones también dependen del enfoque que le demos. Un físico tal vez considere la distancia que hay entre la persona y la esquina, y calcule la velocidad, la aceleración, etc. Un psicólogo tal vez se enfoque en qué tipo de pensamientos podría llevar a la persona a reaccionar de una o tal manera. Un biólogo podría considerar aspectos celulares. Un químico podría explicarlo con sucesos moleculares dentro de la persona. Una persona cualquiera podría pensar en que, con correr lo más rápido posible está más que bien, y que seguramente es lo más rápido de hacer antes que andar pensando en cómo se llega y qué pasa mientras lo está haciendo.

De cualquier manera e independientemente de cualquier enfoque que se le dé a dicha situación, al final, son los pasos o acciones que realizamos, los que nos permitirán llegar lo antes posible a la esquina de nuestra casa, por más que no lo pensemos conscientemente. 

Veamos como el concepto anterior es cierto. ¿Recuerdas la hoja de papel con la receta para hacer una limonada? Pues tómala y examina la siguiente situación: mientras estas tratando de llegar a casa, telefoneas y pides por favor que tomen tus instrucciones escritas en el papel para que preparen el jugo, exactamente como dice la receta. Recuerda que esa receta describe por pasos un conjunto de instrucciones que permiten realizar dicha actividad.  Estas instrucciones deben ser precisas y deben estar ordenadas para no generar ningún tipo de dudas a quien haga la limonada. (¡Sería terrorífico tomar un jugo de limón en el cual se le haya colocado sal en vez de azúcar por no tener claras las instrucciones para hacerla correctamente!)

Desde la simplicidad de preparar una ensalada o un jugo de limón, a la posibilidad de resolver un problema complejo que nos preocupa, los algoritmos son de inestimable ayuda. Sin embargo, los algoritmos solo muestran su eficiencia estratégica a quienes practican su desarrollo, cuando se nos presentan situaciones no rutinarias o cuando recurrimos a los numerosos algoritmos disponibles para situaciones más complejas. 


Hoy en día, un algoritmo es un conjunto de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución.


Extracto del Experto en C++ de nuestros Cursos de Programación
Siguenos en Google+ de Aprender21 y en Facebook