Sunteți pe pagina 1din 119

INDICE

1.

INTRODUCCIN

2.

LOGO

2.1 LOGO en los centros educativos

2.2 Caractersticas de LOGO

2.3 Instalacin

2.4 Requerimientos mnimos para ejecutar MSWLogo

2.5 Inicio de MSWLogo

2.6 Conociendo el entorno de MSWLogo

10

2.6.1 Las ventanas de MSWLogo

10

2.6.2 Elementos bsicos de una ventana

11

3. PROGRAMACIN EN MSWLogo
3.1 Primitivas

12
12

3.1.1 Primitivas para dibujar

13

3.1.2 Primitivas para escribir, editar y trabajar con fichero

14

3.1.3 Primitivas para crear condiciones y bucles

15

3.1.4 Primitivas para salir de MSWLogo

15

3.2 Variables

19

3.3 Procedimientos

20

3.4 Uso de Variables Globales

23

3.4.1 Las variables en el modo directo:


3.5 Recursividad

24
27

3.5.1 Sentencias condicionales

28

3.5.2 Control de la recursividad por medio de un contador

29

3.6 Cargar un fichero

30

3.7 Trabajar con imgenes

31

3.8 Usar ventanas y botones en MSWLogo

32

3.9 Otros Ejemplos con Primitivas Bsicas

33

3.9.1 Paso De Argumentos Entre Procedimientos

54

4. ORIENTACIONES METODOLGICAS A LOS PROFESORES PARA INICIAR


LA ENSEANZA DE LOGO EN EL AULA.

69

4.1 Preparacin De Las Primeras Actividades De Programacin

69

4.2 Presentacin Didctica Del Modo Directo

69

4.3 El Aprendizaje De Las Primeras Primitivas

71

4.4 El Cuaderno De Logo

74

4.5 La Utilidad De Los Mensajes De Error

75

4.6 Recursos Metodolgicos Para Plantear Los Procedimientos Logo En El Aula. 76


4.6.1 Algunas sugerencias para proponer el aprendizaje de procedimientos
LOGO
4.6 Programas Estructurados
4.6.1 Programacin
4.7 Las Variables

76
92
92
95

4.7.1. Variables Locales

95

4.7.2. Variables Globales

96

4.7.3 Metodologa Para La Presentacin De Las Variables Locales

97

4.7.4. Metodologa Para La Presentacin De Las Variables Globales


5. SENTENCIAS CONDICIONALES

100
102

5.1 Metodologa

102

5.2 Los Filtros

103

5.3 Los Mens

105

5.4 Espirales recursivas.

108

5.6 Algunos Ejercicios Prcticos: El Semforo.

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

haz click en Siguiente.


3. Como anteriormente se haba dicho que MSWLogo es un software gratuito
entonces aparecer la ventana de la licencia de MSWLogo.

Para continuar con la instalacin solo haz click en Siguiente.


4. Ahora aparece esta pantalla que es la que indica en que directorio del disco duro
estar ubicado MSWLogo se recomienda que no se cambie el que esta dando el
asistente por defecto y que solo haga click sobre Siguiente para continuar con la
instalacin.

5. Ahora aparece la ventana donde aparece la opcin de seleccin de la carpeta del


Men Inicio y en donde se van a crear los accesos directos, se recomienda solo
hacer click en el botn Siguiente para continuar con la instalacin.

6.

En est pantalla muestra al usuario los datos de la configuracin de la instalacin si


todo est correcto solo se debe hacer click en el botn Instalar.

7. Est pantalla muestra todo proceso de la instalacin de MSWLogo espere que


finalice todo el proceso para continuar.

8. Cuando el proceso de instalacin a finalizado le aparecer est pantalla, aqu solo


tiene que hacer click en el botn de Finalizar y todo habr concluido con xito.

2.4 Requerimientos mnimos para ejecutar MSWLogo


Para ejecutar MSWLogo en su ordenador es necesario tener instalado Windows 3.1 o
posterior y los siguientes requerimientos mnimos de hardware:
Un ordenador AT, 386 o superior.
2 Megabytes de memoria extendida.
2 Megabytes de disco fijo libres.
Una unidad de CD-ROM
Una tarjeta grfica VGA o superior.
Un ratn o dispositivo de control para navegar por las opciones del entorno.
Una impresora, opcional.
Una tarjeta de sonido, opcional.
2.5 Inicio de MSWLogo
Para el inicio de MSWLogo lo nico que tienes que hacer clic en el men inicio,
seleccionar todos los programas y buscar en la lista donde esta ubicado MSWLogo y hacer
clic sobre el y as ya estar todo listo para usar MSWLogo.
2.6 Conociendo el entorno de MSWLogo
2.6.1 Las ventanas de MSWLogo
Cada vez que iniciamos MSWLogo nos aparece esta ventana

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:

La Ventana de Grficos: Es el mundo de las tortugas, es aqu donde se vern


representados los dibujos, decorados y la escritura grfica.

La Ventana de Trabajo: Es donde se escriben las primitivas.

Otras ventanas de WinLogo


WinLogo tambin tiene otras ventanas que de acuerdo a la necesidad estas se van
utilizando, a continuacin mostramos algunas de estas ventanas:
1.Ventana de Edicin: Aqu se podr editar procedimientos ya creados o edutar
nuevos procedimientos.

2.6.2 Elementos bsicos de una ventana


Cada una de las ventanas posee elementos indispensables que le servirn al usuario para
poder interactuar, a continuacin se detallan algunos de estos elementos:

Botn Men
de control

Barra de titulo

rea de trabajo

Botn
Minimiza
r
Botn
Maximizar
Barra de
desplazamiento
vertical
Barra de
desplazamiento
horizontal
11

Barra de Titulo: aqu aparece el nombre de la ventana, y cuando la ventana est


activa aparecer de otro color que la distinguir de las dems ventanas.

Botn Men de Control: Este botn se encuentra a la izquierda en la esquina


superior, al hacer clic sobre el botn aparecer un men en el cual aparecern las
opciones como: minimizar, maximizar, cerrar, mover, tamao, restaurar y siguiente.

rea de Trabajo: Es toda la parte que se encuentra limitada por los mismos bordes
de la ventana.

Barra de Desplazamiento Vertical: Se encuentra en la parte derecha de la ventana,


la nica ventana que no tiene esta barra de desplazamiento es la ventana de Formas.

Barra de Desplazamiento Horizontal: Se encuentra en la parte inferior de la


ventana.

Botn de Minimizar: Sirve para reducir la ventana al menor tamao posible.

Botn Maximizar: Sirve para hacer ms grande la ventana a su mayor tamao


posible.

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:

Escribiendo la palabra completa, por ejemplo: AVANZA 100 al hacer click en


Ejecutar el tringulo va avanzar

Escribiendo la abreviatura de la primitiva, por ejemplo: AV 100 al hacer clic en


Ejecutar el tringulo tambin va avanzar.

Ahora describiremos las primitivas ms comunes utilizadas en MSWLogo y que nosotros


de ahora en adelante usaremos en los ejemplos para aprender la programacin en Logo.
3.1.1 Primitivas para dibujar
A continuacin se presenta una lista de las primitivas que sirven para dibujar, se presenta el
nombre de la primitiva la forma abreviada y una breve descripcin de la funcin que
desempea cuando se hace uso de esta primitiva.

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 [ ]

PONCL [... ... ...]

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

PONCOLORLAPIZ [000 000 255] = Azul


OCULTATORTUGA
MOSTRARTORTUGA
BORRAPANTALLA

OT
MT
BP

ROTULA [HOLA]

RO [HOLA]

PONGROSOR [10 10]

PONG [10 10]

Oculta la tortuga (el tringulo) en la pantalla.


Muestra la tortuga (el tringulo) en la pantalla
Borra la pantalla y coloca a la tortuga en el
centro.
Escribe un texto en la direccin en que se
encuentra la tortuga.
Coloca el ancho del trazado del lpiz y la altura
especificados. MSWLogo utiliza solamente el
valor de la anchura.

3.1.2 Primitivas para escribir, editar y trabajar con fichero


Primitiva

Abreviatura

Descripcin

MUESTRA objeto

ESCRIBE objeto

ES objeto

EDITA CONTENIDO

EDITATODO

EDITA
PROCEDIMIENTOS

EDITAPROCEDIMIENTOS

CARGA nombfichero
GUARDA nombfichero

Comando que escribe la entrada o


entradas en la salida de escritura que
actualmente est (inicialmente es el
terminal).
Comando que escribe la entrada o
entradas en la salida de escritura que
actualmente est (inicialmente es el
terminal). Si la entrada es una lista, los
corchetes ms externos no se muestran,
pero s los de los de las sublistas.
Comando que abre la ventana del editor
y permite modifica las definiciones de
los elementos (procedimientos,
variables, etc.).
Hace lo mismo que el botn Ed. Todo.
Comando que abre la ventana del editor
y permite modifica las definiciones de
los procedimientos.
Comando que lee las instrucciones del
fichero dado y las ejecuta.
Comando que guarda en el fichero dado
las definiciones de todos los
procedimientos, variables y listas de
propiedades sin tapar.

3.1.3 Primitivas para crear condiciones y bucles


Primitiva
SI condicin instrucciones
SISINO condicin instrucciones1 instrucciones2

Descripcin
Permite ejecutar una o varias instrucciones
dependiendo si se cumple la condicin
Dependiendo si se cumple una condicin ejecuta la

15

HAZ.HASTA instrucciones condicin

HASTA condicin instrucciones


HAZ.MIENTRAS instrucciones condicin

MIENTRAS condicin instrucciones


SIEMPRE instrucciones
REPITE numero instrucciones

primera lista de instrucciones, y si no se cumple


