3er paso: generalizar un algoritmo (parte I)

Si al promediar este 2do Tutorial llegaste al punto de instruir a Pier para que dibuje innúmeros polígonos regulares, yo ya estoy contento. De hecho al final del paso anterior fuí explícito en la sugerencia de "jugar" con todo lo aprendido, de desarmar y rearmar lo que habíamos construído hasta ese momento juntos…
Lo que nos queda por delante implica un "salto cualitativo" importante, especialmente desde el punto de vista de la programación.
Las matemáticas no solo seguirán apareciendo desde lo geométrico —después de todo de ello trata nuestro proyecto—, sino también a través de fórmulas o de funciones que deberemos deducir y analizar para usarlas a nuestro favor.

Para poder construir un algoritmo que reemplace con eficacia a la miríada de algoritmos individuales que nos es posible generar (tal como que vimos en nuestro 2do paso), deberemos munirnos de nuevas herramientas todavía no utilizadas en ninguno de nuestros proyectos: necesitaremos del uso de variables, y de las capacidades de cálculo incluidas en Scratch.

IMPORTANTE

Si llegaste hasta aquí leyendo y trabajando lo previo —y de no ser así es muy posible que te sea imprescindible hacerlo— sabrás que conseguimos una estructura algorítmica muy simple y eficaz para dibujar (dibujar no nosotros, sí Pier) cualquier polígono regular.
Pero para conseguir cada uno de los polígonos resulta necesario determinar al menos 5 valores numéricos… dicho más contundentemente: nos fué necesario escribir un algoritmo particular por cada polígono.

Secuencia de pasos

Nuestra secuencia de trabajo a seguir en este 3er paso será (suscintamente):
  • Leer con detenimiento y paciencia algunas cuestiones levemente teóricas vinculadas al concepto de variables, tanto en su aplicación en el ámbito de las matemáticas como el de su uso dentro de los algoritmos y programas.
  • Trabajar sobre un mini-proyecto "paralelo" que nos permitirá aprender sobre la creación y utilización de las variables en Scratch.
  • Reabrir el proyecto del cuadrado y guardarlo con un nuevo nombre (polígonos-1 podría ser). Crear una nueva variable n en el mismo.
  • Con la ayuda de los bloques de la sección Operadores construir uno en donde se manifieste el vínculo entre n y el ángulo de giro que necesitará Pier para ese polígono de n lados. Luego insertar el mismo en reemplazo del número 90 en la instrucción de giro, y reemplazar el 4 del bucle por la referencia a nuestra variable n.
  • Realizar una operación similar que afecte ahora a la instrucción del cambio de colores (para que así dependa también de n).
  • Leer con atención el análisis que nos llevará a establecer un vínculo entre el tamaño de los lados y la cantidad de lados de los polígonos regulares, de manera que el tamaño de los mismos quede acotado a los límites del escenario. Posteriormente efectuar los cambios pertinentes sobre el bloque de movimiento, que también quedará en función de n.
  • Trabajar sobre una meta agregada —vinculada a dar un tiempo de dibujo fijo para Pier—. Estudiar del porqué la discrepancia entre el modelo teórico (el del algoritmo) y lo que se manifiesta en la práctica (al ejecutar el programa).
  • Proponer 2 modelos para el centrado de los polígonos. Analizar pros y contras.
  • Para cerrar, utilizando el modo de visualización desplazamiento del monitor de la variable n, ofrecer un control efectivo del programa al futuro usuario del mismo. Como producto de toda esta secuencia de trabajo quedarán 2 proyectos, basados en cada una de las propuestas de centrado mencionadas en el ítem anterior.
Usar bloques del grupo Operadores implicará que de aquí en más los cálculos los hará el programa, no nosotros…
Me parece que a Pier esto de que "va a tener que estar haciendo cuentas" no le gustó ni medio, ¿cambiar las mieles de la fama por un cuasi kafkiano trabajo de escritorio? Dejémoslo que absorba este mal trago mientras refunfuña por los rincones… mientras tanto nosotros aprovecharemos para hablar de algunas cosas antes de tener que llamarlo de nuevo a la acción.

Liberación o dependencia (desde un punto de vista matemático)

Vamos a empezar hablando muy por arriba de algo vinculado a las matemáticas, y que nos será útil como aproximación al nuevo problema que nos toca enfrentar: tiene que ver con las variables independientes y variables dependientes.
Primera aclaración: el uso de la palabra variable en el contexto que es usado aquí no tendrá una total correlación con el que toma dicha palabra en el contexto de la programación: dicho más llanamente… tienen cosas que ver pero no son lo mismo.
No intentaré hacer un tratado sobre matemáticas —a duras penas puedo hablar algo sobre Scratch— y también quiero ir lo más rápidamente al punto que vamos a necesitar entender. Para ello… nada mejor que usar un ejemplo sobre algo conocido.
Como nuestro tutorial versa sobre cuestiones de geometría, vamos a buscar un ejemplo dentro de ese campo: traeremos entonces a la palestra a un viejo conocido… el nunca bien ponderado cuadrado.

Talking about…

¿Quién no conoce cosas sobre el cuadrado? ¡si hasta su vida privada es la comidilla en las tertulias a lo largo y ancho del planeta!
¿Qué sabemos de él? Es un polígono regular, y como tal tiene sus 4 lados y los 4 ángulos interiores iguales. Dicho más académicamente, sus 4 ángulos son congruentes —todos de magnitud 90º— y las longitudes de sus lados son iguales.
¿Qué "no sabemos a priori" de un cuadrado? ¿Sabemos sus dimensiones? ¿Las dimensiones de los cuadrados pueden ser variables?… o sea ¿los cuadrados pueden ser de distintos tamaños? ("…ya extrañaba al loco por las preguntas").
Por otro lado, hay que tener en cuenta que la idea de dimensiones es un poco amplia: podríamos referirnos a la longitud de sus lados, a su perímetro, o al área de su superficie.

