Documente Academic
Documente Profesional
Documente Cultură
1.
INTRODUCCIN
2.
LOGO
2.3 Instalacin
10
10
11
3. PROGRAMACIN EN MSWLogo
3.1 Primitivas
12
12
13
14
15
15
3.2 Variables
19
3.3 Procedimientos
20
23
24
27
28
29
30
31
32
33
54
69
69
69
71
74
75
76
92
92
95
95
96
97
100
102
5.1 Metodologa
102
103
105
108
109
6. BIBLIOGRAFIA
114
1. INTRODUCCIN
El objetivo fundamental de este libro es para difundir un lenguaje de programacin gratuito
como lo es LOGO, que fue creado por Seymour Papert con la idea principal de que los
nios aprendieran matemticas programando en este lenguaje.
En la actualidad nosotros podemos ver una infinidad de software orientado a la
programacin, pero todo este software que se encuentra en el mercado no es accesible para
todos los que quieran hacer uso de el por el alto costo de sus licencias, en este sentido
LOGO es un lenguaje de programacin que en todas sus versiones desarrolladas para
UNIX, Macintosh y Windows, son gratuitas y pueden ser copiadas y distribuidas sin
restricciones con fines educativos.
LOGO es uno de los pocos lenguajes con instrucciones en espaol cuya finalidad no es
ensear programacin pero debido a su fcil manejo se puede usar para ensear la mayora
de los principales conceptos de programacin.
El smbolo de LOGO es una tortuga que se mueve obedeciendo las ordenes que introduce
el programador. En algunas versiones esta tortuga a sido modificada como en el caso de
MSWLogo que se ha convertido en un triangulo.
Las rdenes o instrucciones bsicas que se le dan a la tortuga se llaman primitivas, que en
el transcurso de este libro iremos conociendo ms sobre este trmino.
En este libro se trabajara con MSWLogo, en el cual se explicara el manejo de las
herramientas ms comunes y se enfatizara de cmo se puede utilizar esta herramienta como
un nuevo recurso didctico en nuestras aulas de clase.
2. LOGO
2.1 LOGO en los centros educativos
LOGO como una herramienta para ensear a pensar puede ser de mucho provecho en los
centros educativos que se caracterizan en dar una buena educacin a sus estudiantes y esto
se debe a que LOGO no es solo una herramienta de programacin sino que es toda una
teora de aprendizaje, ya que propicia crear un clima agradable para que el estudiante
razone durante todas las etapas de la clase.
Podemos destacar tambin que LOGO permite al estudiante que durante todo el transcurso
que el se sienta a resolver un determinado problema, est desarrolle una serie de ideas para
poder llegar a la solucin, hasta llegar a formular una estrategia adecuada para lograr la
resolucin de est problema problemas similares.
Podemos decir que LOGO puede ser una herramienta que si el docente le da buen uso
puede ocasionar en el estudiante un clima de alegra y entusiasmo para seguir aprendiendo.
2.2 Caractersticas de LOGO
Logo es un lenguaje de programacin que al igual que otros posee caractersticas
especficas que lo hacen ser diferente a los dems, a continuacin presentamos algunas
caractersticas especiales de LOGO:
1. Permite que el estudiante explote su creatividad intelectual.
2. Crea en el estudiante una actitud activa y participativa permanente.
3. Permite que el estudiante no solo resuelva problemas mecanizadamente, sino que
aplique el razonamiento para solucin de ellos.
4. Permite el trabajo en equipos.
5. Se pueden crear micromundos.
6. Permite comparar los enfoques seguidos por otros grupos para la solucin de un
determinado problema.
7. Permite fomentar la autoestima de los estudiantes.
8. Fomenta la auto evaluacin.
9. Fomenta la motivacin para seguir aprendiendo.
Error! No se encuentran entradas de
ndice.
2.3 Instalacin
Como se menciono anteriormente en este libro para hablar de la programacin en LOGO se
trabajara con MSWLogo 6.5a, ya que es una de las versiones ms amigables que hay por su
entorno grafico muy bien diseado, a continuacin se presentan los pasos para su
instalacin:
1. Primero lo que se debe hacer es buscar en donde esta ubicado el instalador.
2. Cuando hace doble click sobre el instalador le aparecer esta pantalla;
Si quieres continuar con la instalacin haz click en el botn S para que aparezca el
asistente de instalacin
Para
continuar
solo
6.
En la cual se
muestran las tres
ventanas
importantes
ms
la
10
ventana de Grficos y de Trabajo, cada una de estas ventanas tiene una funcin
determinada:
Botn Men
de control
Barra de titulo
rea de trabajo
Botn
Minimiza
r
Botn
Maximizar
Barra de
desplazamiento
vertical
Barra de
desplazamiento
horizontal
11
rea de Trabajo: Es toda la parte que se encuentra limitada por los mismos bordes
de la ventana.
12
3. PROGRAMACIN EN MSWLogo
3.1 Primitivas
Las primitivas son procedimientos instrucciones bsicas que ya vienen por defecto en el
programa MSWLogo. Las primitivas se pueden escribir tanto en mayscula como en
minscula y se escriben en la parte inferior de la ventana de trabajo.
Lo importe de usar las primitivas es que se hace fcil entender la lgica y el funcionamiento
de las maquinas y conocer su comportamiento, ya que es un lenguaje sencillo y podemos
decir que casi natural el cual facilita que el estudiante comprenda lo que esta haciendo
cuando esta programando y tambin facilita la labor docente.
Existen dos tipos de primitivas: Comandos y Funciones, los comandos son primitivas que
ejecutan una accin directamente. Las funciones son primitivas que producen un resultado
que debe ser interpretado por otra primitiva o por otro procedimiento.
Por ejemplo: Borrapantalla es un comando, pues si lo ejecuto, se produce una accin
como resultado, en este caso, limpiar la ventana grfica. En cambio Suma 2 3 es una
funcin, pues si lo ejecuto produce el siguiente mensaje de error: No me has dicho qu
hacer con 5. Entiende que se trata de una suma, pero no sabe qu es lo que tiene que hacer
con el resultado. Una posibilidad sera: Escribe Suma 2 3. De esta forma, la primitiva
Suma produce un resultado, 5, y se lo entrega a la primitiva Escribe, que es un comando.
Esta primitiva sabe qu hacer con el resultado: nos lo muestra en la pantalla.
Tanto los comandos como las funciones pueden requerir el uso de parmetros para su
correcto funcionamiento. Por ejemplo: Borrapantalla no necesita ningn parmetro para
funcionar, su misin es clara. En cambio, Escribe necesita algn parmetro para funcionar,
de lo contrario no sabra qu es lo que tiene que escribir.
Los parmetros son objetos LOGO y ya los describiremos ms adelante.
Trataremos de dar explicacin a las primitivas ms comunes, de las cuales haremos algunos
ejemplos sencillos y funcionales. Lo interesante de programar en MSWLogo es que cada
vez que se escribe una orden en la ventana y al pulsar ENTER o hacer click en el botn
Ejecutar, la primitiva se ejecuta, pero lo interesante es que podemos ver la accin que hace
esa primitiva en el mismo momento que se ejecuta, pero si la primitiva esta mal escrita
entonces al momento de ejecutarse, aparece lo siguiente en la ventana de trabajo el
13
siguiente mensaje No se como, lo que significa que no puede ejecutar la accin que se
esta ordenando.
Las primitivas se pueden escribir de dos formas al momento de dar una orden:
Primitiva
Abreviatura
AVANZA 200
AV 200
RETROCEDE 150
RE 150
GIRADERECHA 90
GD 90, VIRA 90
GIRAIZQUIERDA 45
GI 45
PONLAPIZ
PLA
GOMA
GO
SUBELAPIZ
SL
BAJALAPIZ
CENTRO
BL
PONCOLORLAPIZ [ ]
Descripcin
La tortuga avanza el nmero especificado de
unidades.
La tortuga retrocede el nmero especificado de
unidades.
La tortuga gira en el sentido de las agujas del
reloj el nmero de grados especificado.
La tortuga gira en sentido contrario a las agujas
del reloj el ngulo especificado.
Pone el lpiz BAJADO y el modo PINTA
(PINTA es el modo normal de la tortuga para
dibujar).
Pone el lpiz BAJADO y el modo a
BORRA (la tortuga va borrando por donde se
mueve).
Pone el lpiz LEVANTADO, sin cambiar su
modo.
Pone el lpiz BAJADO, sin cambiar su modo.
Devuelve a la tortuga al centro de la pantalla sin
borrarla. Hay que utilizar la primitiva
SUBELAPIZ para evitar que dibuje mientras va
hacia el centro.
Pone el lpiz del color determinado de
acuerdo con:
PONCOLORLAPIZ [255 000 000] = Rojo
PONCOLORLAPIZ [000 255 000] = Verde
14
OT
MT
BP
ROTULA [HOLA]
RO [HOLA]
Abreviatura
Descripcin
MUESTRA objeto
ESCRIBE objeto
ES objeto
EDITA CONTENIDO
EDITATODO
EDITA
PROCEDIMIENTOS
EDITAPROCEDIMIENTOS
CARGA nombfichero
GUARDA nombfichero
Descripcin
Permite ejecutar una o varias instrucciones
dependiendo si se cumple la condicin
Dependiendo si se cumple una condicin ejecuta la
15
Descripcin
Comando que sale de Logo, devolviendo el control
al sistema operativo.
Para irnos familiarizando con estas primitivas ms comunes vamos a realizar algunos
ejemplos:
Ejemplo 3.1
Dibujar un cuadrado color rojo.
Esta actividad la podemos hacer de la siguiente manera:
PonColorLapiz [255 000 000]
Avanza 100
GiraDerecha 90
Avanza 100
GiraDerecha 90
Avanza 100
GiraDerecha 90
Avanza 100
16
Tambin podemos escribir este pequeo programa para hacer el cuadrado usando las
abreviaturas de las primitivas y nos va a dar el mismo resultado.
PonCL [255 000 000]
AV 100
GD 90
AV 100
GD 90
AV 100
GD 90
AV 100
Al finalizar la actividad podemos utilizar las primitivas que nos sirven para dejar en limpio
la ventana donde aparecen los dibujos y la ventana de texto hacindolo se la siguiente
manera:
Para borrar la pantalla escribimos BorraPantalla BP en su forma abreviada y para borrar
el texto escribimos BorraTexto BT en su forma abreviada y automticamente nos quedara
totalmente limpia nuestra rea de trabajo.
Ejercicio 3.1
Dibuja un cuadrado color verde y que tenga una inclinacin de 45 hacia la derecha.
Hay casos que la tortuga en este caso de MSWLogo que es un triangulo aparece oculta
entonces nosotros podemos hacer que aparezca haciendo uso de la primitiva
MostrarTortuga MT1 y si es el caso que queremos que este oculta entonces utilizamos la
primitiva OcultaTortuga OT.
Ejemplo 3.2
Hagamos el cuadrado del ejemplo 1, ahora lo que vamos hacer es que aparezca en la
ventana de grficos lo siguiente Este es un cuadrado de lneas color rojo
Para hacer que aparezca el texto hacemos lo siguiente:
Al finalizar de hacer el cuadrado, el triangulo queda en la posicin donde iniciamos pero
con direccin hacia la izquierda y escribimos lo siguiente en la ventana de trabajo:
1
17
GiraIzquierda 90
SubeLapiz
Avanza 20
GiraIzquierda 90
BajaLapiz
Rotula [Este es un cuadrado de lneas color rojo]
Recuerda las rdenes se escriben en la ventana de Trabajo. Logo muestra sus mensajes y
textos en la ventana de Textos, sus grficos los representa en la ventana de Grficos.
Si se comete un error al escribir una primitiva como por ejemplo ordenar a la primitiva una
accin incompleta, Logo enva su mensaje de error a travs de la ventana de TEXTOS.
Para comprobarlo se teclea: ESSCRIBE "HOLA; la palabra escribe se ha escrito con dos
eses; el ordenador en este caso emitir un mensaje de error en la ventana de TEXTOS. El
mensaje de error que va a parecer es: no se cmo hacer ESSCRIBE. Tambin se pueden
escribir dos ms rdenes en una misma lnea como por ejemplo:
BorraPantalla Avanza 100 GiraDerecha 90 Avanza 60 GiraIzquierda 45 Avanza 100
BP AV 100 GD 90 AV 60 GI 45 AV 100
Otra primitiva interesante y bastante til es Repite ya que nos ahorra escribir una misma
orden varias veces, utilizando el ejemplo 1 vamos a hacer el mismo cuadrado pero esta vez
utilizando la primitiva Repite.
PonCL [255 000 000]
Repite 4[Avanza 100 GiraDerecha 90]
Ejercicio 3.2
Escribe el siguiente conjunto de rdenes y escribe en la pantalla el nombre de la figura que
se forma:
REPITE 7 [AV 30 GD 360 / 7 ]
REPITE 10[AV 5 GD 90 AV 20 GD 90 AV 5 GI 90 AV 20 GI 90]
18
Ejercicio 3.3
Realiza la siguiente actividad
Hasta aqu hemos visto como podemos utilizar las primitivas ms comunes, para
familiarizarte ms puedes hacer las actividades que vienen en el CD2 de ejercicios.
3.2 Variables
Una variable es un dato, que tiene un nombre, y que puede tomar distintos valores.
El concepto de variable es muy importante que como usuarios de Logo lo entendamos muy
bien, para explicar este concepto primero miremos este ejemplo:
Se tiene una lista de 5 personas que se van a estar utilizando constantemente, pero no
se quiere estar escribiendo el nombre de esas 5 personas entonces puedo crear un
documento que se llame lista y cada vez que se necesite escribir el nombre de las cinco
personas lo nico que se tiene que hacer es escribir lista y aparecern los 5 nombres de
las cinco personas.
En MSWLogo para asignar un valor a una variable se utiliza la primitiva HAZ seguida del
nombre de la variable y del valor que se le quiere dar a la variable, el nombre de la variable
debe ir precedida entre comillas ( ) y la sintaxis es la siguiente:
HAZ nomVar Valor
Una variable puede llevar cualquier nombre siempre y cuando no sea un nombre de una
primitiva que ya esta definida en MSWLogo.
Ejemplos de asignacin de valor a una variable:
Ejemplo 3.2.1
Haz nombre [Me gusta la clase de Programacin en LOGO]
Para hacer el llamado de una variable que ya se le asigno un valor se hace lo siguiente:
2
En el CD estarn todas las actividades que se hacen en clases ya desarrolladas y tambin habrn ejercicios
propuestos para que el estudiante pueda estudiar solo.
19
3.3 Procedimientos
20
Luego se irn introduciendo en esta ventana una a una las sentencias de las que
consta el procedimiento y se ir pulsando el botn OK. Para terminar con la
definicin del procedimiento se introducir la primitiva
FIN.
2) Utilizar la Ventana de Edicin: para acceder a la Ventana de Edicin se usar la
primitiva EDITATODO o en el men Archivo - Editar. Adems de definir
procedimientos, en la ventana de edicin se pueden definir variables, propiedades,
comentarios, etc. Cuando se ha acabado de definir el procedimiento se guardar en
la opcin del men Archivo - Guardar.
21
Es necesario saber que los procedimientos que se crean solo se pueden estar utilizando
siempre y cuando no se salga de MSWLogo, si los quiere utilizar otra vez que entre a
MSWLogo tiene que guardarlos y esto lo puede hacer de la siguiente manera:
Desde la barra de men teniendo activa la ventana de EDICIN: Se elige la opcin
Guardar en rea de trabajo dentro del men ARCHIVO. Cuando aparece la ventana de
dilogo adjunta, se escribir el nombre con el que se quiera guardar el conjunto de
procedimientos. Conviene sealar que los archivos de procedimientos, tienen por defecto la
extensin LOG. Destacar que no se guarda cada procedimiento en un archivo, sino que todo
el trabajo definido durante una sesin de MSWLogo se guarda junto en el mismo archivo.
Ejemplo 3.3.1
Vamos hacer un procedimiento para hacer un triangulo equiltero, para eso hacemos lo
siguiente:
Para Triangulo
GD 90
Repite 3[AV 100 GI 120]
Fin
Para ver como queda el tringulo lo que tenemos que hacer es escribir el nombre que le
hemos dado al procedimiento en este caso Triangulo en la ventana de trabajo y
automticamente aparecer dibujado el tringulo en la ventana de grficos.
22
Ejemplo 3.3.2
Sigamos trabajando con los procedimientos, ahora digamos que yo quiero un tringulo pero
quiero que cada vez que de la orden de hacer el tringulo pueda escribir el tamao que lo
quiero para eso entonces vamos hacer lo siguiente:
Para Triangulo2 :longitud
repite 3[av :longitud gd 120]
Fin
En este ejemplo lo que hicimos fue crear un procedimiento con una variable, la variable es
longitud que es la que toma el valor del tamao que se le quiere dar al tringulo, si
queremos probar cual es el resultado escribimos en la ventana lo siguiente triangulo2
150 y automticamente se dibujara un tringulo de 150 de tamao, puedes probar con
otros tamaos.
Ejemplo 3.3.3
Ahora utilizando el ejemplo anterior vamos hacer un procedimiento que se va a llamar
figura hagamos lo siguiente:
Para Figura
Repite 3[Triangulo2 150 GD 120]
Fin
La figura esperada es la que aparece en la imagen.
3.4
Uso
de
Variables Globales
23
Las variables pueden ser comparadas con cajas a las que se les pone una etiqueta (nombre)
y en cuyo interior existe un contenido. Una variable, por ejemplo, puede llamarse HOLA y
contener el nmero 34; otra puede llamarse PREUFOD y contener la palabra Informtica
Educativa. De este modo, al ejecutar la orden de escribir el contenido de HOLA, el
ordenador escribe 34, de la misma manera que si se le mandase escribir el contenido de
PREUFOD escribira Informtica Educativa.
3.4.1 Las variables en el modo directo:
Sitate en la ventana de trabajo.
Escribe:
HAZ "PREUFOD " Informtica Educativa
Pulsa [INTRO].
Mediante la instruccin anterior se ha creado la variable PREUFOD y se le ha asignado
como contenido la palabra Informtica Educativa.
Escribe:
ESCRIBE : PREUFOD
Pulsa [INTRO].
En la ventana de textos, aparece escrito el contenido de la variable BARCO, en este caso
Informtica Educativa. Conviene destacar que para conocer el contenido de una variable, es
necesario escribir la instruccin ESCRIBE : "nombrevar, donde nombrevar es el nombre
de la variable:
Prueba el siguiente ejemplo:
HAZ "h 66
ESCRIBE :h+9
HAZ "NOMBRE contenido
Puntos Importantes para la creacin de variables globales:
24
Un nmero
Una serie de datos introducidos desde teclado durante la ejecucin del programa por
medio de ciertas primitivas.
26
Ejemplo 3.4.5
PARA Ejemplo5
ES [En que universidad estudias?:]
HAZ "X LCS 4
ES :X
FIN
Ejemplo 3.4.6
PARA Ejemplo6
ES [En que universidad estudias?:]
HAZ "X LP
ES :X
FIN
Ejemplo 3.4.7
PARA Ejemplo7
ES [En que universidad estudias?:]
HAZ "X LL
ES :X
FIN
3.5 Recursividad
Se llama recursividad a la posibilidad que ofrece un programa diseado en Logo de
llamarse a s mismo en un bucle sin fin. Un sencillo ejemplo lo constituye el siguiente
programa, que dibuja una circunferencia de modo recursivo:
PARA CRECUR
27
AV 1
GD 1
CRECUR
FIN
Un primer problema por resolver en un procedimiento recursivo, es encontrar la forma de
abandonar su ejecucin infinita de procedimiento sin pulsar la tecla [ESC]. Se puede
abandonar dicha ejecucin mediante la primitiva TECLA en una condicin.
3.5.1 Sentencias condicionales
Logo puede "valorar" el contenido de una condicin y "decidir" entre dos opciones. Para
dejar claros estos conceptos se utilizar la primitiva TECLA, que devuelve CIERTO o
FALSO segn se haya pulsado o no una tecla.
El programa CIREC queda controlado al anteponer el condicional SI a la primitiva TECLA
Ejemplo
PARA ARCO
SI TECLA? [ALTO]
AV 1
GD 1
ARCO
FIN
Este programa va dibujando un arco con avances y giros hasta que se pulse una tecla.
La sentencia condicional se expresa con la primitiva SI y tiene varias sintaxis; las dos ms
usadas son:
SI condicin [accin 1] [accin 2]
28
Esta sentencia significa que, si se cumple la condicin, se ejecutan las acciones contenidas
en el primer corchete y, en caso contrario, las incluidas en el segundo. En ambos casos, una
vez realizadas todas las acciones incluidas en uno de los corchetes, el programa ejecuta la
lnea siguiente del programa.
SI condicin [accin]
En este caso, si se cumple la condicin, se ejecutan las acciones contenidas en el corchete;
despus el programa pasa a la lnea siguiente; si no se cumple la condicin, el programa
pasa a la lnea siguiente.
3.5.2 Control de la recursividad por medio de un contador
Ejemplo:
PARA CONTADOR :N
SI :N<0 [ESCRIBE "GOL ALTO]
ES :N
CONTADOR :N-1
FIN
El programa contiene una variable local :N que slo sirve para escribir su contenido cada
vez que el programa se ejecuta. El programa se llama a s mismo y hace disminuir el valor
de la variable en cada paso. La sentencia condicional de la primera lnea controla la ruptura
del bucle en el momento en que se llega a un valor negativo, se escribe la palabra GOL y se
detiene el programa. Obsrvese que la comparacin numrica entre el contenido de la
variable y la constante no se ha hecho con el signo = sino con el signo < ya que, si el
incremento se hiciera con decimales (CONTADOR :N-0, 3), nunca se cumplira la
condicin y el bucle sera indefinido.
Vamos a realizar un procedimiento que genere un cuadrado de lado 100 y se rellene de
negro.
Llama a este procedimiento CUADRONEGRO.
PARA CUADRONEGRO
29
30
31
32
Para por
Haz numero1 10
Haz numero2 42
Haz resultado :numero1 * :numero2
BP GD 90
Rotula [10 x 42 = ]
AV 90
33
Rotula :resultado
FIN
Es importante que comprendas la diferencia entre el nombre de una variable y el valor de
esa misma variable. Por ejemplo:
rotula hola
producir
hola
rotula [hola]
producir
hola
rotula :hola
producir
79
rotula hola * 2
producir
error
rotula :hola * 2
producir
158
haz hola 79
34
SL OT
Ponpos [-500 0]
GD 90
Bajalapiz Avanza 100 Subelapiz Avanza 100
Bajalapiz Avanza 100 Subelapiz Avanza 100
Bajalapiz Avanza 100 Subelapiz Avanza 100
Bajalapiz Avanza 100 Subelapiz Avanza 100
Bajalapiz Avanza 100 Subelapiz Avanza 100
Ponpos [0 0]
GI 90
MT
Fin
5. Haz un procedimiento, llamado hexagono, que dibuje un hexgono de lado 120, con
grosor 3 y de color marrn (8) sobre fondo carmin (12).
Para hexagono
BP BL
Poncp 12
Poncl 8
Pong [3 3]
Repite 6 [av 120 gd 60]
OT
Fin
6. Haz un procedimiento llamado <dodecaedro> que dibuje un dodecgono de lado 40, con
grosor 2 y de color azul (1) sobre fondo amarillo (6)
Para dodecaedro
BP BL
Poncp 14 Poncl 1 Pong [2 2]
35
36
37
38
39
40
Ponpos [30 0]
Rotula :num1 + :num2 ; calcula la suma y la presenta
Fin
Observa que, si intentas sumar nmeros largos, se producen problemas al rotular cada una
de las partes del mensaje de salida. Si quieres que la presentacin del resultado sea ms
elegante, en una sola lnea de cdigo y sin tener que preocuparte de cunto espacio
necesitas para cada cifra, puedes conseguirlo utilizando la primitiva lista. El procedimiento
sumar quedara as:
Para sumar
BP GD 90 OT SL BT
Ponpos [-200 0]
Rotula [Qu nmeros quieres sumar?]
Haz "num1 leepalabra
Haz "num2 leepalabra
BP GD 90
Ponpos [-200 0]
Rotula (lista "La "suma "de :num1 "+ :num2 "= :num1+:num2)
Fin
18. Haz un procedimiento llamado identidad, capaz de preguntarte tu nombre y luego
saludarte escribindolo en la pantalla.
Para identidad
BP GD 90 OT SL BT
Rotula [Cul es tu nombre y apellidos?]
Haz "napel leelista
BP GD 90
Rotula [Hola! ]
Ponpos [70 0] rotula :napel
Fin
41
19. Haz un procedimiento con el nombre inicial, que pregunte tu nombre y responda cul
es la letra inicial de tu nombre.
Para inicial
BP OT SL GD 90
Rotula [Cul es tu nombre?]
Haz "letra primero leepalabra
BP GD 90
Ponpos [-100 0]
Rotula [Tu nombre empieza por ]
Ponpos [125 0]
Rotula :letra
Fin
20. Escribe un procedimiento capaz de convertir dlares a lempiras.
Para lempiras
BP GD 90 SL OT
Ponpos [-200 0]
Rotula [De cuntos dlares se trata?]
Haz dolares primero leelista
Haz lempiras :dolares *19.02
BP GD 90
Ponpos [-200 0] Rotula :dolares
Ponpos [-150 0 ] Rotula [Dlares son: ]
Ponpos [-40 0] Rotula :lempiras
Ponpos [60 0] Rotula [Lempiras.]
Fin
Del mismo modo que hicimos en el procedimiento sumar, podemos resolver la
presentacin del resultado en una nica lnea de cdigo con la primitiva lista:
42
Para lempiras
BP GD 90 SL OT
Ponpos [-200 0]
Rotula [De cuntos dlares se trata?]
Haz "dolares primero leelista
Haz "lempiras :dolares * 19.02
BP GD 90
Ponpos [-200 0] Rotula (lista :dolares "Dlares "son: :lempiras "Lempiras)
Fin
21. Haz un procedimiento, con el nombre de trigo, que nos pida el valor de un ngulo y nos
devuelva el seno, el coseno y la tangente en la ventana de trabajo.
Para trigo
BT ; borra la pantalla de trabajo
Haz "valor leepalabra
Escribe (lista ngulo: :valor grados)
Escribe (lista Su seno es: sen :valor)
Escribe (lista Su coseno: cos :valor)
Escribe (lista Y su tangente: tan :valor)
Fin
22. Haz un procedimiento que nos pida un nmero con decimales y nos devuelva la parte
entera del mismo, el nmero redondeado y su raz cuadrada, en la ventana de trabajo.
Para numeros
BT
Escribe [ESCRIBE UN NUMERO CON DECIMALES]
Haz "valor leepalabra
Escribe (lista "NUMERO "SOLICITADO: :valor)
43
44
BT
Repite 8 [haz "num1 azar 4
Escribe :num1+2]
Fin
26. Por ejemplo, escribe un procedimiento llamado num :bajo :alto, que muestre una vez
cada segundo un nmero elegido al azar, entre dos cifras lmite.
Para num :bajo :alto
BT
Haz "lapso :alto-:bajo
Haz "num1 azar :lapso+1
Escribe :bajo+:num1
Espera 60
num :bajo :alto
Fin
Puedes detener la ejecucin del procedimiento tecleando Alto en la botonera del rea de
comandos.
27. Otro ejemplo: hagamos un procedimiento que dibuje una lnea en zigzag,
indefinidamente:
Para zigzag
Ponrumbo 45
AV 50 GD 90
AV 50 GI 90
Espera 10
zigzag
Fin
45
28. Haz un procedimiento llamado tabasci, que genere una tabla entre el 0 y el 255 en la
que aparezca el valor decimal y su correspondiente cdigo ASCII. Se mostrar en la
ventana de trabajo.
Para tabasci
BT ; Borra la pantalla de trabajo
Haz "x 0 ; Crea un contador y lo pone a 0
Repite 255 [escribe (lista :x caracter :x)c ; Escribe un nmero y el carcter
Haz "x :x+1] ; equivalente en ascii
Fin
29. Escribe ahora un procedimiento que nos pida una letra y devuelva su cdigo ASCII en
la pantalla.
Para traduce
BT ; borra la pantalla de trabajo
Escribe [INTRODUCE UNA LETRA EN LA VENTANA]
Haz "valor leepalabra
BT
Escribe (lista "LETRA: :valor)
Escribe (lista "Su "valor "ASCII "es: ascii :valor)
Fin
30. Haz un procedimiento llamado numpos que nos pida un nmero. Si el nmero que
introducimos es positivo se mostrar su raz cuadrada. Si es negativo no debe calcularlo, ya
que dara un error.
Para numpos
BT
Escribe [INTRODUCE UN NMERO EN LA VENTANA]
Haz "valor leepalabra
46
BT
Escribe (lista "El "nmero "es: :valor)
Si :valor>0 [escribe (lista "Su "raiz "cuadrada "es: rc :valor)]
Fin
La primitiva si tambin permite ordenar al programa que ejecute una accin u otra, en
funcin de que una condicin se cumpla o no. En este caso, la sintaxis de la primitiva si es
la siguiente: si condicin [accion1] [accion2]
Si la condicin es verdadera ejecutar la accin1. Si la condicin es falsa ejecutar la
accin 2. Por ejemplo:
31. Escribe un procedimiento, llamado posneg, que nos pida un nmero. Si el nmero que
introducimos es positivo se mostrar su raz cuadrada. Si es negativo se escribir un
mensaje que diga "NO SE PUEDE CALCULAR LA RAIZ DE UN NEGATIVO".
Para posneg
BT
Escribe [INTRODUCE UN NMERO EN LA VENTANA]
Haz "valor leepalabra
BT
Escribe (lista "El "nmero "es: :valor)
Si :valor>0 [escribe (lista "Su "raiz "cuadrada "es: rc :valor)] [escribe (lista "No
"tiene "raiz, "es "un "nmero "negativo)]
Fin
La sintaxis de la primitiva si exige que las dos acciones estn en la misma lnea de cdigo.
Hay una primitiva que se comporta de un modo semejante: se llama sisino. Su sintaxis es
similar: sisino condicin [accion1] [accion2]
32. Escribe un procedimiento, llamado santiago, que formule una pregunta y que informe
si la respuesta es correcta o no lo es.
47
Para santiago
BT BP SL OT GD 90 Poncp 14
Ponpos [-50 100]
Rotula [De qu color es el caballo blanco de Santiago?]
Haz "respuesta leepalabra
Limpia Ponpos [-50 100]
Sisino :respuesta="blanco [Rotula (lista "!Muy "bien!! "Acertaste! " "Es "blanco)]
[Rotula (lista "Cunto "lo "siento!! "Fallaste. " "No "es :respuesta)]
Fin
33. Escribe un procedimiento llamado logica, que nos pida dos nmeros. Si los dos
nmeros son mayores de 100, nos devolver la suma de ambos. Si es alguno de ellos es
igual o menor que 100 nos devolver un mensaje de error.
Para logica
BP GD 90 SL OT Ponpos [-200 0]
Rotula (lista "Introduce "dos "nmeros "mayores "que "100)
Haz "num1 leepalabra
Haz "num2 leepalabra
BP GD 90 Ponpos [-200 0]
Sisino y :num1>100 :num2>100 [Rotula (lista "La "suma "de :num1 "y :num2 "es:
:num1+:num2)] [rotula (lista "Error!!! "Uno "de "los "dos "nmeros "es "menor
"que "100)]
Fin
La funcin lgica o evala varias expresiones. Devuelve el valor cierto si alguna de las
expresiones evaluadas tienen el valor cierto y devuelve el valor falso si todas las
expresiones son falsas. Su sintaxis es como sigue: o expresion1 expresion2 si debe evaluar
2 expresiones (o expresion1 expresion2 expresion3 ...) si debe evaluar ms de 2 expresiones
48
34. Para comprenderlo, vamos a redactar un procedimiento llamado logica2 que nos pida
dos nmeros, uno de los cuales debe ser mayor que 500. Si uno o los dos nmeros son
mayores que 500, nos devolver la suma de ambos. Si los dos nmeros son iguales o
menores que 500, nos devolver un mensaje de error.
Para logica2
BP GD 90 SL OT Ponpos [-200 0]
Rotula (lista "Introduce "dos "nmeros. "Uno "de "ellos "debe "ser "mayor "que
"500)
Haz "num1 leepalabra
Haz "num2 leepalabra
BP GD 90 Ponpos [-200 0]
Sisino o :num1>500 :num2>500 [rotula (lista "La "suma "de :num1 "y :num2 "es:
:num1+:num2)] [rotula (lista "Error!!! "Ambos "nmeros "son "menores "que
"500)]
Fin
La primitiva bity devuelve el resultado de aplicar la funcin lgica Y sobre dos o ms
nmeros, que deben ser nmeros enteros. Su sintaxis es como sigue:
bity numero1 numero2
Si debe hacer el clculo con 2 nmeros
(bity numero1 numero2 numero3 ...)
Si debe calcularlo con ms de 2 nmeros
La primitiva bito devuelve el resultado de aplicar la funcin lgica O sobre dos o ms
nmeros enteros. Su sintaxis es similar a la de la primitiva bity.
35. Para practicarlo, escribe un procedimiento llamado funcionyo, que nos pida dos
nmeros enteros y nos devuelva el resultado de hacer la funcin lgica <Y> entre ellos, y la
funcin lgica <O>.
49
Para funcionyo
BP GD 90 SL OT
Ponpos [-50 0]
Rotula (lista "Introduce "dos "nmeros "enteros.)
Haz "num1 leepalabra
Haz "num2 leepalabra
BP GD 90
Ponpos [-50 0]
Rotula (lista "Los "nmeros "introducidos "son: :num1 "y :num2)
Ponpos [-50 -20]
Rotula (lista "El "resultado "de "aplicar "la "funcin "Y "es: bity :num1 :num2)
Ponpos [-50 -40]
Rotula (lista "El "resultado "de "aplicar "la "funcin "O "es: bito :num1 :num2)
Fin
La primitiva prueba evala una expresin y recuerda si el resultado ha sido cierto o falso,
para que luego puedan utilizarlo las otras dos primitivas: sicierto, que puede abreviarse
como sic y sifalso, que puede abreviarse como sif.
La sintaxis del conjunto es como sigue:
prueba expresion
sic [acciones a realizar]
sif [acciones a realizar]
36. Veamos un ejemplo, con un procedimiento, llamado sorteo50 que genera un nmero
aleatorio entre el 0 y el 100. Si el nmero generado es menor que 50 aparecer un mensaje
indicndolo. Si el nmero es igual o mayor que 50 aparecer otro mensaje que nos lo
indica.
Para sorteo50
BP GD 90 SL OT
Haz "num azar 100
50
Ponpos [-50 0]
Rotula (lista "El "nmero "agraciado "es: :num)
Ponpos [-50 -20]
Prueba :num<50
Sic [Rotula (lista "que "es "menor "que "50)]
Sif [Rotula (lista "que "es "mayor "que "50)]
Fin
Un bucle en un programa es una parte del mismo que se ejecuta repetidamente un nmero
determinado de veces. Este nmero puede ser fijo o depender de determinadas
circunstancias.
Las primitivas mientras y hasta dirigen la ejecucin de una o varias instrucciones mientras
una expresin sea cierta. Su sintaxis es como sigue:
mientras [expresion] [instrucciones]
hasta [expresion] [instrucciones]
Lo primero que hacen es evaluar si la expresin da como resultado cierto, por lo que las
instrucciones podran no ejecutarse nunca si la evaluacin de las expresiones arrojase como
resultado falso.
37. Por ejemplo, haz un procedimiento, llamado tablamul, que genere un nmero aleatorio
entre el 0 y el 30. Una vez elegido ese nmero, el programa debe presentarlo en la pantalla
y, adems, presentar en la ventana de texto la tabla de multiplicar por 7, desde el 0 hasta el
nmero generado al azar.
Para tablamul
BP BT GD 90 SL OT
Haz "num azar 30 ;elige un nmero al azar menor que 30
Rotula (lista "Nmero "elegido: :num)
Escribe (lista "TABLA "DEL "SIETE "DE "0 "A :num)
Escribe [ ] ;lnea en blanco
51
52
53
54
55
borraventana primera
Para saber ms sobre la sintaxis de las ventanas consulta la ayuda.
44. Puedes crear textos estticos, en el interior de una ventana, que se mueven con ella.
Por ejemplo, si est creada y activa la ventana primera y tecleas
creaestatico primera texto1 PAN 5 20 15 9
Vers aparecer un texto en la ventana primera, llamado texto1, que contiene la palabra
(PAN), est situado en las coordenadas (5 20) desde la esquina superior izquierda de la
ventana y tiene un tamao de (15 9).
Vamos a introducir un nuevo texto esttico con la orden:
creaestatico primera texto2 SARDINAS ASADAS 5 30 15 9
Observars que las nuevas coordenadas (5 30) son adecuadas, pero las dimensiones del
texto son insuficientes y debers aumentarlas, por lo menos, hasta (65 9)
45. Para borrar los textos estticos debes emplear las rdenes:
borraestatico texto1
borraestatico texto2
56
BP GD 90 OT SL
Ponpos [-100 100]
Rotula [Introduce dos nmeros]
Haz "num1 leepalabra
Haz "num2 leepalabra
Haz "resul :num1 * :num2
BP
Creaventana "root "calculo [ Resultado del producto: ] 200 150 100 40 []
Creaestatico "calculo "resul1 :num1 5 5 20 10
Creaestatico "calculo "resul2 [x] 25 5 10 10
Creaestatico "calculo "resul3 :num2 35 5 20 10
Creaestatico "calculo "resul4 [=] 55 5 10 10
Creaestatico "calculo "resul5 :resul 65 5 20 10
Fin
Si te fijas, la posicin de cada uno de los textos estticos est calculada para nmeros de
tamao medio. Pero, tanto si se introducen nmeros muy pequeos, como si los nmeros
son muy grandes, las coordenadas fijas de los textos producen una presentacin pobre y
desajustada.
La presentacin mejora al reemplazar las cinco primitivas creaesttico por una sola lnea
de cdigo que llama a una lista:
Para resultado
BP GD 90 OT SL
Ponpos [-100 100]
Rotula [Introduce dos nmeros]
Haz "num1 leepalabra
Haz "num2 leepalabra
Haz "resul :num1 * :num2
BP
Creaventana "root "calculo [Resultado del producto:] 200 150 100 40 [ ]
57
58
48. Haz un procedimiento, con el nombre ven3boton, que dibuje en pantalla una ventana
con tres botones. Al pulsar el primero aparecer un mensaje en la misma ventana que diga
pulsado. Al pulsar el segundo se dibuja un donut en la ventana grfica y el texto del botn
cambia a DONUT. Al pulsar el tercero se cierra la ventana con todo su contenido.
Para ven3boton
Creaventana " "nueva [Ventana con tres botones] 170 50 190 70 [ ]
Creaboton "nueva "primero [Pulsar] 15 30 40 20 [boton1]
Creaboton "nueva "segundo [Arrancar] 67 30 50 20 [boton2]
Creaboton "nueva "tercero [Cerrar] 130 30 40 20 [borraventana "nueva poncp 7]
Fin
Para boton1
Creaestatico "nueva "boton1 [PULSADO] 17 10 35 15
Fin
Para boton2
Actualizaboton "segundo [DONUT]
Donut 50
OT
Fin
Fjate qu ahorro! En el tercer botn se incluye ya el cdigo de lo que debe hacer al ser
pulsado: borrar la ventana. No es necesario un procedimiento adicional.
Una barra de desplazamiento es un objeto que tiene un cursor que puede desplazarse
mediante el ratn, para dar diversos valores a una variable.
49. Escribe un procedimiento que cree una ventana, llamada tercera, en la que haya un
botn para cerrarla y una barra de desplazamiento.
59
Para tercera
Creaventana " "tercera [Mi primera barra deslizante] 200 50 140 60 [ ]
Creabarradesplazamiento "tercera "cien 30 10 80 10 [ ]
Ponbarradesplazamiento "cien 0 100 50
Creaboton "tercera "close [Cerrar] 55 25 30 20 [borraventana "tercera]
Fin
Observa que la longitud de la ventana (140) ha de ser suficiente para que quepa el ttulo
(Mi primera barra deslizante) y la barra, que mide 80 de largo. La altura de la ventana ha de
bastar para que quepan tanto la barra (80 x 10) como el botn (30 x 20). Las coordenadas
de la posicin del botn y de la barra pretenden que queden centrados en la ventana.
Comprueba que puedes mover el cursor con el ratn y que puedes cerrar la ventana.
50. Aplica lo que has aprendido, escribiendo un procedimiento llamado venbar, que dibuje
en pantalla una barra de desplazamiento dentro de una ventana. La barra tendr un rango de
valores entre 50 y 250. Cada vez que se mueva se debe visualizar en la ventana el valor de
su posicin y su raz cuadrada. Tendremos, adems, un botn que sirva para cerrar la
ventana.
Para venbar
Creaventana " "ultima [Calculadora automtica de raices] 150 70 180 70 [ ]
Creaestatico "ultima "estat [150] 140 10 20 15
Creaestatico "ultima "estat1 [Su raiz cuadrada es:] 15 30 70 10
Creaestatico "ultima "estat2 raizcuadrada 150 35 40 30 10
Creabarradesplazamiento "ultima "barra 15 10 110 10 [leebarra]
Ponbarradesplazamiento "barra 50 250 150
Creaboton "ultima "primero [Cerrar] 125 30 40 20 [borraventana "ultima]
Fin
La barra de desplazamiento adoptar el valor inicial de 150 (en el centro de su recorrido).
Por lo tanto, el esttico estat2 deber tener como valor inicial la raz cuadrada de 150
60
61
52. Escribe un procedimiento que pregunte al usuario, mediante una ventana de dilogo,
cuntos das faltan para su cumpleaos:
Para faltan
Creaestatico "cumple "fecha [180] 155 10 20 15
Creabarradesplazamiento "cumple "deslizadias 15 10 130 10 [haz "dias leebarraDesplazamiento "deslizadias actualizaestatico "fecha :dias]
Ponbarradesplazamiento "deslizadias 0 365 180
Creaboton "cumple "ok [Aceptar] 70 30 40 20 [borradialogo "cumple]
Fin
Y teclea a continuacin:
Creadialogo " "cumple [Cuntos dias faltan para tu cumpleaos?] 120 60 180
70 [faltan]
Para practicar introduce alguna novedad de tu propia cosecha. Por ejemplo, que rotule al
cerrar el dilogo, sobre una pantalla roja y con letras grandes, cuntos das faltan.
Un botn radio es un objeto que permite seleccionar una opcin con dos estados: verdadero
(botn seleccionado) o falso (botn no seleccionado).
Todos los botones radio, que se corresponden con cada una de las opciones que se
presentan al usuario, deben estar asociados en un grupo o groupbox.
53. Para practicar, escribiremos el cdigo de una ventana llamada cuarta, en la que el
usuario deber elegir su rango de edad seleccionando uno de los botones radio que se
presentan reunidos en un groupbox.
Para edad
Creaventana " "cuarta [Seleccione su grupo de edad] 200 50 115 65 [ ]
Creagroupbox "cuarta "marco 5 5 65 40
62
63
64
55. Haz un procedimiento, llamado vencom, que dibuje en una ventana un grupo con tres
botones de tipo checkbox. Cada uno tendr como etiqueta un nmero. Cuando pulsemos un
botn aparecer un mensaje indicando el estado de cada uno de ellos.
Tendr, adems, otro botn que permita cerrar la ventana.
Para vencom
Creaventana " "ultima [Ventana con casillas de comprobacin] 150 70 180 90 [ ]
Creagroupbox "ultima "grupo 10 5 160 50
Creacheckbox "ultima "grupo "boton1 [Primero] 15 15 45 10
Creacheckbox "ultima "grupo "boton2 [Segundo] 15 25 45 10
Creacheckbox "ultima "grupo "boton3 [Tercero] 15 35 45 10
Creaboton "ultima "comprobar [COMPROBAR] 15 60 60 15 [comprueba]
Creaboton "ultima "cerrar [CERRAR] 120 60 40 15 [borraventana "ultima]
Creaestatico "ultima "estat1 [Desactivado] 100 15 60 10
Creaestatico "ultima "estat2 [Desactivado] 100 25 60 10
Creaestatico "ultima "estat3 [Desactivado] 100 35 60 10
Fin
Para comprueba
Haz "x estadocheckbox "boton1
sisino :x= "verdadero [actualizaestatico "estat1 [Activado]] [actualizaestatico "estat1 [Desactivado]]
Haz "x estadocheckbox "boton2
sisino :x= "verdadero [actualizaestatico "estat2 [Activado]] [actualizaestatico "estat2 [Desactivado]]
Haz "x estadocheckbox "boton3
sisino :x= "verdadero [actualizaestatico "estat3 [Activado]] [actualizaestatico "estat3 [Desactivado]]
Fin
65
Un objeto listbox es una caja de texto, que contiene una lista de opciones entre las que el
usuario puede elegir una.
56. Haz un procedimiento llamado venmenu que dibuje en una ventana un men de
opciones mediante listbox. Dicho men tendr 5 opciones: CIRCULO, CUADRADO,
TRINGULO, PENTGONO y HEXGONO. Cuando pulsemos un botn se dibujar la
figura seleccionada en el men. Con otro botn podremos borrar la pantalla grfica. Tendr,
adems, otro botn que permita cerrar la ventana.
Para venmenu
creaventana " "ultima [Trazado de polgonos] 300 250 180 90 []
crealistbox "ultima "menu "10 10 100 30
aadecadenalistbox "menu [CIRCULO ROJO]
aadecadenalistbox "menu [CUADRADO AZUL]
aadecadenalistbox "menu [TRIANGULO VERDE]
aadecadenalistbox "menu [PENTAGONO AMARILLO]
aadecadenalistbox "menu [HEXAGONO VIOLETA]
creaboton "ultima "calcular [DIBUJAR] 120 20 40 15 [dibujar]
creaboton "ultima "cerrar [ACABAR] 120 50 40 15 [borraventana "ultima]
creaboton "ultima "borrar [BORRAR] 60 50 40 15 [bp]
Fin
Para dibujar
Haz "x leeseleccionlistbox "menu
si :x=[CIRCULO ROJO] [arorojo]
si :x=[CUADRADO AZUL] [cuadroblue]
si :x=[TRIANGULO VERDE] [triverde]
si :x=[PENTAGONO AMARILLO] [pentaillo]
si :x=[HEXAGONO VIOLETA] [hexaviol]
Fin
66
Para arorojo
arcodeelipse 360 120 120 0 sl poccr 4 gd 10 av 10 rellena bl ot
Fin
Para cuadroblue
Repite 4 [av 200 gd 90] sl poccr 1 gd 10 av 10 rellena bl ot
Fin
Para triverde
Repite 3 [av 220 gd 120] sl poccr 10 gd 10 av 10 rellena bl ot
Fin
Para pentaillo
Repite 5 [av 150 gd 72] sl poccr 6 gd 10 av 10 rellena bl ot
Fin
Para hexaviol
Repite 6 [av 120 gd 60] sl poccr 13 gd 10 av 10 rellena bl ot
Fin
Un objeto combobox es un objeto compuesto por una lista, en la que el usuario puede
elegir una de las opciones que ofrece, y una ventana de texto en la que el usuario puede
introducir una expresin que no est en la lista.
Para crear un combobox hay que utilizar la sintaxis siguiente:
creacombobox ventana nombre Titulo posx posy largo alto
Una vez creado, podemos aadir el texto de las opciones que se ofrecen en la lista:
aadelineacombobox nombre [expresion 1]
aadelineacombobox nombre [expresion 2]
A continuacin, designamos cul de las opciones aparecer seleccionada por defecto al
crearse el combobox
pontextocombobox nombre [expresion x]
67
68
69
70
Dibujar una cruz en el centro de la pantalla lo ms grande posible pero sin salirse
por los laterales.
Organizar un juego en el que un miembro del grupo acte de tortuga (puede llevar
una flecha que indique la direccin y el sentido de su posicin).
El equipo ir dando rdenes LOGO en las que los cuadros del papel coincidan con
las baldosas de la clase.
72
Sabemos que LOGO OFRECE la posibilidad de repetir una orden o modificarla con slo
subir el cursor a la lnea ya ejecutada y volver a pulsar [INTRO]. Podemos presentar a
nuestro alumnado esta propiedad de LOGO escribiendo en la pizarra el nombre de una
orden incorrectamente, como SUBE LAPIZ.
Una vez escrita y ejecutada, nos aseguraremos de que lean el mensaje de error. Subirn el
cursor y modificarn la orden suprimiendo el espacio intermedio y comprobando, despus
de pulsar [INTRO], que aparentemente tampoco pasa nada, (no aparece tampoco mensaje
de error). Ser, pues, al ordenar el movimiento de la tortuga, cuando apreciarn por medio
de esta primitiva que la tortuga puede desplazarse sin dejar rastro. La primitiva opuesta
podrn deducirla por s mismos, as como GOMA, instrumento de uso cotidiano.
Dentro de las posibilidades de edicin inmediata que nos ofrece LOGO, advertiremos que
se pueden escribir varias rdenes separadas por espacios dentro de una misma lnea, que no
tiene por qu acabar en el extremo de la ventana. Propondremos como ejemplo la sucesin
AV 50 GD 90 de modo que, al repetirla cuatro veces, consigan un cuadrado.
Usando el modo directo y subiendo el cursor para repetir o modificar rdenes,
propondremos los siguientes ejercicios:
Trazar una lnea quebrada espiral desde el centro de la ventana, de modo que no se
corte a s misma.
Realizar una espiral doble que, una vez se ha alejado del centro intente regresar por
el pasillo que ha dejado el trazo anterior.
Dibujar una espiral quebrada cuadrada con una sucesin de avances que aumenten
la longitud de los lados.
74
La necesidad de simplificar las rdenes para visualizar rpidamente los errores; as,
dos avances seguidos se transforman en su suma; dos giros opuestos se anulan;
antes retroceder que girar 180.
75
Sera positivo que la dinmica del trabajo de cada grupo permitiera recoger, en el cuaderno
de trabajo de los distintos equipos, las sucesivas creaciones, ensayos y errores para
aprender de sus propios fallos. El profesor o la profesora, en consecuencia, debiera aparecer
como un reconductor que ayuda a relativizar los fallos y encauza la actividad y el debate
dentro del grupo para que sea ste quien alcance sus objetivos.
4.6 Recursos Metodolgicos Para Plantear Los Procedimientos Logo En El Aula.
4.6.1 Algunas sugerencias para proponer el aprendizaje de procedimientos LOGO
A lo largo de las sesiones que habremos dedicado al modo directo con nuestros alumnos y
alumnas, se habr ido creando la necesidad de contar con un sistema que permita ejecutar
una serie de rdenes por medio de una sola instruccin.
Habremos propuesto y habrn concebido dibujos complejos en los que se incluirn colores,
grosores de lnea, desplazamientos con el lpiz levantado, etc. El engorro que supone ir
dando rdenes una a una, o escribirlas todas seguidas arriesgndose a que un solo error
modifique totalmente el resultado pretendido, sern nuestros mejores aliados para contar
con una clase muy motivada antes de la presentacin de los procedimientos LOGO.
A) Anlisis de la sintaxis: cmo facilitar dicha actividad a los alumnos
Partiremos del hecho, ya conocido, de que la tortuga comprende un vocabulario, una serie
de trminos que conoce e interpreta, de modo que cuando, desde el teclado, se comunica
una orden escrita correctamente, la tortuga la ejecuta. Si se cometiera algn fallo en la
ortografa o en la sintaxis, la tortuga enviara un mensaje de error.
76
Una vez comprobado con el alumnado que la tortuga comprende un vocabulario estricto y
limitado, escribiremos: CUA
Podr haber respuestas para todos los gustos, desde quien considera que la tortuga
desconoce esa palabra, hasta quien crea que le falta un argumento. Cuando pulsemos
[INTRO], comprobarn que la tortuga no sabe hacer CUA.
Imaginaremos que la tortuga, adems de entender una serie de primitivas, posee una libreta
para tomar notas y dejar constancia de nuevas rdenes. Cada vez que queramos ensearle
una orden nueva, har un encabezamiento en una nueva hoja de su libreta, donde escribir
que PARA aprender esa PALABRA, debe ejecutar las lneas que vienen a continuacin, por
lo que pulsaremos [INTRO] y escribiremos todas las rdenes que queremos que asocie al
nombre que hemos escrito en el encabezamiento. La tortuga ir anotando todas las rdenes
sin ejecutarlas y, por lo tanto, sin valorar si estn bien o mal escritas en ese momento.
Cuando ya estn todas anotadas, escribiremos en la ltima lnea la primitiva FIN, sin que
ninguna otra orden acompae a esta palabra. Esta ser la seal que indicar que la nueva
77
Ya no estamos en modo directo, pues al terminar cada lnea se pulsa [INTRO] sin
que esto repercuta en ninguna accin inmediata por parte de la tortuga.
La aparicin del mensaje que LOGO enva: Acabas de definir CUA, ser la primera
indicacin de que hemos hecho un uso correcto de estas primitivas.
Al escribir CUA, alumnos y alumnas comprobarn que se ha enseado una orden nueva a la
tortuga.
Con el fin de que vayan acostumbrndose al uso de la pantalla de trabajo como editor de
procedimientos, propondremos la realizacin de trabajos como:
Dibuja cuadrados en diferentes fondos cambindoles los tamaos o el grosor del trazo.
78
alternativas ante un mismo problema no son nicas y definitivas, sino siempre mejorables,
y que lo fundamental es crear estrategias para resolver un problema de cuya solucin el
profesor no es el nico depositario. Su papel ser siempre de animador, subrayando las
aportaciones positivas que contiene cada una de las mltiples soluciones, valorando
especialmente todas las que tiendan a la sencillez y claridad.
El profesor o profesora ayudar a clarificar el planteamiento del problema, asegurndose de
que el alumnado comprende el objetivo por conseguir. No intervendr aportando nuevas
soluciones sino lneas de trabajo o de anlisis. De producirse un atasco en el desarrollo del
ejercicio, que provoque el decaimiento del inters por encontrar una solucin al ejercicio,
aportar elementos de anlisis que abran nuevos caminos hacia una solucin que sea el
fruto del debate dentro del grupo.
Proponemos, a continuacin, una serie de ejercicios para llevar al aula. Cada profesor
tendr que adaptarlos a las caractersticas de cada grupo, sin olvidar que se trata de
ejemplos y que, por tanto, cada docente elaborar los ejercicios que estime necesarios.
Dibujar una escalera que, partiendo del centro de la pantalla, llegue a un extremo de
la ventana y vuelva al centro formando una base. (ESCALA)
Dibuja cenefas. (CEF1, CEF2, CEF3, CEF10, CEF20, CEF30, CEF100, CEF200,
CEF300)
80
Una vez asumido por todos que, despus de un movimiento que lleva al lugar de partida,
hemos hecho un giro de 360 grados o un mltiplo de esta cantidad, debern comprender
que la diferencia entre un polgono de cuatro lados y otro de seis no se encuentra solamente
en el nmero de veces que se repite la secuencia de avance y giro, sino tambin en la
amplitud de dicho giro, pues es el parmetro que establece las diferencias entre una figura y
otra.
Ser sencillo llegar a la conclusin de que el giro es, en cada caso, el cociente entre el giro
total (360*N) y el nmero de movimientos que repiten para lograrlo.
A continuacin, pueden plantearse en el aula las siguientes actividades:
81
82
Realiza figuras para las que se necesita el uso de la primitiva REPITE, junto con
desplazamientos y giros, y cuyo procedimiento contenga a su vez dentro del
corchete otras figuras que se forman por repeticin de rdenes. (RERE1 / 2 / 3 / 4 /
5 / 6 / 7)
ACTIVIDAD RECOMENDADA
Formula ejercicios para que tus alumnos lo resuelvan con el micromundo de la tortuga y
desarrolla los procedimientos correspondientes.
2.- La introduccin al concepto de modularidad.
A lo largo de la sesin en que presentemos la posibilidad de programar la tortuga,
procuraremos que alumnos y alumnas observen en los programas generados el diseo de la
primera lnea del programa, en la cual, la tortuga no realiza ningn dibujo, sino que se
prepara para realizarlo. Es como si, antes de empezar a realizar una tarea (tomar apuntes),
debiramos preparar nuestros tiles de trabajo, nuestro entorno, (sacar papel. lpiz, limpiar
la mesa de trabajo, etc). Ser una buena manera de introducir el concepto de modularidad y,
siguiendo el mismo razonamiento, el de programacin.
RECUERDA
Programar es analizar, dividir un problema en pequeos mdulos, (procedimientos),
engarzados entre s por medio de sentencias condicionales.
Ciertamente, an no hemos llegado a presentar a la clase la posibilidad de que el programa
elija entre dos o ms caminos, pero ya podemos preparar el terreno dividiendo un problema
en otros ms sencillos o, como en los ejemplos que iremos presentando, realizando un
programa que llame a otro repitiendo varias veces su ejecucin.
83
PARA ESCALERA
84
PARA EMPA
BP BL PONCL 1 PONG 1 PONF 16
SL RE 40 GI 90 AV 200 GD 90 BL
REPITE 20[AV 80 SL RE 80 GD 90 AV 20 GI 90 BL]
SL CENTRO
FIN
PARA CEF1
BP BL PONCL 1 PONG 1 PONF 16
SL AV 50 GI 90 AV 100 GD 135 BL
REPITE 10[AV 15 GD 90 AV 15 GI 90]
SL GI 45 CENTRO
FIN
PARA CEF2
BP BL PONCL 1 PONG 1 PONF 16
SL AV 25 GI 90 AV 100 GD 90 BL
85
REPITE 7 [AV 10 GD 90 AV 15 GD 90 AV 20 GD 90 AV 10 GD 90 AV 10 GD 90 AV 25
GI 90]
SL CENTRO
FIN
PARA CEF3
BP BL PONCL 1 PONG 1 PONF 16
SL GI 180 AV 25 GD 90 AV 100 GD 90 BL
REPITE 7 [AV 15 GD 90 AV 15 GD 90 AV 15 GI 90 AV 15 GI 90]
SL CENTRO
FIN
PARA CEF10
BP BL PONCL 1 PONG 1 PONF 16
GI 90 SL AV 120 GD 90 BL
REPITE 10[AV 15 GD 90 AV 10 GD 90 AV 5 GI 90 AV 5 GD 90 AV 10 GI 90 AV 10 GI
90]
SL CENTRO
FIN
PARA CEF20
BP BL PONCL 1 PONG 1 PONF 16
GI 90 SL AV 120 GD 90 AV 40 BL
REPITE 4[AV 20 GD 90 AV 20 GI 90 AV 20 GD 90 AV 20 GD 90 AV 40 GI 90 AV 30 GI
90]
86
SL CENTRO
FIN
PARA CEF30
BP BL PONCL 1 PONG 1 PONF 16
GI 90 SL AV 120 GI 90 AV 40 GI 180 BL
REPITE 4[AV 20 GD 90 AV 20 GI 90 AV 10 GD 90 AV 10 GD 90 AV 20 GI 90 AV 10
GD 90 AV 10 GI 90 AV 20 GI 90]
SL CENTRO
FIN
PARA CEF100
BP BL PONCL 1 PONG 1 PONF 16
SL GI 90 AV 120 GD 90 AV 40 BL
REPITE 8[AV 20 GD 90 AV 5 GI 90 AV 5 GD 90 AV 5 GD 90 AV 5 GI 90 AV 5 GD 90
AV 20 GI 90 AV 15 GI 90]
SL CENTRO
FIN
PARA CEF200
BP BL PONCL 1 PONG 1 PONF 16
SL GI 90 AV 120 GD 90 BL
REPITE 5[AV 30 GD 90 AV 15 GD 90 AV 30 GI 90 AV 10 GI 90 AV 15 GD 90 AV 15
GD 90 AV 15 GI 90 AV 10 GI 90]
SL CENTRO
87
FIN
PARA CEF300
BP BL PONCL 1 PONG 1 PONF 16
SL GI 180 AV 50 GD 90 AV 100 GD 90 BL
REPITE 5[AV 30 GD 90 AV 10 GD 90 AV 15 GI 90 AV 5 GI 90 AV 15 GD 90 AV 10 GD
90 AV 30 GI 90 AV 20 GI 90
SL CENTRO
FIN
PARA POL6
BP BL PONCL 1 PONG 1 PONF 16
REPITE 6 [AV 50 GD 360 / 6]
FIN
PARA POL5
BP BL PONCL 1 PONG 1 PONF 16
GI 90
REPITE 5 [AV 60 GD 360 / 5]
GD 90
FIN
PARA POL7
BP BL PONCL 1 PONG 1 PONF 16
88
GI 90
REPITE 7 [AV 40 GD 360 / 7]
GD 90
FIN
PARA EST2550
BP BL PONCL 1 PONG 1 PONF 16
REPITE 25 [AV 50 GD 360 * 121 / 25]
FIN
PARA EST9200
BP BL PONCL 1 PONG 1 PONF 16
REPITE 9 [AV 50 GD 200]
FIN
PARA EST36250
BP BL PONCL 1 PONG 1 PONF 16
REPITE 36 [AV 60 GD 250]
FIN
PARA EST7720
BP BL PONCL 1 PONG 1 PONF 16
REPITE 7 [AV 50 GD 720 / 7]
FIN
89
PARA CUAD
REPITE 4 [AV 10 GD 90]
FIN
PARA CIR
REPITE 36 [AV 8 GD 10]
FIN
PARA CUA3
BP BL PONCL 1 PONG 1 PONF 16
REPITE 4 [CUA1 CUA2]
FIN
PARA CUA1
REPITE 4 [AV 25 GD 90]
FIN
PARA CUA2
REPITE 4 [AV 50 GD 90] RE 20 GD 90
FIN
PARA CUAD4
REPITE 7 [CUAD GD 360 / 7]
90
FIN
PARA CUAD44
BP BL PONCL 1 PONG 1 PONF 16
REPITE 6 [CUAD4 GD 360 / 6 AV 40 BL]
FIN
PARA EPTA
REPITE 7 [AV 40 GD 360 / 7]
FIN
PARA EXA
REPITE 6 [AV 40 GD 60]
FIN
PARA FLOR7
BP BL PONCL 1 PONG 1 PONF 16
REPITE 7 [EPTA GD 360 / 7]
FIN
PARA FLOR4
BP BL PONCL 1 PONG 1 PONF 16
REPITE 16 [CUAD GD 360 / 16]
91
FIN
PARA FLOR6
BP BL PONCL 1 PONG 1 PONF 16
REPITE 6 [EXA GD 360 / 6]
FIN
PARA FLOR0
BP PONCL 1 PONG 1 PONF 16
REPITE 12 [CIR GD 360 / 12]
FIN
PARA TUBO
BP PONCL PONG 1 PONF 16
OT SL RE 40 GI 90 AV 45 GD 90 BL
REPITE 15 [CIR SL AV 5 BL]
SL CENTRO MT
FIN
4. Programas Estructurados
4.6.1 Programacin
Desde el momento que iniciamos a nuestro alumnado en la creacin de procedimientos,
comenzamos a ensearles a programar. Fue entonces cuando expusimos lo que podra ser
92
El profesor, previo el trabajo por grupos, deber dejar claro que el objetivo consiste en
reflejar la sucesin de acciones que realiza un alumno desde que suena el timbre de
finalizacin de clase hasta que se acuesta. Dejaremos bien claro que, dependiendo de una
serie de condicionantes: da de la semana, responsabilidad de aula etc, las acciones de un
da no son iguales a las de otro.
No se pasar a la fase de trabajo de grupo, hasta que todo el alumnado haya comprendido
ambos conceptos: Serie de rdenes, sentencias condicionales.
La realizacin de determinadas tareas requerir la confeccin de procedimientos que las
desarrollen, procedimientos que sern llamados por el programa principal o iniciador.
En determinados momentos, el programa plantear una opcin o seguir el principal y en
otros, propondrn elegir entre dos, si no se cumple la primera deber ejecutarse la segunda,
pero siempre volviendo al programa principal que, tal como hemos explicado
anteriormente, seguir el orden natural de nuestra lectura y escritura.
PARA ACABAR_JORNADA
Recoger mesa
SI soy responsable [RECOGER_AULA]
Salir del instituto
Ir a casa
Merendar
SI tengo clase de ingls [INGLS]
SI tengo tareas [DEBERES] [ESTUDIO]
Cenar
Dormir
FIN
PARA RECOGER_AULA
94
Borrar pizarra
Cerrar ventana
Esperar al ltimo
Cerrar puerta
FIN
PARA INGLS
Recoger libro
Tomar casette en ingls
Ir a academia
FIN
PARA DEBERES
Preparar cuadernos
Realizar ejercicios
FIN
PARA ESTUDIO
Comprobar horario
Estudiar los temas
FIN
Ser tambin una buena ocasin para introducir a nuestro alumnado en la representacin
grfica del rbol de procedimientos, de cara a que la estructura de los que posteriormente
diseen, sea lo ms clara posible y les permita realizar correcciones o mostrarla a otros para
que les ayuden a realizarlas.
4.7 Las Variables
95
96
97
racional para hacerlo, sobre todo cuando el concepto de variable, ya forma parte de su
bagaje matemtico.
Convendr, de todos modos, forzar la necesidad de tener un procedimiento que
manteniendo unas caractersticas generales, pueda admitir una medida variable que le
permita adaptarse ms que a una figura, a un concepto.
El trabajo sobre el cuadrado, tal como se explic en el Anexo I, puede ser llevado ante los
alumnos prcticamente siguiendo los mismos pasos. Para presentar una variacin en este
apartado, proponemos como objeto tipo, a la circunferencia.
1 Creacin de un programa que dibuje una circunferencia nica (polgono de 36 lados,
puesto que para la definicin de la pantalla no hay que acercarse ms al infinito). (La parte
geomtrica de CIR). Hacer ver que, para realizar otra circunferencia hay que modificar slo
el avance, pero seguiremos creando una circunferencia concreta.
2 Creacin de un procedimiento que permita dibujar distintas circunferencias en funcin
del avance que de la tortuga en cada uno de sus 36 pasos. (La parte geomtrica de
CIRVAR :D). Plantearemos un smil comentando que es como si la tortuga tuviera un
bolsillo con una etiqueta por fuera. En la primera lnea es donde se crea el bolsillo dndole
un nombre a la etiqueta, en este caso :D. Conforme diseamos el procedimiento, se puede
hacer mencin del contenido del bolsillo para que opere con l, ya escribindolo,
rotulndolo, usndolo como argumento, operando con l, etc, en este caso como argumento
de la primitiva AVANZA. Siempre que se hace mencin del contenido del bolsillo, se
escribe :nombre, aqu :D. Cuando ejecutemos el procedimiento que contiene el bolsillo,
debemos darle un contenido, de otro modo advertira que le faltan datos, como un
argumento de algunas primitivas, aqu CIRVAR 12. Cuando la tortuga est ejecutando un
procedimiento que contiene una variable, ejecuta las rdenes una tras otra, pero cuando
llega a una expresin donde escribimos que avanzara, girara, o escribiera :nombre, mira su
bolsillo y escribe, gira o avanza el contenido all guardado, en este caso AVANZA 12.
3 Ejecutar el procedimiento CIRVAR varias veces cambiando el argumento.
98
4 Mostrar en modo directo las primitivas ROTULA y ESCRIBE haciendo notar donde se
ejecuta cada una de ellas y la necesidad de acompaar sus argumentos con comillas o
corchetes segn se trate de palabras o frases. Presentar tambin en modo directo la
primitiva FRASE como una operacin de suma de dos sumandos.
5 Completar los procedimientos CIR y CIRVAR :D con la rotulacin en la pantalla de
grficos.
6 Realizacin de modificaciones al programa anterior para introducirle ms variables como
colores, grosores, fondos, adems de la longitud ya mencionada. Explicar qu la tortuga
puede tener varios bolsillos a la vez con diferentes etiquetas, que pueden ser usados del
modo expuesto anteriormente. En su ejecucin, debemos llenarlos en el orden que los
hemos definido. Como ejemplo puede servir CUAVARIA :C :G :F del Anexo I.
7 Diseo de un programa que introduzca la posibilidad de crear cualquier tipo de
polgonos teniendo en cuenta el viaje total y la capacidad operativa de LOGO (POLIN :N
de Anexo I).
8 Crear un programa que dibuje una circunferencia a partir de un punto de ella y que nos
pueda servir de modulo para otros procedimientos, es decir que no empiece marcando las
condiciones generales en que deba trabajar, tan solo que dibuje a partir de donde se
encuentre y en la posicin en que estaba. (CIRLAT :MODUL).
9 Crear procedimientos que contengan variables locales y que realicen formas distintas a
base de repetir circunferencias de distintos tamaos y moverse despus por medio de
avances o giros. (ROSA :M, TUBULAR :T, ESTREL : MODUL).
10 Confeccionar un procedimiento que dibuje una circunferencia en funcin de su radio,
partiendo y dejando a la tortuga en el centro.(CIRRAD :RADIO). Antes de realizar esta
propuesta, pondremos a disposicin del alumnado la primitiva PI, para lo que usaremos
simplemente el modo directo : ES PI.
Tanto en este procedimiento como en CIRLAT, que sern usados como mdulos para otros,
al alumnado no se le ocurrir dar el giro de 5 antes y despus del REPITE, pues la figura
99
usuario con la diferencia de que la primera acta con la primer pulsacin y la otra necesita
la confirmacin por medio de la tecla [INTRO]. (PULSA) (INTRO). Aprovecharemos el
segundo para explicar que la sintaxis de la primitiva FRASE se simplifica al englobar
dentro de un parntesis tanto a ella como a los textos que manipula y las variables que
queramos unir.
Explicaremos que en PULSA diseamos un programa que con la mxima simplicidad,
limpia la pantalla de textos, muestra el mensaje en la pantalla de textos y devuelve en la
misma pantalla la pulsacin que ha reaizado el usuario unida a otro texto por medio de la
conocida primitiva FRASE.
Aprovecharemos el programa INTRO, para explicar la utilidad de la primitiva ESPERA,
que nos sirve para dar tiempo fijo a la lectura. La diferencia entre LC y LP se har evidente
en la ejecucin de uno y otro, por lo que slo nos quedar insistir en la utilidad del
parntesis al usar la primitiva FRASE.
En el primer programa (CIRGLO1), propondremos crear un procedimiento que dibuje una
circunferencia de radio variable, pero que, a diferencia de CIRVAR, indique al usuario los
pasos que debe seguir por medio de mensajes en la pantalla de textos. Una vez introducido
el dato requerido, el programa lo introducir en una variable y actuar como en CIRVAR.
El siguiente paso ser conseguir que el programa realice la circunferencia variable y
centrada en funcin del radio, como CIRRAD, pero realizando y presentando el clculo de
la longitud de la circunferencia (CIRCEN1).
Como rpidamente apreciarn el parecido de las lneas de actuacin de la tortuga con las
que tienen CIRLAT y CIRRAD, las siguientes propuestas de ejercicios consistirn en
realizar procedimientos que, llamando a los procedimientos anteriores, efecten las
acciones que estos realizaban con la mejora que supone el que, por medio de mensajes que
el programa enva al usuario, ste va siguiendo las instrucciones y, sin necesidad de conocer
el programa, lo pone en marcha dndole los datos necesarios para su ejecucin.
(CIRGLOBAL CIRCENTRAL). As mismo, servirn para manejar las nuevas primitivas
101
102
103
Partiremos de programas ya diseados como CIRGLO Y CIRCEN o los que hemos creado
para presentar algunas primitivas como PULSA. Empezaremos ejecutndolos e
introduciendo en ellos datos no idneos:
En CIRGLO a la pregunta Escribe la cifra del avance, escribiremos la letra O.
En CIRCEN para escribir la longitud del radio escribiremos DIEZ y pulsaremos intro.
Al observar la ruptura del programa y el mensaje de error que nos comunica, plantearemos
a nuestro alumnado la necesidad de contar con un filtro que, discriminando la entrada dada
por el usuario, compruebe si es o no idnea y en este caso, desve el flujo del programa
hacia el inicio para evitar su interrupcin.
Presentaremos la primitiva NUMERO? obj como condicin a introducir en una sentencia y
que al devolver Cierto o Falso nos permitir retroceder o seguir segn le indiquemos a
continuacin entre corchetes.
PARA FILNUM :MOD
SI NO NUMERO? :MOD [ES [Este dato no es un nmero, escrbelo correctamente]
CIRGLO]
FIN
Ya solo necesitamos modificar el programa CIRGLO colocando este filtro despus de la
creacin de la variable MOD
PARA CIRGLO
.....
.....
HAZ MOD LC
FILNUM :MOD
CIRVAR :MOD
....
104
FIN
El mismo filtro nos servir para proteger a CIRCEN con slo modificar el nombre del
programa al que deber volver si se comete un error en la entrada. De todos modos, aunque
como solucin del problema planteado es suficiente, se aprecia que el retorno, en este caso,
adolece del defecto de volver al inicio y no al lugar donde se cometi el fallo, con lo que lo
primero que ejecutar el programa en su retorno ser un BT que impedir la lectura. Ni que
decir tiene que un ESPERA antes de CIRGLO parchear el problema, pero debemos aclarar
entonces que si queremos mejorar el programa, es preferible olvidar la estructura anterior
dndole una estructura modular nueva.
5.3 Los Mens
Otra aplicacin de las sentencias condicionales la tenemos en la posibilidad que ofrece al
programador para presentar mens con varias opciones para que el usuario pueda optar
entre ellas.
Intentaremos presentarlas por medio de una aplicacin inmediata a los programas creados
en este mismo tema. Propondremos que sirva como pantalla de presentacin y men de
eleccin algunos de los programas desarrollados en este tema: CIRGLOBAL,
CIRCENTRAL, y CIR. Posteriormente, introduciremos modificaciones para que se puedan
introducir tambin,aquellos programas que se confeccionaron con variables locales y
propusimos fueran llamados por otros que despus de crear una variable global, llamaban a
estos para ejecutarlos. CUAINS, EXAIN, CUACIR, EXACIR, etc. El programa base
(CIRCUMLOQUIO), lo daremos confeccionado para que lo completen y mejoren pudiendo
adems, servirnos de engarce con los recursivos.
- Completar el men incluyendo otros programas diseados anteriormente con variables
globales y mensajes en la pantalla que dirigen su ejecucin.
Parte
VI.
DE
LA
RECURSIVIDAD
A) Metodologa
105
Ya se defini la recursividad como la capacidad que tiene un programa creado por LOGO
para llamarse a s mismo en un bucle sin fin. Esta herramienta de LOGO va a ser
presentada a los alumnos por medio del procedimiento CIREC, que obliga a salir de l por
medio de [ESC].
A lo largo de la unidad, en concreto en el programa ARCO, se propone que el
procedimiento CIREC se mejore por medio de la primitiva TECLA? que, usada como
condicin, servir para darle una salida digna al programa anterior. Posteriormente, se
vern ms aplicaciones del programa ARCO junto a la primitiva LeeCarcter.
Slo se necesita que el profesor intervenga en el caso que los alumnos no coloquen el
condicional dentro del bucle.
La primera aplicacin que se va a presentar es la modificacin del programa MENU, de
modo que sea posible optar una a una por todas las opciones sin necesidad de tener que
salir del programa cada vez que se desea cambiar de opcin y tener, despus, que volver a
arrancar. Para abordar este programa puede seguirse cualquiera de estos dos
planteamientos:
1. Proponerle al alumno que elabore un procedimiento recursivo para modificar el
programa MENU, de modo que una vez elegida y ejecutada una opcin, el
programa vuelva a presentar el men para que si el usuario lo desea pueda elegir
otra de las opciones. (MENUREC).
2. Tambin se puede optar por crear el esquema simplificado dentro del gran grupo, a
travs de un debate dirigido para que, una vez que el programa haya sido diseado
entre todos, cada equipo lo personalice colocando una pantalla de instrucciones y
definiendo las condiciones previas en que se desarrollar el trabajo.
No hay que olvidar que, como los alumnos van a partir de programas ya confeccionados en
das precedentes, conviene estimularlos para que mejoren la presentacin de pantallas,
utilicen instrucciones ms precisas, colores ms adecuados y, en definitiva, todo aquello
que suponga prctica, progresin y disfrute por la tarea bien hecha. La sencillez y
espectacularidad del programa CONDUCIR1 puede ser el inicio de unos trabajos muy
106
PILOTAR es una variante del programa que le dar ms velocidad y abrir un campo muy
interesante para el alumno. Al igual que en el caso del programa anterior, se van a comentar
una a una todas las lneas:
1) Se mueve ms o menos en funcin del avance y la espera.
107
108
En estos casos, no se le debe dar mucha importancia al hecho de que los alumnos realicen
un proyecto de una figura concreta como potenciar su intuicin, capacidad de creatividad y
diseo, dejndose sorprender por los efectos conseguidos.
De todos modos, convendr dar un toque de sensatez advirtiendo de la importancia de
contar con una lnea como SI TECLA? [ALTO], que debe incluirse en todos los borradores
como medida de seguridad.
Conviene aprovechar los trabajos sobre espirales recursivas para hacer algunos comentarios
generales a los alumnos:
Advertir en CUAESPI sobre la inconveniencia de usar como tope la expresin: SI :L = 200
[ALTO] frente a la opcin de colocar en su lugar:
SI :L > 200 [ALTO]
Pues si el contador va dando saltos por medio de sumas o productos, puede ser que se pase
de una expresin menor a otra mayor sin comparar necesariamente el nmero 200.
Hacer notar en TRIESPI que al tener un tope por alto y realizar una recursividad por medio
de una sustraccin, TRIESPI :L-10, la tortuga crea una figura cada vez ms pequea,
llegando a retroceder, es decir, a avanzar una cantidad negativa.
109
amarillo y verde. Antes de que los alumnos empiecen con un tanteo, les conviene hacer un
programa que vaya presentando los colores sucesivamente (COLORES1).
Posiblemente los alumnos, ya avezados en la recursividad, encuentren soluciones mejores;
de todos modos, no vendr mal animarlos en la bsqueda de mejoras como:
Que el programa no escriba nada mientras saque los colores en pantalla pero que,
cuando se quiera conocer el nmero que corresponde a un color concreto, la
sucesin se paralice y el programa presente el nmero del color que est
apareciendo en ese momento. (COLORES4).
Repeticin variable del nmero de veces que se repite la secuencia y del tiempo de
permanencia de los colores. (SECUENCIA3).
110
111
112
(L1) Hace de control a travs de un contador hasta alcanzar el nmero 12, momento en el
que se produce un ALTO para la alternativa Cierto.
(L2) Procura el ajuste entre la numeracin y la esfera dibujada anteriormente. Ubica a la
tortuga en una posicin algo retrasada y a la izquierda del centro de la pantalla, lugar que
hasta ahora ha servido de referencia como centro de la esfera del reloj. El ajuste indicado es
necesario porque aunque los desplazamientos para rotular se realizarn a la misma
distancia, 20 unidades menos que la esfera, LOGO siempre rotula encima y a la derecha del
lugar donde se encuentra la tortuga. El centro se ha desplazado en sentido contrario por
tanteo, lo que hace que, dependiendo del tamao de los caracteres que pudieran usarse en el
futuro, deber cambiarse ese centro para que los nmeros queden centrados.
(L3) Posiblemente sta sea la lnea ms engorrosa de todo el programa. Transmite un giro a
la tortuga para que se coloque frente al lugar en el que debe rotular, pero a diferencia de los
radios que harn de saeta, la tortuga tiene que devolverse siempre al centro, por lo que el
giro ser diferente y proporcional al contabilizado en cada momento: ANG*30. El ajuste de
5 est en funcin del tamao de las letras. El giro final GD 90-:ANG*30, sirve para
colocar la tortuga siempre en posicin horizontal; de este modo se contrarresta el ngulo
que se le da a la tortuga cada vez que sale desde el centro. El resto de las funciones de esta
lnea corresponde a la rotulacin del nmero que el contador indica en cada bucle.
(L4) Lleva la tortuga al centro de la forma ms rpida posible y la mantiene siempre
mirando al norte tal como se ha explicado anteriormente, dadas las caractersticas de WIN
LOGO para Windows.
(L5) Lnea recursiva que modula el contador.
(SAETA)
(L1) Lnea de control que sirve para interrumpir el bucle indefinido. Esta lnea permite
abandonar definitivamente el programa.
(L2) Dibuja una lnea con una velocidad adecuada para que el curso de su trazado sea
visualizable.
113
(L3) Hace desaparecer a la saeta y coloca la tortuga en la posicin adecuada para que dibuje
la siguiente saeta a continuacin de la que acaba de ser borrada.
(L4) Lnea recursiva ilimitada.
Se considera importante sealar la distincin que existe entre la orden ALTO incluida en la
primera lnea del programa NUM y la misma orden incluida en el programa SAETA.
Mientras en este ltimo caso la orden ALTO rompe definitivamente el flujo del programa
por tener tras de s la lnea FIN de ROLEX, la primera no paraliza el programa sino que
devuelve el control al programa ESFERA al que slo le falta por realizar la lnea FIN, por
lo que este programa ESFERA, devolver el control al programa ROLEX en el punto
donde an falta que se ejecute el programa SAETA.
Hasta aqu hemos visto algunas orientaciones metodolgicas que se pueden seguir para que
los alumnos aprendan a programar en MSWLogo.
114
6. BIBLIOGRAFIA
Programacin WinLogo
Tecnologa 4 ESO__IES Miraflores de los ngeles
115
116
117
118
119
120