ejercicios básicos de mswlogo 1_6

Upload: henry-perez

Post on 29-Oct-2015

204 views

Category:

Documents


0 download

TRANSCRIPT

  • EJERCICIOS BSICOSDE MSWLOGO

    (VERSIN 1.6)

    Luis Gonzlez

    Departamento de Tecnologa

    I.E.S. Santa Eugenia

    Edicin: 050514

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    INTRODUCCINEste manual naci de la necesidad de revisar la sintaxis y adaptar, a la

    versin ms reciente de MSWLogo, los ejercicios propuestos en el excelentemanual que acompaa a las tarjetas controladoras de Enconor, para usar-los en mis clases.

    Debo agradecer por tanto, en primer lugar, a los amigos de Enconor laredaccin del manual de usuario que, para muchos de nosotros, ha sido laprimera incursin sistemtica en el lenguaje Logo.

    A medida que iba probando los procedimientos propuestos, los modifi-caba para corregir alguna pequea inconsistencia del cdigo, para hacerlosms claros y comprensibles o, simplemente, para ponerlos a mi gusto. Alhacerlo se me ocurrian nuevos disparates que iban engrosando mi colec-cin de ejercicios.

    Luego lo ajust a la excelente versin de MSWLogo distribuida por elObservatorio Tecnolgico del CNICE, que incluye ayuda en castellano yapoyo para manejar controladoras y simuladores de robtica para uso esco-lar. Desde aqu mi reconocimiento y agradecimiento al trabajo del Observa-torio.

    El manual ha sido utilizado en las clases de Tecnologas de la Informa-cin del Bachillerato, en el I.E.S. Santa Eugenia de Madrid. Mis alumnoshan puesto a prueba todos los procedimientos propuestos y detectado loserrores en la redaccin de este manual. A todos ellos, por tanto, mi agrade-cimiento.

    Tambin quiero mostrar mi agradecimiento a algunos colegas, que hanelaborado manuales semejantes para introducirse en el lenguaje Logo, yque me han proporcionado alguno de los ejercicios ms flipantes: a Vera M.Rexach, J. P. Fuller y tantos otros. Gracias tambin a Rosario Ruiz por sutraduccin del archivo de ayuda, sin el cual estara perdido.

    A todos, gracias

    Santa Eugenia (Madrid)

    Luis Gonzlez

    Edicin: 14 de mayo de 2005 Pgina 2 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    INDICE:

    INTRODUCCIN.............................................................................................. 2

    MSWLOGO...................................................................................................... 5

    PRIMITIVAS.................................................................................................... 5

    PROCEDIMIENTOS.......................................................................................... 6

    VARIABLES..................................................................................................... 7

    CREAR PROCEDIMIENTOS.............................................................................. 7

    PRIMITIVAS Y ........................................................ 7

    PRIMITIVAS ......................................................... 8

    PRIMITIVA ........................................................................................... 8

    PRIMITIVA .................................................................................. 9

    MANEJAR PROCEDIMIENTOS ALMACENADOS EN EL DISCO DURO................. 9

    PRIMITIVAS ....................... 9

    MANEJO DEL ENTORNO GRFICO................................................................ 11

    PRIMITIVAS .............11

    REITERACIN............................................................................................... 12

    PRIMITIVAS ........................... 12

    UTILIZAR PARMETROS PARA LA EJECUCIN DE PROCEDIMIENTOS.......... 14

    PRIMITIVAS ....................15

    USO DE PROCEDIMIENTOS YA CREADOS EN NUEVOS PROCEDIMIENTOS.....16

    COMENTARIOS EN EL CDIGO:.................................................................... 18

    PRIMITIVAS .....18

    PRIMITIVAS ............................................. 19

    CLCULOS MATEMTICOS............................................................................ 20

    PRIMITIVAS ................................................................. 20

    PRIMITIVAS ............................. 21

    PRIMITIVAS ................................. 21

    PROCEDIMIENTOS RECURSIVOS.................................................................. 22Edicin: 14 de mayo de 2005 Pgina 3 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    PRIMITIVA .................................................................................. 22

    CDIGO ASCII.............................................................................................. 23

    PRIMITIVAS Y ............................................................ 23

    EJECUCIN SECUENCIAL Y EJECUCIN CONDICIONADA..............................24

    PRIMITIVAS Y ........................................................................ 24

    PRIMITIVAS LGICAS Y ..........25

    PRIMITIVAS ........................................... 27

    CONCEPTO DE BUCLE EN UN PROGRAMA..................................................... 28

    PRIMITIVAS ........... 28

    PRIMITIVA .................................................................. 29

    PASO DE ARGUMENTOS ENTRE PROCEDIMIENTOS...................................... 30

    PRIMITIVAS .................................. 30

    PROGRAMACIN ORIENTADA A OBJETOS.................................................... 31

    PRIMITIVAS Y ....................................................... 31

    PRIMITIVAS .................................................................................. 33

    PRIMITIVAS ...................................................... 34

    PRIMITIVAS ............................................................................... 35

    PRIMITIVAS Y ............................................... 36

    PRIMITIVAS ............................................................................ 37

    PRIMITIVAS ................................................................................ 38

    PRIMITIVAS ........................................................................... 39

    AFTERWORDS............................................................................................... 40

    Edicin: 14 de mayo de 2005 Pgina 4 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    MSWLOGOLogo es un lenguaje de programacin, desarrollado a finales de los aos 70 por un

    equipo de matemticos, dirigidos por Seymour Papert en la Universidad de California (Ber-keley), con el fin de entrenar el pensamiento lgico.

    Todas las versiones de Logo desarrolladas para Unix, DOS, Macintosh y Windows, songratuitas y pueden ser copiadas y distribuidas, sin ningn tipo de restriccin, con fineseducativos. MSWLogo es la versin de Logo para Windows.

    Originalmente, el lenguaje Logo estaba destinado a controlar el movimiento de un veh-culo robotizado, con aspecto de tortuga, controlado desde un ordenador. En la actualidad,el icono de la tortuga se ha sustituido por un tringulo que se mueve en la pantalla del or-denador.

    Cada vez que el programador introduce una orden como, por ejemplo, AVANZA 200, elicono de la tortuga se mueve obedeciendo la orden y dibujando, si el lpiz de la tortugaest bajado, una linea en la pantalla.

    PRIMITIVAS

    MSWLogo es un lenguaje interpretado, al igual que VisualBasic. Cuando se escribe c-digo de programa en un lenguaje interpretado, cada una de las rdenes escritas es inter-pretada y ejecutada al momento, lo que permite ver inmediatamente si la instruccin escri-ta produce el efecto deseado.

    Por el contrario, los lenguajes que deben ser compilados (como es el caso de C++, For-tran, Pascal, etc.), deben ser convertidos a lenguaje mquina, es decir, convertidos a unosy ceros, para que se puedan cargar en memoria y ser ejecutados.

    Las rdenes o instrucciones bsicas de MSWLogo se llaman pri-mitivas. Las primitivas deben escribirse en el cuadro inferior dela ventana de trabajo. Al pulsar Enter o hacer clic en el botnEjecutar, la primitiva escrita se ejecuta. Si la primitiva est malescrita o si le faltan datos, el intrprete constesta no s cmo...Cada una de las rdenes queda anotada en la ventana de traba-jo.

    Un programa tpico, para dibujar un tringulo equiltero, en lenguaje logo tiene el si-guiente aspecto:

    avanza 100giraderecha 120avanza 100giraderecha 120avanza 100giraderecha 120

    Las palabras avanza y giraderecha son primitivas, que indican a la tortuga que debedesplazarse hacia adelante o girar hacia la derecha. Los nmeros que completan las ins-trucciones son los argumentos, que le indican cunto debe avanzar o qu ngulo debe gi-rar.

    Edicin: 14 de mayo de 2005 Pgina 5 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    Para salir de MSWLogo basta con introducir la primitiva adios en la ventana de trabajoo seleccionar en el men principal.

    Veamos a continuacin una pequea muestra de las primitivas ms sencillas de MSW-Logo y de sus abreviaturas:

    PRIMITIVA ACCIN ABREVIADOAVANZA 150 La tortuga avanza el nmero indicado de puntos. AV 150RETROCEDE 80 Retrocede el nmero de puntos especificado. RE 80GIRADERECHA 15 Gira a la derecha el ngulo especificado en grados. GD 15GIRAIZQUIERDA 30 Gira a la izquierda el ngulo indicado. GI 30SUBELAPIZ Levanta el lpiz y no pinta al moverse. SLBAJALAPIZ El lpiz toca el papel y pinta cuando se mueve. BLGOMA La tortuga borra a lo largo de su trayectoria.OCULTATORTUGA Oculta el icono de la tortuga. OTMUESTRATORTUGA Muestra el tringulo que representa la tortuga. MTBORRAPANTALLA Borra la pantalla y sita la tortuga en el centro. BPCENTRO Lleva la tortuga al centro de la pantalla sin borrarla.ROTULA [HOLA] Escribe texto en la direccin de la tortuga. ROPONCOLORLAPIZ [3] Establece el color con el que pinta. PONCLTONO [1000 200] Emite un sonido de [frecuencia(Hz) duracin(ms)]PONGROSOR [10 10] Fija el grosor del trazo y la altura. PONGADIOS Sale de MSWLogo.

    PROCEDIMIENTOS.

    Un procedimiento es un fragmento de programa, formado poruna sucesin de primitivas. Todo procedimiento empieza con lapalabra para que declara el nombre del procedimiento y terminacon la palabra fin. Por ejemplo:

    para procedimientoprimitiva 1primitiva 2.etc.fin

    Una vez creado un procedimiento, puede ser invocado como unaprimitiva ms del lenguaje.

    Edicin: 14 de mayo de 2005 Pgina 6 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    VARIABLES.

    Una variable es un dato, que tiene un nombre, y que puede to-mar distintos valores.

    El programador puede crear una variable en cualquier momento, definiendo su nombrey asignndole un valor. Para ello utiliza la primitiva . Por ejemplo:

    haz variable 50

    Las comillas sealan el comienzo del nombre de la variable.En lo sucesivo, vale 50. Se puede utilizar este valor asignado a la variable,

    en un procedimiento, escribiendo dos puntos delante del nombre de la variable. Por ejem-plo:

    rotula :variable

    CREAR PROCEDIMIENTOS

    Primitivas y

    1. Crea un procedimiento llamado que escriba el mensaje "Hola, mundo" en la ven-tana de textos.

    para taxescribe [Hola, mundo]fin

    Invoca ahora el procedimiento que has creado, escribiendo en la ventana de rdenes lapalabra . Funciona?

    2. Modifica el procedimiento de forma que escriba el mensaje "Hola, mundo" y en lasiguiente lnea "Qu tal va todo?" en la pantalla de trabajo.

    Fichero editar taxpara taxescribe [Hola, mundo]escribe [Qu tal va todo?]fin

    Invoca de nueco el procedimiento y comprueba que los cambios que has introdu-cido se ejecutan correctamente.

    Edicin: 14 de mayo de 2005 Pgina 7 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    Primitivas

    3. Crea un procedimiento llamado que escriba el mensaje "Esto es un mensaje" enla pantalla de dibujo.

    para moxrotula [Esto es un mensaje]fin

    Invcalo, escribiendo mox en la lnea de comandos de la ventana de trabajo. Notarsque el rtulo aparece en la direccin apuntada por la tortuga.

    4. Modifica el procedimiento para que el rtulo se pueda leer horizontalmente,abriendo el men:

    Fichero editar moxpara moxgd 90rotula [Esto es un mensaje horizontal]fin

    Invcalo varias veces. Notars que el mensaje aparece girado 90 grados respecto al an-terior. Modifica el procedimiento para que el rtulo siempre aparezca horizontal.

    Fichero editar moxpara moxbpgd 90rotula [Este mensaje siempre es horizontal]fin

    Si te fijas, al incluir en el cdigo del programa la orden bp (borrapantalla), cada vez quellamas al procedimiento la tortuga se sita en el centro de la pantalla y orientadahacia arriba. Por eso siempre rotula en direccin horizontal.

    Primitiva

    5. Crea un procedimiento llamado que calcule el producto de 15 por 68 y lo presen-te en la pantalla grfica:

    para porhaz numero1 15haz numero2 68haz resultado :numero1 * :numero2bp gd 90rotula [15 x 68 = ]av 90

    Edicin: 14 de mayo de 2005 Pgina 8 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    rotula :resultadofin

    Es importante que comprendas la diferencia entre el nombre de una variable y el valorde esa misma variable. Por ejemplo:

    rotula hola producir holarotula [hola] producir hola

    haz hola 79rotula :hola producir 79rotula hola * 2 producir errorrotula :hola * 2 producir 158

    Primitiva

    6. Crea un procedimiento llamado que muestre en la pantalla un aviso pidiendoque lo aceptes o lo rechaces:

    para soxmensaje [Plan para esta tarde] [Quieres ir al cine?]fin

    7. Modifica el procedimiento para que pregunte otra cosa distinta.

    fichero editar soxpara soxmensaje [Plan para esta tarde] [Qu tal una siesta?]fin

    MANEJAR PROCEDIMIENTOS ALMACENADOS EN EL DISCO DURO

    Primitivas .8. Guarda en el disco duro todos los procedimientos creados hasta ahora bajo el nombre

    fichero guardar como... Mis ejercicios.lgo

    Si obtienes un mensaje de error se debe a que ests utilizando una versin de MSWLo-go anterior a la 6.5b y no puedes utilizar ms de ocho caracteres para dar nombre a un ar-chivo. En ese caso, gurdalo bajo un nombre ms corto

    fichero guardar como ejeruno.lgo

    Edicin: 14 de mayo de 2005 Pgina 9 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    9. Cierra MSWLogo y busca en tu disco duro el archivo Mis ejercicios.lgo que acabas deguardar. Haz doble clic sobre el y observars que se trata de un simple archivo de tex-to, que se puede editar con un editor de texto simple, como Wordpad o el Cuaderno denotas de Windows.

    10. Inicia de nuevo MSWLogo, carga tu archivo y saca un listado de los procedimientos cre-ados hasta este momento. y borra el procedimiento fichero cargar Mis ejercicios.lgoescribe contenido

    11. Borra uno de los procedimientos contenidos en el archivo borra "soxescribe contenidoComprobars que el procedimiento ha desaparecido de la lista

    12. Borra todos los procedimientos contenidos en el archivo borra contenidoescribe contenido

    En este momento, el archivo ha sido vaciado de procedimientos.Como no queremos perderlos, NO VAMOS A GUARDAR LOS CAMBIOS EFECTUADOS.

    fichero salir rechazar

    13. Carga del disco nuevamente los procedimientos salvados anteriormente.

    fichero cargar Mis ejercicios.lgoescribe contenido

    Comprueba que has recuperado la versin guardada de y que estndisponibles todos los procedimientos que incluiste en ese archivo.

    Edicin: 14 de mayo de 2005 Pgina 10 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    MANEJO DEL ENTORNO GRFICO

    Primitivas

    14. Crea un procedimiento llamado que dibuje una linea de trazos, de 100 pixelde largo. Al terminar el procedimiento, muestra la tortuga en el centro de la pantalla.

    para trazoslimpiasl otponpos [-500 0]gd 90bajalapiz avanza 100 subelapiz avanza 100bajalapiz avanza 100 subelapiz avanza 100bajalapiz avanza 100 subelapiz avanza 100bajalapiz avanza 100 subelapiz avanza 100bajalapiz avanza 100 subelapiz avanza 100bajalapiz avanza 100 subelapiz avanza 100ponpos [0 0]gi 90mtfin

    Observars que, por comodidad, est permitido usar abreviaturas como o enlugar del nombre completo de la primitiva o , o en lugar de o

    15. Haz un procedimiento llamado para dibujar, en la pantalla grfica, un cua-drado de 50 pixels de lado. La posicin de partida ser el centro de la pantalla.

    para cuadrobp blav 50 gd 90av 50 gd 90av 50 gd 90av 50 gd 90fin

    16. Averigua las coordenadas de las cuatro esquinas de tu pantalla, haciendo avances ex-ploratorios. Cuando las conozcas, escribe un procedimiento, llamado que di-buje un marco rectangular alrededor de la pantalla.

    Edicin: 14 de mayo de 2005 Pgina 11 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    REITERACIN

    Para evitar la escritura repetida de lneas de cdigo idnticas, re-currimos a rdenes primitivas que indican al ordenador cuntasveces debe repetir una instruccin.

    Primitivas

    17. Modifica el procedimiento para dibujar un cuadrado de 50 pixels de lado, uti-lizando muy pocas lineas de cdigo.

    para cuadrobp blrepite 4 [av 50 gd 90]fin

    Los colores, tanto del fondo de la pantalla, como del trazo del l-piz, se fijan con las rdenes poncolorpapel (poncp) y poncolor-lapiz (poncl) seguidos de un cdigo de color.Ese cdigo puede ser un nmero entre 0 y 15, de modo que cadanmero se corresponde con un color, por ejemplo: poncl 1 paradibujar lneas azules.

    Tambin se puede emplear un conjunto de tres cifras entre cor-chetes, entre 0 y 255, que se corresponden con la cantidad deluz roja, verde y azul que compone el color deseado. Por ejemplo:poncp [207 176 89]

    COLORES:0 1 2 3 4 5 6 7

    8 9 10 11 12 13 14 15

    18. Haz un procedimiento, llamado , que dibuje un hexgono de lado 120, con gro-sor 3 y de color marrn (8) sobre fondo carmin (12).

    para hexabp blponcp 12poncl 8pong [3 3]repite 6 [av 120 gd 60]otfin

    Edicin: 14 de mayo de 2005 Pgina 12 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    19. Haz un procedimiento llamado que dibuje un dodecgono de lado 40, con gro-sor 2 y de color azul (1) sobre fondo amarillo (6)

    para dodebp blponcp 14 poncl 1 pong [2 2]repite 12 [av 40 gd 30]otfin

    Fjate que, para dibujar cualquier polgono regular de 80 puntos de lado, el conjunto derdenes 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.

    Toma una hoja de papel, copia la tabla siguiente y rellena las celdas vacas con los va-lores adecuados:

    Polgono Lados Orden que se repiteTringulo 3 repite 3 [av 80 gd 120]Cuadrado 4 repite 4 [av 80 gd 90]Pentgono 5Hexgono 6Heptgono 7OctgonoEnegonoDecgonoIcosgono

    Edicin: 14 de mayo de 2005 Pgina 13 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    UTILIZAR PARMETROS PARA LA EJECUCIN DE PROCEDIMIENTOS

    Se puede escribir un procedimiento de tal manera que se ejecutecon el valor del parmetro que acompaa al nombre del procedi-miento.

    Una variable permite guardar un valor, tanto numrico como detexto. En cualquier momento se puede tomar el contenido de esavariable o cambiarlo por otro nuevo. Cuando damos un valor auna variable que ya exista, el valor antiguo se pierde.

    20. Escribe un procedimiento capaz de dibujar un cuadrado cualquiera. El tamao del cua-drado se especificar mediante la variable que acompaar al nombre del proce-dimiento cuando lo invoques.

    para cuadro :ladorepite 4 [av :lado gd 90]fin

    Ahora invcalo para que dibuje una cuadrado de lado 100, tecleando .Prueba tambin a teclear , o . Lo ves?. Te obedece.

    Pensemos: Sera posible construir un nico procedimiento, que fuese capaz de dibujarcualquier polgono regular? Si, porque el ngulo que debe girar la tortuga puede deducirsefcilmente a partir del nmero de lados del polgono.

    21. Escribe un procedimiento, de nombre seguido de la variable , que dibujeun polgono regular de 80 puntos de lado, con el nmero de lados indicado en la varia-ble

    para poli :ladosbp blponcp 12 poncl 8 pong [3 3]haz angulo 360/:ladosrepite :lados [av 80 gd :angulo]otfin

    22. Modifica el procedimiento para que admita dos parmetros: el nmero de y la de esos lados

    para poli :lados :longitudbp blponcp 12 poncl 0 pong [3 3]haz angulo 360/:ladosrepite :lados [av :longitud gd :angulo]

    Edicin: 14 de mayo de 2005 Pgina 14 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    otfin

    23. Y, si somos capaces de dibujar un polgono cualquiera, podremos dibujar un crculo?.Escribe un procedimiento, llamado , capaz de dibujar un crculo del radio que sele indique.

    para aro :radiohaz "avance :radio*tan 1repite 360 [av :avance gd 1]fin

    24. Ahora, para practicar la programacin de reiteraciones con parmetros, modifica el pro-cedimiento para crear otro procedimiento llamado , que di-buje en la pantalla una lnea de trazos de longitud ajustable. Redacta un programacon el menor nmero posible de lneas de cdigo, utilizando la repeticin de unanica orden. El procedimiento debera tener un aspecto como este:

    para trazo :longitud......fin

    Primitivas

    Las figuras creadas en el entorno grfico pueden rellenarse decolor, utilizando la primitiva . El color de relleno se es-tablece con la primitiva .Para que el relleno funcione se deben cumplir algunos requisi-tos: la figura debe estar cerrada, la tortuga debe situarse en elinterior de dicha figura y el lpiz debe estar levantado con laprimitiva subelpiz .

    25. Vamos a modificar el procedimiento para que el cuadrado que resulta quederelleno de color.

    para cuadro :ladobp blponcp 14 poncl 0 poncolorrelleno 10repite 4 [ av :lado gd 90]sl gd 45 av 3rellenaotfin

    Edicin: 14 de mayo de 2005 Pgina 15 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    USO DE PROCEDIMIENTOS YA CREADOS EN NUEVOS PROCEDIMIENTOS.

    Un procedimiento creado con primitivas u otros procedimientos,puede ser utilizado como una primitiva ms del lenguaje.

    26. Haz un procedimiento, llamado , que dibuje en la pantalla grfica un pentgo-no 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 formandouna estrella.

    para penta :ladorepite 5 [av :lado gd 72]fin

    para estrella :ladobp blponcp 10 poncl 0 pong [3 3]repite 6 [penta :lado gd 60]otfin

    Fjate que, en el cdigo del procedimiento aparece una llamada al procedi-miento , como si fuese una primitiva ms del lenguaje!

    27. Guarda este grfico, creado con MSWLogo, en una carpeta de tu disco duro con formatode mapa de bits .bmp. Para ello abre el menbitmap Guardar como... Estrellapenta

    brelo con un editor de imgenes, como Gimp o Pixia, y comprobars que puedes tra-bajar con l y exportarlo a otro formato. Insrtalo tambin en un documento de texto comoOpenOffice writer.

    28. Escribe un procedimiento, llamado , que dibuje una figura compuesta por uncuadrado, de lado cualquiera, que tiene un tringulo equiltero en cada uno de sus la-dos, como el de la siguiente ilustracin:

    Edicin: 14 de mayo de 2005 Pgina 16 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    29. Aprovechando el procedimiento que ya tienes creado, escribe un procedi-miento llamado que dibuje crculos consecutivos, pero de forma quecada vez que empieza a dibujar un crculo nuevo lo haga desvindose un cierto ngulorespecto al anterior, para llegar a formar una corona con aspecto de rosquilla como lade la ilustracin siguiente:

    Cuando veas aparecer el donut ante tus ojos podrs comprender, quiz, qu es la pro-gramacin elegante: conseguir un resultado espectacular con muy pocas lneas de cdigo.

    30. Podrias dibujar una flor? Un mtodo sencillo podra consistir en dibujar cada ptalocon un cuarto de crculo hecho con varios segmentos. Por ejemplo:para cuarto :pasorepite 9 [av :paso gd 10]finDibujar un ptalo es fcil, con dos cuartos de crculo:para petalo :pasorepite 2 [cuarto :paso gd 90]fin

    Ahora te toca a ti lo ms fcil: escribe un procedimiento, llamado que sea capazde dibujar una flor compuesta de varios ptalos, como esta:

    Edicin: 14 de mayo de 2005 Pgina 17 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    COMENTARIOS EN EL CDIGO:

    Es una buena norma completar con comentarios las lineas decdigo del programa que puedan resultar difciles de entender opuedan suscitar alguna duda a un lector del cdigo.

    Para incluir comentarios en el cdigo se utiliza el smbolo ; (pun-to y coma). Todo lo que se escriba a continuacin del punto ycoma no se ejecuta en el programa.

    Primitivas

    31. Haz un procedimiento, llamado , que te pregunte tu nombre, lo guarde enuna variable, y lo muestre en la ventana de trabajo con el formato TU NOMBRE ES:nombre.

    para nombre ; Comienza el procedimiento llamado bp sl ot gd 90 ; borra la pantalla y situa la tortuga en posicinrotula [Cmo te llamas?]haz "name leepalabra ; asigna la entrada tecleada a bp gd 90 ; limpia la pantallarotula [Hola!, ] ; escribe un texto de saludo y un espacioponpos [60 0] ; se desplaza a la derecharotula :name ; presenta el valor de la variableponpos [0 -25] ; se desplaza a la lnea inferiorrotula [Qu tal ests?] ; completa el saludofin ; fin del procedimiento

    32. Haz un procedimiento, llamado , que nos pida dos nmeros y nos devuelva elresultado de sumarlos en la ventana de grficos.

    para sumarbp gd 90 ot sl bt ; inicializa las pantallasponpos [-200 0] ; sita el punterorotula [Qu nmeros quieres sumar?]haz "num1 leepalabra ; captura la primera variablehaz "num2 leepalabra ; captura la segunda variablebp gd 90 ; limpia la pantallaponpos [-200 0] ; sita el puntero al comienzorotula [LA SUMA DE ]ponpos [-85 0] ; de cada uno de losrotula :num1ponpos [-45 0] ; fragmentos del mensajerotula [+]ponpos [-30 0] ; de salidarotula :num2ponpos [10 0]rotula [= ]ponpos [30 0]

    Edicin: 14 de mayo de 2005 Pgina 18 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    rotula :num1 + :num2 ; calcula la suma y la presentafin

    Primitivas 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 seams elegante, en una sola lnea de cdigo y sin tener que preocuparte de cunto espacionecesitas para cada cifra, puedes conseguirlo utilizando la primitiva . El procedi-miento quedara asi:

    para sumarbp gd 90 ot sl btponpos [-200 0]rotula [Qu nmeros quieres sumar?]haz "num1 leepalabrahaz "num2 leepalabrabp gd 90ponpos [-200 0]rotula (lista "La "suma "de :num1 "+ :num2 "= :num1+:num2)fin

    Mucho ms elegante, no es cierto?

    33. Haz un procedimiento llamado , capaz de preguntarte tu nombre y luegosaludarte escribindolo en la pantalla.

    para identidadbp gd 90 ot sl btrotula [Cul es tu nombre y apellidos?]haz "napel leelistabp gd 90rotula [Hola! ]ponpos [70 0] rotula :napelfin

    34. Haz un procedimiento con el nombre , que pregunte tu nombre y respondacul es la letra inicial de tu nombre.

    para inicialbp ot sl gd 90rotula [Cul es tu nombre?]haz "letra primero leepalabrabp gd 90ponpos [-100 0]rotula [Tu nombre empieza por ]ponpos [125 0]

    Edicin: 14 de mayo de 2005 Pgina 19 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    rotula :letrafin

    35. Escribe un procedimiento capaz de convertir euros a pesetas

    para pesetasbp gd 90 sl ot ponpos [-200 0]rotula [De cuntos euros se trata?]haz euros primero leelistahaz pesetas :euros *166.386bp gd 90ponpos [-200 0] rotula :eurosponpos [-150 0 ] rotula [Euros son: ]ponpos [-40 0] rotula :pesetasponpos [60 0] rotula [Pesetas.]fin

    Del mismo modo que hicimos en el procedimiento , podemos resolver la pre-sentacin del resultado en una nica lnea de cdigo con la primitiva :

    para pesetasbp gd 90 sl otponpos [-200 0]rotula [De cuntos euros se trata?]haz "euros primero leelistahaz "pesetas :euros * 166.386bp gd 90ponpos [-200 0] rotula (lista :euros "Euros "son: :pesetas "Pesetas)fin

    CLCULOS MATEMTICOS

    Primitivas

    36. Haz un procedimiento, con el nombre de , que nos pida el valor de un ngulo ynos devuelva el seno, el coseno y la tangente en la ventana de trabajo.

    para trigobt ; borra la pantalla de trabajohaz "valor leepalabraescribe (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

    Edicin: 14 de mayo de 2005 Pgina 20 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    37. Ahora t solo: escribe un procedimiento, llamado , capaz de dibujar enla pantalla la funcin y=Vmaxsen (x) dndole el valor mximo de la funcin

    Primitivas 38. 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 numerosbtescribe [ESCRIBE UN NUMERO CON DECIMALES]haz "valor leepalabraescribe (lista "NUMERO "SOLICITADO: :valor)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

    Primitivas

    39. Haz un procedimiento, llamado , que genere dos nmeros aleatorios entre el 0y el 255 y los muestre en la ventana de trabajo. Adems devolver el resultado de divi-dir el primero entre el segundo, y su resto.

    para loteriabt ;borra la pantalla de trabajohaz "num1 azar 255 ;genera al azar dos nmeros menores que 255haz "num2 azar 255escribe (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

    40. Escribe un procedimiento, llamado , que sea capaz de escribir 6 nmeros ale-atorios entre 0 y 10.

    para num10btrepite 6 [muestra azar 11]fin

    41. Ahora escribe un procedimiento, al que llamaremos , que escriba ocho cifraselegidas al azar entre el 2 y el 5. Las cifras no deben ser menores que 2 ni mayores que6

    para num25bt

    Edicin: 14 de mayo de 2005 Pgina 21 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    repite 8 [haz "num1 azar 4escribe :num1+2]fin

    PROCEDIMIENTOS RECURSIVOS

    A veces nos puede interesar que un procedimiento se repita unay otra vez, indefinidamente. Para conseguirlo basta con incluiruna lnea de cdigo, antes del comando que vuelve a lla-mar al propio procedimiento para que vuelve a empezar. Estetipo de procedimientos necesitan una orden para detener-se.

    Primitiva

    42. Por ejemplo, escribe un procedimiento llamado , que muestre unavez cada segundo un nmero elegido al azar, entre dos cifras lmite.

    para num :bajo :altobthaz "lapso :alto-:bajohaz "num1 azar :lapso+1escribe :bajo+:num1espera 60num :bajo :altofin

    Puedes detener la ejecucin del procedimiento tecleando en la botonera del reade comandos.

    43. Otro ejemplo: hagamos un procedimiento que dibuje una lnea en zigzag, indefinida-mente:

    para zigzagponrumbo 45av 50 gd 90av 50 gi 90espera 10zigzagfin

    Edicin: 14 de mayo de 2005 Pgina 22 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    CDIGO ASCII

    El cdigo ASCII establece la equivalencia entre cada uno de lossmbolos de texto que pueden introducirse en el teclado, y unvalor numrico binario de 8 bits (1 byte).

    A la letra "A", por ejemplo, le corresponde el nmero 65 en bina-rio determinado, a la "z" le corresponde el nmero 122, y as su-cesivamente. Tambin estn incluidos los smbolos grficos y loscomandos no imprimibles, como el espacio o el retorno de carro.

    Primitivas y .

    44. Haz un procedimiento llamado , que genere una tabla entre el 0 y el 255 en laque aparezca el valor decimal y su correspondiente cdigo ASCII. Se mostrar en laventana de trabajo.

    para tabascibt ; Borra la pantalla de trabajohaz "x 0 ; Crea un contador y lo pone a 0repite 255 [escribe (lista :x caracter :x) ; Escribe un nmero y el carcterhaz "x :x+1] ; equivalente en asciifin

    45. Te sientes capaz de escribir un procedimiento, llamado que, en lugar deescribir los caracteres ASCII en una sola columna en el cuadro de texto, los presenterotulados en la pantalla grfica en forma de tabla? Intntalo

    46. Escribe ahora un procedimiento que nos pida una letra y devuelva su cdigo ASCII enla pantalla.

    para traducebt ; borra la pantalla de trabajoescribe [INTRODUCE UNA LETRA EN LA VENTANA]haz "valor leepalabrabtescribe (lista "LETRA: :valor)escribe (lista "Su "valor "ASCII "es: ascii :valor)fin

    Edicin: 14 de mayo de 2005 Pgina 23 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    EJECUCIN SECUENCIAL Y EJECUCIN CONDICIONADA.

    En algunos casos, para escribir el cdigo de un programa, bastacon escribir una serie ordenada de primitivas, que se ejecutarnuna detrs de otra (ejecucin secuencial).

    Pero es frecuente tambin que en un programa haya que ejecu-tar unas primitivas u otras en funcin de alguna condicin. Deesta forma la ejecucin del programa se ramificar por unas pri-mitivas u otras, segn se vayan dando determinadas condiciones(ejecucin condicionada).

    Primitivas y

    La primitiva si permite ordenar al programa que ejecute una accin, en funcin de queuna condicin se cumpla o no. La sintaxis de la primitiva si es la siguiente:

    si condicin accionSi la condicin es verdadera ejecuta la accin. Si la condicin es falsa no hace nada.

    Por ejemplo:

    si 1>0 escribe cierto

    47. Haz un procedimiento llamado que nos pida un nmero. Si el nmero queintroducimos es positivo se mostrar su raz cuadrada. Si es negativo no debe calcular-lo, ya que dara un error.

    para numposbtescribe [INTRODUCE UN NMERO EN LA VENTANA]haz "valor leepalabrabtescribe (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, enfuncin de que una condicin se cumpla o no. En este caso, la sintaxis de la primitiva si esla siguiente:

    si condicin [accion1] [accion2]Si la condicin es verdadera ejecutar la accin1. Si la condicin es falsa ejecutar la

    accin 2. Por ejemplo:

    48. Escribe un procedimiento, llamado , que nos pida un nmero. Si el nmeroque introducimos es positivo se mostrar su raz cuadrada. Si es negativo se escribirun mensaje que diga "NO SE PUEDE CALCULAR LA RAIZ DE UN NEGATIVO".

    Edicin: 14 de mayo de 2005 Pgina 24 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    para posnegbtescribe [INTRODUCE UN NMERO EN LA VENTANA]haz "valor leepalabrabtescribe (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 c-digo. Hay una primitiva que se comporta de un modo semejante: se llama sisino. Su sinta-xis es similar:

    sisino condicin [accion1] [accion2]

    49. Escribe un procedimiento, llamado , que formule una pregunta y que infor-me si la respuesta es correcta o no lo es.

    para santiagobt bp sl ot gd 90 poncp 14ponpos [-50 100]rotula [De qu color es el caballo blanco de Santiago?]haz "respuesta leepalabralimpia ponpos [-50 100]sisino :respuesta="blanco [rotula (lista "!Muy "bien!! "Acertaste! " "Es "blanco)][rotula (lista "Cunto "lo "siento!! "Fallaste. " "No "es :respuesta)]fin

    50. Ahora, y para terminar con las prcticas de ejecucin condicionada, escribe un procedi-miento llamado que te ofrezca la posibilidad de elegir entre cuatro tareas dis-tintas. Por ejemplo, que te pregunte qu tipo de figura quieres que dibuje:a) Un cuadrado rojob) Un crculo azulc) Un tringulo amarillod) Un pentgono blanco

    Si respondes dibujar un cuadrado rojo; si tecleas deber dibujar un crculoazul, y as sucesivamente. Si tecleas cualquier otra tecla por error te lo debe advertir y ne-garse a hacer ninguna de las cuatro tareas previstas. Procura que las figuras sean de ta-mao semejante, rellenas de color y sobre un fondo del mismo color.

    Primitivas lgicas y Naturalmente, un lenguaje de programacin debe servir para manejar funciones lgicas

    bsicas: Y, O, OEXCLUSIVA, etc.

    La funcin lgica y evala varias expresiones. Devuelve el valor cierto si todas las ex-presiones evaluadas tienen el valor cierto y devuelve el valor falso si alguna de las expre-siones es falsa. Su sintaxis es como sigue:

    Edicin: 14 de mayo de 2005 Pgina 25 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    y expresion1 expresion2 si debe evaluar 2 expresiones(y expresion1 expresion2 expresion3 ...) si debe evaluar ms de 2 expresiones

    51. Por ejemplo: escribe un procedimiento llamado , que nos pida dos nmeros. Silos dos nmeros son mayores de 100, nos devolver la suma de ambos. Si es alguno deellos es igual o menor que 100 nos devolver un mensaje de error.

    para logicabp gd 90 sl ot ponpos [-200 0]rotula (lista "Introduce "dos "nmeros "mayores "que "100)haz "num1 leepalabrahaz "num2 leepalabrabp 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 lasexpresiones evaluadas tienen el valor cierto y devuelve el valor falso si todas las expresio-nes 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

    52. Para comprenderlo, vamos a redactar un procedimiento llamado que nospida dos nmeros, uno de los cuales debe ser mayor que 500. Si uno o los dos nme-ros son mayores que 500, nos devolver la suma de ambos. Si los dos nmeros soniguales o menores que 500, nos devolver un mensaje de error.

    para logica2bp gd 90 sl ot ponpos [-200 0]rotula (lista "Introduce "dos "nmeros. "Uno "de "ellos "debe "ser "mayor "que"500)haz "num1 leepalabrahaz "num2 leepalabrabp 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 msnmeros, 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

    Edicin: 14 de mayo de 2005 Pgina 26 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    La primitiva bito devuelve el resultado de aplicar la funcin lgica O sobre dos o msnmeros enteros. Su sintaxis es similar a la de la primitiva bity

    53. Para practicarlo, escribe un procedimiento llamado , que nos pida dos n-meros enteros y nos devuelva el resultado de hacer la funcin lgica entre ellos, yla funcin lgica .

    para funcionyobp gd 90 sl otponpos [-50 0]rotula (lista "Introduce "dos "nmeros "enteros.)haz "num1 leepalabrahaz "num2 leepalabrabp gd 90ponpos [-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

    Primitivas

    Estas tres primitivas estn vinculadas entre si. La primitiva prueba evala una expre-sin y recuerda si el resultado ha sido cierto o falso, para que luego puedan utilizarlo lasotras dos primitivas: sicierto, que puede abreviarse como sic y sifalso, que puede abre-viarse como sif.

    La sintaxis del conjunto es como sigue:prueba expresionsic [acciones a realizar]sif [acciones a realizar]

    54. Veamos un ejemplo, con un procedimiento, llamado que genera un nmeroaleatorio entre el 0 y el 100. Si el nmero generado es menor que 50 aparecer unmensaje indicndolo. Si el nmero es igual o mayor que 50 aparecer otro mensaje quenos lo indica.para sorteo50bp gd 90 sl othaz "num azar 100ponpos [-50 0]rotula (lista "El "nmero "agraciado "es: :num)ponpos [-50 -20]prueba :num

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    CONCEPTO DE BUCLE EN UN PROGRAMA

    Un bucle en un programa es una parte del mismo que se ejecutarepetidamente un nmero determinado de veces. Este nmeropuede ser fijo o depender de determinadas circustancias.

    Primitivas

    Las primitivas mientras y hasta dirigen la ejecucin de una o varias instruccionesmientras 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 arrojasecomo resultado falso.55. Por ejemplo, haz un procedimiento, llamado , que genere un nmero aleato-

    rio entre el 0 y el 30. Una vez elegido ese nmero, el programa debe presentarlo en lapantalla y, adems, presentar en la ventana de texto la tabla de multiplicar por 7, des-de el 0 hasta el nmero generado al azar.

    para tablamulbp bt gd 90 sl othaz "num azar 30 ;elige un nmero al azar menor que 30rotula (lista "Nmero "elegido: :num)escribe (lista "TABLA "DEL "SIETE "DE "0 "A :num)escribe [ ] ;lnea en blancohaz "contador 0 ;inicializa un contadormientras [:contador

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    Es posible que tengas que retocar las coordenadas iniciales x e y para que la tablaquede correctamente centrada en tu pantalla.

    Las primitivas haz.mientras y haz.hasta son semejantes: ejecutan un grupo de ins-trucciones mientras una condicin sea cierta o hasta que una condicion sea cierta. Susintaxis es como sigue:

    haz.mientras [instrucciones] [condicin]haz.hasta [instrucciones] [condicin]

    Por ejemplo: haz "A 0haz.mientras [haz "A :A+1 escribe :A] [:A15]fin

    58. Haz un procedimiento, llamado , que genere la lista de mltiplos de (3,141592), comprendidos entre el 0 y el 150, con una precisin de tres decimales. Laserie de nmeros debe aparecer en la ventana de texto con una cadencia de 0,5 segun-dos entre cada nmero presentado.

    para multipibtescribe [MLTIPLOS DE PI 0

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    PASO DE ARGUMENTOS ENTRE PROCEDIMIENTOS

    Se puede realizar un procedimiento que necesite algn dato pre-vio para poder realizar alguna operacin con l y luego nos de-vuelva el dato o los datos del resultado.

    Estos datos que se pasan al procedimiento, en el momento dellamarlo o ejecutarlo o que devuelve el procedimiento al finalizarsu ejecucin, se denominan argumentos.

    Primitivas

    59. Haz un procedimiento llamado , que reciba dos nmeros y devuelva elproducto de ambos a otro procedimiento que lo llame.

    para prod :x :y ;Se inicia un procedimiento con dos datos de entradahaz "z :x * :ydevuelve :z ; Al finalizar devuelve z al procedimiento que lo llamfin

    para multiplicabtescribe [Introduce los factores]haz "x leepalabrahaz "y leepalabrabtescribe [El resultado es:]escribe (lista :x "x :y "= prod :x :y) ; Llama a y le da los datos.

    ; De recibe un dato y lo presentafin

    60. Haz un procedimiento llamado , que reciba un nmero y dibuje un rectn-gulo de lado horizontal 3 veces el vertical. La altura del lado vertical ser el nmero re-cibido. Las variables que utilice dicho procedimiento sern de carcter local.

    para rectanx3 :ladobp bl pong [2 2]local "anchohaz "ancho :lado * 3repite 2 [av :lado gd 90 av :ancho gd 90]otfin

    Edicin: 14 de mayo de 2005 Pgina 30 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    PROGRAMACIN ORIENTADA A OBJETOSLa tcnica de programacin orientada a objetos consiste, a diferencia de la programa-

    cin estructurada mediante procedimientos, en organizar la interaccin con el usuario atravs de objetos que aparecen en pantalla. Son objetos caractersticos las ventanas, boto-nes, casillas de seleccin, etc.

    Los objetos son los elementos bsicos de la interfaz grfica de usuario GUI1

    Primitivas y

    Una ventana es un rea de trabajo, tpica del entorno Windows,dotada de una barra de ttulo, sobre la que aparecern otros ob-jetos para facilitar la interaccin del usuario. Una ventana puedearrastrase por la pantalla, maximizar, minimizar, borrar, etc.

    61. 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, su posicin respecto a la esquina superior izquierda (90 50) y sutamao (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 falsohabilitarventana primera verdadero

    62. Ahora borra la ventana, utilizando la orden siguiente:

    borraventana primera

    Para saber ms sobre la sintaxis de las ventanas consulta la ayuda.

    63. 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 pala-bra (PAN), est situado en las coordenadas (5 20) desde la esquina superior izquierdade 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 deltexto son insuficientes y debers aumentarlas, por lo menos, hasta (65 9)

    64. Para borrar los textos estticos debes emplear las rdenes:borraestatico texto1borraestatico texto2

    1Graphic User interfaceEdicin: 14 de mayo de 2005 Pgina 31 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    65. Para practicar la creacin de ventanas y la introduccin de textos estticos, escribe unprocedimiento llamado , que reciba dos nmeros y devuelva el producto deambos en una nueva ventana.para resultadobp gd 90 ot slponpos [-100 100]rotula [Introduce dos nmeros]haz "num1 leepalabrahaz "num2 leepalabrahaz "resul :num1 * :num2bpcreaventana "root "calculo [ Resultado del producto: ] 200 150 100 40 []creaestatico "calculo "resul1 :num1 5 5 20 10creaestatico "calculo "resul2 [x] 25 5 10 10creaestatico "calculo "resul3 :num2 35 5 20 10creaestatico "calculo "resul4 [=] 55 5 10 10creaestatico "calculo "resul5 :resul 65 5 20 10fin

    Si te fijas, la posicin de cada uno de los textos estticos est calculada para nmerosde tamao medio. Pero, tanto si se introducen nmeros muy pequeos, cmo si los nmerosson muy grandes, las coordenadas fijas de los textos producen una presentacin pobre ydesajustada.

    La presentacin mejora al reemplazar las cinco primitivas creaesttico por una sola l-nea de cdigo que llama a una lista:

    para resultadobp gd 90 ot slponpos [-100 100]rotula [Introduce dos nmeros]haz "num1 leepalabrahaz "num2 leepalabrahaz "resul :num1 * :num2bpcreaventana "root "calculo [Resultado del producto:] 200 150 100 40 [ ]creaestatico "calculo "resul1 (lista :num1 "x :num2 "= :resul) 5 10 90 10fin

    Haz una prueba: deshabilita la ventana calculo y vers que no puedes manejarla conel ratn. Si la habilitas de nuevo podrs activarla y arrastrarla por la pantalla.

    Para despejar la pantalla, debes teclear la orden:

    borraventana calculo

    Edicin: 14 de mayo de 2005 Pgina 32 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    Primitivas

    Un botn es un elemento que permite manipular un programamediante el ratn, que puede hacer clic en l o, simplemente,pasar sobre l.

    66. Escribe un procedimiento que cree una ventana, llamada , en la que hayaun botn para cerrarla.Para segundacreaventana 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 bo-tn, que tiene 30 x 20. Las coordenadas de la posicin del botn pretenden que quedecentrado en la ventana. Y ahora, crea el procedimiento , que se encargar decerrar la ventana:

    para sesamoborraventana "segundafin

    67. Haz un procedimiento, con el nombre , que dibuje en pantalla una venta-na con tres botones. Al pulsar el primero aparecer un mensaje en la misma ventanaque diga . Al pulsar el segundo se dibuja un donut en la ventana grfica y eltexto del botn cambia a . Al pulsar el tercero se cierra la ventana con todosu contenido.

    para ven3botoncreaventana " "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 boton1creaestatico "nueva "boton1 [PULSADO] 17 10 35 15fin

    para boton2actualizaboton "segundo [DONUT]donut 50ocultatortugafin

    Fjate qu ahorro!. En el tercer botn se incluye ya el cdigo de lo que debe hacer al serpulsado: borrar la ventana. No es necesario un procedimiento adicional.

    Edicin: 14 de mayo de 2005 Pgina 33 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    Primitivas

    Una barra de desplazamiento es un objeto que tiene un cursorque puede desplazarse mediante el ratn, para dar diversos valo-res a una variable.

    68. Escribe un procedimiento que cree una ventana, llamada , en la que haya unbotn para cerrarla y una barra de desplazamiento.

    Para terceracreaventana " "tercera [Mi primera barra deslizante] 200 50 140 60 [ ]creabarradesplazamiento "tercera "cien 30 10 80 10 [ ]ponbarradesplazamiento "cien 0 100 50creaboton "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 ttu-lo (Mi primera barra deslizante) y la barra, que mide 80 de largo. La altura de la venta-na ha de bastar para que quepan tanto la barra (80 x 10) como el botn (30 x 20). Lascoordenadas de la posicin del botn y de la barra pretenden que queden centrados enla ventana. Comprueba que puedes mover el cursor con el ratn y que puedes cerrar laventana.

    69. Aplica lo que has aprendido, escribiendo un procedimiento llamado , que di-buje en pantalla una barra de desplazamiento dentro de una ventana. La barra tendrun rango de valores entre 50 y 250. Cada vez que se mueva se debe visualizar en laventana el valor de su posicin y su raz cuadrada. Tendremos, adems, un botn quesirva para cerrar la ventana.

    para venbarcreaventana " "ultima [Calculadora automtica de raices] 150 70 180 70 [ ]creaestatico "ultima "estat [150] 140 10 20 15creaestatico "ultima "estat1 [Su raiz cuadrada es:] 15 30 70 10creaestatico "ultima "estat2 raizcuadrada 150 35 40 30 10creabarradesplazamiento "ultima "barra 15 10 110 10 [leebarra]ponbarradesplazamiento "barra 50 250 150creaboton "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 recorri-do). Por lo tanto, el esttico deber ener como valor inicial la raiz cuadrada de150 (sealado en amarillo). Cuando el cursor de la barra se mueva se ejecutar el pro-cedimiento llamado que habr que escribir:

    para leebarrahaz "x leebarradesplazamiento "barrahaz "y raizcuadrada :xactualizaestatico "estat :x

    Edicin: 14 de mayo de 2005 Pgina 34 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    actualizaestatico "estat2 :yfin

    Primitivas

    Una ventana de dialogo se utiliza como marco de trabajo en elque se pueden aadir otros objetos o controles como botones,barras de desplazamiento, listboxes, etc. Este objeto es similar auna ventana, excepto que no devolver el control al procedi-miento llamante hasta que la ventana de dilogo se cierre.

    70. Vamos a crear una ventana de dilogo que pida al usuario que acepte pulsando un bo-tn. Pero, en primer lugar, vamos a crear el procedimiento que cerrar la ventana alpulsar el botn:para vendialocreaboton "dialogo1 "botvale "ACEPTAR 25 10 40 20 [borradialogo "dialogo1]finAhora 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 procedimientosms ambiciosos que el simple cierre de la ventana de dilogo.

    71. Escribe un procedimiento que pregunte al usuario, mediante una ventana de dilogo,cuntos dias faltan para su cumpleaos:para faltancreaestatico "cumple "fecha [180] 155 10 20 15creabarradesplazamiento "cumple "deslizadias 15 10 130 10 [haz "dias leebarra-desplazamiento "deslizadias actualizaestatico "fecha :dias]ponbarradesplazamiento "deslizadias 0 365 180creaboton "cumple "ok [Aceptar] 70 30 40 20 [borradialogo "cumple]finy teclea a continuacin:creadialogo " "cumple [Cuntos dias faltan para tu cumpleaos?] 120 60 18070 [faltan]

    Para practicar introduce alguna novedad de tu propia cosecha. Por ejemplo, que rotuleal cerrar el dilogo, sobre una pantalla roja y con letras grandes, cuntos dias faltan.

    Edicin: 14 de mayo de 2005 Pgina 35 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    Primitivas y

    Un botn radio es un objeto que permite seleccionar una opcincon dos estados: verdadero (botn seleccionado) o falso (botn noseleccionado).

    Todos los botones radio, que se corresponden con cada una delas opciones que se presentan al usuario, deben estar asociadosen un grupo o groupbox.

    72. Para practicar, escribiremos el cdigo de una ventana llamada , en la que elusuario deber elegir su rango de edad seleccionando uno de los botones radio que sepresentan reunidos en un groupbox.para edadcreaventana " "cuarta [Seleccione su grupo de edad] 200 50 115 65 [ ]creagroupbox "cuarta "marco 5 5 65 40creabotonradio "cuarta "marco "bot1 [18 aos] 10 33 40 9escribebotonradio "bot1 "verdaderocreaboton "cuarta "cierre [Aceptar] 75 20 30 20 [borraventana "cuarta]fin

    Fjate bien, todas las coordenadas estn referidas a un origen comn situado en la es-quina superior izquierda de la ventana. La creacin de cada objeto incluye una rutacompuesta por la ventana padre, el objeto padre y su propio nombre.

    Slo puede estar seleccionado uno de los botones radio de un groupbox. Cuando elusuario selecciona una de las opciones lo pone en estado verdadero y, automtica-mente, el resto de las opciones se ponen en estado falso. Adems, al iniciar el group-box, una de las opciones declararse verdadera.

    73. Haz un procedimiento llamado , que pida dos nmeros y dibuje en unaventana un grupo con cuatro botones radio. Cada botn tendr asignada una operacinmatemtica. Cuando pulsemos un botn aparecer el resultado de aplicar la operacinmatemtica seleccionada a los dos nmeros introducidos. Tendr, adems, otro botnque permita cerrar la ventana:para calcacmebp sl gd 90 otponpos [-450 150]rotula (lista "Introduce "dos "nmeros "en "la "ventana)haz "num1 leepalabrahaz "num2 leepalabrabpcreaventana " "ultima [Calculadora aritmtica marca "ACME"] 150 70 180 100 []creagroupbox "ultima "grupo 10 10 160 50creabotonradio "ultima "grupo "boton1 [ +] 15 15 25 10creabotonradio "ultima "grupo "boton2 [ -] 15 25 25 10creabotonradio "ultima "grupo "boton3 [x] 15 35 25 10creabotonradio "ultima "grupo "boton4 [/] 15 45 25 10

    Edicin: 14 de mayo de 2005 Pgina 36 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    escribebotonradio "boton1 "verdaderocreaboton "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 15creaestatico "ultima "estat1 :num1 110 25 20 15creaestatico "ultima "estat2 :num2 140 25 20 15creaestatico "ultima "estat3 [RESULTADO:] 50 40 50 15creaestatico "ultima "estat4 [ ] 110 40 30 15 ; Se crea un esttico sin mensajefin

    para calculohaz "x leebotonradio "boton1si :x= "verdadero [haz "num3 :num1 +:num2]haz "x leebotonradio "boton2si :x= "verdadero [haz "num3 :num1-:num2]haz "x leebotonradio "boton3si :x= "verdadero [haz "num3 :num1 *:num2]haz "x leebotonradio "boton4si :x= "verdadero [haz "num3 :num1/:num2]actualizaestatico "estat4 :num3fin

    Primitivas

    Un objeto checkbox es una casilla que el usuario puede selec-cionar. Todas las casillas checkbox deben estar reunidas en ungroupbox. El usuario puede seleccionar varias casillas simult-neamente.

    74. Haz un procedimiento, llamado , que dibuje en una ventana un grupo contres botones de tipo checkbox. Cada uno tendr como etiqueta un nmero. Cuandopulsemos un botn aparecer un mensaje indicando el estado de cada uno de ellos.Tendr, adems, otro botn que permita cerrar la ventana.

    para vencomcreaventana " "ultima [Ventana con casillas de comprobacin] 150 70 180 90 [ ]creagroupbox "ultima "grupo 10 5 160 50creacheckbox "ultima "grupo "boton1 [Primero] 15 15 45 10creacheckbox "ultima "grupo "boton2 [Segundo] 15 25 45 10creacheckbox "ultima "grupo "boton3 [Tercero] 15 35 45 10creaboton "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 10creaestatico "ultima "estat2 [Desactivado] 100 25 60 10creaestatico "ultima "estat3 [Desactivado] 100 35 60 10fin

    Edicin: 14 de mayo de 2005 Pgina 37 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    para compruebahaz "x estadocheckbox "boton1sisino :x= "verdadero [actualizaestatico "estat1 [Activado]] [actualizaestatico "es-tat1 [Desactivado]]haz "x estadocheckbox "boton2sisino :x= "verdadero [actualizaestatico "estat2 [Activado]] [actualizaestatico "es-tat2 [Desactivado]]haz "x estadocheckbox "boton3sisino :x= "verdadero [actualizaestatico "estat3 [Activado]] [actualizaestatico "es-tat3 [Desactivado]]fin

    Primitivas

    Un objeto listbox es una caja de texto, que contiene una lista deopciones entre las que el usuario puede elegir una.

    75. Haz un procedimiento llamado que dibuje en una ventana un men de op-ciones mediante listbox. Dicho men tendr 5 opciones: CIRCULO, CUADRADO,TRINGULO, PENTGONO y HEXGONO. Cuando pulsemos un botn se dibujar la fi-gura seleccionada en el men. Con otro botn podremos borrar la pantalla grfica. Ten-dr, adems, otro botn que permita cerrar la ventana.

    para venmenucreaventana " "ultima [Trazado de polgonos] 300 250 180 90 []crealistbox "ultima "menu "10 10 100 30aadecadenalistbox "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 dibujarhaz "x leeseleccionlistbox "menusi :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

    para arorojoarcodeelipse 360 120 120 0 sl poccr 4 gd 10 av 10 rellena bl otfin

    Edicin: 14 de mayo de 2005 Pgina 38 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    para cuadrobluerepite 4 [av 200 gd 90] sl poccr 1 gd 10 av 10 rellena bl otfin

    para triverderepite 3 [av 220 gd 120] sl poccr 10 gd 10 av 10 rellena bl otfin

    para pentaillorepite 5 [av 150 gd 72] sl poccr 6 gd 10 av 10 rellena bl otfin

    para hexaviolrepite 6 [av 120 gd 60] sl poccr 13 gd 10 av 10 rellena bl otfin

    Primitivas

    Un objeto combobox es un objeto compuesto por una lista, enla que el usuario puede elegir una de las opciones que ofrece, yuna ventana de texto en la que el usuario puede introducir unaexpresin 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 alcrearse el combobox

    pontextocombobox nombre [expresion x]

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

    leetextocombobox nombre

    76. Vamos a escribir el cdigo de un script para una agencia de viajes, en el que el clientepuede elegir el lugar elegido para sus vacaciones. La agencia de viajes ofrece una listade destinos comunes, los ms solicitados, pero tambin permite al cliente solicitar undestino que no est en esa lista. Un objeto combobox es la opcin ideal:para viajecreaventana " "destino [Elija el destino de su viaje] 150 80 120 110 []creacombobox "destino "listado 20 5 80 50aadelineacombobox "listado [Turquia]

    Edicin: 14 de mayo de 2005 Pgina 39 de 40

  • Ejercicios bsicos de MSWLogo 1_6.sxw Luis Gonzlez. Departamento de Tecnologa

    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 9fin

    para confirmahaz "lugar leetextocombobox "listadoactualizaestatico "texto :lugarfin

    Haz la prueba, eligiendo lugares de la lista ofrecida por la agencia y, tambin, eligiendoun lugar de vacaciones que no est en la lista.

    AfterwordsBien, espero que hayas disfrutado de tu aprendizaje como programador.

    Ahora no me queda ms que animarte a que apliques lo que has aprendido a crear losprogramas que puedas imaginar. Buena suerte.

    Luis GonzlezProfesor de Tecnologas de la Informacin

    Madrid 050514

    Edicin: 14 de mayo de 2005 Pgina 40 de 40