Algoritmo. Tratamos con algoritmos desde nuestra infancia. En algún momento, tu mamá o tu hermano mayor te envían a la tienda, por ejemplo, a comprar leche o pan.
¿Cómo se ve el algoritmo? — Salir de casa, caminar hasta la tienda, encontrar la leche / el pan en la tienda, ir a la caja, pagar el monto requerido, esperar el cambio (si se pagó de más), caminar de regreso a casa, poner la leche en el refrigerador, guardar el pan en la panera.
¿Qué vemos en este algoritmo? — Un conjunto de instrucciones, una condición (si el monto pagado es mayor al requerido, entonces esperar el cambio) y un criterio de éxito.
El plan de acción puede fallar:
-
Puedes quedarte atrapado en el ascensor.
-
Podrías perder el dinero en el camino.
-
La tienda podría estar cerrada por razones técnicas.
-
Podría no haber leche/pan en stock: se agotó, aún no lo han entregado, está caducado.
¿Qué más podemos notar? — El algoritmo contiene instrucciones de alto nivel.
“Salir de casa” no es una acción trivial (simple). Para salir de casa, necesitas ejecutar otro algoritmo:
-
Encontrar las llaves del apartamento.
-
Abrir la puerta.
-
Salir.
-
Cerrar la puerta detrás de ti.
-
Presionar el botón para llamar al ascensor.
-
Si el ascensor no llega, bajar por las escaleras.
-
Si llega el ascensor, presionar el botón del primer piso.
-
Esperar a que el ascensor llegue al primer piso y se abran las puertas.
-
Salir del ascensor.
-
Salir del edificio.
¿Cuáles podrían ser algunos casos extremos (casos borde)?
Por ejemplo, la persona que ejecuta el algoritmo podría vivir en el primer piso, por lo que todo lo relacionado con el ascensor debe omitirse.
O la persona podría vivir en un edificio de cinco pisos sin ascensor, así que nuevamente, todos los pasos relacionados con el ascensor deben omitirse.
El apartamento podría tener un vestíbulo con su propia puerta, lo que significa que el algoritmo tendría dos instrucciones para “abrir la puerta” y “cerrar la puerta”.
La leche podría tener diferentes porcentajes de grasa, el pan podría ser de diferentes marcas, y podría ser una barra de pan, una baguette, etc.
Conclusiones clave de lo anterior:
-
Programar es el proceso de diseñar un algoritmo de acciones.
-
Un algoritmo complejo se basa en acciones complejas, cada una de las cuales puede ser otro algoritmo en sí mismo.
-
Un algoritmo puede interrumpirse si alguna acción falla, lo que significa que es crucial entender qué puede interrumpir la ejecución exitosa de una acción determinada.
-
Un algoritmo se ejecuta dentro de un contexto específico (en nuestro ejemplo, la presencia de un ascensor, el piso en el que vive quien ejecuta, etc.), y este contexto determina qué acciones deben realizarse y cuáles no; cualquier cosa que caiga fuera de un contexto típico se llama casos borde; la capacidad de programar incluye la capacidad de identificar tales casos borde y definir el comportamiento del algoritmo para ellos.
-
La ejecución estándar del algoritmo, donde todo sale bien—el ascensor funciona, la tienda está abierta, la leche/el pan está disponible—se llama camino feliz (happy path).
Para reflexionar
Piensa: ¿qué más no se tuvo en cuenta en el algoritmo original?
Respuesta
El tema del cambio podría ser irrelevante si el pago se realiza con tarjeta. Sin embargo, podría resultar que no hay fondos suficientes en la tarjeta, o no hay conexión a internet, lo que impide la conexión con el banco.
Vocabulario
-
Algoritmo
-
Instrucción / Instrucción de alto nivel / Instrucción de bajo nivel
-
Condición
-
Programación
-
Ejecución estándar (Camino feliz / Happy path)