Your SlideShare is downloading. ×
  • Like
  • Save
Aproximación a la Didactica del Logo(Parte4)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply
Published

Didactica del Logo

Didactica del Logo

Published in Education , Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,062
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Una aproximación a la Didáctica del Logo. (parte 4) Enrique Araujo Oviedo Docente de Informática, I.E.D John F. Kennedy Coordinador Red de Informática Educativa Localidad Octava, Rediel 8. enriquearaujoviedo@gmail.com LOGO, LOGO, ... LOGO. Sí, escrito en mayúsculas: el lenguaje para niños. Bueno esa no fue la idea que me vendieron en el pregrado. Pero sí las editoriales y la misma Secretaría de Educación; hasta compró equipos Atari para enseñar Logo en las escuelas!! De desquiciada nada tenía la idea, ni por un lado ni por la otra: los equipos Atari, para su época (1986) eran unas portentosas máquinas con cuatro (léase bién: cuatro) procesadores, pero con una escasa memoria (64K, 128K y en el mejor de los casos 512K, claro estaban los Atari ST de 1024Kb, pero esos no llegaron a la escuela). Del otro lado los cartridge (cartuchos) de Atari (en español) eran y siguen siendo de lo mejor, pues que éste lenguaje lo que ha hecho es crecer y mejorar cada vez. Bueno desde esa época y desde su diseño inicial LOGO ha sido un lenguaje de programación bastante serio, basado precisamente en otro lenguaje muy poderoso como el LISP. Desde esa época a ésta se nos ha escapado ese detalle precisamente: las listas y la estructura de pensamiento subyacente en el manejo de las listas. Eso sí es lo que hay que enseñarle a un niño: manejo de listas y la lógica de programación por listas. LOGO de alguna manera ha conseguido a pesar de sus instructores y nosotros los maestros que los niños adquieran unas valencias, que en la mayoría de los casos escapan a nuestro control, desgraciadamente por no poseer ni estructuras de programación (no ser programadores) ni conocer /dominar el lenguaje en su totalidad (desconocer la lógica de programación funcional, ya mayoría todavía cree que la lógica de programación de LOGO es procedimental). Bueno, el asunto a tratar en éste artículo es ese: cómo enseñar a los niños a adquirir las estrategias de programación funcional, adquirir dominio del manejo de listas, observar cómo las sentencias Logo son listas y resolver problemas utilizando listas, e.d, programando soluciones en logo. Y todo esto para niños de grado sexto (10-12 años, aprox.)! Lo primero sí es dar a conocer las primitivas Logo gráficas, especialmente las relativas a las coordenadas referenciales. Realizar ejercicios en los que se involucren operaciones aritméticas en los argumentos de los comandos. Así por ejemplo: FD 20*10, BK (2*10+3*60) ó RT 3*90 (tomo como referencia el Logo en inglés, por ser el Logo estándar). Con éste tipo de situaciones lo que se busca es que el estudiante distinga perfectamente que existen dos elementos en éstas sentencias Logo: una parte literal (la cabeza) y una parte numérica (la cola). Y que en general cualquier sentencia Logo, por compleja que sea es una lista que posee éstos dos elementos: cabeza y cola. Simbólicamente: [ cabeza cola ] o (cabeza, cola). Y que además ésta lista se puede representar por un grafo (ver teoría de grafos, [ORE86] ) llamado árbol.
  • 2. Entonces, en los ejemplos precedentes tenemos: LISTA CABEZA COLA FD 20*10 FD 20*10 BK (2*10+3*60) BK (2*10+3*60) RT 3*90 RT 3*90 Tabla 1 No importa que tan compleja pueda ser una operación aritmética, es una sola entidad. Sin embargo si existen unas listas que generan ciertas dudas, por ejemplo la lista: REPEAT 4[ FD 100 RT 90] Veamos: LISTA CABEZA COLA REPEAT 4[ FD 100 RT 90] REPEAT 4[ FD 100 RT 90] 4[ FD 100 RT 90] 4 [ FD 100 RT 90] [ FD 100 RT 90] FD 100 RT 90 FD 100 FD 100 RT 90 RT 90 Tabla 2 O en otras palabras: [ CABEZA [ CABEZA [ [ CABEZA COLA] [ CABEZA COLA] ] ] ] Pensar de ésta manera no es fácil; y menos aún resolver problemas reformulándolos de éste modo. Se pensaría que para un niño la cosa es muy compleja y difícil y que por tanto es mejor
  • 3. no enseñárselo. Nada más erróneo! El tipo de pensamiento que subyace al Logo se denomina “sintético” y proviene del “análisis sintético”, que a diferencia del pensamiento analítico (que se especializa en descomponer un todo en sus partes y estudiarlas por separado) se encarga de observar un elemento particular de un todo, conservando el todo mismo. Una vez familiarizado el niño resuelve problemas interesantes con éste método. Podemos colocarle un ejercicio como el siguiente: “escriba como una lista el sistema solar”. Solución: LISTA CABEZA COLA [ SOL PLANETAS ] SOL PLANETAS [ PLAN_MAY PLAN_MEN ] PLANETAS MAYORES PLANETAS MENORES PLANETAS MAYORES URANO NEPTUNO JÚPITER SATURNO PLANETAS MENORES PLUTÓN TIERRA VENUS MARTE MERCURIO Tabla 3 Obteniéndose la lista: [ SOL [ URANO NEPTUNO JÚPITER SATURNO PLUTÓN TIERRA VENUS MARTE MERCURIO] ] ¿ Importa acaso el orden de los planetas? Observése cómo la lista del sistema solar tiene únicamente dos elementos, pero la lista constituída por la cola pareciera ser distinta si se consideran « planetas mayores » y « planetas menores » como puede verse en las filas 2 a 4 de la tabla 3: Las Listas L1:: [ PLAN_MAY PLAN_MEN ] y L2:: [PLANETAS MAYORES PLANETAS MENORES] son por supuesto iguales. Ahora L3:: [PLANETAS MAYORES]  [ URANO NEPTUNO JÚPITER SATURNO] y L4:: [PLANETAS MAYORES]  [PLUTÓN TIERRA VENUS MARTE MERCURIO]. En L3 la CABEZA  URANO y la COLA  [ NEPTUNO JÚPITER SATURNO]. Nota: el símbolo  se usa para establecer equivalencias entre listas y el símbolo  para establecer equivalencia entre elementos de una lista. En otro artículo hé comentado acerca de las diferencias y similitudes de LOGO y LISP en el manejo de las listas y sus operadores (“Lo que va del Lisp al Logo y otras minucias...”) , por
  • 4. ahora bástenos saber que no es difícil para el estudiante de grado sexto comprender la lógica del manejo de listas; muy por el contrario, es como un chicle en la boca. Y bién en qué quedó nuestro ejercicio? Pues que el estudiante puede observar que la estructura final del ejercicio es una lista de la forma: [ CABEZA [CABEZA COLA] ] y no importa qué tan grande pueda ser la cola y que ésta a su vez sea una lista. Se preguntará el docente: ¿Y cuál es la ganancia cognitiva que obtiene el estudiante de grado sexto al manipular listas en lugar de aprender a manipular comandos Logo directamente? Pues que adquiere la lógica de solución de problemas en Logo, o sea su formulación y representación por listas, lo que hace fácil la estructuración modular de la propuesta de programación. Veamos un ejemplo, supongamos que se pide a los niños que elaboren “el juego del triqui” para ser jugado por dos jugadores utilizando la máquina como tablero (Obsérvese que éste es un problema débilmente estructurado). ¿Qué hacen los niños? ¿Qué hace el maestro? Vamos por partes, resolvamos la inquietud acerca de qué debe hacer el docente. Mostrar a los niños que “el juego del triqui” tiene un tablero de la forma: El tablero está constituido por dos líneas paralelas horizontales, perpendiculares a otras dos líneas paralelas verticales. Una manera de realizarlo sería trazar primero una paralela horizontal y luego la otra, siguiendo la lógica visual. Pero la manera eficiente de construir el tablero no es esa; se requiere una unidad básica y a partir de ésta realizar el resto por modularidad y con reusabilidad de código. Tablero del juego del Triqui. unidad base Prototipo del tablero Se propone que la unidad base sea un Fig. 1 cuadrado y a partir de éste se construya el tablero. Fig. 2 Observemos más en detalle: Fig. 3. El tablero está constituido por cinco cuadrados: uno central, dos Fig. 4. Aquí se ha considerado el tablero central y los cuadrados en verticales, arriba y abajo; y, dos horizontales, a derecha e izquierda del líneas punteadas, borrando uno de sus lados. Si se observa con
  • 5. cuadrado central. Aunque debe considerarse que el tablero realmente detenimiento ésta es la única acción a realizar sobre el cuadrado tiene nueve (9) casillas o escaques. central: borrar un segmento y al objeto resultante aplicarle sucesivas rotaciones. Con esto ya se tienen los módulos de construcción. Entonces los módulos de construcción son: etapa 1: crear cuadrado etapa 2: crear objeto Fig. 5. Un cuadrado que sirve de Fig. 6. Un cuadrado al que se le unidad base y corresponde al ha borrado un segmento (que cuadrado central. aparece punteado en el dibujo) y que se constituye en el objeto a operar. El objeto soporte (cuadrado sin un etapa 3: sumar objeto a base etapa 4: rotar objeto 90 grados segmento) se rotará tres veces sucesivas, aplicándosele una rotación a derecha de 90 grados cada vez. etapa 5: rotar objeto 180 grds etapa 6: rotar objeto 270 grds Fig. 8 Nota adicional: el tablero debe poderse dibujar en cualquier sitio dela pantalla, por tanto basta clicar en un punto de la pantalla para que éste sea el punto centro del tablero, leyendo Logo las coordenadas. En Logo como sabemos tendríamos el siguiente código para los módulos “unidad base” y “objeto”. To cuadrado :lado REPEAT 4[FD :lado RT 90] End To objeto :lado cuadrado :lado
  • 6. FD :lado RT 90 PE FD :lado PPT PU REPEAT 2[RT 90 FD :lado ] PD RT 180 END TO tablero :lado « aquí leer las coordenadas del punto actual » CS « borra pantalla » cuadrado :lado « dibuja cuadrado central » REPEAT 4[FD :lado objeto :lado] « dibuja las casillas » END Basta, escribir en la línea de sentencias: tablero 50 para obtener un tablero apropiado. Un lado de 100 es más que suficiente, por lo que valdría la pena establecer restricciones máximo 70 y mínimo 30. Quedaría el módulo así: TO tablero :lado IF (OR :lado < 30 :lado >70) [PR [no se puede dibujar] STOP] « examina rango de trabajo » CS « borra pantalla » cuadrado :lado « dibuja cuadrado central » REPEAT 4[FD :lado objeto :lado RT 90] « dibuja las casillas » END Capturar las coordenadas del lugar donde se encuentra el cursor lo detallaremos más adelante, por ahora bástenos que podamos dibujar el tablero del triqui. Además debemos considerar el hecho que el tablero se pueda dibujar dentro del área de trabajo. Obviamente ésta no es la única manera de trazar el tablero del triqui, pero es la más apropiada para mostrar la modularidad y la reusabilidad de código (En el apéndice presento otra manera, que no me parece la mejor pero cada quien “mata sus pulgas a su manera” reza un adagio popular. Y en programación esto sí que es cierto: nadie programa igual a otra persona). Sigamos. El nuevo problema que debe presentar el docente a sus alumnos consiste en ubicar cada casilla a través de algún mecanismo para trazar luego la ficha correspondiente. Supongamos el problema así: Juanito y Juanita están jugando, ya dibujaron el tablero en la parte superior de la pantalla. Juanita empieza primero y seleccionó la casilla superio-izquierda para colocar su ficha que es un círculo, ¿cómo hace juanita para llegar hasta esa casilla para dibujar su círculo? Ataquemos pues el problema. Se sabe que Logo posee de manera subyacente un sistema de coordenadas cartesianas, esto es que a cada punto del área de trabajo le corresponde un par de coordenadas (xCor, yCor) que fijan su posición. Así pues de lo que se trata entonces es de localizar las coordenadas del punto centro de cada casilla, y para ello basta con saber las coordenadas de la casilla central, es decir el punto donde “se hizo clic” para dibujar el tablero. Entonces de lo que se trata es de
  • 7. capturar las coordenadas del punto donde se hizo clic con el botón izquierdo del mouse. Esto realmente no es difícil porque Logo trae estos comandos, lo realmente interesante es cómo plantearle al estudiante la pregunta para que se vea motivado a consultar en el lenguaje las posibilidades. Para efectos prácticos reduciré el problema a uno equivalente en el que el mouse aún no tenga nada que ver, precisamente para efectos didácticos. Consideremos que podemos mover la tortuga al azar hasta que presionemos enter o cualquier otra tecla. Y en el sitio que quede la tortuga se dibuje el tablero, esta vez pondremos la condición que no se borren los tableros anteriores. Mover la tortuga al azar. Logo trae el comando RANDOM que tiene el siguiente formato: RANDOM num. Esta instrucción Logo devuelve un entero positivo menor que el del argumento, que servirá de entrada al comando deseado. Así por ejemplo podemos escribir: FD RANDOM 100. Logo devolverá un entero positivo menor que 100, supongamos 75 y éste servirá de argumento a FD, quedando pues FD RANDOM 100  FD 75 (¿recuerda las equivalencias entre listas, arriba mencionadas?) Como se trata de que se mueva al azar un poco más, consideremos que podemos rotar la tortuga también aleatoriamente un número arbitrario de veces. Tenemos pues el procedimiento mover.al.azar : TO mover.al.azar :veces PU HOME REPEAT RANDOM :veces [ RT RANDOM :veces *10 FD RANDOM :veces *30 ] PD END Este sería un procedimiento para luego ser incluido como módulo dentro de un procedimiento dibuja.tablero . O una versión empeorada si se va a trabajar desde la línea de sentecias: TO mover.al.azar :veces IF :veces < 0 [PR [Oye, no puedes usar un entero negativo!] STOP ] IF :veces > 10 [PR [Oh, Oh! Muchas vueltas, pón un número menor que 10] STOP ] PU HOME REPEAT RANDOM :veces [ RT RANDOM :veces *10 FD RANDOM :veces *30 ] PD END O más complejo:
  • 8. TO mover.al.azar :veces IF :veces < 0 [MESSAGEBOX [ CUIDADO!] [Oye, no puedes usar un entero negativo!] STOP ] IF :veces > 10 [MESSAGEBOX [ CUIDADO!] [Oh, Oh! Muchas vueltas, pón un número menor que 10] STOP ] PU SETH (REMAINDER 360 :veces*21) REPEAT RANDOM :veces [ RT RANDOM :veces *10 FD RANDOM :veces *30 ] PD END Por supuesto que se pueden poner todas las restricciones del caso. Por ejemplo: podemos querer que rote una vez a la derecha y otra a la izquierda o que rote un número al azar de veces a la derecha y luego una vez a la izquierda. Para el primer caso basta agregar LT como cola de la lista [ RT RANDOM :veces *10 FD RANDOM :veces *30 ] quedando: [ RT RANDOM :veces *10 FD RANDOM :veces *30 LT RANDOM :veces *5 ] para el segundo caso hay que agregar otro RANDOM en la cabeza de la lista: [ REPEAT RANDOM RT 360/:veces [RANDOM :veces *10 FD RANDOM :veces *30] LT RANDOM :veces *5 BK RANDOM :veces *15] consiguiendo una tortuga completamente loca! Pero para no complicarnos tanto (por ahora...) dejemos el primer procedimiento mover.al.azar . Bueno ya tenemos una tortuga que se mueve al azar, pero que puede salirse de pantalla. Esto lo resolveremos después. Por ahora concentrémonos en mover la tortuga y dibujar después. Tenemos: TO dibujar.triqui :veces :lado mover.al.azar :veces tablero :lado END La única dificultad que usualmente se le presenta al estudiante es recordar que debe introducir el valor de las variables asociadas y en qué orden. Hay que trabajar en ello. El siguiente problema a abordar será pues el de dibujar las fichas. Después abordaremos el de posicionarla en cualquiera de las casillas. Consideremos eso sí el hecho que la ficha debe quedar dentro de una casilla. Recordemos que cada casilla es un cuadrado porque con ésta intención lo definimos desde el comienzo. El que cada casilla fuera un cuadrado nos sirve porque así podemos fácilmente calcular su punto centro bien como el punto de corte de sus diagonales o como un recorrido simple de dos segmentos medios perpendiculares que parte de un vértice. Supongamos por ahora que el punto centro de una casilla tiene coordenadas (xc, yc).
  • 9. Fig. 9a. Método por diagonales Fig. 9b. Método por trayectoria de segmentos medios Sabemos que el cuadrado tiene segmentos de longitud :lado. Por tanto para llegar al punto centro por el método de la figura 9a, sería: To centro.casilla :lado SETH 45 FD SQRT ( 2*( :lado /2)* (:lado /2)) END Pues se trata de la hipotenusa de un triángulo rectángulo con catetos de longitud :lado. Y por el método de la figura 9b, sería: To centro.casilla :lado FD :lado SETH 90 FD :lado SETH 0 END Una vez escogido el método de llegar al centro dela casilla se dibuja la ficha según el turno del jugador. Podemos hacer controlado el turno o libre, es decir que sea el jugador el que escriba la ficha que le corresponde. En caso contrario sería el computador el que decida si la ficha jugada es correcta según el turno o no. Tomemos por comodidad el caso libre. Las fichas a dibujar son un circulo y una équis. Caso ficha équis. Veamos las siguientes figuras ilustrativas que nos ayudarán a elaborar el procedimiento. Fig. 10a Ubicamos el centro Fig. 10b. Trazamos primer tramo Fig. 10c. Nos devolvemos Fig. 10d.Trazamos segundo tramo
  • 10. Fig. 10e nos devolvemos Fig. 10f. Hemos trazado la équis Fig. 10g. Y ahora qué hacer? El procedimiento realmente es muy sencillo: TO equis :lado centro.casilla :lado primer.tramo :lado segundo.tramo :lado END TO primer.tramo :lado SETH 315 « da la orientación del tramo a la tortuga » FD (3/4)*SQRT ( 2*(:lado /2)* ( :lado /2)) « avanza tres cuartos de la semidiagonal desde el centro » BK (3/2)* SQRT ( 2*(:lado /2)* (:lado /2)) « retrocede trazando dos semidiagonales » FD (3/4)*SQRT ( 2*(:lado /2)* (:lado /2)) « se devuelve al centro » SETH 0 « establece orientación estándar » END TO segundo.tramo :lado SETH 45 FD (3/4)*SQRT ( 2*(:lado /2)* (:lado /2)) BK (3/2)* SQRT ( 2*(:lado /2)* (:lado /2)) FD (3/4)*SQRT ( 2*(:lado /2)* (:lado /2)) SETH 0 END Abordemos ahora, el trazado de la ficha círculo. Caso ficha circulo. Con ésta ficha si no tendremos ningún inconveniente pues Logo dispone de una procedimiento ARC, cuyo formato es ARC ángulo radio. Nota: The turtle does not move in this command. It draws an arc (part of a circle) based on the turtle heading, turtle position and the given arguments. The arc starts at the rear of the turtle heading. The size is based on the radius. The current turtle position will be at the center of
  • 11. the arc. Arc will also follow wrap/fence/windows modes. ARC 360 radius will of course draw a circle. TO circulo :lado centro.casilla :lado ARC 360 :lado/2 END Así pues ya tenemos tablero y fichas. Entonces a jugar!!! Eh, éh! Un momento y cómo posicionamos las fichas en las casillas? Establezcamos para resolver éste problema lo siguiente: leemos el tablero de izquierda a derecha y de arriba hacia abajo en trama de zeta. Para hacerlo más claro, numerémos cada casilla de 1 a 9 así: 1 2 3 4 5 6 7 8 9 Fig. 11 Tomando como referencia la casilla del centro podemos ir a cualquier otra, de acuerdo a los siguientes esquemas: Fig. 12a. Camino a la casilla 2. Fig. 12b. Camino a la casilla 8 Fig. 12c. Camino a la casilla 4 Fig. 12d. Camino a la casilla 6 Fig. 12e. Camino a la casilla 1 Fig. 12f. Camino a la casilla 7 Fig. 12g. Camino a la casilla 3 Fig. 12h. Camino a la casilla 9
  • 12. Hé dispuesto los esquemas de talmodo que se puedan observar las trayectorias de acuerdo a su simétrica. Así la figura 12a. (trayectoria hacia la casilla 2) tiene como simétrica a la figura 12b. (trayectoria hacia la casilla 8) , así sucesivamente. Esto lo puede observar fácilmente un niño de grado sexto si posee precurrentes de simetría (simetría axial, preferentemente). Los procedimientos se realizan por código simétrico: TO casilla2 :lado TO casilla8 :lado PU SETH 0 PU SETH 180 FD :lado SETH 0 FD :lado SETH 0 PD PD END END TO casilla4 :lado TO casilla6 :lado PU SETH 270 PU SETH 90 FD :lado SETH 0 FD :lado SETH 0 PD PD END END TO casilla1 :lado TO casilla7 :lado casilla1 SETH 270 casilla8 SETH 270 FD :lado SETH 0 FD :lado SETH 0 PD PD END END TO casilla3 :lado TO casilla9 :lado casilla1 SETH 90 casilla8 SETH 90 FD :lado SETH 0 FD :lado SETH 0 PD PD END END El juego se puede depurar muchísmo más, pero para el caso es más que suficiente. A propósito, un poquito largo el ejemplo, ¿no? Muy bonito todo eso, se preguntará el lector. Pero qué tiene que ver todo esto con las listas? A qué horas vuelven a aparecer? Bueno el asunto es que siempre estuvimos manipulando listas. Cada subproblema conducía a elaborar un procedimiento que se convierte en módulo dentro de otro procedimiento. Esto es una lista dentro de otra lista.
  • 13. NOTA FINAL: Recuerde apreciado colega, que la didáctica es un asunto el maestro no del alumno, así que lo visto en el presente artículo estaba dirigido exclusivamente al docente. No se puede implementar éste trabajo directamente al alumno, sería un exabrupto. Como dice Jimmy Neutrón: no lo intentes en casa! Hay que dosificarlo al nivel de los alumnos, cada colegio tiene sus particularidades y sus propios niveles de crecimiento y desarrollo por tanto sus alumnos poseen unas características diferenciales que deben ser tomadas en cuenta a la hora de aplicar un trabajo como el presente.
  • 14. Anexo 1 Todo el código completo. To cuadrado :lado To objeto :lado REPEAT 4[FD :lado RT 90] cuadrado :lado End FD :lado RT 90 PE FD :lado PPT PU REPEAT 2[RT 90 FD :lado ] PD RT 180 END TO tablero :lado TO mover.al.azar :veces CS IF :veces < 0 [MESSAGEBOX [ CUIDADO!] cuadrado :lado [Oye, no puedes usar un entero negativo!] REPEAT 4[FD :lado objeto :lado] STOP ] END IF :veces > 10 [MESSAGEBOX [ CUIDADO!] [Oh, Oh! Muchas vueltas, pón un número menor que 10] STOP ] PU SETH (REMAINDER 360 :veces*21) REPEAT RANDOM :veces [ RT RANDOM :veces *10 FD RANDOM :veces *30 ] PD END TO dibujar.triqui :veces :lado TO casilla1 :lado mover.al.azar :veces casilla2 :lado SETH 270 FD :lado tablero :lado SETH 0 END PD END TO casilla2 :lado TO casilla3 :lado PU SETH 0 Casilla2 :lado SETH 90 FD :lado FD :lado SETH 0 SETH 0 PD PD END END TO casilla4 :lado TO casilla6 :lado PU SETH 270 PU SETH 90 FD :lado SETH 0 FD :lado SETH 0 PD PD END END TO casilla7 :lado TO casilla8 :lado casilla8 :lado SETH 270 FD :lado PU SETH 180 SETH 0 FD :lado SETH 0 PD PD END END
  • 15. TO casilla9 :lado TO primer.tramo :lado casilla8 :lado SETH 90 FD :lado SETH 315 SETH 0 FD (3/4)*SQRT ( 2*( :lado /2)* ( :lado /2)) PD BK (3/2)* SQRT ( 2*( :lado /2)* (:lado /2)) END FD (3/4)*SQRT ( 2*( :lado /2)* (:lado /2)) SETH 0 END TO segundo.tramo :lado TO circulo :lado SETH 45 centro.casilla :lado FD (3/4)*SQRT ( 2*( :lado /2)* (:lado /2)) ARC 360 :lado /2 BK (3/2)* SQRT ( 2*( :lado /2)* (:lado /2)) END FD (3/4)*SQRT ( 2*( :lado /2)* (:lado /2)) SETH 0 END To centro.casilla :lado TO equis :lado FD :lado SETH 90 FD :lado SETH 0 primer.tramo :lado END segundo.tramo : :lado END TO dibujar.triqui :veces :lado mover.al.azar :veces tablero :lado END
  • 16. ANEXO 2 Haciéndolo más legible con un valor predeterminado: To cuadrado REPEAT 4[FD 40 RT 90] End To objeto cuadrado FD 40 RT 90 PE FD 40 PPT PU REPEAT 2[RT 90 FD 40] PD RT 180 END TO tablero SETPENCOLOR 220 10 10 SETH 0 cuadrado REPEAT 4[FD 40 objeto ] END
  • 17. ANEXO 3 Pruebe este sencillo programa para ver cómo se mueve la tortuga al azar TO mover.al.azar :veces IF :veces < 0 [MESSAGEBOX [ CUIDADO!] [Oye, no puedes usar un entero negativo!] STOP ] IF :veces > 10 [MESSAGEBOX [ CUIDADO!] [Oh, Oh! Muchas vueltas, pón un número menor que 10] STOP ] PU SETH (REMAINDER 360 :veces*21) REPEAT RANDOM :veces [ RT RANDOM :veces *10 FD RANDOM :veces *30 ] PD SETPENCOLOR 225 10 10 SETTEXTSIZE 26 SETTEXTFONT [TAHOMA] LABEL [AQUI ESTOY!] END
  • 18. Anexo 4 Juego del Triqui Observaciones generales Logo ofrece un espacio bastante dúctil para el diseño y elaboración de juegos. Presentaremos las ideas generales de cómo se desarrolló un proyecto para elaborar el juego del Triqui con estudiantes de grado sexto. Ya los estudiantes saben elaborar el procedimiento de un cuadrado y posicionar un cuadrado en diferentes lugares (1), por tanto posicionar dos cuadrados consecutivos no es ningún problema. Sin embargo un tablero de Triqui no es una secuencia de cuadrados propiamente dicha; pues sólo el escaque del centro es cerrado, los demás son abiertos. Y esto es lo que se les manifiesta a los estudiantes en forma de problema: “Dibujar el tablero de un Triqui. Verifíquese en papel cuántas maneras hay, posibles de elaborarlo, partiendo de un cuadrado base (2)”. Entre los modos encontrados por los estudiantes tenemos: a) Modo en el que se dibujan los nueve cuadrados y posteriormente se borra el borde exterior del cuadrado grande formado por los nueve cuadrados base. b) Modo en se dibuja el cuadrado central, luego a otro cuadrado base se le borra un lado; posteriormente se posicionan cuatro de estos sobre los lados del cuadrado central. c) Modo en que dibuja una escalera de dos escalones, con el cuadrado base en el centro; se gira la estructura y se traslapan. Otros modos que no tomaron el consideración la unidad base: a) Trazar dos rectas paralelas y perpendiculares dos a dos b) Trazar dos rectas paralelas, voltearlas en ángulo recto y traslaparlas (montarlas sobre las anteriores) Veamos con algún detalle, alguno de ellos: Modo b)
  • 19. Se considera el croquis del cuadrado base y a continuación se establecen los segmentos que definirían el tablero. En la imagen los segmentos se ven en líneas punteadas. En otro croquis se considera el cuadrado base y el segmento a eliminar de dicho cuadrado. El segmento a eliminar, según el croquis es el segmento superior. Ahora el cuadrado sin un segmento se ubicará sobre el segmento superior del cuadrado central. En logo, la idea ya no es tan intuitiva, pues se requiere posicionar primero la tortuga en un vértice, por ejemplo, y a continuación ejecutar el procedimiento que dibuje el cuadrado sin el lado superior; nótese además que no se elimina cualquier lado sino el superior.
  • 20. Una vez posicionado el cuadrado sin segmento superior, se realiza una copia y posteriormente se gira 90 grados a la derecha para que el lado abierto quede hacia la derecha. Luego se coloca en lugar señalado en el croquis. Nuevamente, la idea es muy atractiva desde el punto de vista del papel y posiblemente desde un editor gráfico. Pero desde la perspectiva de la programación en Logo la idea se vuelve un poco engorrosa: a)se debe establecer posición anterior de la tortuga y b) se debe posicionar la tortuga nuevamente para c) dibujar cuadrado sin segmento superior, previamente girado (3).
  • 21. El siguiente escaque sigue el proceso del anterior. El análisis global del proceso puede dar una idea muy enriquecedora de cómo utilizar la recursión en lugar de la iteración (4). Finalmente se tiene el tablero Tablero terminado. Después de analizar las distintas posibilidades, los estudiantes escogieron el método que más les convino, según su parecer. El siguiente módulo es el trabajo resultante de un grupo de trabajo:
  • 22. El código se muestra tal como lo escribieron los estudiantes del grupo, con las observaciones del docente: Código Logo para el Juego del Triqui. (Grupo del estudiante Huérfano, M. 601) TO BOLA PD ST SETH 90 REPEAT 4 [FD 20 RT 90] SETH 0 END TO CASILLA1 PU SETH 0 SETXY -50 50 END TO CASILLA2 PU SETH 0 SETXY -10 50 END TO CASILLA3 PU SETH 0 SETXY 30 50 END TO CASILLA4 PU SETH 0 SETXY -50 10 END TO CASILLA5 PU SETH 0 SETXY -10 10 END TO CASILLA6 PU SETH 0 SETXY -30 10 END TO CASILLA7 ;mejorar PU SETH 0 SETXY -50 30 END TO CASILLA8 ;mejorar
  • 23. PU SETH 0 SETXY -10 30 END TO CASILLA9 PU SETH 0 SETXY 30 -30 END TO CROQUIS CS PU SETXY -20 70 PD SETY -70 PU SETXY 20 70 PD SETY -70 PU SETXY -70 20 PD SETX 70 PU SETXY -70 -20 PD SETX 70 END TO EQUIS PD ST SETH 135 FD SQRT (800) SETH -90 PU FD 20 PD SETH 45 FD SQRT (800) PU HOME END TO JUGAR PR [ESCOJA: EQUIS (X) O BOLITA (O)] MAKE "TECLA READCHAR IF :TECLA = "X [EQUIS STOP] IF :TECLA = "O [BOLA STOP] JUGAR END TO LEER MAKE "TECLITA READCHAR IF :TECLITA = "1 [CASILLA1 JUGAR] IF :TECLITA = "2 [CASILLA2 JUGAR] IF :TECLITA = "3 [CASILLA3 JUGAR] IF :TECLITA = "4 [CASILLA4 JUGAR] IF :TECLITA = "5 [CASILLA5 JUGAR] IF :TECLITA = "6 [CASILLA6 JUGAR] IF :TECLITA = "7 [CASILLA7 JUGAR] IF :TECLITA = "8 [CASILLA8 JUGAR] IF :TECLITA = "9 [CASILLA9 JUGAR] LEER ;el posicionamiento en las casillas 6,7,8 y 9; falla END TO TRIQUI ;hay que mejorar el juego usando ventanas ;no es claro cuando se indica la casilla y la ficha CT CROQUIS LEER END El presente trabajo se realizó con estudiantes de grado sexto del colegio John F. Kennedy, en el año 2004. Enrique Araújoviedo.
  • 24. (1) ver Trabajo y guías sobre posicionamiento de objetos en el sistema referencial. (2) ver Trabajo y guías sobre construcción de figuras a partir de una unidad base. (3) ver Trabajo y guías sobre operaciones sobre figuras y estructuras. (4) ver Trabajo y guías sobre iteración y recursión.