Creo que es importante la conclusión: hay cosas que son constantes e inherentes a un cuadrado, otras no… otras pueden ser variables sin que deje de ser un cuadrado.

Ahora analicemos lo siguiente: yo podría deambular dentro de un cuadrado de 4 km de lado, yo podría toparme con un cuadrado de 8 m de perímetro, yo podría manipular un cuadrado con un área de 9 cm2 de superficie.
[PREGUNTA CAPCIOSA Y ABSURDA] ¿Pero podría ser que un mismo cuadrado cumpliese con estas 3 últimas condiciones al mismo tiempo?
Realmente, dá para una pausa tipo fin de capítulo de teleteatro de la tarde
(One year later) Fue casi trivial entender que ciertos atributos de un cuadrado pueden ser variables, pero lo es un poco menos darse cuenta que si yo defino que (o la realidad indica que) la magnitud de una de estas 3 variables del cuadrado tenga un valor determinado[1] , implícitamente se está definiendo el valor de las 2 variables restantes[2]    ("what!   ¡Hablame en español, plis!").
Apelemos a la ayuda de casos concretos para entender este trabalenguas:
  • Si yo conozco que un terreno de forma cuadrada tiene 4 km de lado, su perímetro será de 4 x 4 km= 16 km, y su superficie de 4 km x 4 km = 16 km2
  • Si yo compro una tela cuadrada de 8 m de perímetro, cada lado medirá 8 m / 4 = 2 m, y su superficie será de 2 m x 2 m = 4 m2
  • Si yo necesito que la superficie de una célula fotovoltaica cuadrada para un experimento de ciencias sea de 9 cm2, cada lado de la misma medirá 3 cm, y su perímetro será de 12 cm.
De los ejemplos citados se induce que puede darse que la variable independiente sea una u otra —según la situación, según sea el problema—, pero siempre se cumplirá que, una vez que ella esté determinada, "automáticamente" estará dándosele valor a las otras 2 (esto es, sus valores dependerán de la primera, por eso son dependientes).
Dije "automáticamente" (palabra tan inadecuada como contundente). Mejor deberíamos decir que existen vínculos entre las variables, vínculos que podemos afortunadamente expresar a través de funciones o, haciendo uso del álgebra, a través de fórmulas.
fórmulas cuadrado
Para un cuadrado con un tamaño de lado l , las fórmulas que relacionan a nuestras variables son las que ves en la última imagen: podemos concluir que sus magnitudes son totalmente interdependientes entre sí… dándole un valor a una de ellas le estamos determinando el valor a las otras 2.
Espero que esta libre explicación te ayude a entender el punto sobre el cual estamos tratando… existe mucho material en la web sobre el tema, pero yo preferí "machacar" con este ejemplo al momento de presentar el concepto de variables independientes y dependientes. Ya tenemos en la mano la herramienta fundamental que vamos a necesitar para analizar y luego resolver el problema que estamos enfrentando en este 3er paso del tutorial… ¿cómo que no sabés de qué problema hablo? ¡ya te perdiste!

Ligando las cosas

Posiblemente ya estés intuyendo como podemos aprovechar este nuevo conocimiento a nuestro favor, ahora aplicándolo en un nuevo terreno: intentaremos ver de que forma interrelacionar los 5 valores de nuestro algoritmo de tal manera que 4 de ellos sean dependientes del valor restante (este último es el que tomaría el papel de variable independiente).
algoritmo base
¿Cual elegir?  Yo voy a seguir un criterio basándome en la respuesta a esta pregunta:
¿podemos identificar en un polígono regular algún valor más representativo que otro?
Si prestás atención al nombre de los polígonos tendrás la respuesta ante tus ojos: salvo en el caso del cuadrado, en el resto se forma por la composición de un prefijo y de un sufijo ("oh no, ahora no sólo es matemática, sino también nos metemos con lengua… ¡y yo que solo quería escapar de la escuela!").
¡Quiet@ ahí! Los prefijos son los tri, penta, hexa, octo, deca, etc. que aparecen al principio de los nombres de los polígonos. Se corresponden a los números 3, 5, 6, 8, 10, etc. y hacen alusión a la cantidad de ángulos (y de lados agregaría yo) que tienen estos platónicos artefactos ("me invadió el poeta que llevo dentro")

¿Qué cosa más significativa y evidente en un polígono regular que su cantidad de lados, entonces?

Va a cobrar una gran relevancia el análisis geométrico que realizamos para el caso del pentágono regular en el 2do paso de este Tutorial, porque allí mostramos que había una relación entre la cantidad de lados n  y el ángulo de giro  γ  necesario para nuestro algoritmo [ver aquí], y donde cerramos con —cito textualmente, y lo enmarco—:
Ya tenemos entonces una primera pieza para poder seguir nuestro trabajo: nuestra 1ª fórmula, justamente la que vincula los dos valores más relevantes dentro del algoritmo a la hora de dibujar nuestros polígonos regulares.
¿Qué nueva herramienta de programación nos permitirá incorporar el fruto de nuestro reciente análisis a lo ya preexistente?
Hablaremos sobre esto en las 2 páginas siguientes… vamos a abrir un mundo de nuevas posibilidades.
Última actualización: Febrero 24, 2014

No hay comentarios.:

Publicar un comentario

© Scratch CodeLab | D153ñ0 b454d0 3n l4 pl4n71ll4 SimpleRWD d3 Oloblogger