Hola, soy John ???, vamos a ver el problema n°3
de la sección de nivel intermedio, de la unidad sobre teoría de la información.
Este ejercicio nos pide que modifiquemos la información del modelo de "arrojar una moneda"
y que lo cambiemos por la información del modelo de "arrojar un dado".
Así que en vez de arrojar una moneda vamos a arrojar un dado.
Veamos cómo haríamos eso.
Aquí está nuestro modelo, lo voy a hacer un poco más grande así podemos ver bien.
Lo primero que vamos a hacer es guardarlo como archivo.
Muy bien, lo primero que voy a hacer, en vez de arrojar una moneda... Voy a dejar todos estos elementos de código de la interface en su lugar,
porque los vamos a usar como analogías para hacer nuestro propio código.
Entonces, antes de arrojar una moneda, vamos a necesitar un nuevo botón. Dirá: "arrojar" y lo llamaremos "arrojar un dado".
Tendremos un comando que será "arrojar".
Así que en vez de arrojar una 'moneda justa', donde el proceso dice "arrojar una moneda justa" nuestro proceso dirá "arrojar".
Y esta caja de aquí es una caja importante, la editaremos, y en vez de decir "resultado de la moneda" dirá "resultado del arrojar".
Miremos la interface de nuevo... varias cosas se rompieron cuando cambié eso, así que veremos si lo podemos arreglar.
Pero sabemos que vamos a tener una caja que colecta los resultados de los lanzamientos.
Vamos un paso hacia atrás y veamos como funciona el programa original,
porque cuando arrojábamos una moneda, si era cara o cruz se mostraba aquí.
Y esencialmente calculaba la cantidad de información, usando la ecuación de información de Shannon.
El contenido de información se mostraba en esta caja aquí abajo.
Y finalmente todo el trabajo interesante, o más bien, todo el trabajo más duro era hecho por
estos procedimientos aquí abajo, que calculaban la información de Shannon a partir de la tabla de probabilidad,
y esta tabla era generada aquí, a partir de la tabla de frecuencia, y esta estaba construida aquí abajo,
La cual dependía de una serie de palabras que era creada por este procedimiento.
Afortunadamente, no tenemos que meternos con ninguno de estos procedimientos,
porque todo lo que tenemos que hacer es cambiar un conjunto diferente de palabras,
que van a representar los valores del dado arrojado, y pondremos estos valores en la caja de resultados.
Y usaremos los mismos procedimientos para calcularlos. Así que nuestra tarea es crear una animación,
una imagen de un dado, y hacer que esa imagen comunique, en vez de "cara" o "cruz", "1", "2", "3", "4", "5" o "6".
Es realmente un proceso relativamente fácil, porque el programa ya hará los cálculos por nosotros,
lo que implica que se generará texto en esta ventana.
Miremos de vuelta aquí para ver como "arrojar una moneda justa" funciona.
Es un procedimiento simple, que fija el resultado, que es la variable global de "cara" o "cruz".
Así que vamos a hacer nuestro propio procedimiento que es análogo a este: "to roll (arrojar)"
y esto va a fijar el resultado, en vez de "cara" o "cruz", vamos a usar "1", "2", "3"...etc
Esta serie va a referir a la forma, que vamos a crear ahora.
Cuando veamos una xxx como esta, y sospecho que la usaremos varias veces,
la voy a copiar y ponerla en el procedimiento central, de hecho voy a hacerla variable de oro, llamémosla "la lista".
Esto nos permitirá usarla una y otra vez. Así que ahora, en vez de venir aquí abajo
y decir todo esto, sólo tendré que referirme a "la lista". Es un atajo porque se que voy a usarla de nuevo,
por eso es bueno tenerla en un solo lugar.
Entonces, fijamos los resultados, y ahora añadimos otro procedimiento
que nos muestre lo que el dado hace, y que va a animar el movimiento del dado.
Vamos a necesitar una serie de formas. Voy a ir al editor de formas, y les muestro el primero de la lista.
Después voy a dejar que ustedes lo ejecuten por su cuenta para generar el resto.
Rápidamente, lo que hacemos es ir al editor de formas, aquí hay algo como un dado.
Solo voy a cambiar el color a blanco, dibujar un pequeño círculo, duplicar ese círculo (varias veces).
Si fuera una persona obsesiva haría líneas para ver si están alineados.
Tenemos que asegurarnos de que los rotulamos correctamente. A esta la rotularé "uno".
Una vez que tengamos un rótulo podremos duplicarlo: el próximo "dos" ... (etc)
¿por qué no me ponen en pausa ahora, y terminan de hacer los 6 lados del dado? rotúlenlos correctamente,
y cuando terminan, siguen con el video.
Ok, ya están de vuelta, y yo estoy haciendo el último, el 6. Ya tenemos todos.
Ahora estamos listos para volver al modelo. Miremos nuestro procedimiento central: en el modelo original
fijaron la forma a "cara". Tenemos esta lista, y en vez de fijarlo en "cara" vamos a hacerlo a "uno de la lista".
Veamos que pasa ahora, volvamos a nuestra interface, lo ponemos en marcha... nada.
Me pregunto si tenemos algún problema con nuestra capitalización...
Tal vez sea un problema de solucionar los xxx que estamos usando para este código,
antes de poder ponerlo en marcha, probablemente sea el caso.
Cambiemos nuestro "resultado de moneda" a "resultado de arrojamiento".
Podemos usar"buscar y reemplazar". Veamos si esto funciona.
Entonces, obtenemos estas tiradas de dados al azar. Lo que ahora no tenemos es, en el guión original,
establecimos un resultado y mostrábamos lo que salía. Ahora no hacemos eso.
"Muestra el arrojamiento" hacía más que mostrar el arrojamiento de la moneda: seguía los resultados de cada lanzamiento de la moneda
(cantidades de cara o seca) y los mostraba en esa ventana, "resultados del arrojamiento", en una serie como esta.
Voy a copiar esto, esta es una línea importante.
Tenemos que asegurarnos que cualquier otra cosa que "mostrar el arrojamiento" haga que fije el resultado a esto.
Veamos que pasa.
Parece que fija el resultado. Podríamos usar un espacio ahí, voy a ir a "fijar resultados del arrojamiento".
Estamos usando este operador de palabra, que es un operador de concatenación,
básicamente hace una serie de lo que sea que esté en "resultados de arrojamiento" y lo muestra en este "resultado".
Lo que voy a hacer es usar otra versión de este comando, la versión "paréntesis".
Voy a insertar un espacio ahí, veamos si soluciona ese problema.
Cuando arrojamos el dado obtenemos valores insertados ahí.
Veamos entonces, todavía no tenemos ningún tipo de animación, construyamos una para que se vea lindo.
Con la moneda teníamos una que giraba la moneda de un lado a otro, podemos hacer algo así.
(a continuación dice lo que escribe en código)
Así que le pedimos que cambie la forma, y luego que espere por medio segundo. Luego que fije la forma en "uno".
Esto nos dará una animación más linda, va a girar la forma al azar cuatro veces, esperar un poco,
y finalmente fijar la forma en "uno".
Una vez que tengamos uno correcto podemos copiar y pegar.
Ya establecimos la animación, veamos si funciona. Aquí dice "nada llamado RESULTADOS fue definido".
Veamos ahora.
Parece que funciona. Lo que está haciendo es generar una lista,
y calcular la información en esa lista. Eso parece correcto...
Empecemos de vuelta, lo arrojamos una vez, y obtenemos un contenido de información igual a cero
porque se arroja solo una vez. Si lo arrojamos dos veces, deberíamos también obtener un contenido de información
igual a cero, es lo mismo.
Bueno, parece que está funcionando, ahí tienen.