ejecuta la siguiente lista de instrucciones
Evala las instrucciones repetidamente tantas
veces hasta que se cumpla la condicin. De esta
manera se asegura que las instrucciones se
ejecutan al menos una vez, antes de comprobar la
condicin. EQUIVALENTE a HASTA
Repite las instrucciones tantas veces hasta que la
condicin expresada se cumpla.
Evala las instrucciones repetidamente tantas
veces como se cumpla la condicin. De esta
manera las instrucciones se pueden o no ejecutar,
dependiendo si se cumple la condicin.
EQUIVALENTE A MIENTRAS
Repite las instrucciones tantas veces como la
condicin expresada se cumpla.
Ejecuta las instrucciones de forma repetida.
Ejecuta las instrucciones tantas veces como se
le indica en nmero

3.1.4 Primitivas para salir de MSWLogo


Primitiva
ADIOS

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

Al principio en este material siempre se escribir el nombre completo de la primitiva y su equivalente en


abreviatura, mas adelante solo se escribirn las abreviaturas.

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

Si se quiere que solo aparezca en la ventana de trabajo entonces se hace de la siguiente


forma
Escribe :nombre y aparecer Me gusta la clase de Programacin en LOGO
Si se quiere que aparezca en la pantalla de grficos entonces se hace de la siguiente forma
Rotula :nombre y aparecer Me gusta la clase de Programacin en LOGO en la pantalla
de grficos

Para que aparezca de forma horizontal primero escribir la orden de GirarDerecha 90 y


luego la orden anterior.
Ejemplo 3.2.2
Vamos a trabajar con el ejemplo del cuadrado, pero en esta ocasin haciendo uso de
variables.
Haz lado 100
Repite 4[AV :lado GD 90]
En este caso ya no se escribi el valor del tamao que iba a tener cada uno de los lados del
cuadrado sino que se creo una variable y se utilizo esta variable para la creacin del
cuadrado.

3.3 Procedimientos

20

Cuando se habla de procedimientos o programar de forma procedimental consiste en


ensear procedimientos al ordenador que despus va utilizar como nuevas primitivas, ya
cuando estas son asimiladas.
La sintaxis para crear un procedimiento es:
Para NomProcedimiento [parmetros]
.
.
.
Fin
Un procedimiento se puede crear de dos formas:
1) Utilizar la ventana de Trabajo: para que aparezca la ventana de trabajo primero se
debe escribir en la caja de entrada de datos primitivas Para NomProcedimiento
[parmetros] y despus pulsar la tecla Enter o el botn Ejecutar y aparecer la
siguiente ventana.

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

El nombre que se da a la variable debe ser un conjunto de caracteres sin espacios en


blanco y debe ir precedido por comillas. El contenido de la variable puede ser:

Un nmero

El resultado de una operacin

Una palabra que ir precedida de comillas

Una lista entre corchetes

Una serie de datos introducidos desde teclado durante la ejecucin del programa por
medio de ciertas primitivas.

El contenido de una variable aparece cuando se escribe precedida por el smbolo


:nombre.

Sirva como ejemplo el siguiente procedimiento:


PARA CUADRADO
BP BT
ES [Escribe la longitud del lado de un cuadrado]
HAZ "LADO LEEPALABRA
REPITE 4 [ AV :LADO GD 90]
FIN
En este procedimiento aparece una nueva primitiva LEEPALABRA lo que hace esta
primitiva es lee la primera palabra introducida desde el teclado o leda desde un
fichero y su forma abreviada es LP.
Ejemplo 3.4.2
PARA SALUDO
ES [Cmo te llamas?]
HAZ "NOMBRE LEEPALABRA
ES FRASE [Encantado de conocerte] :NOMBRE
FIN
25

En este ejemplo lo que hace el procedimiento es preguntar el nombre al momento de


ejecutarse y cuando se escribe el nombre en la caja, lo escribe en la pantalla de grficos.
Ejemplo 3.4.3
PARA CUBO
BP BT
ES [Este programa calcula el cubo de los nmeros]
ES [De qu nmero deseas el cubo?]
HAZ "NUMERO LEECAR
HAZ "CUBO :NUMERO * :NUMERO * : NUMERO
ES (FRASE [El cubo de ] : NUMERO [ es ] :CUBO)
FIN
En este procedimiento aparece la primitiva LEECAR y lo que hace es lee el primer
carcter de un archivo o la primera pulsacin desde el teclado sin necesidad de pulsar
[INTRO] y su forma abreviada es LC.
Adems de LEECAR y LEEPALABRA tambin estn las primitivas LEELISTA que
significa Lee una lista de caracteres introducidos desde el teclado o ledos desde un
archivo y su forma abreviada es LL y LEECARS num que significa lee los num
primeros caracteres pulsados desde el teclado o ledos de un archivo y su forma
abreviada es LCS num. Para ver la funcionalidad de cada una de estas primitivas se
presentan los siguientes ejemplos:
Ejemplo 3.4.4
PARA Ejemplo4
ES [En que universidad estudias?:]
HAZ "X LC
ES :X
FIN

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

REPITE 4 [AV 100 GD 90]


SL GD 45 AV 50 BL
RELLENA
SL AV 50 GI 45
FIN
Aqu tienes una forma de provocar una intermitencia entre un cuadro negro y una pantalla
blanca, de forma que el cuadro negro permanezca 2 segundos y la pantalla blanca 4 seg.
PARA CONTROL1
BP ESPERA 400
CUADRONEGRO ESPERA 200
CONTROL1
FIN
Ahora deseamos que nuestro CUADRONEGRO pase de negro a rojo cada 4 segundos por
lo que ser necesario realizar un procedimiento CUADROROJO y provocar recursividad
Para temporizar cada estado se utilizar la primitiva ESPERA ya descrita: ESPERA
400 y ESPERA 200.
3.6 Cargar un fichero
En la parte de procedimientos se explico la forma de guardar un fichero o procedimiento,
ahora vamos a ver la forma de cargar un fichero cuando se nos aparezca la necesidad de
usar uno de estos ficheros, para eso hacemos lo siguiente:
Nos vamos a la opcin del men Archivo y seleccionamos Cargar y la primitiva Carga
nombfichero permiten la carga de las instrucciones del fichero dado. Es importante
destacar que cuando se carga un fichero se leen las instrucciones que contiene y se ejecutan.
En la ventana de seleccin del archivo a cargar solo aparecen los archivos con extensin
.LGO. Para que aparezcan todos los archivos se debe seleccionar en Tipo de archivos: todos
los archivos (*.*).

30

Si no se han guardado el entorno de trabajo de la sesin actual en disco o si en el archivo


existen procedimientos ya definidos en la sesin actual, se sobrescribir. Pero antes de eso
MSWLogo emite una ventana de aviso:

3.7 Trabajar con imgenes


El men Bitmap de MSWLogo ofrece la posibilidad de trabajar con imgenes o dibujos:
cargarlos, guardarlos e imprimirlos.
MSWLogo permite la posibilidad de cargar imgenes con formato .bmp. Para poner cargar
una imagen de este tipo en la pantalla principal se debe utilizar la funcin Bitmap Cargar.
Tambin permite guardar imgenes en formato .bmp. Para ello se usa el men

31

Bitmap Guardar o Bitmap Guardar como.

3.8 Usar ventanas y botones en MSWLogo


Con MSWLogo se pueden crear aplicaciones y procedimientos con ventanas y botones.
Para ello se utilizan primitivas como creaventana, creaboton,
A continuacin se muestra un ejemplo de una aplicacin que consta de varios
procedimientos que crean una ventana que consta de varios botones y que permite escribir y
borrar un texto:
PARA VentanaEjemplo ;Procedimiento que crea la ventana del ejemplo BT ;borra
pantalla de texto BP ;borra pantalla de grficos
OT
creaventana "principal "V_EJEMP [Ejemplo de aplicacin con ventanas] 120 150 287
100 []
creagroupbox "V_EJEMP "E_Ventana 5 0 274 85
creagroupbox "V_EJEMP "E_Escribir 20 2 120 50
creaboton "V_EJEMP "Escribir [ESCRIBIR] 25 10 110 35 [actualizaestatico "texto
[Ejemplo de ventanas]]
creagroupbox "V_EJEMP "E_Borrar 145 2 120 50

32

