Introducción.
Un algoritmo es una serie de pasos ordenados lógicamente que permite resolver un problema.
En otras palabras, un algoritmo es la receta para elaborar o alcanzar algo.
Algoritmos de la vida Cotidiana |
a)Receta de cocina 1₀. Tener listos los ingredientes 2₀. Encender el fuego 3₀. Colocar la sartén sobre el fuego 4₀. Poner aceite en la sartén 5₀. Agregar los huevos y dejarlos freír 2 minutos 6₀. Retirar los huevos 7₀ Apagar el fuego b) Agenda 7:00 Levantarse 7:15 Bañarse 7:30 Desayunar 7:45 Llevar a los niños al colegio 8:30 … c) Manejo de un estéreo 1₀. Ajuste al mínimo la perilla del volumen 2₀. Encienda el aparato con el interruptor de poder 3₀. Oprima la tecla de la función deseada: CD, sintonizador, tocacintas 4₀. Ajuste lentamente el regulador del volumen hasta alcanzar el nivel sonoro deseado 5₀. Ajuste el balance estereofónico 6₀. Ajuste la tonalidad en el ecualizador |
Una receta de cocina es un muy buen ejemplo. La figura 9.1a muestra una receta para freír huevos. Como todas las recetas, primero pide los ingredientes necesarios y después (dentro del apartado “modo de prepararse”) indica que hacer con ellos hasta convertirlos en comida. Observe que importante es que el orden de los pasos sea lógico: si antes de poner el aceite pone los huevos en la sartén, tenga por seguro que obtendrá huevos quemados.
El segundo ejemplo es mostrado en la figura 9.1b donde aparece las actividades de una persona. Cada una de ellas está estrictamente colocada en un horario específico, acorde con las necesidades de esa persona.
Por último se presenta seis pasos de la operación de un equipo de sonido en la figura 9.1c. El orden en estos pasos ha sido marcado por el fabricante para asegurar la mejor calidad en la reproducción del sonido. Si usted los altera quizás no descompongan el aparato, pero puede no obtener lo mejor del mismo.
Podemos encontrar algoritmos hasta en la actividad más sencilla, “dar un paso”, por ejemplo (figura 9.2):
Fig. 9.2 |
1₀. Apoyar el cuerpo sobre el pie izquierdo.
2₀. Levantar el pie derecho.
3₀. Avanzar el pie derecho.
4₀. Bajar el pie derecho.
5₀. Apoyar el cuerpo sobre el pie derecho.
6₀. Levantar el pie izquierdo.
7₀. Avanzar el pie izquierdo.
8₀. Bajar el pie izquierdo.
Aquí podemos apreciar que importante es seguir el orden marcado por el algoritmo, piense que ocurriría si después de realizar el numero 2 se salte al paso 6.
A partir de “dar un paso” podemos definir otra tarea más complicada: caminar.
Procedimiento para CAMINAR
Repetir
Dar un paso
Hasta alcanzar la pared.
Orígenes del termino algoritmo
El famoso matemático árabe Mohammed Ben Musa (780-850), fundador del algebra, tuvo como pseudónimo Al-Jwarizmi. De esta palabra se derivo tiempo después algorismo, cuyo significado es método de cálculo.
Durante el renacimiento se transformo en algoritmo por influencia del termino aritbmos, palabra que en griego significa número.
Los algoritmos han sido usados desde los tiempos de la antigua Babilonia, pero su fama se la deben a la computación moderna.
Diseño de algoritmos
Diseño de algoritmos es preparar una estrategia para solucionar un problema.
Sin embargo, antes de intentar el diseño de un algoritmo se debe tener completamente entendido el problema y comprendida la solución que se desea alcanzar.
Ahora bien, para construir un algoritmo es necesario pensar que pasos son necesarios para alcanzar la solución, partiendo exclusivamente de los elementos disponibles.
Para entender esto mas claro diseñaremos, como ejemplo, un algoritmo para resolver la situación ilustrada por la figura 9.3, donde vemos a un ciudadano que circulaba por la carretera y de repente sufrió una ponchadura. Por fortuna cuenta con una llanta de refacción y con la herramienta necesaria.
Primera parte: efectuar un análisis de la situación
1₀. Problema identificado: el ciudadano no puede proseguir su camino (debido al neumático ponchado) y debe continuar el viaje.
2₀. Solución: cambiar la llanta ponchada por otra en buen estado.
Segunda parte: diseñar una estrategia para obtener la solución
1₀. Consideraciones iníciales:
a) Existe una llanta de refacción en buen estado.
b) Existe la herramienta necesaria (gato, llave de cruz, etcétera).
c) La herramienta y la refacción están en la cajuela.
d) Se tienen las llaves de la cajuela.
e) El carro ya fue estacionado (en la orilla de la carretera).
2₀. Algoritmos para efectuar el cambio de llanta.
Paso 1. Bajar del carro.
Paso 2. Abrir la cajuela.
Paso 3. Sacar llanta de refacción y herramienta.
Paso 4. Colocar gato bajo el carro.
Paso 5. Quitar tapón y aflojar tuercas (birlos) de la llanta dañada.
Paso 6. Levantar carro con el gato.
Paso 7. Quitar birlos y sacar llanta.
Paso 8. Colocar la llanta de refacción y los birlos.
Paso 9. Bajar el carro.
Paso 10. Apretar los birlos y poner tapones.
Paso 11. Guardar herramienta y llanta en la cajuela.
Paso 12. Cerrar cajuela.
Paso 13. Subir al carro y continuar el viaje.
Paso 1. Bajar del carro.
Paso 2. Abrir la cajuela.
Paso 3. Sacar llanta de refacción y herramienta.
Paso 4. Colocar gato bajo el carro.
Paso 5. Quitar tapón y aflojar tuercas (birlos) de la llanta dañada.
Paso 6. Levantar carro con el gato.
Paso 7. Quitar birlos y sacar llanta.
Paso 8. Colocar la llanta de refacción y los birlos.
Paso 9. Bajar el carro.
Paso 10. Apretar los birlos y poner tapones.
Paso 11. Guardar herramienta y llanta en la cajuela.
Paso 12. Cerrar cajuela.
Paso 13. Subir al carro y continuar el viaje.
No cabe duda que al seguir los trece pasos anteriores se puede cambiar la llanta a cualquier carro, en cualquier momento.
Características de los algoritmos
Todos los algoritmos deben poseer las siguientes características:
· Finitud: el algoritmo debe alcanzar la solución correcta en un límite de tiempo.
· Precisión: las instrucciones de un algoritmo deben ser claras, precisas y no prestarse a interpretaciones (es decir, debe evitarse la ambigüedad).
· Entradas y salidas claramente definidas: las entradas se transformaran para obtener las salidas, por ello un algoritmo debe mostrar con claridad cuales serán los resultados (salidas) y cuales los datos iníciales (entradas o parámetros).
· Efectividad: los pasos de un algoritmo deben conducir a la solución del problema original.
Elementos para construir algoritmos.
Todo mecanismos se construye a partir de piezas elementales (como los engranes y resortes de la caja negra). Igual ocurre con los algoritmos, estos tienen sus piezas elementales y cualquier problema se soluciona embonando en forma adecuada las piezas.
Las piezas elementales que se usan para construir algoritmos son las siguientes:
Variables: recipientes especiales para depositar datos.
Control de entradas y salidas: indicaciones para permitir que los datos fluyan hacia el interior o hacia el exterior de la caja negra (que efectuara el proceso).
Operaciones: la operación de asignación consiste en colocar un dato en el interior de una variable, mientras que las operaciones matemáticas son procesos elementales que transforman datos numéricos.
Operaciones: la operación de asignación consiste en colocar un dato en el interior de una variable, mientras que las operaciones matemáticas son procesos elementales que transforman datos numéricos.
Comparaciones y selecciones: las comparaciones relacionan dos datos y sirven para imponer condiciones. Con ellas es posible tomar una decisión al considerar si la condición resulto verdadera o falsa.
Sugerencias para diseñar algoritmos.
Tenemos ya elementos suficientes para empezar a desarrollar algoritmos. No existe un método definido para diseñarlos, es una habilidad que se adquiere con mucha práctica, intuición y un análisis cuidadoso de situaciones. No obstante le proponemos algunas ideas que pueden resultarle útiles para que comience a diseñar sus propios algoritmos.
1. Es primordial tener en mente que diseñar un algoritmo significa encontrar los pasos necesarios para alcanzar la solución a un problema.
2. Se debe tener muy claro cual es el problema a resolver. Redacte una pequeña descripción (enunciado) del problema, de manera sencilla, clara y concisa.1
3. Proponga una solución adecuada al problema. Muchas veces las soluciones son formulas que deberán investigarse o modificarse; en otras ocasiones habrá que inventar algún método.
4. Propóngase algunos ejemplos concretos y manualmente repita el proceso de solución varias veces.
5. Piense con detenimiento en cada uno de los pasos que han efectuado en forma manual.
6. Observe que aspectos son comunes a todos los ejemplos que ha hecho, tanto en los pasos como en las formulas.
7. Trate de efectuar una generalización de cada paso, es decir, ya no incluya valores concretos (como ocurre en algebra).
8. Describa los pasos (ya generalizados) mediante un seudocódigo o diagrama de flujo. Tenga como guía los siguientes puntos:
· Cuando el enunciado del problema mencione que un valor será variable, con frases como: “un numero cualesquiera”, “sea un valor dado”, u otras similares, deberá entenderse que el usuario proporcionara dicho valor y, por tanto, deberá efectuarse una operación de lectura.
· Si el enunciado del problema menciona que se entregara un dato, mediante frases como: “calcular…”, “obtenga el…”, y otras similares, deberá entenderse que el algoritmo efectuara una operación de escritura.
· Siempre que deba utilizar una formula asigne (o pregunte) el valor numérico de las variables.
9. Estudie algoritmos propuestos por libros, para que conozca otras ideas para resolver problemas.
En la siguiente sección mostraremos ejemplos de algoritmos. Cada ejemplo constara de dos fases, una de análisis de problema y otra de diseño de algoritmo.
Dentro de la fase de análisis haremos una descripción (o enunciado) del problema y propondremos una solución al mismo.
En la fase de diseño contemplamos tres partes: la descripción sencilla (“casi platicada”) del funcionamiento del algoritmo, las consideraciones que se deben de tener al diseñar y por ultimo el algoritmo en si, en seudocódigos y con diagrama de flujo.