1er paso: dibujar un cuadrado (parte IV)

"Dibujar un cuadrado... ¿qué dificultad puede tener?". No muchas en realidad, y es por esto que empezamos con este espécimen de la familia de los polígonos regulares.
Ahora bien ¿cualquier cuadrado?   Es decir: ¿de cualquier tamaño? ¿en cualquier ubicación? ¿dibujado en cualquier ángulo respecto a los ejes de coordenadas (si no sabés de que hablo mirá aquí)? ¿dibujado a partir de cualquier punto y siguiendo cualquier sentido de giro —horario o anti-horario—?
("¿Este es el señor de las preguntas del que me hablaron, no…?")
Y… en principio mientras sea un cuadrado está todo OK. Esto es: cuatro lados, cuatro ángulos internos de 90º —o ángulos rectos—, y con sus lados de una misma longitud… un cuadrado. Pero…

Sacándole punta al lápiz

Nuestro 1er tutorial nos sirvió para conocer el entorno de programación de Scratch, usamos unos cuantos bloques de los distintos tipos de instrucciones, conceptualizamos muchas cosas de interés que sirvieron para ese tutorial y a futuro… y creo que el objetivo fue cumplido.
Pero bien pensado nuestro "plan" fue ir complejizando la animación de manera que en el camino fuésemos explorando posibilidades ; lo que es seguro es que no partimos con una meta rígida y definida desde un principio (el objetivo del tutorial tenía que ver con algo lúdico y exploratorio).

Scratch nos permite esto de jugar con la programación, y no siempre tener que preocuparnos por la precisión y la repetibilidad en los resultados. Pero a medida que nos enfrentemos con proyectos cada vez más complejos vamos a necesitar dominar estas cuestiones.
Y como vamos a embarcarnos en un proyecto que involucra las matemáticas (un universo lleno de previsibilidad y exactitud), trataremos de ponernos a tono: nuestra meta no será dibujar un cuadrado cualquiera, sino un cuadrado precisamente especificado, y planificado a partir de un algoritmo libre de ambigüedades (un algoritmo es algo así como el plan o receta que nos permite llegar a un resultado).
Los algoritmos no admiten ningún tipo de ambigüedad ya que los computadores no podrían ejecutarlos (ellos no pueden "razonar" o "interpretar" por sí mismos… al menos por ahora).
Es un buen momento para recordar que en la programación "tradicional" (igual que en las matemáticas) lo que se espera es una respuesta precisa, y que la misma se repita cada vez que corramos el programa con los mismos datos iniciales.
ESTA PREMISA SERÁ ALGO QUE NOS GUIARÁ A LO LARGO DE TODO EL TUTORIAL
.

...un algoritmo debe ser:

  • Realizable: El proceso algorítmico debe terminar después de una cantidad finita de pasos. Se dice que un algoritmo es inaplicable cuando se ejecuta con un conjunto de datos iniciales y el proceso resulta infinito o durante la ejecución se encuentra con un obstáculo insuperable sin arrojar un resultado.
  • Comprensible: Debe ser claro lo que hace, de forma que quien ejecute los pasos (ser humano o máquina) sepa qué, cómo y cuándo hacerlo. Debe existir un procedimiento que determine el proceso de ejecución.
  • Preciso: El orden de ejecución de las instrucciones debe estar perfectamente indicado. Cuando se ejecuta varias veces, con los mismos datos iniciales, el resultado debe ser el mismo siempre. La precisión implica determinismo.

Definir claramente el problema

Poder indicarle a nuestro amigo Pier como dibujar un cuadrado específico nos enfrenta a un problema. Y el primer paso para resolver un problema es definirlo claramente y con precisión, para poder así comprenderlo.
Los programas de computador tienen como finalidad resolver problemas específicos y el primer paso consiste en definir con precisión el problema hasta lograr la mejor comprensión posible. Una forma de realizar esta actividad se basa en formular claramente el problema, especificar los resultados que se desean obtener, identificar la información disponible (datos), determinar las restricciones y definir los procesos necesarios para convertir los datos disponibles (materia prima) en la información requerida (resultados).
Fuente: Algoritmos y Programación :: EDUTEKA
Como una imagen vale más que miles de palabras (o por lo menos así dicen) te muestro una ayuda visual para saber a que atenerte.
cuadrado
NOTA: Deliberadamente coloqué un nuevo fondo que resulte más práctico para que te ubiques espacialmente (¡este asunto de las coordenadas en Scratch!). Las flechas numeradas también fueron colocadas con fines explicativos (como ya debés haberte dado cuenta).
Antes de seguir (y esta vez con palabras) con la definición precisa de nuestro problema, tomate un tiempo para "elucubrar" un plan para resolverlo —aunque no sea más que a modo cualitativo—: esa debería ser la base del algoritmo y del consecuente programa al cual deberemos llegar.

El programa no será otra cosa que las instrucciones con que contará Pier para cumplir con su sueño de gato dibujante. Ten sí presente que el objetivo de nuestro proyecto será el dibujo de ese cuadrado y no de otro , y así podrás ir deduciendo qué valores numéricos vas a necesitar para poder cumplir la meta (¡a pensar, que no duele...!).

Hablemos sobre nuestro cuadrado (y sobre Pier)

  • El cuadrado deberá tener sus lados de longitud 200 pasos (recordá que pasos es una unidad de longitud usada por Scratch).
  • Sus lados deberán está posicionados de tal manera que queden paralelos a los ejes coordenados (o perpendiculares si preferís pensarlo así).
    Otra manera de verlo es decir que deberá tener 2 lados horizontales y dos verticales (en consonancia a la posición de los ejes coordenados).
  • Deberá quedar centrado respecto al escenario (ya hablaremos más de esto).
  • Pier deberá comenzar a dibujar el cuadrado desde el vértice superior izquierdo, y siguiendo un sentido horario (las flechas de la imagen superior te ayudarán a entender esto por si hiciera falta).
  • Pier deberá usar un lápiz de tamaño 5 para dibujar el cuadrado.
  • Deberá asimismo dibujar cada lado con un color de lápiz distinto (algo cosmético y menor, pero bueh...).
  • Pier deberá hacer una pausa de 1 segundo al terminar de dibujar cada lado (un descanso reparador).
  • Cada vez que inicie un nuevo dibujo deberá comenzar con la hoja limpia de trabajos anteriores, o sea, deberá borrar cualquier dibujo previo.
Creo que no me olvidé de nada, y que el problema está perfectamente clarificado y sin haber dejado nada al azar. Por supuesto falta que vos te des el tiempo de comprender claramente lo aquí expuesto.

Ya con estos datos podés aprovechar e ir elucubrando un "plan" a seguir para resolver el problema (un algoritmo, que le dicen…). También te sugiero que vayas pensando cuales requisitos de entre los pedidos pueden resultar más importantes o centrales, de manera de concentrarnos primero en ellos y luego en las cuestiones de detalle… nos vemos en la página siguiente.
Última actualización: Febrero 23, 2014

No hay comentarios.:

Publicar un comentario

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