creaboton "V_EJEMP "Borrar [BORRAR] 150 10 110 35 [actualizaestatico "texto []]


creagroupbox "V_EJEMP "E_texto 20 50 120 30
creaestatico "V_EJEMP "texto [Pulse un botn] 25 60 80 15
creaboton "V_EJEMP "Salir [Salir] 150 60 110 20 [BT BP muestratortuga
borraventana
"V_EJEMP]
FIN
PARA MostrarEjemplo
; Ventana inicial del ejemplo
; Permite ver el ejemplo o abandonarlo
sisino sinobox [Visualizar ejemplo] [Quiere ver el ejemplo?.] [VentanaEjemplo] [BT
BP]
FIN
PARA BorrarVentanaEjemplo
borraventana "V_EJEMP
FIN
3.9 Otros Ejemplos con Primitivas Bsicas
1. Crea un procedimiento llamado por que calcule el producto de 10 por 42 y lo presente en
la pantalla grfica:

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

2. Crea un procedimiento llamado mensaje1 que muestre en la pantalla un aviso pidiendo


que lo aceptes o lo rechaces:
Para mensaje1
Mensaje [Plan para esta tarde] [Quieres ir a estudiar?]
Fin
3. Modifica el procedimiento mensaje1 para que pregunte otra cosa distinta.
fichero editar mensaje1
Para mensaje1
Mensaje [Plan para esta tarde] [Qu tal si vamos al cine?]
Fin
4. Crea un procedimiento llamado trazos que dibuje una lnea de trazos, de 100 pixel de
largo. Al terminar el procedimiento, muestra la tortuga en el centro de la pantalla.
Para trazos
Limpia

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

Repite 12 [av 40 gd 30]


OT
Fin
Fjate que, para dibujar cualquier polgono regular de 80 puntos de lado, el conjunto de
rdenes es el mismo. La nica variacin entre un polgono y otro es el nmero de lados,
que coincide con el nmero de repeticiones, y el ngulo que debe girar la tortuga.
7. Escribe un procedimiento capaz de dibujar un cuadrado cualquiera. El tamao del
cuadrado se especificar mediante la variable lado que acompaar al nombre del
procedimiento cuando lo invoques.
Para cuadro :lado
Repite 4 [AV :lado GD 90]
Fin
8. Escribe un procedimiento, de nombre poligono seguido de la variable lados, que dibuje
un polgono regular de 80 puntos de lado, con el nmero de lados indicado en la variable
lados
Para poligono :lados
BP BL
Poncp 12 Poncl 8 Pong [3 3]
Haz angulo 360/:lados
Repite :lados [AV 80 GD :angulo]
OT
Fin
9. Modifica el procedimiento poligono para que admita dos parmetros: el nmero de lados
y la longitud de esos lados.

36

Para poligono :lados :longitud


BP BL
Poncp 12 Poncl 0 Pong [3 3]
Haz angulo 360/:lados
Repite :lados [AV :longitud GD :angulo]
OT
Fin
10. Y, si somos capaces de dibujar un polgono cualquiera, podremos dibujar un crculo?
Escribe un procedimiento, llamado circulo, capaz de dibujar un crculo del radio que se le
indique.
Para circulo :radio
Haz "avance :radio*tan 1
Repite 360 [AV :avance GD 1]
Fin
11. Ahora, para practicar la programacin de reiteraciones con parmetros, modifica el
procedimiento trazo para crear otro procedimiento llamado trazo1 :longitud, que dibuje en
la pantalla una lnea de trazos de longitud ajustable. Redacta un programa con el menor
nmero posible de lneas de cdigo, utilizando la repeticin de una nica orden. El
procedimiento debera tener un aspecto como este:
Para trazo :longitud
Limpia
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

37

Bajalapiz Avanza 100 Subelapiz Avanza 100


Bajalapiz Avanza 100 Subelapiz Avanza 100
Ponpos [0 0]
GI 90
MT
Fin
12. Vamos a crear el procedimiento cuadro para que el cuadrado que resulta quede relleno
de color.
Para cuadro :lado
BP BL
Poncp 14 Poncl 0 Poncolorrelleno 10
Repite 4 [ AV :lado GD 90]
SL GD 45 AV 3
Rellena
OT
Fin
13. Haz un procedimiento, llamado pentagono, que dibuje en la pantalla grfica un
pentgono de cualquier longitud de lado. Posteriormente utiliza ese procedimiento ya
creado, en uno nuevo que dibuje seis pentgonos, unidos entre s por un vrtice y formando
una estrella.
Para pentagono :lado
Repite 5 [AV :lado GD 72]
Fin
Para estrella :lado
BP BL
Poncp 10 Poncl 0 Pong [3 3]

38

Repite 6 [pentagono :lado GD 60]


OT
Fin
Fjate que, en el cdigo del procedimiento estrella aparece una llamada al procedimiento
pentagono :lado, como si fuese una primitiva ms del lenguaje!
14. Guarda este grfico, creado con MSWLogo, en una carpeta de tu disco duro con
formato de mapa de bits .bmp. Para ello abre el men
bitmap Guardar como... Estrellapenta
15. Podrias dibujar una flor? Un mtodo sencillo podra consistir en dibujar cada ptalo
con un cuarto de crculo hecho con varios segmentos. Por ejemplo:
Para cuarto :paso
Repite 9 [AV :paso GD 10]
Fin
Dibujar un ptalo es fcil, con dos cuartos de crculo:
Para petalo :paso
Repite 2 [cuarto :paso GD 90]
Fin
Ahora te toca a ti lo ms fcil: escribe un procedimiento, llamado flor que sea capaz de
dibujar una flor compuesta de varios ptalos.
16. Haz un procedimiento, llamado nombre, que te pregunte tu nombre, lo guarde en una
variable, y lo muestre en la ventana de trabajo con el formato TU NOMBRE ES: nombre.
Para nombre ; Comienza el procedimiento llamado nombre

39

BP SL OT GD 90 ; borra la pantalla y sita la tortuga en posicin


Rotula [Cmo te llamas?]
Haz "tunombre leepalabra ; asigna la entrada tecleada a tunombre
BP GD 90 ; limpia la pantalla
Rotula [Hola!, ] ;escribe un texto de saludo y un espacio
Ponpos [60 0] ; se desplaza a la derecha
Rotula :tunombre ; presenta el valor de la variable
Ponpos [0 -25] ; se desplaza a la lnea inferior
Rotula [Qu tal ests?] ; completa el saludo
Fin ; fin del procedimiento nombre
17. Haz un procedimiento, llamado sumar, que nos pida dos nmeros y nos devuelva el
resultado de sumarlos en la ventana de grficos.
Para sumar
BP GD 90 OT SL BT ; inicializa las pantallas
Ponpos [-200 0] ; sita el puntero
Rotula [Qu nmeros quieres sumar?]
Haz "num1 leepalabra ; captura la primera variable
Haz "num2 leepalabra ; captura la segunda variable
BP GD 90 ; limpia la pantalla
Ponpos [-200 0] ; sita el puntero al comienzo
Rotula [LA SUMA DE ]
Ponpos [-85 0] ; de cada uno de los
Rotula :num1
Ponpos [-45 0] ; fragmentos del mensaje
Rotula [+]
Ponpos [-30 0] ; de salida
Rotula :num2
Ponpos [10 0]
Rotula [= ]

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

Escribe (lista "LA "PARTE "ENTERA "ES: entero :valor)


Escribe (lista "SU "VALOR "REDONDEADO "ES: redondea :valor)
Escribe (lista "SU "RAIZ "CUADRADA "ES: rc :valor)
Fin
23. Haz un procedimiento, llamado loteria, que genere dos nmeros aleatorios entre el 0 y
el 255 y los muestre en la ventana de trabajo. Adems devolver el resultado de dividir el
primero entre el segundo, y su resto.
Para loteria
BT;borra la pantalla de trabajo
Haz "num1 azar 255 ;genera al azar dos nmeros menores que 255
Haz "num2 azar 255
Escribe (lista "Primer "nmero "aleatorio: :num1)
Escribe (lista "Segundo "nmero "aleatorio: :num2)
Escribe (lista "Su "cociente "es: :num1/:num2)
Escribe (lista "Y "queda "un "resto "de: resto :num1 :num2)
Fin
24. Escribe un procedimiento, llamado num10, que sea capaz de escribir 6 nmeros
aleatorios entre 0 y 10.
Para num10
BT
Repite 6 [muestra azar 11]
Fin
25. Ahora escribe un procedimiento, al que llamaremos num25, que escriba ocho cifras
elegidas al azar entre el 2 y el 5. Las cifras no deben ser menores que 2 ni mayores que 6.
Para num25

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

Haz "contador 0 ;inicializa un contador


Mientras [:contador<:num+1] [Escribe (lista :contador "x "7 "= :contador * 7)
Haz "contador :contador + 1]
Fin
37. Para redundar en la ejecucin de tareas hasta que se cumpla una condicin, vamos a
hacer un procedimiento, llamado tablatrigo, que calcule los valores del seno y el coseno de
un ngulo, desde 0 a 120 grados, y los presente en la pantalla en forma de tabla ordenada.
Para tablatrigo
BP GD 90 SL OT
Poncp [245 196 127]
Haz "angulo 0
Haz "x -400
Haz "y 300
Hasta [:angulo>120] [Ponpos (lista :x :y) Rotula (lista "ngulo: :angulo) Ponpos
(lista :x+150 :y) Rotula (lista "Seno: sen :angulo) Ponpos (lista :x+450 :y) Rotula
(lista "Coseno: cos :angulo) Haz "angulo :angulo+5 Haz "y :y-20]
Fin
Es posible que tengas que retocar las coordenadas iniciales x e y para que la tabla quede
correctamente centrada en tu pantalla.
Las primitivas haz.mientras y haz.hasta son semejantes: ejecutan un grupo de
instrucciones mientras una condicin sea cierta o hasta que una condicin sea cierta. Su
sintaxis es como sigue:
haz.mientras [instrucciones] [condicin]
haz.hasta [instrucciones] [condicin]
Por ejemplo:
Haz "A 0

52

Haz.mientras [Haz "A :A+1 escribe :A] [:A<3]


Produce:
1
2
3
38. Haz un procedimiento llamado formato203 que genere una lista de nmeros entre el
5,00 y el 15,00 con dos decimales y con un incremento entre ellos de 0,03.
Para formato203
BT
Escribe [NMEROS DE 5 A 15]
Escribe [INCREMENTO: 0.03]
Escribe [ ]
Haz "num1 5.00
Haz.hasta [Escribe formatonumero :num1 5 2 Haz "num1 :num1+0.03][:num1 >
15]
Fin
39. Haz un procedimiento, llamado multipi, que genere la lista de mltiplos de
(3,141592), comprendidos entre el 0 y el 150, con una precisin de tres decimales. La serie
de nmeros debe aparecer en la ventana de texto con una cadencia de 0,5 segundos entre
cada nmero presentado.
Para multipi
BT
Escribe [MLTIPLOS DE PI 0<n<150]
Escribe [ ]
Haz "num 0
Haz.mientras [Escribe formatonumero :num 7 3 Haz "num :num + 3.141592654

53

Espera 30] [:num<150]


Fin
3.9.1 Paso De Argumentos Entre Procedimientos
Se puede realizar un procedimiento que necesite algn dato previo para poder realizar
alguna operacin con l y luego nos devuelva el dato o los datos del resultado.
Estos datos que se pasan al procedimiento, en el momento de llamarlo o ejecutarlo o que
devuelve el procedimiento al finalizar su ejecucin, se denominan argumentos.
40. Haz un procedimiento llamado multiplica, que reciba dos nmeros y devuelva el
producto de ambos a otro procedimiento que lo llame.
Para prod :x :y ;Se inicia un procedimiento con dos datos de entrada
Haz "z :x * :y
devuelve :z ; Al finalizar devuelve z al procedimiento que lo llam
Fin
Para multiplica
BT
Escribe [Introduce los factores]
Haz "x leepalabra
Haz "y leepalabra
BT
Escribe [El resultado es:]
Escribe (lista :x "x :y "= prod :x :y) ; Llama a <prod> y le da los datos. ; De <prod>
recibe un dato y lo presenta
Fin
41. Haz un procedimiento llamado rectanx3, que reciba un nmero y dibuje un rectngulo
de lado horizontal 3 veces el vertical. La altura del lado vertical ser el nmero recibido.
Las variables que utilice dicho procedimiento sern de carcter local.

54

Para rectanx3 :lado


BP BL Pong [2 2]
local "ancho
Haz "ancho :lado * 3
Repite 2 [AV :lado GD 90 AV :ancho GD 90]
OT
Fin
3.9.2 Programacin Orientada A Objetos
La tcnica de programacin orientada a objetos consiste, a diferencia de la programacin
estructurada mediante procedimientos, en organizar la interaccin con el usuario a travs de
objetos que aparecen en pantalla. Son objetos caractersticos las ventanas, botones, casillas
de seleccin, etc.
Los objetos son los elementos bsicos de la interfaz grfica de usuario
Una ventana es un rea de trabajo, tpica del entorno Windows, dotada de una barra de
ttulo, sobre la que aparecern otros objetos para facilitar la interaccin del usuario. Una
ventana puede arrastrase por la pantalla, maximizar, minimizar, borrar, etc.
42. Crea tu primera ventana tecleando la siguiente orden:
creaventana " "primera [Mi primera ventana] 90 50 120 80 [ ]
Observa que la ventana tiene un nombre (primera), su barra de ttulo muestra el texto <Mi
primera ventana>, su posicin respecto a la esquina superior izquierda (90 50) y su tamao
(120 x 80). La ventana ha sido creada en la ventana principal de la pantalla ()
Puedes desactivar la ventana o volverla a activar con las rdenes:
habilitarventana primera falso
habilitarventana primera verdadero
43. Ahora borra la ventana, utilizando la orden siguiente:

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

46. Para practicar la creacin de ventanas y la introduccin de textos estticos, escribe un


procedimiento llamado resultado, que reciba dos nmeros y devuelva el producto de
ambos en una nueva ventana.
Para resultado

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

Creaestatico "calculo "resul1 (lista :num1 "x :num2 "= :resul) 5 10 90 10


Fin
Haz una prueba: deshabilita la ventana calculo y vers que no puedes manejarla con el
ratn. Si la habilitas de nuevo podrs activarla y arrastrarla por la pantalla.
Para despejar la pantalla, debes teclear la orden:
borraventana calculo
Un botn es un elemento que permite manipular un programa mediante el ratn, que puede
hacer clic en l o, simplemente, pasar sobre l.
47. Escribe un procedimiento que cree una ventana, llamada segunda, en la que haya un
botn para cerrarla.
Para segunda
Creaventana segunda [Pulsa Aceptar para cerrar] 200 50 90 40 [ ]
Creaboton segunda boton1 [Aceptar] 30 5 30 20 [sesamo]
Fin
Observa que la longitud de la ventana (90) ha de ser suficiente para que quepa el texto
(pulsa aceptar para cerrar). La altura de la ventana ha de bastar para que quepa el botn,
que tiene 30 x 20. Las coordenadas de la posicin del botn pretenden que quede centrado
en la ventana. Y ahora, crea el procedimiento sesamo, que se encargar de cerrar la
ventana:
Para sesamo
Borraventana "segunda
Fin

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

(sealado en amarillo). Cuando el cursor de la barra se mueva se ejecutar el procedimiento


llamado leebarra que habr que escribir:
Para leebarra
Haz "x leebarradesplazamiento "barra
Haz "y raizcuadrada :x
Actualizaestatico "estat :x
Actualizaestatico "estat2 :y
Fin
Una ventana de dialogo se utiliza como marco de trabajo en el que se pueden aadir otros
objetos o controles como botones, barras de desplazamiento, listboxes, etc. Este objeto es
similar a una ventana, excepto que no devolver el control al procedimiento llamante
hasta que la ventana de dilogo se cierre.
51. Vamos a crear una ventana de dilogo que pida al usuario que acepte pulsando un
botn. Pero, en primer lugar, vamos a crear el procedimiento que cerrar la ventana al
pulsar el botn:
Para vendialo
Creaboton "dialogo1 "botvale "ACEPTAR 25 10 40 20 [borradialogo "dialogo1]
Fin
Ahora que est preparado teclea, en la ventana de trabajo, la orden siguiente:
Creadialogo " "dialogo1 [El sistema debe reiniciarse] 120 60 90 50 [vendialo]
Naturalmente, una vez pulsado el botn pueden ponerse en marcha procedimientos ms
ambiciosos que el simple cierre de la ventana de dilogo.

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

Creabotonradio "cuarta "marco "bot1 [<15 aos] 10 13 40 9


Creabotonradio "cuarta "marco "bot2 [15 a 18 aos] 10 23 55 9
Creabotonradio "cuarta "marco "bot3 [>18 aos] 10 33 40 9
Escribebotonradio "bot1 "verdadero
Creaboton "cuarta "cierre [Aceptar] 75 20 30 20 [borraventana "cuarta]
Fin
Fjate bien, todas las coordenadas estn referidas a un origen comn situado en la esquina
superior izquierda de la ventana. La creacin de cada objeto incluye una ruta compuesta por
la ventana padre, el objeto padre y su propio nombre.
Slo puede estar seleccionado uno de los botones radio de un groupbox. Cuando el usuario
selecciona una de las opciones lo pone en estado verdadero y, automticamente, el resto de
las opciones se ponen en estado falso. Adems, al iniciar el groupbox, una de las opciones
declararse verdadera.
54. Haz un procedimiento llamado calcacme, que pida dos nmeros y dibuje en una
ventana un grupo con cuatro botones radio. Cada botn tendr asignada una operacin
matemtica. Cuando pulsemos un botn aparecer el resultado de aplicar la operacin
matemtica seleccionada a los dos nmeros introducidos. Tendr, adems, otro botn que
permita cerrar la ventana:
Para calcacme
BP SL GD 90 OT
Ponpos [-450 150]
Rotula (lista "Introduce "dos "nmeros "en "la "ventana)
Haz "num1 leepalabra
Haz "num2 leepalabra
BP
Creaventana " "ultima [Calculadora aritmtica marca "ACME"] 150 70 180 100 []
Creagroupbox "ultima "grupo 10 10 160 50
Creabotonradio "ultima "grupo "boton1 [ +] 15 15 25 10

63

Creabotonradio "ultima "grupo "boton2 [ -] 15 25 25 10


Creabotonradio "ultima "grupo "boton3 [x] 15 35 25 10
Creabotonradio "ultima "grupo "boton4 [/] 15 45 25 10
Escribebotonradio "boton1 "verdadero
Creaboton "ultima "calcular [CALCULAR] 20 67 45 15 [calculo]
Creaboton "ultima "cerrar [ACABAR] 115 67 45 15 [borraventana "ultima]
Creaestatico "ultima "estat [NUMEROS: ] 50 25 45 15
Creaestatico "ultima "estat1 :num1 110 25 20 15
Creaestatico "ultima "estat2 :num2 140 25 20 15
Creaestatico "ultima "estat3 [RESULTADO:] 50 40 50 15
Creaestatico "ultima "estat4 [ ] 110 40 30 15 ; Se crea un esttico sin mensaje
Fin
Para calculo
Haz "x leebotonradio "boton1
Si :x= "verdadero [haz "num3 :num1 +:num2]
Haz "x leebotonradio "boton2
Si :x= "verdadero [haz "num3 :num1-:num2]
Haz "x leebotonradio "boton3
si :x= "verdadero [haz "num3 :num1 *:num2]
Haz "x leebotonradio "boton4
si :x= "verdadero [haz "num3 :num1/:num2]
Actualizaestatico "estat4 :num3
Fin
Un objeto checkbox es una casilla que el usuario puede seleccionar. Todas las casillas
checkbox deben estar reunidas en un groupbox. El usuario puede seleccionar varias casillas
simultneamente.

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

Para averiguar cul es la opcin elegida por el usuario, utilizaremos la expresin:


leetextocombobox nombre
57. Vamos a escribir el cdigo de un script para una agencia de viajes, en el que el cliente
puede elegir el lugar elegido para sus vacaciones. La agencia de viajes ofrece una lista de
destinos comunes, los ms solicitados, pero tambin permite al cliente solicitar un destino
que no est en esa lista. Un objeto combobox es la opcin ideal:
Para viaje
creaventana " "destino [Elija el destino de su viaje] 150 80 120 110 []
creacombobox "destino "listado 20 5 80 50
aadelineacombobox "listado [Turquia]
aadelineacombobox "listado [Viena clsica]
aadelineacombobox "listado [Praga romntica]
aadelineacombobox "listado [Italia]
aadelineacombobox "listado [Fiordos noruegos]
aadelineacombobox "listado [Viedos de Francia]
aadelineacombobox "listado [Costas de Espaa]
aadelineacombobox "listado [Islas Canarias]
pontextocombobox "listado [Fiordos noruegos]
creaboton "destino "botacepto "Elegir 20 70 30 20 [confirma]
creaboton "destino "botcierre "Cerrar 70 70 30 20 [borraventana "destino]
creaestatico "destino "texto [Fiordos noruegos] 30 55 80 9
Fin
Para confirma
Haz "lugar leetextocombobox "listado
actualizaestatico "texto :lugar
Fin

68

4. ORIENTACIONES METODOLGICAS A LOS PROFESORES PARA INICIAR


LA ENSEANZA DE LOGO EN EL AULA.
4.1 Preparacin De Las Primeras Actividades De Programacin
Al inicio de este curso, lo que hemos estado haciendo es aprender los lineamientos tcnicos
para programar en MSWLogo, como ser el uso de primitivas, creacin de variables,
creacin de procedimientos y otras cosas mas, ahora nos centraremos en la metodologa que
un profesor debe seguir para ensear a sus alumnos a programar en MSWLogo.
A esta parte la llamaremos Unidad Didctica, aqu se describirn algunas estrategias que se
pueden seguir para alcanzar el objetivo de que los estudiantes puedan programar en
MSWLogo y principalmente ensear los conceptos de programacin.
Ahora nos dedicaremos a solventar un problema didctico previo: dar a conocer al
alumnado el lenguaje LOGO, su vocabulario y su sintaxis. Comenzaremos nuestra
exposicin del modo ms interactivo e inmediato: el modo directo.
4.2 Presentacin Didctica Del Modo Directo
Antes de usar LOGO para el control de una mquina, nuestro alumnado deber conocer los
rudimentos de este lenguaje de programacin. La forma ms sencilla, directa y atractiva de
proponerles su conocimiento ser a travs del micromundo de la tortuga (se utiliza el
termino de tortuga para decir que ser por medio de esta que nos comunicaremos con la
maquina, pero en MSWLogo acordmonos que no aparece la tortuga, sino que aparece un
triangulo), donde las rdenes producen efectos geomtricos inmediatos. Aprovecharemos el
primer contacto del alumnado con LOGO para hacerles vivenciar esta caracterstica. Para
conseguirlo, una vez cargado el programa y visualizada la pantalla con sus tres ventanas,
les propondremos la siguiente actividad para la primera sesin:
Comunicarse con la tortuga por medio del teclado para que realice dibujos en la pantalla.
Les informaremos de que:

69

La tortuga entiende rdenes en castellano.

Las rdenes se expresan con una palabra.

A veces, la orden va acompaada de un parmetro numrico que indica cantidad.

Cuando no comprende un mensaje, LOGO lo indica por medio de otro mensaje en


la ventana de textos.

En cuanto descubran alguna palabra del vocabulario de la tortuga, la comunicarn a toda la


clase escribindola en la pizarra.
Durante el desarrollo de la sesin, la funcin del profesor o profesora ser ante todo de
animacin, ayudando al grupo a reflexionar sobre los distintos mensajes de error que irn
recibiendo, de modo que distingan entre:
- NO SE CMO HACER CORRE - y - FALTAN DATOS PARA AVANZA De este modo, alumnos y alumnas irn haciendo deducciones que les ayudarn a descubrir
algunas primitivas del lenguaje LOGO. Cuidaremos de que vayan descubriendo la funcin
de cada ventana; as, en la ventana de GRFICOS vern que la tortuga dibuja pero, en la de
TEXTO, LOGO enva mensajes mientras, los nuestros aparecen en la de TRABAJO.
Les haremos reflexionar sobre el carcter estricto del lenguaje LOGO en el que hasta los
espacios en blanco tienen un valor y donde no caben interpretaciones que completen una
palabra mal escrita segn su contexto de uso, como ocurre con los lenguajes naturales.
Los giros de la tortuga son difciles de descubrir, en algunos casos, porque engloban en un
solo trmino la orden y el sentido de giro de la tortuga una vez ejecutada la orden.
Ayudaremos a descubrir uno de ellos escenificando una orden de giro con un alumno y
viendo la necesidad de darle un sentido adems de un parmetro.
El juego no tiene por qu durar ms de 30 minutos, pues una vez asumida la arbitrariedad
del lenguaje, el juego se transforma en una lotera en la que el profesor o la profesora es el
nico que conoce los resultados.

70

4.3 El Aprendizaje De Las Primeras Primitivas


El planteamiento ms heurstico del aprendizaje de LOGO tendra que partir del
descubrimiento individual o, mejor, grupal de su vocabulario y sintaxis. Sin llegar a
extremos, podemos plantearnos presentar las primitivas al grupo conforme las vayan
necesitando para solventar los problemas que se les plantean al disear los dibujos. De este
modo, el papel del profesorado, adems de animar y motivar, supondr proporcionar
informacin y ser, as, un apoyo al que se recurre ante las dificultades.
Tambin conviene pensar cundo conviene que sean los propios alumnos y alumnas
quienes piensen los diseos que quieren efectuar (proyectos abiertos) o sea el profesor
quien d las ideas (proyectos libres) o presente un diseo concreto para que los equipos
intenten lograr otro igual (proyectos cerrados).
Despus de dedicar un rato a la investigacin del vocabulario de LOGO, nos aseguraremos
de que todo el alumnado conoce la sintaxis de estas primitivas:
AVANZA N
RETROCEDE N
GIRADERECHA N
GIRAIZQUIERDA N
Sin necesidad de otro vocabulario propondremos que averigen las dimensiones del terreno
que visualizan en la pantalla de Grficos, medidos en pasos de la tortuga.
Valdrn actividades como:

Dibujar una cruz en el centro de la pantalla lo ms grande posible pero sin salirse
por los laterales.

Hacerle un marco a la ventana de grficos.


71

Dibujar un rectngulo que ocupe un cuadrante de la ventana

Dibujar los cuatro cuadrantes de la ventana.

Dibujar un camino, lo ms recto posible, que vaya de extremo a extremo de la ventana.


La realizacin de estos proyectos llevar a la necesidad de tener limpia la pantalla para
empezar un nuevo trabajo. Probablemente, nuestro alumnado demandar que le
informemos de la primitiva que realiza esta tarea. Presentaremos, entonces, la primitiva
BORRAPANTALLA.
Habr llegado el momento de comunicarles que muchas de las primitivas que entiende la
tortuga las puede comprender tambin en forma abreviada; AV, RE, GD, GI, BP.
Uno de los problemas que suelen surgir en estas primeras sesiones es el de dificultad de los
alumnos para comprender que las rdenes GD y GI estn en funcin de la posicin de la
tortuga y no de la del programador.
Aparte de hacerles notar que nuestra visin de la tortuga es cenital seguiremos la siguiente
escenificacin:

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 resto de su equipo disea en un folio de papel cuadriculado un sencillo dibujo


que marque una trayectoria a travs de las mesas y sillas de la clase de modo que, al
final, tenga que volver al lugar y a la posicin de partida.

El equipo ir dando rdenes LOGO en las que los cuadros del papel coincidan con
las baldosas de la clase.

Valdr la pena insistir en el concepto antes comentado (GD y GI en funcin de la posicin


de la tortuga), as como en los mensajes de error que toda la clase corear cuando
olviden los programadores de dictar un espacio o no indiquen un argumento.

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:

Dibujar las cifras arbigas en la pantalla.

Situar la tortuga en un ngulo de la pantalla de grficos para dirigirla posteriormente


al otro extremo, trazando en el recorrido una lnea quebrada, de forma que cada
segmento concatenado sea cada vez menor y los ngulos cada vez mayores.

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.

Trazar dos segmentos paralelos.


Los ejercicios darn pie para presentar las primitivas CENTRO y LIMPIA por la
conveniencia de tener controlada la posicin de la tortuga antes de programar una serie de
73

movimientos, pues suele suponer un serio tropiezo en el aprendizaje de la programacin por


parte de nuestros alumnos y alumnas. Un simple giro mal concebido cambia totalmente el
aspecto de su diseo y provoca una gran frustracin.
4.4 El Cuaderno De Logo
Dentro de este apartado expondremos una serie de tareas cuyo desarrollo supone el
ejercicio del control de la tortuga, as como el paso previo a la creacin de procedimientos.
Para la realizacin de estos ejercicios, pediremos a nuestro alumnado que dibuje en un
cuaderno de papel cuadriculado el diseo que desea realizar, as como el conjunto de
rdenes necesario para ello. Despus, se trabaja con LOGO.
No se valorarn los sucesivos errores cometidos hasta llegar al diseo final, ya sea
corrigiendo con la primitiva GOMA, ya sea retrocediendo, cambiando el ngulo de giro o
haciendo tanteos a pasos cortos. Al final, quedar en la pantalla de trabajo una serie de
rdenes separadas por espacios en blanco, que comenzarn con un BP y terminarn con el
cursor al final de la lnea. Cuando hayan llegado a esa situacin, tanto en la pantalla como
en su cuaderno, llamarn al profesor/a para que sea testigo de la ejecucin de las rdenes,
con la esperanza de que el diseo del cuaderno se repita en la pantalla.
El cuaderno sirve tambin como diccionario LOGO y puede ser usado por el profesorado
como recurso de control del trabajo diario realizado en el aula por los distintos equipos.
Otros ejercicios tiles para afianzar el aprendizaje de las primitivas son los siguientes:

Dibujar una espiral quebrada cuadrada con una sucesin de avances que aumenten
la longitud de los lados.

Hacer que la tortuga dibuje la palabra LOGO.

Dibujar unas gafas de cristal rectangular en la pantalla.

A lo largo de la sesin, insistiremos a nuestro alumnado en la necesidad de adquirir


algunos hbitos muy tiles en la programacin:

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.

La necesidad de tener controlada la tortuga para evitar que se salga de la ventana o


dibuje formas no deseadas.

El inters por la bsqueda de la figura precisa, limpia y centrada en la ventana sin


conformarnos con el ya vale.
A estas alturas de conocimiento de LOGO, sera conveniente que ya hubiera surgido la
necesidad de hacer uso de primitivas como:
PONCOLORLAPIZ N,
PONFONDO N,
PONGROSOR N,
RELLENA

4.5 La Utilidad De Los Mensajes De Error


No se debera terminar sesiones como la descrita sin hacer una mencin expresa a la
responsabilidad ltima del programador en la bondad o limitaciones del programa diseado,
introducido y ejecutado.
Quin es el responsable de que una mquina diseada para pintar paredes, manche el suelo
en lugar de extender la pintura por los tabiques?, La mquina o la persona que la dise?
En el supuesto de un programa creado por nosotros, debemos tener presentes las
limitaciones de los datos ofrecidos por los censores, la arquitectura de la mquina
diseada... Por ltimo, si no acta tal y como queramos que actuara, el error es nuestro y
debemos corregirlo.
El profesor o la profesora har notar a su alumnado que:

75

El error no es un castigo sino una comunicacin del programa al programador que


indica qu es lo que debe evitar en el futuro.

La energa generada por la frustracin ante el error debe llevarles hacia la


superacin por medio de la comunicacin dentro de los grupos de trabajo.

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

Recordaremos primitivas ya conocidas y las escribiremos correcta o incorrectamente en la


pizarra para permitir que nuestro alumnado deduzca, antes de su ejecucin, cul ser la
reaccin de la tortuga:
AV 50 La tortuga dar 50 pasos hacia delante
AV DIEZ No s cmo hacer DIEZ
RE Faltan datos para Retrocede
PONF 3 El fondo de la ventana de grficos se pone de color verde
SL No se observa ningn cambio
AV 20 La tortuga avanza 20 pasos sin dejar trazo a su paso
GIRA 90 No s cmo hacer GIRA
GI 50 La tortuga da un giro de 50 hacia su izquierda

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

definicin ha terminado. Entonces cuando Logo enve un mensaje indicando su disposicin


para ejecutar la palabra nueva, que ya ha incorporado a su vocabulario como si de una
primitiva ms se tratara.
Propondremos a la clase una primera con CUA escribiendo en un ordenador:
PARA CUA
BP BL PONCL 1 PONG 1 PONF 16
REPITE 4[AV 50 GD 90]
FIN
Durante la escritura del procedimiento, haremos notar que:

En la primera lnea slo est la palabra PARA precediendo el nombre del


procedimiento.

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 primitiva FIN est sola en la ltima lnea.

LOGO denota la terminacin de un procedimiento por medio de un mensaje en la


ventana de textos.

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

Previamente les explicaremos que, sin necesidad de cambiar el nombre de un


procedimiento, pueden introducir cambios en cada lnea siempre que confirmen los
cambios con [INTRO] en la lnea de FIN.
B) Cundo presentar la primitiva REPITE
El momento preciso en que podemos plantear al alumnado la posibilidad que LOGO ofrece
de crear procedimientos estar en funcin de la dinmica que se haya ido creando, las dosis
heursticas que habremos dosificado y, en resumen, la relacin profesorado-alumnado que
se haya ido generando.
No se puede generalizar cul es el nmero de primitivas que conviene presentar en la fase
de modo directo, y ni siquiera tiene que coincidir entre un determinado grupo y otro. De
todos modos, no est fuera de lugar en dicha fase la inclusin de la primitiva REPITE, pues
da pie a la generacin de muchas posibilidades creativas, tanto en el micromundo de la
tortuga como en el de la robtica.
Ahora plantearemos propuestas de ejercicios que pueden servir para el dominio de su
sintaxis.
Las propuestas de trabajo que vamos a presentar fueron fruto del trabajo de un grupo
numeroso de alumnos y alumnas que se prestaron voluntariamente a realizar una
experiencia de implantacin de LOGO en una poblacin espaola de 10.000 habitantes.
Son, en consecuencia, proyectos elaborados de forma espontnea, basados en imgenes que
sugirieron su realizacin. La metodologa es abierta y est en funcin de la dinmica que se
vaya logrando: Proposicin de un dibujo, sugerencia, explicacin del modelo...
En las siguientes fases del trabajo con nuestros alumnos y alumnas, el cuaderno del equipo
de trabajo ser un instrumento de gran ayuda, pues en l los grupos pueden reflejar sus
proyectos y redactar tanto sus propuestas como los procedimientos que vayan elaborando.
Una vez terminado el trabajo de cada uno de los grupos, debiera hacerse una puesta en
comn donde se podran valorar las estrategias y posibles errores y mejoras de unas
soluciones respecto de otras, con el fin de que el alumnado comprendiese que las
79

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.

Dibuja un asterisco de 6, 8, 10, 12 aspas. (ESTEL 6 / 8 / 10/ 12)

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 una escalera desde un extremo al otro de la pantalla. (ESCALERA)

Dibuja una empalizada. (EMPA)

Dibuja cenefas. (CEF1, CEF2, CEF3, CEF10, CEF20, CEF30, CEF100, CEF200,
CEF300)

C) El viaje total: Propuestas de actividades para que el alumnado comprenda y valore


el valor del giro.
Antes de analizar el siguiente grupo de actividades que se ofrecen como recurso didctico
para el aula, deberamos dedicar un tiempo para que nuestro alumnado reflexionase sobre
algunos conceptos geomtricos que convendra tener presentes en la programacin de los

80

movimientos de la tortuga cuando pretendamos que dibuje polgonos o lneas poligonales


cerradas.
El giro que efecta la tortuga, como sabemos, no es el del ngulo interno del polgono, sino
el del externo que, en el caso del cuadrado, coincide con el interno.

Propondremos a cualquier alumno que d un giro sobre s mismo y que, despus,


rodee andando el permetro de una mesa de clase.

Les preguntaremos cul ha sido el giro efectuado en ambos casos.

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:

Confeccionar procedimientos que dibujen polgonos de diferentes colores y


grosores con 6, 8 y 10 lados. (POL6)

Confeccionar procedimientos que dibujen polgonos de un nmero impar de lados,


apoyados en una base. (POL5)

La repeticin de procedimientos similares nos puede servir para introducir la posibilidad de


editar procedimientos cambiando tambin su nombre. Por medio de la primitiva IMTS, los
alumnos podrn ver que siguen disponiendo de los procedimientos creados anteriormente,
aunque hayan desaparecido de la ventana de Trabajo.
La tarea puede abordarse con el siguiente ejercicio:

81

Confeccionar procedimientos que dibujen polgonos de 7, 11, 13 lados.


La finalidad que se pretende lograr con las propuestas anteriores es la de enfrentar al
alumnado con el problema de clculo que supone establecer el valor de un giro de un
ngulo no entero. Ser un buen momento para explicar a la clase que la tortuga, adems de
tener una biblioteca, posee una calculadora que le permite ejecutar rdenes cuyo parmetro
es el resultado de una operacin indicada.
Polgonos estrellados
Cuando se han superado las dificultades de la sintaxis de la primitiva REPITE y la
confeccin de polgonos se transforma en una ejercitacin mecnica, podemos proponer
que no sea un viaje que requiera una nica vuelta, sino que se puede hacer varias hasta que
la tortuga vuelva al punto de partida, despus de haber dado N*360 de giro. Para ello,
haremos propuestas del tipo:

Dibujar lneas poligonales cerradas que resulten de un giro de 360*n . (EST2550


EST9200 EST36250 EST7720)

La primitiva REPITE dentro de REPITE


Dentro de las posibilidades de esta primitiva, que posteriormente volveremos a usar en el
apartado dedicado a modularidad, cabran tambin algunas figuras que requieren para su
construccin de la aparicin de la primitiva REPITE, dentro de un corchete precedido de
otro REPITE.
Daremos por supuesto que la sintaxis de la primitiva REPITE, as como los clculos
aritmticos que permiten realizar el viaje total ya han sido manejados con soltura por
nuestros alumnos/as
Por la espectacularidad y sencillez en su programacin, entresacamos del libro Que viene
el LOGO del S.P.I.B.C. de la Escuela de Verano de Aragn, en Huesca, el siguiente
ejercicio:

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)

Sern de gran utilidad para presentar posteriormente la modularidad.

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

Haremos observar a nuestro alumnado que procedimientos logrados anteriormente


anidando un corchete de la sintaxis de un REPITE dentro de otro se transforman en
programas mucho ms sencillos y evidentes en los que un procedimiento que lograba una
figura es llamado por otro que lo usa como mdulo a repetir despus de un giro o un
desplazamiento.
Podemos presentar propuestas como:
FLOR4, FLOR7, FLOR 6, FLOR0, TUBO, CUA1, CUA2, CUA3, CUAD44
Conviene empezar por programas como FLOR4, que tan slo llama a CUAD, llegaremos a
CUA3 que llama a dos programas CUA1 y CAU2, para por ltimo, realizar el esquema de
CUA44 llamando a CUAD4, el cual llama a CUAD.
La introduccin de las primitivas OT y MT nos darn la posibilidad de colocarle turbo a
la velocidad de la tortuga cuando haga circunferencias.
SOLUCIONES a los PROYECTOS:
PARA ESTEL12
BP BL PONCL 1 PONG 1 PONF 16
REPITE 12 [AV 50 RE 50 GD 30]
FIN
PARA ESCALA
BP BL PONCL 1 PONG 1 PONF 16
REPITE 8[AV 10 GD 90 AV 25 GI 90]
RE 80 CENTRO
FIN

PARA ESCALERA
84

BP BL PONCL 1 PONG 1 PONF 16


SL RE 8 GI 90 AV 200 GD 90 BL
REPITE 16[AV 10 GD 90 AV 25 GI 90]
SL CENTRO
FIN

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

una definicin de programacin: Programar es analizar, dividir un problema en pequeos


mdulos, engarzados entre s por medio de unas sentencias condicionales. En este tema
profundizaremos sobre la sintaxis de estas sentencias
Un programa, estar formado por un conjunto de procedimientos que se van ejecutando
segn el orden que hayamos establecido y que en un principio sera el mismo que llevamos
al leer o escribir en Castellano, de izquierda a derecha y de arriba abajo, a no ser que en
cualquier lnea del programa se nos mande a otro o, como veremos cuando hablemos de la
recursividad, a s mismo.
Habr momentos en que el camino a seguir no ser nico, aparecern bifurcaciones. En
esos casos, el paso de un procedimiento a otro, vendr determinado por el cumplimiento o
no de una serie de alternativas que habremos incluido en unas sentencias condicionales
dentro de los propios procedimientos.
Vimos que uno de los puntos claves de los programas est en la capacidad de LOGO de
distinguir entre varias opciones en funcin de unos condicionantes. ste va a ser el
contenido final del tema, pero para poder introducirlo a nuestro alumnado con una base que
les permita realizar ejercicios variados y creativos, deberemos previamente mostrar una
serie de nuevas primitivas del micromundo de la tortuga: Manejo de variables, Primitivas
de control del entorno, mensajes de logo hacia el usuario etc. que vamos a ir presentando
previamente a las sentencias condicionales.
Tal como se ha ido viendo en el video, la forma de presentar la estructura de estas
primitivas que comienzan con un SI...... ser la de que el alumnado asuma que en nuestra
vida corriente, estamos tomando decisiones continuamente en funcin de alternativas y que
nuestra eleccin pasa previamente por un conocimiento de las mismas y unos
condicionantes que nos hacen elegir una u otra segn se acomoden o no a nuestros deseos
previos.
Para dar una idea de uso de las sentencias condicionales que determinan el camino que
sigue el desarrollo del programa, podramos proponer el anlisis del problema
ACABAR_JORNADA.
93

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

Para introducir el concepto de variables, nos apoyaremos en los conocimientos matemticos


que nuestros alumnos y alumnas habrn desarrollado en el rea de matemticas, cuando
trabajaron los conceptos de funcin y ecuacin. Slo tendrn transformar mentalmente la
imagen de una x o una y por :l o r.
4.7.1. Variables Locales
Las variable locales:
-Se generan en la lnea de creacin del programa.
-Su declaracin va precedida del signo :, por lo que la primera lnea tiene la siguiente
sintaxis PARA NOMBRE :VARIABLE
-Cuando se quiere hacer referencia a su contenido, debe ir tambin precedido del signo:
-Su contenido slo tiene existencia mientras se ejecuta el procedimiento que la genera.
-Otros procedimientos podran generar variables locales con el mismo nombre.
-Pueden generarse ms de una variable por procedimiento, pero todas deben declararse en
la primera lnea del programa.
-Cuando se va a ejecutar un procedimiento que contiene en su definicin una o varias
variables locales, el nombre del procedimiento debe ir acompaado del contenido de cada
una separndolos por medio de espacios.
4.7.2. Variables Globales
Las variables globales:
-Se generan en cualquier lnea interior del programa.
-Su declaracin se consigue con la primitiva HAZ nombre seguida del contenido que se
le quiere dar

96

-Cuando se quiere hacer referencia a su contenido, el nombre de la variable debe ir


precedido del signo:
-Su contenido tiene existencia mientras se trabaja en rea.
-Si se crearan otros procedimientos con variables con el mismo nombre, se interferiran
tomando el ltimo contenido asignado.
-La forma de evitar estas interferencias es declararlas previamente y localizarlas por medio
de la primitiva LOCAL [VAR1, VAR2,...] seguida de los nombres de las variables que se
quieren generar posteriormente. Su contenido tendr valor dentro del procedimiento que las
genera y todos aquellos que lo llamen o sean llamados por l.
-Puede generarse ms de una variable por procedimiento.
-Hay que distinguir claramente la expresin variable que supone la creacin de una
variable de :variable que hace referencia al contenido de la variable definida con ese
nombre.
-Cuando el contenido de una variable es una palabra, ir precedido de comillas y cuando
sea una lista, ir entre corchetes.
La clarificacin de estos conceptos debe ser el objetivo de las sesiones dedicadas al tema de
las variables, pero para poder sacar provecho de las mismas en cualquier tipo de ejercicios
que propongamos o mostremos a nuestro alumnado, deber ir acompaada de la
presentacin de otras primitivas que iremos presentando prcticamente a la par.
4.7.3 Metodologa Para La Presentacin De Las Variables Locales
Tal como ya hemos expuesto en otros apartados, la mejor motivacin para estos conceptos
es la de crear la necesidad de utilizarlos, que sea el propio alumnado quien las pida. No
vamos a pretender que obliguemos al grupo a realizar cuadrados de todas las medidas para
que, aburridos de repetir cambiando un nmero pidan a gritos un sistema ms cmo y

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

es correcta sin ellos. Su presencia se hace necesaria en otros procedimientos que


comentaremos posteriormente y que requieren de ajustes finos con otras figuras.
11 Disear procedimientos que requieran la presencia de variables locales y que jueguen
con la repeticin de circunferencias centradas de distintas dimensiones junto con
desplazamientos y giros.(TABA :TUB).
Las aplicaciones de estos programas como desarrollo y profundizacin de conceptos
geomtricos se pueden trabajar con propuestas de diseo de procedimientos que realicen
circunferencias inscritas o circunscritas a polgonos regulares. Para ello, debern disear
primero, procedimientos que dibujen un cuadrado y un hexgono en funcin de su lado
(CUAV :L, EXAV :L).
12 Crear procedimientos con variables locales que, llamando a un cuadrado o un
hexgono, los inscriban o circunscriban a una circunferencia. (CUACIR :R, CUAINS :R
EXACIR :R, EXAINS :R). Para poder realizar esta propuesta, deberemos presentar,
tambin en modo directo, la primitiva RC: ES RC 16. A pesar de ello, antes de entrar en el
diseo de estos procedimientos, nos aseguraremos que los clculos matemticos que los
posibilitan estn claros en la mente de nuestros alumnos y alumnas.
13 Mejorar estos procedimientos cambiando sus colores, coloreando su interior con la
primitiva RELLENA, dibujando con colores sus distintos elementos como radios, apotemas
etc., o realizando el clculo de sus superficies.
4.7.4. Metodologa Para La Presentacin De Las Variables Globales
Seguiremos usando el smil que utilizbamos para introducir las variables locales a base de
relacionar la creacin de variables que tienen un nombre y un contenido con unos bolsillos
con etiqueta externa. Las diferencias estn en que su creacin se realiza en cualquier lnea
del programa (excepto la primera PARA.. y la ltima FIN) y que su existencia no se
circunscribe a la duracin del procedimiento.
Deberemos presentar previamente las primitivas LeeCarcter y LeePalabra, para ello
elaboraremos programas sencillos que muestren cmo ambas requieren la actuacin del
100

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

LC y LP y las distintas formas de comunicacin entre LOGO y el usuario ESCRIBE y


ROTULA.
Mostraremos cmo el contenido de las variables sigue existiendo despus de la ejecucin
de estos programas con rdenes directas como Escribe :mod o Rotula :CIRCUM.
La presentacin de la primitiva ENTERO puede hacerse por medio de un sencillo programa
diseado con una variable local que combine LP y esta primitiva.
5. SENTENCIAS CONDICIONALES
5.1 Metodologa
Retomamos la definicin expresada en anteriores entregas del curso: Programar es analizar,
dividir un problema en pequeos mdulos, engarzados entre s por medio de unas
sentencias condicionales.
Nuestro alumnado, ha ido realizando programas que se ejecutaban de forma lineal, en el
orden de la escritura occidental; los programas se engarzaban entre s llamndose unos a
otros. En este apartado presentaremos la posibilidad que nos ofrece LOGO de crear
bifurcaciones, distintos caminos que sern recorridos opcionalmente en funcin de
sentencias condicionales.
No insistiremos en la explicacin de la sintaxis de la primitiva SI pues ya fue expuesta en el
Anexo I. Simplemente recordaremos el funcionamiento interno de sus dos opciones.
Se puede expresar SI Condicin [Accin].
Esta sintaxis presenta dos caminos, realizar la accin o no realizarla; Expresado de otro
modo, tomar un desvo o no tomarlo. En ambos casos, seguir con la ejecucin de la lnea
principal del programa, retomar el camino principal si se ha desviado.
La otra expresin ser SI Condicin [Accin1] [Accin2]

102

En esta ocasin, obligar a tomar un desvo u otro en funcin de cumplirse o no la


condicin expuesta, y en ambos casos, volver al programa principal una vez ejecutadas
una u otra accin.
Para presentar estas sentencias con un ejemplo, nos apoyaremos en el grfico que hicimos
al principio de este captulo en el que estructurbamos el programa ACABAR_JORNADA.
Insistiremos en la diferencia que existe entre los condicionales:
SI soy responsable o SI tengo clase de ingls; puesto que en ambos casos o se toma el
desvo o se sigue el camino principal.
Con el condicional SI tengo tareas, que nos llva a un desvo o a otro para acabar en ambos
casos en el programa principal.
En estos primeros pasos podemos presentar sencillos programas para que el alumnado
realice los esquemas y comente cul ser el posible flujo en funcin de las posibles
respuestas dadas, antes de escribirlo en el ordenador.
Otro ejemplo que podemos disear para mostrar estas diferencias sera el dado por el
programa MACHISMO. En un primer momento, usaremos slo el condicional SI LC=o,
pero al comprobar que las letras maysculas provocan un efecto femenino,
aprovecharemos para introducir la sintaxis de la expresin lgica O (MACHISMOO), que
permitir la entrada de la O mayscula como vlida.
5.2 Los Filtros
Una de las utilidades prcticas de las sentencias condicionales es la de la elaboracin de
filtros que impidan las interrupciones que pueden producirse en el flujo de los programas
por la introduccin por parte del usuario de datos no idneos. La motivacin que tendremos
para presentarlos a nuestros alumnos y alumnas deber ser, la necesidad de proteger
nuestros programas de los errores de los posibles usuarios de los mismos.

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.

ESTRATEGIA DIDCTICA PARA LA PRESENTACIN

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

eficaces basados en las posibilidades de las sentencias condicionales dentro de los


programas recursivos.
El anlisis del programa ya confeccionado se va a realizar mediante anotaciones al lado de
cada lnea del programa, que indiquen la funcin que esa lnea realiza:
1) Crea la variable global ORDEN que interrumpe el programa mientras ste espera una
pulsacin.
2), 3), 4) y 5) Realizan una accin prefijada en funcin de la pulsacin que se haya
realizado.
6) Lnea que marca el carcter recursivo del programa.
Hay que sealar que, aunque el programa es recursivo, no significa que sea imparable,
sino que mediante la primitiva LC se mantiene en situacin de espera y slo acta ante
determinadas pulsaciones, entre las que se encuentra la de parada: P.
Puede proponerse a los grupos de alumnos y alumnas la introduccin de variaciones y
mejoras; ofrecemos dos ejercicios como ejemplificacin actividades que pueden realizar los
alumnos:

Confeccionar un programa que contenga la opcin de retroceder al pulsar la tecla R


(CONDUCIR)

Confeccionar un programa que cree un disparo o una rfaga, que oculte la


tortuga y dibuje un segmento o un rayo que avancen por la pantalla. Inclyase como
orden del nuevo programa el programa CONDUCIR.

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

2) Slo acta si hay una pulsacin, la alternativa no lleva a ninguna accin.


3), 4), y 5) actuaciones opcionales en funcin de la hipottica pulsacin producida en la
lnea 2).
6) Lnea que contiene la orden recursiva y que, de no producirse la pulsacin prevista, lleva
a un movimiento continuado de avance.
Al propio alumno puede surgirle la conveniencia de encuadrar el programa PILOTAR
dentro de un programa que lo presente y escriba en pantalla las instrucciones con las letras
con las que se maneja la tortuga PILOGLO.
Puede resultar interesante mostrar alguno de estos programas sencillos para que sea el
propio alumno quien, antes de copiarlos y ejecutarlos, ofrezca una explicacin sobre su
funcionamiento, comentando lnea a lnea las acciones que se van a ejecutar en el flujo del
programa cuando se ejecute.
B) Otros Ejercicios Para Afianzar El Concepto De Recursividad

5.4 Espirales recursivas.


