Las buenas costumbres no hay que perderlas. Es por ello que sigo jugando al fútbol y la pachanga del lunes forma parte de un ritual al que no se puede faltar. Como toda buena pachanga, no vamos con un portero fijo sino que nos vamos rotando cada 7 minutos con un orden que sorteamos al llegar. Aquí se pueden aplican distintos métodos para realizar el sorteo:

  • Cada jugador saca un número del 0 al 5 con una mano, se suman todos, se comienza a contar en sentido horario y al que le toque va primero y el resto de posiciones se deciden en orden horario.
  • Lo mismo pero en orden anti-horario.
  • 25 y la pirula, o lo que es lo mismo, uno cuenta mentalmente hasta que alguien le hace parar en el número que toque, empieza a contar en voz alta en sentido anti-horario hasta 25 y uno más de regalo (la pirula).
  • Lo mismo pero la pirula se silabea (la pi-ru-la) lo que hacen 25 + 4.
  • Lo mismo que lo anterior pero el que cuenta hace trampa y dice el número que le hace ser el último.
  • Cuencos de cristal con bolas calientes.
  • (Regla transversal) El que llega tarde va primero.

Seguramente existan más variantes pero para el objetivo que nos ocupa es suficiente. La cuestión que hoy nos trae es que cualesquiera de estos métodos consumen un tiempo que podríamos emplear en jugar al fútbol. Así que pretendemos que la tecnología nos ayude a crear una aplicación que nos genere al azar el orden en el que los jugadores se turnan como portero antes del partido. Ya que estamos aprendiendo a programar, qué mejor que buscar un problema sencillo y abordable con el que empezar en este mundillo.

Como decía en capítulos anteriores, saber programar es cuestión de saber expresar un problema en unos términos que entienda un computador. Imaginaos que tenéis que aterrizar un avión sin tener ni idea y que tenéis a un piloto dándoos instrucciones por teléfono. En este caso no haréis nada a menos que se os den instrucciones muy precisas y actuaréis como máquinas tontas sin capacidad tomar decisiones autónomas. En ambos casos el lenguaje empleado no es lo esencial sino que simplemente es el medio para comunicar un mensaje que debe conducir a que se realice una determinada acción. En este contexto y para poder expresar nuestro mensaje de forma que un ordenador, un móvil o cualquier dispositivo con capacidad de computación lo entienda, debemos tener en cuenta las siguientes características de los computadores:

  • Son máquinas muy tontas que sólo tienen la capacidad de realizar operaciones aritméticas básicas (sumas, restas, divisiones, multiplicaciones y módulo) y lógicas (que por ahora vamos a ignorar).
  • No se acuerdan de los datos por arte de magia, necesitan apuntarlos en algún sitio: la memoria.
  • Serán máquinas muy tontas, pero puede hacer la misma tarea muchas veces sin quejarse y por tanto hacer una "jartá" de cálculos por segundo.
  • Los computadores no son máquinas creativas. Hacen lo que les decimos y en el orden que les indicamos. Ni más ni menos.
  • Son deterministas, es decir, no se toman la libertad de hacer lo que les da la gana en función de cómo se levantan. Si le damos unos datos para que haga un cálculo siempre va a devolvernos lo mismo. Por eso sospecha de un programador que dice "Esto ayer funcionaba".
  • Ya que son deterministas, el azar no existe. Si queremos que exista, hay que crearlo.

Dicho todo esto, os planteo un reto que puede parecer hasta más simple que el "Hola Mundo" y que está al alcance de todo el mundo: Describir paso a paso qué tiene que hacer una computadora para realizar un sorteo aleatorio que defina el orden en el que 7 u 8 jugadores deben turnarse como porteros. Para ello podéis comentar esta entrada (mira más abajo) proponiendo un orden numerado de acciones que indique a una computadora qué debe hacer paso a paso. Cada acción debe estar definida en lenguaje natural, nada de lenguajes de programación, ni pseudo-código, ni lenguas muertas. Y cuanto más detallado sea el proceso, más cerca estaremos de que una máquina lo entienda y estaremos mejor preparados para construir nuestra pequeña aplicación por fin en un lenguaje de programación. ¿Te atreves?

Nota: a fin de evitar el Spam y los Trolls los comentarios están moderados. La primera vez que realices un comentario, tendré que aceptarlo. A partir de ahí puedes comentar y automáticamente será aceptado siempre que utilices la misma dirección de correo.

 

 

16 septiembre, 2014

Posted In: Aprendiendo a programar, Tecnologería

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *