Alex se dispone a sacar dinero de un cajero del centro, así que seguirá la misma rutina que lleva haciendo años:
1. Introduce la tarjeta en el cajero
2. El cajero solicita un PIN para poder continuar
3. Alex incorpora su PIN de cuatro cifras
4. El cajero le pregunta si quiere sacar dinero o hacer otra operación.
5. Alex se decanta por sacar dinero.
6. El cajero le propone los 20€ que siempre extrae.
7. A lo que Alex indica que eso precisamente es lo que quiere hacer.
8. El cajero le pregunta a Alex si querrá realizar otra operación después de esa.
9. Alex señala que no.
10. El cajero le devuelve la tarjeta a Alex.
11. Alex recoge la tarjeta.
12. El cajero le proporciona a Alex sus 20€.
13. Alex guarda el billete y la tarjeta en la cartera.
Lo que hace alex es un Algoritmo: Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema
Para ser precisos y diferenciarlo de esas palabras que en otros lugares se utilizan como falsos equivalentes, vamos a ver aquellas características que específicamente tiene un algoritmo:
Debe indicar exactamente el orden en el que se realiza cada paso
Debe obtenerse el mismo resultado cada vez que se sigan sus pasos con los mismos datos
Debe tener un número finito de pasos
Debe tener un único primer paso inicial
Debe tener un único paso final que será donde termina nuestro algoritmo
Ejemplos y tipos de algoritmos
Algoritmo necesario para cuando tienes hambre
Algoritmo necesario para encender una lámpara
Algoritmo necesario para ser millonario
Algoritmo que te hace una división, además, si divides entre 0 te manda un aviso y te dice: "No se puede dividir entre 0"
Variables
Una variable es un elemento de datos con nombre cuyo valor puede cambiar durante el curso de la ejecución de un programa.
En muchas de las modelizaciones superficiales del mundo real que estamos viendo, no hemos necesitado recordar ningún valor específico que fuese cambiando con el tiempo porque teníamos acceso a las propiedades de esos objetos del mundo real.
Sin embargo, en el mundo de la programación, lo habitual es que necesitemos almacenar valores para rescatarlos en cierto momento y modificarlos, lo que también nos provoca la necesidad de identificarlos.
Como todo esto suena muy abstracto, vamos a ilustrarlo con un ejemplo.
Imaginemos un videojuego clásico en el que Mario tiene unos cuantos intentos posibles para salvar a la princesa Peach del malvado Bowser. Aunque en los videojuegos más añejos no se diga explícitamente en ninguna parte, todo el mundo conoce esos intentos con el nombre de vidas y los vemos representados, según la versión del videojuego, con cabecitas de Mario en la parte superior del videojuego o con un número tras la cabeza y un símbolo de multiplicar.
Aquí a la derecha vemos el ejemplo de un algoritmo que utiliza variables.
La variable se llama i y in principio se le asigna el valor de 1.
Después el programa le dice que i valga i+1, osea que se le sume una unidad a i, con lo que valdrá 2
¿Ese proceso se repite hasta 10, porque?
Si véis, existe un bloque condicional que dice ¿i=11?.
¿Que sucede ahí?, pues que si i=11, termina el proceso, y de lo contrario, osea i será todavía menor que 11, vueve a sumarle 1.