Dentro de las enormes posibilidades de la recursividad, se ha elegido el campo de las
espirales, ya que sirven para que el alumno vaya practicando el manejo de las primitivas
que se han estudiado, basndose en sentencias condicionales y, adems, porque exigen un
diseo muy sencillo y a cambio ofrecen efectos espectaculares. Basta con presentar alguno
de los programas como CUAESPI para que, con ligeras modificaciones, puedan crearse
otros como: TRIESPI, ESPIROPOL, ESPIRALFIX, ESPIRAPERT o ESPI3.

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.

5.6 Algunos Ejercicios Prcticos: El Semforo.


Para fomentar la creatividad a partir del funcionamiento de un objeto cercano, se ha
considerado que transformar la pantalla del ordenador en una luz de color para usarla de
semforo puede ser un ejercicio instructivo.
Como la base del trabajo de alumnos y alumnas ser conseguir que aparezca un
determinado color de pantalla grfica a travs del uso de la primitiva PONF, lo primero que
deben plantearse es descubrir cules son los nmeros que colorean la pantalla de color rojo,

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 vaya escribiendo en la pantalla de Trabajo los nmeros de los


colores conforme los vaya sacando en la pantalla de Grficos. (COLORES2)

Que rotule el nmero del color en la pantalla de Grficos.(COLORES3).

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).

Una vez conseguido el nmero correspondiente a la totalidad de los colores y realizadas


estas prcticas recursivas, se entra en propuestas aplicadas el semforo que se quiere
disear. No hay por qu forzar al alumno con ideas concretas, se puede esperar a que sean
sus propios intereses los que les lleven a realizar ejercicios similares a los que aqu se
recogen. Pensemos que el semforo es un objeto que se conoce muy bien y los
conocimientos previos de programacin que son necesarios para crear el programa de
control han quedado asentados a lo largo de las sesiones anteriores.
Las propuestas que se ofrecen son, por tanto, ms orientativas que nunca y pretenden
mostrar una gradacin en su dificultad que permita valorar el grado de aprendizaje que el
alumno est logrando:

Sucesin limitada y fija de los tres colores elegidos (SECUENCIA1)

Repeticin limitada de la secuencia con un tiempo variable controlado por el


programador (SECUENCIA2).

Repeticin variable del nmero de veces que se repite la secuencia y del tiempo de
permanencia de los colores. (SECUENCIA3).

110

Programa que solicita al usuario el contenido de las dos variables usadas en el


programa anterior para ejecutarlo posteriormente. (SECUGLO). Se puede mejorar
con el uso de un filtro que evite posibles rupturas.

Sucesin de la secuencia de los tres colores de forma ilimitada. La sucesin se


detiene pulsando una tecla. (CONTINUO).

Intermitente en el color amarillo. Este proceso se detiene pulsando una tecla


(INTER).

Donde ms claramente se van a percibir las limitaciones de esta opcin respecto a la


programacin en robtica, ser cuando haya que confeccionar un programa recursivo que, a
partir de un semforo intermitente y en color mbar, tenga que dar paso a un peatn, pare la
circulacin de la carretera y ponga el semforo, al cabo de un tiempo prudencial, en estado
intermitente y color mbar. Es evidente la necesidad de establecer un sistema de control del
fluido del programa a travs de un sensor ya que, si no es as, la nica forma de salir de este
programa recursivo sera pulsar la tecla [ESC].
Aplicacin de un cronmetro.
Como trabajo final, puede plantersele al alumno la realizacin de un programa sin poner
ms condiciones que la de procurar poner en prctica los conocimientos adquiridos sobre
LOGO hasta el momento. Tambin se le puede sugerir un tema que, planteado de una forma
genrica, pueda ser desarrollado de formas muy distintas. Aqu se va a proponer y
desarrollar una opcin tan vlida como cualquier otra.
Una propuesta como la de dibujar un cronmetro, puede ser una forma de recopilar muchas
de las primitivas manejadas en las unidades de este curso que, adems, plantea la necesidad
de hacer uso de la recursividad, la modularidad y las variables globales. Los valores de la
propuesta pueden ser una provocacin suficiente para que los alumnos realicen un trabajo
laborioso, creativo y bien presentado, (ROLEX).
Comentaremos el programa para aclarar algunas decisiones que se han incluido por tanteo.

111

El programa ROLEX es modular y va llamando sucesivamente al programa SAETA y al


programa ESFERA, que llama a la vez al mdulo NUM. Como ms adelante se ver, NUM
es un programa recursivo que contiene una variable global que sirve de control, ya que
acta como un contador y debe crearse fuera del bucle, en el programa que contiene dicho
bucle.
(ESFERA)
(L1) Coloca la tortuga en la posicin adecuada para que dibuje la circunferencia alrededor
del centro. El ajuste de 3 evita el desajuste que se produce cuando se dan giros de 6, y
responde a la misma idea que en programas anteriores llev a marcar ajustes de 5 cuando
los giros que se pedan eran de 10.
(L2) Dibuja la circunferencia en funcin del radio. Se ha elegido un polgono de 60 lados
en lugar del de 36 porque para cada paso, se ha diseado un aborioso proceso que permite
dibujar las 60 marcas que indican los intervalos 6 en los que queda dividida la
circunferencia.
(L3) Reajusta la posicin de la tortuga para volver a llevarla al centro. Podran conseguirse
los mismos resultados con la orden CENTRO unida a PONRUMBO 0, ya que en WIN
LOGO para Windows se mantiene el rumbo4 de la tortuga anterior a la orden que centra la
tortuga en la pantalla.
(L4) Crea e inicializa la variable global ANG que ms tarde se utilizar en el programa al
que se hace referencia en la lnea siguiente.
(L5) Llama al programa NUM que es el que rotula los nmeros de la esfera.
(NUM)
El programa tiene una variable local que parte con un contenido inicial=1; contenido que
recibe en el programa que lo ha llamado. Es recursivo y en cada paso por el bucle le da un
incremento de 1 a la variable local ANG.

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

Ejercicios Bsicos de MSWLogo


Lus Gonzles, Departamento de Tecnologa
I. E. S. Santa Eugenia

Del Clavo Al Ordenador


http://www.pntic.mec.es

Programacin WinLogo
Tecnologa 4 ESO__IES Miraflores de los ngeles

Gua Prctica de MSWLogo


http://www.southwest.com.au/~jfuller/mswlogo/spanish.zip

115

116

117

118

119

120

S-ar putea să vă placă și