SlideShare ist ein Scribd-Unternehmen logo
1 von 53
PROGRAMACIÓN CON MSWLOGO POR WWW.AREATECNOLOGIA.COM
Introducción. Lenguajes de programación El lenguaje de programación permite dar órdenes al ordenador utilizando un idioma parecido al nuestro. Después una parte del lenguaje de programación, denominado compilador o intérprete, traduce estas órdenes a código máquina, el único lenguaje que entiende el ordenador (0 y 1). Como ocurre con los idiomas, existen muchos lenguajes de programación. Cada no tiene su propio vocabulario (órdenes) y sintaxis (forma de utilizar y combinar las órdenes). Según su función se diferencian dos tipos de lenguajes de programación: El lenguaje ensamblador  (de bajo nivel), que es muy complicado, pero aprovecha el máximo los recursos del sistema, ya que da las órdenes prácticamente en código máquina. Lenguajes de alto nivel , que no dependen del tipo de componentes del ordenador y son más sencillos (Visual Basic, pascal, fortran, LOGO, etc).
Logo es un  lenguaje interpretado (de alto nivel) , lo que significa que las órdenes introducidas por el usuario son interpretadas por el ordenador y ejecutadas inmediatamente en orden. Los  lenguajes compilados , por otro lado son convertidos primero a código máquina antes de que cualquier parte del programa pueda empezar a funcionar. El lenguaje Logo fue desarrollado a finales de los 70 y su símbolo es una tortuga que se mueve bajo el control del ordenador. Hay varios programas para trabajar bajo lenguaje Logo (mswlogo, winlogo, logo writer, logo gráfico, etc). Nosotros trabajaremos con Mswlogo que es el más usado y freeware. Nota:  es importante que realices  todos  los ejercicios según avanza el tutorial para poder comprender bien los programas más complicados que tendrás que  realizar más adelante (por muy sencillos que te parezcan).
Ventana de gráficos .- Utilizando las órdenes adecuadas, podremos mover un pequeño triángulo (denominado tortuga), realizar dibujos y rotulos, así como insertar bitmap realizados, por ejemplo, con el programa Paint. Ventana de trabajo .- Aquí aparecerán las órdenes introducidas en la caja de entrada, los mensajes de error y el resultado de la ejecución de algunas instrucciones. Caja de entrada .- En esta zona podemos escribir instrucciones y ejecutarlas de inmediato pulsando la tecla enter o el botón ejecutar. VENTANA DE TRABAJO DE MSWLOGO
PRACTICAS CON MSWLOGO En logo las órdenes se llaman primitivas (algunas tienen abreviatura). Cuando ponemos una primitiva en la ventana de trabajo se ejecuta en la pantalla de Mswlogo. El tamaño de la pantalla se puede modificar pero por defecto es de 1000 x 1000 siendo el punto [0 0] el centro de la pantalla, los puntos por arriba y derecha del [0 0] son positivos ejem [250 500] y por debajo e izquierda negativos [-250 -500]. En la barra de trabajo se pueden escribir varias órdenes separadas por un espacio para ser ejecutadas (las ejecuta en el orden en que se escribe). Vamos a dibujar un cuadrado: Ejercicio1:   Bp av 50 gd 90 av 50 gd 90 av 50 gd 90 av 50 gd 90 Medidas de la  Pantalla de trabajo Centro bp La tortuga va al centro pero dibujando a no ser que este activado subelapiz Centro Sl re 70 bl av 300 La tortuga se mueve pero sin dibujar. Al moverse no borra. / baja lápiz  Subelapiz  o  sl / bl Ponlapiz av 25 La tortuga en goma pasa a lapiz ponlapiz Av 50 goma re 25 Convierte a la tortuga en una goma y borra por donde pasa. goma Es [hola]  Escribe en pantalla trabajo Escribe o  es Av 50 / re 40 / bp Avanza /retrocede Av   /  re Gd 90  / gi 75 Gira derecha / izquierda Gd  /  gi Bp Borra todo y deja la tortuga en el centro Borra pantalla o  bp Rotula [hola empezamos] Escribe en pantalla rotula EJEMPLO QUE HACE PRIMITIVA
En mswlogo podemos rellenar una figura de un color cualquiera, pero la orden de rellenar se debe de dar con la tortuga  dentro de la figura , decirle con que color queremos que se rellene ( poncolorelleno ) y después  rellena pero con el lapiz levantado sl . Por ejemplo el cuadrado anterior si lo queremos poner relleno primero pondremos la tortuga dentro de él y con el lápiz levantado sl. Ejercicio 2º)   Gd 35 sl av 20 poncolorrelleno [255 0 0] rellena  Por ejemplo el color del número [0 255 0] será el verde y el [0 0 255] el azul Para el resto es una mezcla de los colores que pongamos Ejercicio 3º)   dibuja un cuadrado y un triangulo rellenos de un color cualquiera (diferente relleno el cuadrado que el triangulo y de lado 80)
Mediante la barra de menú y en configurar podemos cambiar el tamaño del lapiz (ancho, el tipo de letra rotulador (letra que sale en pantalla), letra de la órdenes, y los colores del lápiz, de relleno, de fondo pantalla, aunque no es aconsejable hacerlo desde aquí, ya que se haría de forma manual  no mediante una órden para que lo haga solo el ordenador   Si queremos poner un  color de fondo  se usa la primitiva poncolorpapel  [0 0 255] pero ojo cuando cambiamos el fondo todo lo que teníamos antes no se ve por que lo sobrescribe . En el caso del lápiz sería  poncolorlapiz  [0 255 0]   Para cambiar el grosor de lápiz  pongrosor  [1 4] el 1 es fijo y el segundo número le dice el ancho, en este caso 4
El tipo de fuente (letra) y su ancho y largo se cambia con la primitiva: pontamañotipo  [[Times New Roman] 60 0] primero se pone el tipo de letra, el primer número es el alto de la letra y el segundo el ancho de la letra   Muestra hora  nos muestra la fecha y hora del sistema   muestra colorlapiz  el color del lapiz  muestra colorpapel  el del papel   ¡OJO! Cuando programamos en logo debemos de fijarnos en los espacios, corchetes y errores de ortografía ya que cualquier pequeño fallo en algo de esto nos va a dar como salida un error y suele ser muy común equivocarse   Ejercicio 4º)  Práctica todas las primitivas vistas hasta ahora y al final deja la configuración inicial. Según avanzamos vete realizando una tabla, como la primera que vimos, en tu cuaderno con todas las primitivas que veamos.
A veces para realizar algo con logo las órdenes se repiten varias veces las mismas, como en el caso del cuadrado. En estos casos se usa la primitiva  repite Nº [lista de instrucciones a repetir Nº de veces]  para  reducir el número de órdenes.   ESTRUCTURAS REPETITIVAS En el caso de un cuadrado: Bp repite 4 [gd90 av 50]   Ejercicio 5º)  Haz un cuadrado de lado 100, y otro de lado 60 con la orden repite   Para un triangulo sería repite 3 [gi 120 av 100]   Ocultatortuga o  ot : la tortuga no se ve / muestratortuga o  mt : vuelve a ser visible.
Ejem. Repite 5 [gi 360/5 av 50]   Repite Nº lados [gi 360/(nº de lados) av (tamaño del lado)]   y para construir un polígono cualquiera sería:   Para una circunferencia se pone más de 36 en nº de lados, y el valor de av será el radio   Ejemplo: Repite 36 [gi 360/36 av 50].  Recuerda que puedes darles color a las figuras.   Ejercicio 6º)  Crea un pentágono y una circunferencia.  Pon el color del lápiz y el color de relleno de colores diferentes
Con mswlogo podemos trabajar con 1024 tortugas diferentes a la vez.  Tortuga : nos dice el número de la tortuga con la que estamos trabajando. Activa 1 o  ac 1  : activa la tortuga 1 y todo las órdenes que se den a continuación serán para esta tortuga hasta que no activemos otra diferente . Ejem.  mt ac 1 av 100 ac 0 gd 90 av 100   Si queremos quitar una tortuga lo haremos con  ocultatortuga  1   MAS TORTUGAS Con  pos  nos da como salida la posición de la tortuga activada   ponpos [0 10] ponemos la tortuga en esa posición [x y].
Podemos retrasar la ejecución de una orden con  espera   Nº , el tiempo de retraso será Nº/60 segundos,   espera 60 se retrasará 1 segundo la orden   Ejemplo:  Av 100 espera 120 gd 90 av 50   Ejercicio 7º)  dibuja una polígono que espere 3 segundos cuando acabe de dibujar cada lado para que vuelva a dibujar el siguiente lado. Ponle un color de relleno y al cabo de 3 segundos que cambie el color de relleno por otro diferente.
Vamos a ver las primitivas para realizar operaciones matemáticas con varios ejemplos (no hay espacio entre los números). Entre una operación y otra pon la orden bp.  Realiza las operaciones de los ejemplos con mswlogo : OPERACIONES MATEMATICAS Escribe 2+5  Suma de números rotula 12–5  Resta de números muestra 3*4   Multiplicación de números rotula 6/3   Divide números ¿Qué diferencia hay entre escribe, rotula y muestra? Otras operaciones son: rotula  raiz cuadrada  9   redondea 8.3  (los decimales van separados por un punto) rotula entero 5/2 (da como salida el número entero sin decimales)   rotula abs -5 (da como salida el valor absoluto).
Rotula elemento 2 [a b c]  rotula el elemento segundo de la lista entre corchetes   Elección de elementos y primitiva AZAR  rotula  sacaalazar [1 2 3 4]  saca un elemento de la lista al azar   Nota:  Si estos elementos no funcionan es por que hay que sacarlos de la librería de mswlogo mediante archivo cargar y el archivo librería.log   Escribe estas instrucciones Una primitiva muy usada es  azar  con ella el ordenador sacará un número al azar desde 0 hasta el nº que pongamos   por ejemplo para que saque un nº entre 0 y 5 debemos poner  rotula azar 6  (el 6 no lo sacará)   Ejercicio 8º)  pon las siguientes instrucciones y razona lo que hace:  ot Repite 5 [bp gd 90 espera 60 rotula azar 10 espera 60] bp mt
Variables globales Una variable la podemos considerar como un almacén de diferentes valores, donde su valor podemos cambiarlo en cualquier momento o hacer que cambie de valor ella sola de alguna forma  . En logo primero deberemos dar el nombre de la variable mediante: haz “nombredelavariable valordelavariable   Donde el nombre puede ser una letra, un número o lo mas aconsejable para no perdernos cuando tengamos muchas variable es ponerlas con una palabra que la identifique (o palabras pero juntas o unidas por la barra baja _).   Una vez que ya tenemos metida la variable  cuando queramos sacarla  se hará mediante (rotula, escribe u otra orden).   rotula  :nombredelavariable   ¡OJO!  no olvidar los : delante y juntos con el nombre   VEAMOS ALGÚN EJEMPLO
Ejemplo:  haz “x 45 rotula :x  ;dará como salida 45 rotula :x*2  ;dará como salida 90 Fijate que ahora ponemos  ;  para poner notas dentro del programa. Esto es muy útil Cuando tenemos grandes programas y queremos poner anotaciones aclaratorias dentro del propio programa. Todo lo que tengamos puesto después de  ;  no lo leera como instrucciones, si no que solo le servirá al programador para leerlas. Cuidado:   Si no ponemos los : en la variable dará error y si ponemos   rotula [x] dará la letra x como salida   y no el valor de la variable.   También podemos asignar una palabra como valor de la variable:   haz “x [hola]  rotula :x  ;dará como salida la palabra hola   Fíjate que en estos casos  la palabra  que tomará la variable  va entre corchetes [ ]
VAMOS A UTILIZAR VARIABLES CON LA PRIMITIVA AZAR Realiza estos programas en mswlogo: Haz”x azar 6 Rotula :x Nos escribirá un numero al azar entre 0 y 5 ( el 6 nunca) Haz “numero_azar sacaalazar [1 2 3 4] Rotula :numero_azar Nos mostrará el número que ha elegido el programa al azar entre 1 2 3 y 4. Haz”palabra sacaalazar [hola adios] Rotula :palabra Nos mostrará una de las dos palabras
Otra primitiva muy importante en programación es la condicional, para que nos de una salida u otra diferente en función de si se cumple o no una condición.   ESTRUCTURAS SELECTIVAS Las condiciones pueden ser si =, > y <  Las salidas que dará en función de si se cumple o no la condición, que ira entre corchetes Si  1=1 [rotula [cierto]]   Si queremos una salida para cuando se cumpla la condición y  otra diferente para cuando no se cumpla la condición  será:   Ejemplo:  Sisino  1=1  [rotula [vale 1]] [rotula [no vale 1]]  condición salida Sisino  1>2  [rotula [cierto]] [rotula [falso]] condición Salida si Cumple la condición Salida si NO la cumple
VAMOS A UTILIZAR LAS VARIABLES CON LAS CONDICIONALES Y CON LA PRIMITIVA AZAR haz “numeroazar azar 7   sisino :numeroazar<3 [rotula [menor de 3]] [rotula [mayor de 3]] ¿Qué hará este programa? Compruébalo en tu ordenador.   Ojo  al dar el nombre de la variable al azar el ordenador asigna un nº al azar a la variable, y hasta que no volvamos a dar la orden de haz “numeroazar azar 7 la variable  numeroazar no cambiará de valor.   Ejercicio 9º)  Crea un programa con 2 variable numéricas (del 1 al 10) al azar y que haga la multiplicación de los dos números. El programa nos tendrá que decir si El resultado es mayor o menor de 100 de la siguiente forma: La multiplicación es mayor que 100 o la multiplicación es menor de 100 Pista:   Sisino :multiplicación>100 [rotula [la multiplicación es mayor de 100]]……….
Alternativas múltiples o con varias condiciones Es muy probable que tengamos la necesidad de incluir en nuestros programas alternativas con muchas opciones posibles. ¿Cómo se puede conseguir? Pues muy fácil. Pondremos una variable que pueda tomar varios valores, y para cada valor una condición diferente. Ejemplo: Haz”x azar 10 Si  :x=1 [rotula [uno]] Si  :x=2 [rotula [dos]] Si  :x=3 [rotula [tres]]  ;y así con todas las posibles salidas del valor x Esto es muy útil para programas que tengan una salida diferente en función de lo que elija el usuario del programa. ¿¿¿Se te ocurre algo para hacer un dado y que la tortuga avance en función de lo que saque el dado???? ¿O para hacer que el usuario deba contestar a una pregunta y dependiendo de lo que responda le demos una puntuación u otra? (variable con valor de texto) La mayoría de las veces el valor de la variable lo pone el usuario del programa (no el programador), pero para eso tenemos que hacer que el usuario pueda poner datos mientras se está ejecutando las instrucciones, es decir  interactuar  con el programa.  Veamos como podemos conseguirlo
Entrada de datos mientras el procedimiento está en uso Logo es un lenguaje de programación con entorno de windows, es decir puede mostrar mensajes de dialogo e interaccionar con el usuario, para aceptar, por ejemplo, entrada de datos desde el teclado y el programa actúe en consecuencia con los datos introducidos. Preguntabox  [entrada de datos] [¿te parece difícil logo?]  ¿Cómo se consigue que le programa nos muestra una ventana como la de de arriba? Lógicamente te dirá que no sabe que hacer con los datos introducidos. Si antes de preguntabox ponemos la primitiva  rotula  rotulará lo que escribamos en la ventana:  Rotula preguntabox [entrada de datos] [pon un número]
En el caso anterior lo que ponemos dentro de la caja lo considera una letra o una palabra, aunque escribamos un número. Si queremos que lo que escribimos lo considere un número (por ejemplo para que lo multiplique por otro) deberemos escribir la palabra  primero   delante de preguntabox Rotula  primero  preguntabox [entrada de datos] [pon un número] Ejercicio 10º)  Vamos hacer que el ordenador multiplique dos números que el usuario introduzca ( variables asignadas por el usuario ), y lógicamente nos enseñe el resultado de la multiplicación Solución en la siguiente diapositiva Si queremos asignar el valor de lo que se introduzca en la caja sea una variable: Haz “numero primero preguntabox [ventana numero] [introduce el número]
Haz “primernumero primero preguntabox [multiplicación] [introduce el primer número] Haz “segundonumero primero preguntabox [multiplicación] [introduce el segundo número] Haz “respuesta :primernumero*:segundonumero  rotula :respuesta Si no hubiéramos puesto la palabra primero delante de preguntabox nos daría error por que no podría multiplicar los dos números por que los consideraría caracteres (letras). RECUERDA: Para palabras y frases en la caja  preguntabox  Para números  primero preguntabox SOLUCIÓN:
Haz “tu_nombre preguntabox [nombre] [¿Cuál es tu nombre?] Ot Gd 90 rotula ( frase  [mi nombre es] :tunombre [y estudio 4º de la ESO])  La variable puede ir en cualquier posición de la frase, pero no nos olvidemos de cerrar paréntesis y de poner  frase. A veces creamos  una variable no numérica con lo que el usuario introduce en la caja , pero la variable es una palabra que después deberá pertenecer a una frase.  Para que podamos rotular  una frase que alguna de sus palabras son variables  que debe introducir el usuario (por ejemplo su nombre) deberemos de poner toda la frase  entre paréntesis  y la primitiva  frase  (pocas veces se usan paréntesis en logo).  Veamos un ejemplo.  Hazlo en tu ordenador : Abrimos paréntesis Cerramos paréntesis
Las órdenes de estos dos últimos ejemplos podrían ser por si mismas un pequeño programa. Para ello tendríamos que escribir todas las órdenes y que se ejecutaran cuando yo quisiera automáticamente, por ejemplo  poniendo un nombre al programa  y que  se ejecutara cuando pongo el nombre del programa  en la caja de la ventana de trabajo. Esto es lo que se conoce con el nombre de  Procedimientos. Un procedimiento es un conjunto de órdenes guardadas con un nombre que se realizarán cuando introduzcamos su nombre en logo. Un programa completo puede constar de uno o varios procedimientos (programación estructurada). La técnica buena de programación dice que las tareas grandes ( programas grandes ) se deben de fraccionar  en pequeños procedimientos  (programas) donde cada uno de ellos realiza una sencilla o pequeña tarea.   Estos pequeños programas (procedimientos) deben de guardarse e ir a ellos (llamarlos) cuando se necesiten dentro del programa grande.  Cuando en logo ponemos dentro de un programa el nombre de un procedimiento el programa realizará el procedimiento (pequeño programa) y luego continuará con la siguiente orden .
Los procedimientos y programas siempre empiezan por la palabra para nombredelporcedimiento   INSTRUCCIONES  ;y acaban con la palabra  fin   Para escribir un procedimiento deberemos ir a archivo y editar, a continuación escribimos el nombre del procedimiento (o programa si solo tiene ese procedimiento) y se abre un editor de texto para escribir el procedimiento (o programa).   Ejercicio nº 11:  Crea un procedimiento ( en este caso programa) para escribir la frase de tu nombre y que se ejecute cuando escribimos la palabra  nombre. Al acabar no te olvides de guardar y salir en el editor del programa   Si queremos cambiar o revisar el programa iremos a archivo editar y seleccionamos el nombre desprograma de la lista que aparece.
Ejercicio 12º) :  Crea un programa que nos sirva para dividir dos números y nos muestre el resultado. El programa se deberá ejecutar al escribir la palabra division. A veces  el nombre del procedimiento es una variable  que debe introducir el usuario. Veamos un ejemplo. Imaginemos que queremos crear un programa que nos realiza un cuadrado de lado 50: Para cuadrado50 Repite 4 [av 50 gd 90] Fin Al escribir cuadrado50 en la ventana de trabajo se dibuja el cuadrado. Pero ahora imagina que quieres que el programa sirva para que dibuje un cuadrado que el tamaño de sus lados sea el que quiera el usuario. Debe de ejecutarse al escribir cuadrado mas el número del tamaño del cuadrado, pero ese número es variable, en función de lo que escriba el usuario. Haremos lo siguiente:
Para cuadrado :longitud  ;longitud es un número variable que será el que  escriba el usuario Repite 4 [av :longitud gd 90]  ;ojo espacio entre cuadrado y :longitud, y a la  hora de ejecutarlo también. Ejemplo cuadrado 50 Fin Ejercicio 13º):  Escribe un programa que dibuje un triangulo cualquiera.  ¿Qué hará este programa?: Para poligono :longitud :lados  ;para ejecutarlo se escribe poligono y  dos números  separados por espacio Repite :lados [av :longitud gd 360/:lados] fin
¡ OJO IMPORTANTE ! : los procedimientos al guardar y salir se guardan temporalmente en mswlog, si cerramos el programa y volvemos abrirlo, ya no estarán los procedimientos.  Para que todos los procedimientos se guarden y pueden cargarse siempre debemos de almacenarlos (guardarlos) en un archivo dentro de la carpeta de libreria de mswlogo. Una vez que salimos del editor guardando el último procedimiento vamos a archivo en la ventana del mswlogo guardar como, dentro de la carpeta mswlogo buscamos una carpeta que se llame librería y dentro de ella ponemos el nombre al archivo (con extensión .log) y guardamos. En ese archivo estarán todos los procedimientos que teníamos en ese momento. Cuando volvamos abrir mswlogo para cargar los procedimientos iremos archivo cargar y cargaremos el archivo. Cuando vayamos a archivo editar aparecerán los procedimientos guardados en ese archivo.  También se pueden escribir programas con otro editor por ejemplo con notepad o word y luego copiarlo y pegarlo. GUARDAR LOS PROCEDIMIENTOS
En programas muy largos cuando lo ejecutamos para probarlo puede sernos muy útil el  botón trazar  de la ventana de trabajo, ya que de esa forma nos va saliendo en la ventana de trabajo las órdenes que se van ejecutando en cada momento para facilitarnos la depuración de errores. Con el  botón alto  se detiene el proceso y con el  botón paso  se ejecutan las órdenes instrucción a instrucción.  ¡Vamos a empezar a programar!   Ejercicio 14º)  Crea un programa que multiplique dos números introducidos por el usuario (está hecho antes) pero llámalo  dibujo  y que el resultado sea esta frase:  El resultado de multiplicar  primernumero  por el  segundonumero  es  resultado   (3 variables) Vamos a ampliar este un poco más, que este era muy fácil
Ejercicio 15º)  Imagina que ahora quieres que el ordenador dibuje un cuadrado cuyos lados sean el resultado de esa multiplicación en ese mismo programa (en  dibujo ). Haremos  un procedimiento llamado cuadrado :respuesta  pero en el programa solo meteremos el nombre del procedimiento para que se ejecute dentro del programa  dibujo  (procedimiento dentro de un programa). Ojo  no podemos dar el nombre a un procedimiento con el nombre de una primitiva . Intenta hacerlo. Ejercicio 16º)  Crea un programa que en una ventana aparezcan 3 colores para que el usuario pueda elegir como fondo de pantalla y a continuación el fondo de la pantalla se ponga de ese color. A los 3 segundos el fondo debe de volver a su color inicial (blanco).
Analiza lo que hace el siguiente programa y las primitivas  leepalabra  y  alto: Para juego ot haz “x (1+azar 5) repite 5 [  haz “n  leepalabra si :x=:n [gd 90 rotula [acertaste] espera 60 bp  alto ] gd 90 rotula [fallaste] espera 60 bp ] fin Con  leepalabra  hacemos que el ordenador saque una ventana para meter un número y lo acepte como el número de la variable n.  Con alto  hacemos que si acertamos antes de 5 intentos  el ordenador no siga  con el programa, pero si no acertamos no se ejecuta alto y pasa a la siguiente línea rotulando fallaste. ¡¡¡Hazlo en tu ordenador!!!
Fíjate y crea este programa: Para pantalla1 Ponpos [-150 0] Repite 5 [ Poncolorpapel [0 255 0] rotula [ACERTASTE ENHORABUENA] ESPERA 30 Poncolorpapel [0 0 255] rotula [ACERTASTE ENHORABUENA] ESPERA 30 Poncolorpapel [255 0 0] rotula [ACERTASTE ENHORABUENA] ESPERA 30 ] fin Crea otro procedimiento llamado pantalla2 para fallaste Ejercicios 17º)   ¿Cómo meterías estos programas para que se activaran cuando acertamos o fallamos en el juego anterior?
Ejercicio 18º)  Mejora el programa anterior para que al fallar salga la frase ¡Fallaste nombredelusuario inténtalo de nuevo! ó ¡Acertaste nombredelusuario enhorabuena!.  Ojo con ponpos al inicio del programa haz que salga la frase centrada y en la parte superior de la ventana principal   Intenta mas mejoras  con preguntabox , que las letras giren, vayan cambiando de tamaño, etc. Ejercicio 19º)  Crea un programa que haga que una figura se mueva  por la pantalla de mswlogo.
Estructuras recursivas Recursividad es una llamada al propio programa para que vuelva a realizar unas determinadas órdenes en un ciclo sin fin,  o que acabe solo al pulsar el botón alto o cuando se cumpla alguna condición que provoque la orden alto. Imagina que quieres realizar un contador hasta 21 y que empiece a contar por un número cualquiera (n) menor que 20 lógicamente.   Para contador :n Gd 90 Rotula :n espera 30 bp  ;cada medio segundo cambia de número Si :n>20 [alto] Contador :n+1 fin Cuando el programa llega a la orden condicional  si,  el número es menor de 20 no hace la orden de alto con lo que pasará a la siguiente orden que es activar el programa otra vez pero la n de antes será un número mas (n+1), recuerda que n es un número cualquiera que metamos (en este caso n+1).   Estamos llamando de nuevo al programa hasta que se cumpla la condición y se ejecute la orden alto.
¿Cómo harías para que al acabar el contador anterior se pare pero salga la palabra FIN en la pantalla?. Ejercicio 20º)  Crea un programa que el usuario mediante una ventana ponga el numero desde el que quiere empezar a contar, otra con el tiempo que pasa entre un número y otro y otra para que decida hasta que numero quiere contar. ¡¡¡VAMOS A APRENDER A QUE EL USUARIA PUEDA INTERACTUAR MÁS CON  NUESTROS PROGRAMAS!!!
ventanas Creaventana  “ventanadelaquedepende “identificador [titulo de la ventana] x y  ancho alto [órdenes a ejecutar cuando se crea la ventana, normalmente vacio] Creaventana “main “ventana1 [ventana de prueba] 0 0 100 100 [] Vamos a crear una ventana de windows Las ventanas pueden ser ventanas dependientes de otra ventana. Sino depende de ninguna otra ventana se pone “main. El identificador es el nombre que le damos a la ventana. X e Y son los puntos para especificar donde queremos que empiece a crearse la ventana siendo 0 0 la esquina superior izquierda de la ventana principal de mswlogo  Borraventana  “ventana1  ;Ojo cuando se borra una ventana se borra todo lo  vinculado a ella. Crea y borra la ventana anterior
Los botones pueden ir solos o dentro de una ventana. Si el botón no depende de ninguna ventana, se pone, en el nombre de la ventana de la que depende, un nombre cualquiera. BOTONES Creaboton  “nombreventanaquepertenece “nombredelboton [palabra que aparecerá en el botón] x y ancho alto [orden que se ejecuta al pulsarlo] En este caso X e Y son los puntos de referencia desde donde empieza a crearse el botón pero partiendo desde la esquina superior izquierda de la ventana a la que pertenece.  Si el botón no pertenece a ninguna ventana la referencia será el centro de la pantalla Creaboton “ninguna “boton1 [avancemos 50] 0 0 110 100 [av 50]  (sin ventana de referencia) Crea este botón. ¿Qué hace cuando picamos en el? Borraboton  “boton1
Creaventana “main “ventana1 [ventana de prueba] 50 50 200 200 [] Creaboton “ventana1 “boton1 [dibuja un cuadrado] 0 0 100 50 [av 80 gd 90]  Fíjate que 0 0 es la esquina superior izquierda de la ventana a la que pertenece, no el centro de la pantalla. Borraventana  “ventana1  (borra también el botón) Botón dependiente de una ventana Practica creando botones y ventanas que realicen alguna cosa Podemos vincular a una ventana una lista para que el usuario pueda seleccionar una de las opciones de la lista. Primero se crea la ventana y luego vinculamos una lista a la ventana con  crealistbox. Ventanas con lista para elegir Crealistbox  “ventanaalaquepertenece “nombredellistbox X Y  ancho alto Ejemplo: Creaventana “main “ventana2 [listado] 0 0 100 100 [] Crealistbox “ventana2 “lista1 25 25 30 30
Para añadir cosas a la lista creada se hace con  añadecadenalistbox “ nombredelalistabox [palabra o procedimiento a seleccionar en la lista] Vamos añadir dos listas: añadecadenalistbox “lista1 [uno]  añadecadenalistbox “lista1 [dos] ¡¡¡PERO NO HAY NADA EN LA LISTA!!! Ahora deberemos de decirle al programa  que hacer  cuando seleccione una palabra u otra de la lista: si [uno]= leeseleccionlistbox  &quot;lista1 [rotula [has elegido la opción uno]   Así para cada opción de la lista borralistbox  &quot;lista1 borra toda la lista  borracadenalistbox &quot;lista1 [uno]
Vamos a crear una ventana con una lista con las opciones cuadrado y triangulo, y un boton que cuando pulsemos sobre el se dibuje la opción seleccionada en la lista: Creaventana “main “ventana1 [vamos a dibujar] 0 0 100 100 [] Crealistbox “ventana1 “lista1 25 0 50 50 añadecadenalistbox “lista1 [CUADRADO] añadecadenalistbox “lista1 [TRIANGULO] Creaboton “ventana1 “boton1 [dibuja] 25 50 50 25 [ dibujos ]  dibujos será un programa que se ejecutará al pulsar el botón y que tendrá que dibujar en función de lo elegido en la lista. Será este: Bp si [CUADRADO]=leeseleccionlistbox “lista1 [repite 4 [av 100 gd 90]] Si [TRIANGULO]=leeseleccionlistbox “lista1 [repite 3 [av 100 gd 120]] ¡¡¡¡¡¡PERO NO HAY OTRA FORMA MÁS FACIL!!!!!
¡¡¡¡PUES SI!!!  mediante  seleccionbox   seleccionbox  [escoja color] [rojo verde azul]  si elegimos la primera opción la salida es 1, si es la segunda 2 y si es la tercera 3 Si pulsamos cancelar la salida será 0   Después podemos programar en función de la salida si es 0, 1, 2 o 3.   ¿Qué haría este programa?   haz &quot;x seleccionbox [escoja color] [rojo verde] si :x=1 [poncolorpapel [255 0 0]] si :x=2 [poncolorpapel [0 255 0]] Otros elementos Mensaje  [titulo ventana] [mensaje] Sale una ventana con los botones aceptar o cancelar sinobox  [Pregunta] [¿Le gusta logo?] si pulsamos  si la salida es verdadero, si pulsamos no es falso y si cancelamos se para. Preguntabox  [pregunta] [¿Le gusta logo?] la salida es lo que escribamos en la caja
Para poder utilizar el teclado como elemento de control tenemos que usar dos instrucciones ponfoco y ponteclado: CONTROL DESDE EL TECLADO ponfoco  [nombre de la pantalla que queremos tener activa] Ejemplo ponfoco [Pantalla de MSWLogo] Activa los eventos del teclado, es decir, cada vez que pulsemos una tecla Logo detendrá lo que esté haciendo en ese momento y ejecutará las instrucciones y/o procedimientos escritos en el corchete, posteriormente continuará con el trabajo que había parado. Ejemplo:  ponteclado [gd 20] cada vez que pulsemos una tecla la tortuga gira 20º a la derecha.  OJO  situarnos en la ventana de MSWLOGO para que funcione, después de poner la orden. ponteclado  [instrucciones cuando pulsamos la tecla] Pasa el control a la pantalla especificada: Pantalla de MSWLogo o Trabajo. Quitateclado  ; devuelve al control a la ventana trabajo Ventana de gráficos
¿Y si quiero especificar la tecla que da la orden? Para eso debemos tener en cuenta que cada tecla tiene un valor en código  ASCIIL. Por ejemplo la a vale A vale 65 y la z 122. Mediante la primitiva  lc Podemos saber el codigo ASCIIL de una tecla: lc Devuelve el valor ASCII (número entre 1 y 127) de la ultima tecla pulsada. Pulsa sobre la ventana de gráficos. Pulsa una tecla, y depués en la ventana de trabajo pulsa lc. Te dirá el código ASCIIL que le corresponde a la letra pulsada.  Car  Devuelve el carácter (letra, número, signo,…) correspondiente al código ASCII indicado.  Pon car 122  Te devuelve la letra que le corresponde al ASCIIl 122 (la z). Estas dos primitivas se sulen usar de la siguiente forma: car lc  Así, obtenemos el carácter correspondiente al código de la última tecla pulsada. Es decir convierte el código de la ultima tecla pulsada en el carácter. ¿Y para qué? Veamos….. caracteres Será un numero
Mira este ejemplo para control ponteclado [ haz &quot;tecla car lc ;asigna a tecla el valor de la  tecla pulsada  si :tecla=4 [gi 20] ;si la tecla es la 4 gi 20 si :tecla=6 [gd 20] ;si la tecla es la 6 gd 20 si :tecla=9 [quitateclado parada] ] Fin ¡¡¡OJO puede que solo funcione con números.!!! Para el programa ¿Y si hacemos un juego que se mueva la tortuga y podamos controlar la  dirección de la misma?. Para el control ya tenemos el procedimiento. Será control. Ahora hagamos el juego:
para juego bp sl ponfoco [Pantalla de MSWLogo] ponteclado [control]  ; pasa el mando al teclado de la forma que  especificamos  en el procedimiento control siempre [av 1 espera 6]  ; avanza despacio, pero con control desde el  teclado fin Puedes probar a cambiar la velocidad con lo orden espera ¡La primitiva siempre hace que lo que hay dentro de ella se ejecute siempre! ¿Y si quiero que la tortuga se mueva por un circuito? Debemos cargar una imagen en logo Dibujos en logo Logo solo permite archivos .bmp o .gif. En la barra de menú bitmap cargar y se carga el archivo. Crea un dibujo de una carretera con Paint y cárgalo en mswlogo. Saca dos tortugas y muévelas por el camino compitiendo con tu compañero (cada uno con una). Es complicado colocar bien el dibujo en pantalla cargadib “circuito.bmp   OJO El archivo debe estar en la misma carpeta que el procedimiento que lo utilice.
La tortuga se sitúa inicialmente en el centro de la pantalla, posición que no coincidirá con la línea de salida del circuito que hayamos cargado. ponpos  [coordenadaX coordenadaY] Ubica la tortuga en el punto cuyas coordenadas que quieras. ¡OJO! Si el lápiz está bajado dibuja una línea recta en su desplazamiento. Ejemplos ponpos [0 50]  o  ponpos [0 0] ¿Lo complicamos más? El choque de la tortuga con los bordes negros del circuito lo detectaremos preguntando, cada vez que la tortuga avanza, por el color del punto de la pantalla (píxel) en el que se sitúa. si píxel = [255 0 0] [re 10 gi 50] La línea de programa anterior pregunta si el color del punto en el que se encuentra la tortuga es rojo y en caso afirmativo ejecuta las instrucciones del último corchete: retrocede 10 pasos y gira a la izquierda 50 grados o podemos hacer que vuelva al inicio. ¿¿¿¿¿Y que emita un sonido??????
Sonidos podemos cargar pequeños sonidos con  suenatono  frecuencia duración.  Ejem  suenatono 30 400 También se pueden reproducir ficheros .wav pero hay que especificar la ruta del archivo suenawave &quot;c:windowstada.wav 1  El 1 es un número fijo que siempre se pone. Intenta que suene un archivo .wav que bajes de internet (lo mejor es que esté en c: para simplificar la ruta). poncontador  numero tiempo [instrucciones o procedimiento a ejecutar] Ejecuta las instrucciones o procedimientos encerrados entre los corchetes cada vez que transcurre el tiempo indicado (en milésimas de segundo). MSWLogo puede activar a la vez hasta 31 contadores, por ello, hay que indicar el número del contador activado en la instrucción. Ejemplo: poncontador 1 1000 [haz “tiempo :tiempo+1] El ejemplo anterior activa el contador 1 para que, cada segundo,  se incremente  la variable  tiempo ,que se habrá definido con anterioridad. CONTROL DEL TIEMPO
Programación en árbol (Inteligencia artificial) Se trata de ir preguntando y en función de la respuesta seguir por un camino u otro hasta llegar al final.   ¿Cómo funciona un programa capaz de jugar a un juego de inteligencia, tal como el ajedrez o las damas?  La palabra clave es programación en árbol.
La figura 1 muestra una hipotética situación. Las letras A, B y C representan sendas fichas. Para cada una tenemos uno o varios movimientos, que a su vez provocarán movimientos en las piezas de nuestro contrincante. Los números representan la puntuación de cada jugada. Para calcular la jugada óptima se toman cada una de las jugadas propias y a su puntuación se le resta la de la jugada del oponente. Por ejemplo, una jugada de la pieza A nos reporta 9 puntos, pero a continuación la del contrincante le puede suponer 11 puntos, de forma que quedan -2 puntos globales. Por otra parte, una jugada de la figura C nos supone sólo 2 puntos, pero al restarle los -2 de la jugada más óptima del contrincante nos da una ganancia neta de 4 puntos. De esta manera, se puede encontrar la mejor jugada en aquella que proporciona una puntuación neta mayor. Con sólo dos niveles de profundización se tiene un nivel de juego comparable al de un niño de seis años. Ampliando el número de niveles se puede ir mejorando el nivel de juego, a costa de un mayor tiempo de cómputo. Por ello, se han desarrollado técnicas para &quot;podar&quot; el árbol, y eliminar aquellas ramas que a priori se puede saber que no van a dar puntuaciones altas.
EJERCICIOS CON PUNTUACIÓN Ejercicio 1:  Realiza un programa que me diga los billetes de cambio que debería de dar cuando me pagan con billetes de 100€, de 50€  o de 10€ si el producto cuesta 20€. (En árbol) 1 PUNTO Ejercicio 3:  crea un juego de tecnología en que el usuario pueda elegir una pregunta en función del curso que estudie (solo 3º y 4º) y el nivel de la pregunta fácil media o difícil  y que además le de una puntuación por acertar la pregunta ( 0 puntos si falla 1 punto fácil 2 media y 3 difícil). ¿Podrías hacer que le hiciera 2 preguntas y se sumaran los puntos? 1 PUNTO Ejercicio 2:  crear un semáforo que se active el verde a los 10 segundos de pulsar el usuario para que pueda pasar. 1 PUNTO PROGRAMAS OBLIGATORIOS
Ejercicio 4:  crea un programa en el que se puedan seleccionar varias figuras en color o imágenes y que el ordenador las enseñe sonando una música para cada figura o imagen. . ¿Y qué se muevan las figuras? Ejercicio 5:  crea un programa en el que el usuario vaya eligiendo contestaciones a preguntas y en función de lo que responda le digas la personalidad del usuario (busca información en internet). Ejercicio 6:  Haz un programa de preguntas, pero en el que las preguntas sean de 3 áreas diferentes y que el usuario al apretar un botón (sería como tirar el dado)  el ordenador elija al azar el tema de la pregunta que le va hacer. Intenta mejorarlo sumando puntos. Ejercicio 7:  queremos que el ordenador nos de el precio de los productos vendidos a un cliente en una tienda en la que solo se venden barras de pan (pequeñas, medianas y grandes) y botellas de agua (de ½ y de 1 litro) Por ejemplo  si compran 3 barras de pan pequeñas. Realiza el programa en forma de árbol. ¿Serías capaz de que sacara el precio cuando se compra pan y agua a la vez?. (En árbol) ELIGE UNO DE ESTOS 4 PROGRAMAS PARA REALIZARLO 2 PUNTOS
PRÁCTICA FINAL DEBEREIS CREAR UN PROGRAMA IDEADO, DISEÑADO Y REALIZADO POR VOSOTROS EN GRUPOS DE 2 PERSONAS 5 PUNTOS ¿QUIERES SABER MÁS SOBRE TECNOLOGÍA? VISITA NUESTRA WEB : WWW.AREATECNOLOGIA.COM

Weitere ähnliche Inhalte

Was ist angesagt?

Guia introduccion de micromundos
Guia introduccion de micromundosGuia introduccion de micromundos
Guia introduccion de micromundoslisvancelis
 
comandos basicos MSW LOGO
comandos basicos MSW LOGOcomandos basicos MSW LOGO
comandos basicos MSW LOGOtruenopanda2002
 
Etiquetas basicas html
Etiquetas basicas htmlEtiquetas basicas html
Etiquetas basicas htmlMiguel Barajas
 
Microsoft Word: tablas
Microsoft Word:  tablasMicrosoft Word:  tablas
Microsoft Word: tablasHeli Lazaro
 
Lista de cotejo de excel
Lista de cotejo de excelLista de cotejo de excel
Lista de cotejo de excelrsc392023
 
FORMAS DE CREAR UNA TABLA EN WORD, ejercicios en word
FORMAS DE CREAR UNA TABLA EN WORD, ejercicios en wordFORMAS DE CREAR UNA TABLA EN WORD, ejercicios en word
FORMAS DE CREAR UNA TABLA EN WORD, ejercicios en wordProfesor Harry A.C.
 
Clase de sistemas y tecnologia micromundos pro
Clase de sistemas y tecnologia micromundos proClase de sistemas y tecnologia micromundos pro
Clase de sistemas y tecnologia micromundos proCESAR CHAPARRO RUIZ
 
Makeblock bloques de_programacion
Makeblock bloques de_programacionMakeblock bloques de_programacion
Makeblock bloques de_programacionJoesclajo Garcia
 
Practica de software y hardware trabajo
Practica de software y hardware trabajoPractica de software y hardware trabajo
Practica de software y hardware trabajoAgustin Chavarria
 
Arreglos en PSeInt
Arreglos en PSeIntArreglos en PSeInt
Arreglos en PSeIntJerry
 
Scrtach jr
Scrtach jrScrtach jr
Scrtach jrctepay
 
Hipervínculos en excel
Hipervínculos en excelHipervínculos en excel
Hipervínculos en excelJpalacio23
 
PREGUNTAS CONOCIMIENTO EN POWER POINT
PREGUNTAS CONOCIMIENTO EN POWER POINTPREGUNTAS CONOCIMIENTO EN POWER POINT
PREGUNTAS CONOCIMIENTO EN POWER POINTAlexander Castellanos
 
Manual de Microsoft Word 2016
Manual de Microsoft Word 2016Manual de Microsoft Word 2016
Manual de Microsoft Word 2016Carlos Almilcar
 

Was ist angesagt? (20)

Guia introduccion de micromundos
Guia introduccion de micromundosGuia introduccion de micromundos
Guia introduccion de micromundos
 
comandos basicos MSW LOGO
comandos basicos MSW LOGOcomandos basicos MSW LOGO
comandos basicos MSW LOGO
 
Etiquetas basicas html
Etiquetas basicas htmlEtiquetas basicas html
Etiquetas basicas html
 
Microsoft Word: tablas
Microsoft Word:  tablasMicrosoft Word:  tablas
Microsoft Word: tablas
 
Power point
Power pointPower point
Power point
 
Lista de cotejo de excel
Lista de cotejo de excelLista de cotejo de excel
Lista de cotejo de excel
 
Test sobre power point (1)
Test sobre power point (1)Test sobre power point (1)
Test sobre power point (1)
 
FORMAS DE CREAR UNA TABLA EN WORD, ejercicios en word
FORMAS DE CREAR UNA TABLA EN WORD, ejercicios en wordFORMAS DE CREAR UNA TABLA EN WORD, ejercicios en word
FORMAS DE CREAR UNA TABLA EN WORD, ejercicios en word
 
Clase de sistemas y tecnologia micromundos pro
Clase de sistemas y tecnologia micromundos proClase de sistemas y tecnologia micromundos pro
Clase de sistemas y tecnologia micromundos pro
 
Makeblock bloques de_programacion
Makeblock bloques de_programacionMakeblock bloques de_programacion
Makeblock bloques de_programacion
 
Practica de software y hardware trabajo
Practica de software y hardware trabajoPractica de software y hardware trabajo
Practica de software y hardware trabajo
 
Arreglos en PSeInt
Arreglos en PSeIntArreglos en PSeInt
Arreglos en PSeInt
 
Scrtach jr
Scrtach jrScrtach jr
Scrtach jr
 
Hipervínculos en excel
Hipervínculos en excelHipervínculos en excel
Hipervínculos en excel
 
PREGUNTAS CONOCIMIENTO EN POWER POINT
PREGUNTAS CONOCIMIENTO EN POWER POINTPREGUNTAS CONOCIMIENTO EN POWER POINT
PREGUNTAS CONOCIMIENTO EN POWER POINT
 
Manual de Microsoft Word 2016
Manual de Microsoft Word 2016Manual de Microsoft Word 2016
Manual de Microsoft Word 2016
 
Ejercicio de paint grado 6 ietisd
Ejercicio de paint grado 6 ietisdEjercicio de paint grado 6 ietisd
Ejercicio de paint grado 6 ietisd
 
Funciones de las teclas primer grado
Funciones de las teclas primer gradoFunciones de las teclas primer grado
Funciones de las teclas primer grado
 
Presentacion word clase 2
Presentacion word  clase 2Presentacion word  clase 2
Presentacion word clase 2
 
Partes del teclado
Partes del tecladoPartes del teclado
Partes del teclado
 

Ähnlich wie Programación con MSWLogo

Ähnlich wie Programación con MSWLogo (20)

Programando en Logo
Programando en LogoProgramando en Logo
Programando en Logo
 
Mathlab tutorial
Mathlab tutorialMathlab tutorial
Mathlab tutorial
 
Graficas con Matlab
Graficas con Matlab Graficas con Matlab
Graficas con Matlab
 
Capítulo 1 Qbasic entrada y salida básica
Capítulo 1  Qbasic entrada y salida básicaCapítulo 1  Qbasic entrada y salida básica
Capítulo 1 Qbasic entrada y salida básica
 
Guia tortugarte
Guia tortugarteGuia tortugarte
Guia tortugarte
 
Lenguaje logo
Lenguaje logoLenguaje logo
Lenguaje logo
 
Taller de introduccion a python con turtle
Taller de  introduccion a python  con  turtleTaller de  introduccion a python  con  turtle
Taller de introduccion a python con turtle
 
Ejercicios de programacion if - switch-case
Ejercicios de programacion   if  -   switch-caseEjercicios de programacion   if  -   switch-case
Ejercicios de programacion if - switch-case
 
Curso autocadv1 2
Curso autocadv1 2Curso autocadv1 2
Curso autocadv1 2
 
Apuntes de AutoCad
Apuntes de AutoCadApuntes de AutoCad
Apuntes de AutoCad
 
Apuntes de auto cad
Apuntes de auto cadApuntes de auto cad
Apuntes de auto cad
 
Fundamentos de Programación LOGO. Carlos Guerrero. ESPOL
Fundamentos de Programación LOGO. Carlos Guerrero. ESPOLFundamentos de Programación LOGO. Carlos Guerrero. ESPOL
Fundamentos de Programación LOGO. Carlos Guerrero. ESPOL
 
Funciones y procedimientos_propios_lpp
Funciones y procedimientos_propios_lppFunciones y procedimientos_propios_lpp
Funciones y procedimientos_propios_lpp
 
Funciones y procedimientos propios de LPP
Funciones y procedimientos propios de LPPFunciones y procedimientos propios de LPP
Funciones y procedimientos propios de LPP
 
Micromundos
MicromundosMicromundos
Micromundos
 
Tortug arte teoria
Tortug arte teoriaTortug arte teoria
Tortug arte teoria
 
Sesion03
Sesion03Sesion03
Sesion03
 
Ejercicio del-ahorcado
Ejercicio del-ahorcadoEjercicio del-ahorcado
Ejercicio del-ahorcado
 
Ejercicio del-ahorcado
Ejercicio del-ahorcadoEjercicio del-ahorcado
Ejercicio del-ahorcado
 
Diagrama de flujo lineal
Diagrama de flujo linealDiagrama de flujo lineal
Diagrama de flujo lineal
 

Mehr von www.areatecnologia.com (20)

Ensayo de traccion
Ensayo de traccionEnsayo de traccion
Ensayo de traccion
 
Electricidad Estática
Electricidad EstáticaElectricidad Estática
Electricidad Estática
 
Calculo de Vigas
Calculo de VigasCalculo de Vigas
Calculo de Vigas
 
Lubricacion
LubricacionLubricacion
Lubricacion
 
Reles
RelesReles
Reles
 
Que es la Domotica
Que es la DomoticaQue es la Domotica
Que es la Domotica
 
Tipos de Malware
Tipos de MalwareTipos de Malware
Tipos de Malware
 
Proceso Tecnologico
Proceso TecnologicoProceso Tecnologico
Proceso Tecnologico
 
Tipos de Dibujo Técnico
Tipos de Dibujo TécnicoTipos de Dibujo Técnico
Tipos de Dibujo Técnico
 
Escalas en Dibujo Técnico
Escalas en Dibujo TécnicoEscalas en Dibujo Técnico
Escalas en Dibujo Técnico
 
Obsolescencia Programada
Obsolescencia ProgramadaObsolescencia Programada
Obsolescencia Programada
 
Tuercas y Tornillos
Tuercas y TornillosTuercas y Tornillos
Tuercas y Tornillos
 
Nanobots
NanobotsNanobots
Nanobots
 
Turbinas hidraulicas
Turbinas hidraulicasTurbinas hidraulicas
Turbinas hidraulicas
 
Resistencia Electrica
Resistencia ElectricaResistencia Electrica
Resistencia Electrica
 
El Aerogel Supermaterial
El Aerogel SupermaterialEl Aerogel Supermaterial
El Aerogel Supermaterial
 
Partes de Una Pagina Web
Partes de Una Pagina WebPartes de Una Pagina Web
Partes de Una Pagina Web
 
Metrologia
MetrologiaMetrologia
Metrologia
 
Turbina a Vapor
Turbina a VaporTurbina a Vapor
Turbina a Vapor
 
Conductores
ConductoresConductores
Conductores
 

Kürzlich hochgeladen

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 

Kürzlich hochgeladen (13)

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 

Programación con MSWLogo

  • 1. PROGRAMACIÓN CON MSWLOGO POR WWW.AREATECNOLOGIA.COM
  • 2. Introducción. Lenguajes de programación El lenguaje de programación permite dar órdenes al ordenador utilizando un idioma parecido al nuestro. Después una parte del lenguaje de programación, denominado compilador o intérprete, traduce estas órdenes a código máquina, el único lenguaje que entiende el ordenador (0 y 1). Como ocurre con los idiomas, existen muchos lenguajes de programación. Cada no tiene su propio vocabulario (órdenes) y sintaxis (forma de utilizar y combinar las órdenes). Según su función se diferencian dos tipos de lenguajes de programación: El lenguaje ensamblador (de bajo nivel), que es muy complicado, pero aprovecha el máximo los recursos del sistema, ya que da las órdenes prácticamente en código máquina. Lenguajes de alto nivel , que no dependen del tipo de componentes del ordenador y son más sencillos (Visual Basic, pascal, fortran, LOGO, etc).
  • 3. Logo es un lenguaje interpretado (de alto nivel) , lo que significa que las órdenes introducidas por el usuario son interpretadas por el ordenador y ejecutadas inmediatamente en orden. Los lenguajes compilados , por otro lado son convertidos primero a código máquina antes de que cualquier parte del programa pueda empezar a funcionar. El lenguaje Logo fue desarrollado a finales de los 70 y su símbolo es una tortuga que se mueve bajo el control del ordenador. Hay varios programas para trabajar bajo lenguaje Logo (mswlogo, winlogo, logo writer, logo gráfico, etc). Nosotros trabajaremos con Mswlogo que es el más usado y freeware. Nota: es importante que realices todos los ejercicios según avanza el tutorial para poder comprender bien los programas más complicados que tendrás que realizar más adelante (por muy sencillos que te parezcan).
  • 4. Ventana de gráficos .- Utilizando las órdenes adecuadas, podremos mover un pequeño triángulo (denominado tortuga), realizar dibujos y rotulos, así como insertar bitmap realizados, por ejemplo, con el programa Paint. Ventana de trabajo .- Aquí aparecerán las órdenes introducidas en la caja de entrada, los mensajes de error y el resultado de la ejecución de algunas instrucciones. Caja de entrada .- En esta zona podemos escribir instrucciones y ejecutarlas de inmediato pulsando la tecla enter o el botón ejecutar. VENTANA DE TRABAJO DE MSWLOGO
  • 5. PRACTICAS CON MSWLOGO En logo las órdenes se llaman primitivas (algunas tienen abreviatura). Cuando ponemos una primitiva en la ventana de trabajo se ejecuta en la pantalla de Mswlogo. El tamaño de la pantalla se puede modificar pero por defecto es de 1000 x 1000 siendo el punto [0 0] el centro de la pantalla, los puntos por arriba y derecha del [0 0] son positivos ejem [250 500] y por debajo e izquierda negativos [-250 -500]. En la barra de trabajo se pueden escribir varias órdenes separadas por un espacio para ser ejecutadas (las ejecuta en el orden en que se escribe). Vamos a dibujar un cuadrado: Ejercicio1: Bp av 50 gd 90 av 50 gd 90 av 50 gd 90 av 50 gd 90 Medidas de la Pantalla de trabajo Centro bp La tortuga va al centro pero dibujando a no ser que este activado subelapiz Centro Sl re 70 bl av 300 La tortuga se mueve pero sin dibujar. Al moverse no borra. / baja lápiz Subelapiz o sl / bl Ponlapiz av 25 La tortuga en goma pasa a lapiz ponlapiz Av 50 goma re 25 Convierte a la tortuga en una goma y borra por donde pasa. goma Es [hola] Escribe en pantalla trabajo Escribe o es Av 50 / re 40 / bp Avanza /retrocede Av / re Gd 90 / gi 75 Gira derecha / izquierda Gd / gi Bp Borra todo y deja la tortuga en el centro Borra pantalla o bp Rotula [hola empezamos] Escribe en pantalla rotula EJEMPLO QUE HACE PRIMITIVA
  • 6. En mswlogo podemos rellenar una figura de un color cualquiera, pero la orden de rellenar se debe de dar con la tortuga dentro de la figura , decirle con que color queremos que se rellene ( poncolorelleno ) y después rellena pero con el lapiz levantado sl . Por ejemplo el cuadrado anterior si lo queremos poner relleno primero pondremos la tortuga dentro de él y con el lápiz levantado sl. Ejercicio 2º) Gd 35 sl av 20 poncolorrelleno [255 0 0] rellena Por ejemplo el color del número [0 255 0] será el verde y el [0 0 255] el azul Para el resto es una mezcla de los colores que pongamos Ejercicio 3º) dibuja un cuadrado y un triangulo rellenos de un color cualquiera (diferente relleno el cuadrado que el triangulo y de lado 80)
  • 7. Mediante la barra de menú y en configurar podemos cambiar el tamaño del lapiz (ancho, el tipo de letra rotulador (letra que sale en pantalla), letra de la órdenes, y los colores del lápiz, de relleno, de fondo pantalla, aunque no es aconsejable hacerlo desde aquí, ya que se haría de forma manual no mediante una órden para que lo haga solo el ordenador Si queremos poner un color de fondo se usa la primitiva poncolorpapel [0 0 255] pero ojo cuando cambiamos el fondo todo lo que teníamos antes no se ve por que lo sobrescribe . En el caso del lápiz sería poncolorlapiz [0 255 0] Para cambiar el grosor de lápiz pongrosor [1 4] el 1 es fijo y el segundo número le dice el ancho, en este caso 4
  • 8. El tipo de fuente (letra) y su ancho y largo se cambia con la primitiva: pontamañotipo [[Times New Roman] 60 0] primero se pone el tipo de letra, el primer número es el alto de la letra y el segundo el ancho de la letra Muestra hora nos muestra la fecha y hora del sistema muestra colorlapiz el color del lapiz muestra colorpapel el del papel ¡OJO! Cuando programamos en logo debemos de fijarnos en los espacios, corchetes y errores de ortografía ya que cualquier pequeño fallo en algo de esto nos va a dar como salida un error y suele ser muy común equivocarse Ejercicio 4º) Práctica todas las primitivas vistas hasta ahora y al final deja la configuración inicial. Según avanzamos vete realizando una tabla, como la primera que vimos, en tu cuaderno con todas las primitivas que veamos.
  • 9. A veces para realizar algo con logo las órdenes se repiten varias veces las mismas, como en el caso del cuadrado. En estos casos se usa la primitiva repite Nº [lista de instrucciones a repetir Nº de veces] para reducir el número de órdenes. ESTRUCTURAS REPETITIVAS En el caso de un cuadrado: Bp repite 4 [gd90 av 50] Ejercicio 5º) Haz un cuadrado de lado 100, y otro de lado 60 con la orden repite Para un triangulo sería repite 3 [gi 120 av 100] Ocultatortuga o ot : la tortuga no se ve / muestratortuga o mt : vuelve a ser visible.
  • 10. Ejem. Repite 5 [gi 360/5 av 50] Repite Nº lados [gi 360/(nº de lados) av (tamaño del lado)] y para construir un polígono cualquiera sería: Para una circunferencia se pone más de 36 en nº de lados, y el valor de av será el radio Ejemplo: Repite 36 [gi 360/36 av 50]. Recuerda que puedes darles color a las figuras. Ejercicio 6º) Crea un pentágono y una circunferencia. Pon el color del lápiz y el color de relleno de colores diferentes
  • 11. Con mswlogo podemos trabajar con 1024 tortugas diferentes a la vez. Tortuga : nos dice el número de la tortuga con la que estamos trabajando. Activa 1 o ac 1 : activa la tortuga 1 y todo las órdenes que se den a continuación serán para esta tortuga hasta que no activemos otra diferente . Ejem. mt ac 1 av 100 ac 0 gd 90 av 100 Si queremos quitar una tortuga lo haremos con ocultatortuga 1 MAS TORTUGAS Con pos nos da como salida la posición de la tortuga activada ponpos [0 10] ponemos la tortuga en esa posición [x y].
  • 12. Podemos retrasar la ejecución de una orden con espera Nº , el tiempo de retraso será Nº/60 segundos, espera 60 se retrasará 1 segundo la orden Ejemplo: Av 100 espera 120 gd 90 av 50 Ejercicio 7º) dibuja una polígono que espere 3 segundos cuando acabe de dibujar cada lado para que vuelva a dibujar el siguiente lado. Ponle un color de relleno y al cabo de 3 segundos que cambie el color de relleno por otro diferente.
  • 13. Vamos a ver las primitivas para realizar operaciones matemáticas con varios ejemplos (no hay espacio entre los números). Entre una operación y otra pon la orden bp. Realiza las operaciones de los ejemplos con mswlogo : OPERACIONES MATEMATICAS Escribe 2+5 Suma de números rotula 12–5 Resta de números muestra 3*4 Multiplicación de números rotula 6/3 Divide números ¿Qué diferencia hay entre escribe, rotula y muestra? Otras operaciones son: rotula raiz cuadrada 9 redondea 8.3 (los decimales van separados por un punto) rotula entero 5/2 (da como salida el número entero sin decimales) rotula abs -5 (da como salida el valor absoluto).
  • 14. Rotula elemento 2 [a b c] rotula el elemento segundo de la lista entre corchetes Elección de elementos y primitiva AZAR rotula sacaalazar [1 2 3 4] saca un elemento de la lista al azar Nota: Si estos elementos no funcionan es por que hay que sacarlos de la librería de mswlogo mediante archivo cargar y el archivo librería.log Escribe estas instrucciones Una primitiva muy usada es azar con ella el ordenador sacará un número al azar desde 0 hasta el nº que pongamos por ejemplo para que saque un nº entre 0 y 5 debemos poner rotula azar 6 (el 6 no lo sacará) Ejercicio 8º) pon las siguientes instrucciones y razona lo que hace: ot Repite 5 [bp gd 90 espera 60 rotula azar 10 espera 60] bp mt
  • 15. Variables globales Una variable la podemos considerar como un almacén de diferentes valores, donde su valor podemos cambiarlo en cualquier momento o hacer que cambie de valor ella sola de alguna forma . En logo primero deberemos dar el nombre de la variable mediante: haz “nombredelavariable valordelavariable Donde el nombre puede ser una letra, un número o lo mas aconsejable para no perdernos cuando tengamos muchas variable es ponerlas con una palabra que la identifique (o palabras pero juntas o unidas por la barra baja _). Una vez que ya tenemos metida la variable cuando queramos sacarla se hará mediante (rotula, escribe u otra orden). rotula :nombredelavariable ¡OJO! no olvidar los : delante y juntos con el nombre VEAMOS ALGÚN EJEMPLO
  • 16. Ejemplo: haz “x 45 rotula :x ;dará como salida 45 rotula :x*2 ;dará como salida 90 Fijate que ahora ponemos ; para poner notas dentro del programa. Esto es muy útil Cuando tenemos grandes programas y queremos poner anotaciones aclaratorias dentro del propio programa. Todo lo que tengamos puesto después de ; no lo leera como instrucciones, si no que solo le servirá al programador para leerlas. Cuidado: Si no ponemos los : en la variable dará error y si ponemos rotula [x] dará la letra x como salida y no el valor de la variable. También podemos asignar una palabra como valor de la variable: haz “x [hola] rotula :x ;dará como salida la palabra hola Fíjate que en estos casos la palabra que tomará la variable va entre corchetes [ ]
  • 17. VAMOS A UTILIZAR VARIABLES CON LA PRIMITIVA AZAR Realiza estos programas en mswlogo: Haz”x azar 6 Rotula :x Nos escribirá un numero al azar entre 0 y 5 ( el 6 nunca) Haz “numero_azar sacaalazar [1 2 3 4] Rotula :numero_azar Nos mostrará el número que ha elegido el programa al azar entre 1 2 3 y 4. Haz”palabra sacaalazar [hola adios] Rotula :palabra Nos mostrará una de las dos palabras
  • 18. Otra primitiva muy importante en programación es la condicional, para que nos de una salida u otra diferente en función de si se cumple o no una condición. ESTRUCTURAS SELECTIVAS Las condiciones pueden ser si =, > y < Las salidas que dará en función de si se cumple o no la condición, que ira entre corchetes Si 1=1 [rotula [cierto]] Si queremos una salida para cuando se cumpla la condición y otra diferente para cuando no se cumpla la condición será: Ejemplo: Sisino 1=1 [rotula [vale 1]] [rotula [no vale 1]] condición salida Sisino 1>2 [rotula [cierto]] [rotula [falso]] condición Salida si Cumple la condición Salida si NO la cumple
  • 19. VAMOS A UTILIZAR LAS VARIABLES CON LAS CONDICIONALES Y CON LA PRIMITIVA AZAR haz “numeroazar azar 7 sisino :numeroazar<3 [rotula [menor de 3]] [rotula [mayor de 3]] ¿Qué hará este programa? Compruébalo en tu ordenador. Ojo al dar el nombre de la variable al azar el ordenador asigna un nº al azar a la variable, y hasta que no volvamos a dar la orden de haz “numeroazar azar 7 la variable numeroazar no cambiará de valor. Ejercicio 9º) Crea un programa con 2 variable numéricas (del 1 al 10) al azar y que haga la multiplicación de los dos números. El programa nos tendrá que decir si El resultado es mayor o menor de 100 de la siguiente forma: La multiplicación es mayor que 100 o la multiplicación es menor de 100 Pista: Sisino :multiplicación>100 [rotula [la multiplicación es mayor de 100]]……….
  • 20. Alternativas múltiples o con varias condiciones Es muy probable que tengamos la necesidad de incluir en nuestros programas alternativas con muchas opciones posibles. ¿Cómo se puede conseguir? Pues muy fácil. Pondremos una variable que pueda tomar varios valores, y para cada valor una condición diferente. Ejemplo: Haz”x azar 10 Si :x=1 [rotula [uno]] Si :x=2 [rotula [dos]] Si :x=3 [rotula [tres]] ;y así con todas las posibles salidas del valor x Esto es muy útil para programas que tengan una salida diferente en función de lo que elija el usuario del programa. ¿¿¿Se te ocurre algo para hacer un dado y que la tortuga avance en función de lo que saque el dado???? ¿O para hacer que el usuario deba contestar a una pregunta y dependiendo de lo que responda le demos una puntuación u otra? (variable con valor de texto) La mayoría de las veces el valor de la variable lo pone el usuario del programa (no el programador), pero para eso tenemos que hacer que el usuario pueda poner datos mientras se está ejecutando las instrucciones, es decir interactuar con el programa. Veamos como podemos conseguirlo
  • 21. Entrada de datos mientras el procedimiento está en uso Logo es un lenguaje de programación con entorno de windows, es decir puede mostrar mensajes de dialogo e interaccionar con el usuario, para aceptar, por ejemplo, entrada de datos desde el teclado y el programa actúe en consecuencia con los datos introducidos. Preguntabox [entrada de datos] [¿te parece difícil logo?] ¿Cómo se consigue que le programa nos muestra una ventana como la de de arriba? Lógicamente te dirá que no sabe que hacer con los datos introducidos. Si antes de preguntabox ponemos la primitiva rotula rotulará lo que escribamos en la ventana: Rotula preguntabox [entrada de datos] [pon un número]
  • 22. En el caso anterior lo que ponemos dentro de la caja lo considera una letra o una palabra, aunque escribamos un número. Si queremos que lo que escribimos lo considere un número (por ejemplo para que lo multiplique por otro) deberemos escribir la palabra primero delante de preguntabox Rotula primero preguntabox [entrada de datos] [pon un número] Ejercicio 10º) Vamos hacer que el ordenador multiplique dos números que el usuario introduzca ( variables asignadas por el usuario ), y lógicamente nos enseñe el resultado de la multiplicación Solución en la siguiente diapositiva Si queremos asignar el valor de lo que se introduzca en la caja sea una variable: Haz “numero primero preguntabox [ventana numero] [introduce el número]
  • 23. Haz “primernumero primero preguntabox [multiplicación] [introduce el primer número] Haz “segundonumero primero preguntabox [multiplicación] [introduce el segundo número] Haz “respuesta :primernumero*:segundonumero rotula :respuesta Si no hubiéramos puesto la palabra primero delante de preguntabox nos daría error por que no podría multiplicar los dos números por que los consideraría caracteres (letras). RECUERDA: Para palabras y frases en la caja preguntabox Para números primero preguntabox SOLUCIÓN:
  • 24. Haz “tu_nombre preguntabox [nombre] [¿Cuál es tu nombre?] Ot Gd 90 rotula ( frase [mi nombre es] :tunombre [y estudio 4º de la ESO]) La variable puede ir en cualquier posición de la frase, pero no nos olvidemos de cerrar paréntesis y de poner frase. A veces creamos una variable no numérica con lo que el usuario introduce en la caja , pero la variable es una palabra que después deberá pertenecer a una frase. Para que podamos rotular una frase que alguna de sus palabras son variables que debe introducir el usuario (por ejemplo su nombre) deberemos de poner toda la frase entre paréntesis y la primitiva frase (pocas veces se usan paréntesis en logo). Veamos un ejemplo. Hazlo en tu ordenador : Abrimos paréntesis Cerramos paréntesis
  • 25. Las órdenes de estos dos últimos ejemplos podrían ser por si mismas un pequeño programa. Para ello tendríamos que escribir todas las órdenes y que se ejecutaran cuando yo quisiera automáticamente, por ejemplo poniendo un nombre al programa y que se ejecutara cuando pongo el nombre del programa en la caja de la ventana de trabajo. Esto es lo que se conoce con el nombre de Procedimientos. Un procedimiento es un conjunto de órdenes guardadas con un nombre que se realizarán cuando introduzcamos su nombre en logo. Un programa completo puede constar de uno o varios procedimientos (programación estructurada). La técnica buena de programación dice que las tareas grandes ( programas grandes ) se deben de fraccionar en pequeños procedimientos (programas) donde cada uno de ellos realiza una sencilla o pequeña tarea. Estos pequeños programas (procedimientos) deben de guardarse e ir a ellos (llamarlos) cuando se necesiten dentro del programa grande. Cuando en logo ponemos dentro de un programa el nombre de un procedimiento el programa realizará el procedimiento (pequeño programa) y luego continuará con la siguiente orden .
  • 26. Los procedimientos y programas siempre empiezan por la palabra para nombredelporcedimiento INSTRUCCIONES ;y acaban con la palabra fin Para escribir un procedimiento deberemos ir a archivo y editar, a continuación escribimos el nombre del procedimiento (o programa si solo tiene ese procedimiento) y se abre un editor de texto para escribir el procedimiento (o programa). Ejercicio nº 11: Crea un procedimiento ( en este caso programa) para escribir la frase de tu nombre y que se ejecute cuando escribimos la palabra nombre. Al acabar no te olvides de guardar y salir en el editor del programa Si queremos cambiar o revisar el programa iremos a archivo editar y seleccionamos el nombre desprograma de la lista que aparece.
  • 27. Ejercicio 12º) : Crea un programa que nos sirva para dividir dos números y nos muestre el resultado. El programa se deberá ejecutar al escribir la palabra division. A veces el nombre del procedimiento es una variable que debe introducir el usuario. Veamos un ejemplo. Imaginemos que queremos crear un programa que nos realiza un cuadrado de lado 50: Para cuadrado50 Repite 4 [av 50 gd 90] Fin Al escribir cuadrado50 en la ventana de trabajo se dibuja el cuadrado. Pero ahora imagina que quieres que el programa sirva para que dibuje un cuadrado que el tamaño de sus lados sea el que quiera el usuario. Debe de ejecutarse al escribir cuadrado mas el número del tamaño del cuadrado, pero ese número es variable, en función de lo que escriba el usuario. Haremos lo siguiente:
  • 28. Para cuadrado :longitud ;longitud es un número variable que será el que escriba el usuario Repite 4 [av :longitud gd 90] ;ojo espacio entre cuadrado y :longitud, y a la hora de ejecutarlo también. Ejemplo cuadrado 50 Fin Ejercicio 13º): Escribe un programa que dibuje un triangulo cualquiera. ¿Qué hará este programa?: Para poligono :longitud :lados ;para ejecutarlo se escribe poligono y dos números separados por espacio Repite :lados [av :longitud gd 360/:lados] fin
  • 29. ¡ OJO IMPORTANTE ! : los procedimientos al guardar y salir se guardan temporalmente en mswlog, si cerramos el programa y volvemos abrirlo, ya no estarán los procedimientos. Para que todos los procedimientos se guarden y pueden cargarse siempre debemos de almacenarlos (guardarlos) en un archivo dentro de la carpeta de libreria de mswlogo. Una vez que salimos del editor guardando el último procedimiento vamos a archivo en la ventana del mswlogo guardar como, dentro de la carpeta mswlogo buscamos una carpeta que se llame librería y dentro de ella ponemos el nombre al archivo (con extensión .log) y guardamos. En ese archivo estarán todos los procedimientos que teníamos en ese momento. Cuando volvamos abrir mswlogo para cargar los procedimientos iremos archivo cargar y cargaremos el archivo. Cuando vayamos a archivo editar aparecerán los procedimientos guardados en ese archivo. También se pueden escribir programas con otro editor por ejemplo con notepad o word y luego copiarlo y pegarlo. GUARDAR LOS PROCEDIMIENTOS
  • 30. En programas muy largos cuando lo ejecutamos para probarlo puede sernos muy útil el botón trazar de la ventana de trabajo, ya que de esa forma nos va saliendo en la ventana de trabajo las órdenes que se van ejecutando en cada momento para facilitarnos la depuración de errores. Con el botón alto se detiene el proceso y con el botón paso se ejecutan las órdenes instrucción a instrucción. ¡Vamos a empezar a programar! Ejercicio 14º) Crea un programa que multiplique dos números introducidos por el usuario (está hecho antes) pero llámalo dibujo y que el resultado sea esta frase: El resultado de multiplicar primernumero por el segundonumero es resultado (3 variables) Vamos a ampliar este un poco más, que este era muy fácil
  • 31. Ejercicio 15º) Imagina que ahora quieres que el ordenador dibuje un cuadrado cuyos lados sean el resultado de esa multiplicación en ese mismo programa (en dibujo ). Haremos un procedimiento llamado cuadrado :respuesta pero en el programa solo meteremos el nombre del procedimiento para que se ejecute dentro del programa dibujo (procedimiento dentro de un programa). Ojo no podemos dar el nombre a un procedimiento con el nombre de una primitiva . Intenta hacerlo. Ejercicio 16º) Crea un programa que en una ventana aparezcan 3 colores para que el usuario pueda elegir como fondo de pantalla y a continuación el fondo de la pantalla se ponga de ese color. A los 3 segundos el fondo debe de volver a su color inicial (blanco).
  • 32. Analiza lo que hace el siguiente programa y las primitivas leepalabra y alto: Para juego ot haz “x (1+azar 5) repite 5 [ haz “n leepalabra si :x=:n [gd 90 rotula [acertaste] espera 60 bp alto ] gd 90 rotula [fallaste] espera 60 bp ] fin Con leepalabra hacemos que el ordenador saque una ventana para meter un número y lo acepte como el número de la variable n. Con alto hacemos que si acertamos antes de 5 intentos el ordenador no siga con el programa, pero si no acertamos no se ejecuta alto y pasa a la siguiente línea rotulando fallaste. ¡¡¡Hazlo en tu ordenador!!!
  • 33. Fíjate y crea este programa: Para pantalla1 Ponpos [-150 0] Repite 5 [ Poncolorpapel [0 255 0] rotula [ACERTASTE ENHORABUENA] ESPERA 30 Poncolorpapel [0 0 255] rotula [ACERTASTE ENHORABUENA] ESPERA 30 Poncolorpapel [255 0 0] rotula [ACERTASTE ENHORABUENA] ESPERA 30 ] fin Crea otro procedimiento llamado pantalla2 para fallaste Ejercicios 17º) ¿Cómo meterías estos programas para que se activaran cuando acertamos o fallamos en el juego anterior?
  • 34. Ejercicio 18º) Mejora el programa anterior para que al fallar salga la frase ¡Fallaste nombredelusuario inténtalo de nuevo! ó ¡Acertaste nombredelusuario enhorabuena!. Ojo con ponpos al inicio del programa haz que salga la frase centrada y en la parte superior de la ventana principal Intenta mas mejoras con preguntabox , que las letras giren, vayan cambiando de tamaño, etc. Ejercicio 19º) Crea un programa que haga que una figura se mueva por la pantalla de mswlogo.
  • 35. Estructuras recursivas Recursividad es una llamada al propio programa para que vuelva a realizar unas determinadas órdenes en un ciclo sin fin, o que acabe solo al pulsar el botón alto o cuando se cumpla alguna condición que provoque la orden alto. Imagina que quieres realizar un contador hasta 21 y que empiece a contar por un número cualquiera (n) menor que 20 lógicamente. Para contador :n Gd 90 Rotula :n espera 30 bp ;cada medio segundo cambia de número Si :n>20 [alto] Contador :n+1 fin Cuando el programa llega a la orden condicional si, el número es menor de 20 no hace la orden de alto con lo que pasará a la siguiente orden que es activar el programa otra vez pero la n de antes será un número mas (n+1), recuerda que n es un número cualquiera que metamos (en este caso n+1). Estamos llamando de nuevo al programa hasta que se cumpla la condición y se ejecute la orden alto.
  • 36. ¿Cómo harías para que al acabar el contador anterior se pare pero salga la palabra FIN en la pantalla?. Ejercicio 20º) Crea un programa que el usuario mediante una ventana ponga el numero desde el que quiere empezar a contar, otra con el tiempo que pasa entre un número y otro y otra para que decida hasta que numero quiere contar. ¡¡¡VAMOS A APRENDER A QUE EL USUARIA PUEDA INTERACTUAR MÁS CON NUESTROS PROGRAMAS!!!
  • 37. ventanas Creaventana “ventanadelaquedepende “identificador [titulo de la ventana] x y ancho alto [órdenes a ejecutar cuando se crea la ventana, normalmente vacio] Creaventana “main “ventana1 [ventana de prueba] 0 0 100 100 [] Vamos a crear una ventana de windows Las ventanas pueden ser ventanas dependientes de otra ventana. Sino depende de ninguna otra ventana se pone “main. El identificador es el nombre que le damos a la ventana. X e Y son los puntos para especificar donde queremos que empiece a crearse la ventana siendo 0 0 la esquina superior izquierda de la ventana principal de mswlogo Borraventana “ventana1 ;Ojo cuando se borra una ventana se borra todo lo vinculado a ella. Crea y borra la ventana anterior
  • 38. Los botones pueden ir solos o dentro de una ventana. Si el botón no depende de ninguna ventana, se pone, en el nombre de la ventana de la que depende, un nombre cualquiera. BOTONES Creaboton “nombreventanaquepertenece “nombredelboton [palabra que aparecerá en el botón] x y ancho alto [orden que se ejecuta al pulsarlo] En este caso X e Y son los puntos de referencia desde donde empieza a crearse el botón pero partiendo desde la esquina superior izquierda de la ventana a la que pertenece. Si el botón no pertenece a ninguna ventana la referencia será el centro de la pantalla Creaboton “ninguna “boton1 [avancemos 50] 0 0 110 100 [av 50] (sin ventana de referencia) Crea este botón. ¿Qué hace cuando picamos en el? Borraboton “boton1
  • 39. Creaventana “main “ventana1 [ventana de prueba] 50 50 200 200 [] Creaboton “ventana1 “boton1 [dibuja un cuadrado] 0 0 100 50 [av 80 gd 90] Fíjate que 0 0 es la esquina superior izquierda de la ventana a la que pertenece, no el centro de la pantalla. Borraventana “ventana1 (borra también el botón) Botón dependiente de una ventana Practica creando botones y ventanas que realicen alguna cosa Podemos vincular a una ventana una lista para que el usuario pueda seleccionar una de las opciones de la lista. Primero se crea la ventana y luego vinculamos una lista a la ventana con crealistbox. Ventanas con lista para elegir Crealistbox “ventanaalaquepertenece “nombredellistbox X Y ancho alto Ejemplo: Creaventana “main “ventana2 [listado] 0 0 100 100 [] Crealistbox “ventana2 “lista1 25 25 30 30
  • 40. Para añadir cosas a la lista creada se hace con añadecadenalistbox “ nombredelalistabox [palabra o procedimiento a seleccionar en la lista] Vamos añadir dos listas: añadecadenalistbox “lista1 [uno] añadecadenalistbox “lista1 [dos] ¡¡¡PERO NO HAY NADA EN LA LISTA!!! Ahora deberemos de decirle al programa que hacer cuando seleccione una palabra u otra de la lista: si [uno]= leeseleccionlistbox &quot;lista1 [rotula [has elegido la opción uno] Así para cada opción de la lista borralistbox &quot;lista1 borra toda la lista borracadenalistbox &quot;lista1 [uno]
  • 41. Vamos a crear una ventana con una lista con las opciones cuadrado y triangulo, y un boton que cuando pulsemos sobre el se dibuje la opción seleccionada en la lista: Creaventana “main “ventana1 [vamos a dibujar] 0 0 100 100 [] Crealistbox “ventana1 “lista1 25 0 50 50 añadecadenalistbox “lista1 [CUADRADO] añadecadenalistbox “lista1 [TRIANGULO] Creaboton “ventana1 “boton1 [dibuja] 25 50 50 25 [ dibujos ] dibujos será un programa que se ejecutará al pulsar el botón y que tendrá que dibujar en función de lo elegido en la lista. Será este: Bp si [CUADRADO]=leeseleccionlistbox “lista1 [repite 4 [av 100 gd 90]] Si [TRIANGULO]=leeseleccionlistbox “lista1 [repite 3 [av 100 gd 120]] ¡¡¡¡¡¡PERO NO HAY OTRA FORMA MÁS FACIL!!!!!
  • 42. ¡¡¡¡PUES SI!!! mediante seleccionbox seleccionbox [escoja color] [rojo verde azul] si elegimos la primera opción la salida es 1, si es la segunda 2 y si es la tercera 3 Si pulsamos cancelar la salida será 0 Después podemos programar en función de la salida si es 0, 1, 2 o 3. ¿Qué haría este programa? haz &quot;x seleccionbox [escoja color] [rojo verde] si :x=1 [poncolorpapel [255 0 0]] si :x=2 [poncolorpapel [0 255 0]] Otros elementos Mensaje [titulo ventana] [mensaje] Sale una ventana con los botones aceptar o cancelar sinobox [Pregunta] [¿Le gusta logo?] si pulsamos si la salida es verdadero, si pulsamos no es falso y si cancelamos se para. Preguntabox [pregunta] [¿Le gusta logo?] la salida es lo que escribamos en la caja
  • 43. Para poder utilizar el teclado como elemento de control tenemos que usar dos instrucciones ponfoco y ponteclado: CONTROL DESDE EL TECLADO ponfoco [nombre de la pantalla que queremos tener activa] Ejemplo ponfoco [Pantalla de MSWLogo] Activa los eventos del teclado, es decir, cada vez que pulsemos una tecla Logo detendrá lo que esté haciendo en ese momento y ejecutará las instrucciones y/o procedimientos escritos en el corchete, posteriormente continuará con el trabajo que había parado. Ejemplo: ponteclado [gd 20] cada vez que pulsemos una tecla la tortuga gira 20º a la derecha. OJO situarnos en la ventana de MSWLOGO para que funcione, después de poner la orden. ponteclado [instrucciones cuando pulsamos la tecla] Pasa el control a la pantalla especificada: Pantalla de MSWLogo o Trabajo. Quitateclado ; devuelve al control a la ventana trabajo Ventana de gráficos
  • 44. ¿Y si quiero especificar la tecla que da la orden? Para eso debemos tener en cuenta que cada tecla tiene un valor en código ASCIIL. Por ejemplo la a vale A vale 65 y la z 122. Mediante la primitiva lc Podemos saber el codigo ASCIIL de una tecla: lc Devuelve el valor ASCII (número entre 1 y 127) de la ultima tecla pulsada. Pulsa sobre la ventana de gráficos. Pulsa una tecla, y depués en la ventana de trabajo pulsa lc. Te dirá el código ASCIIL que le corresponde a la letra pulsada. Car Devuelve el carácter (letra, número, signo,…) correspondiente al código ASCII indicado. Pon car 122 Te devuelve la letra que le corresponde al ASCIIl 122 (la z). Estas dos primitivas se sulen usar de la siguiente forma: car lc Así, obtenemos el carácter correspondiente al código de la última tecla pulsada. Es decir convierte el código de la ultima tecla pulsada en el carácter. ¿Y para qué? Veamos….. caracteres Será un numero
  • 45. Mira este ejemplo para control ponteclado [ haz &quot;tecla car lc ;asigna a tecla el valor de la tecla pulsada si :tecla=4 [gi 20] ;si la tecla es la 4 gi 20 si :tecla=6 [gd 20] ;si la tecla es la 6 gd 20 si :tecla=9 [quitateclado parada] ] Fin ¡¡¡OJO puede que solo funcione con números.!!! Para el programa ¿Y si hacemos un juego que se mueva la tortuga y podamos controlar la dirección de la misma?. Para el control ya tenemos el procedimiento. Será control. Ahora hagamos el juego:
  • 46. para juego bp sl ponfoco [Pantalla de MSWLogo] ponteclado [control] ; pasa el mando al teclado de la forma que especificamos en el procedimiento control siempre [av 1 espera 6] ; avanza despacio, pero con control desde el teclado fin Puedes probar a cambiar la velocidad con lo orden espera ¡La primitiva siempre hace que lo que hay dentro de ella se ejecute siempre! ¿Y si quiero que la tortuga se mueva por un circuito? Debemos cargar una imagen en logo Dibujos en logo Logo solo permite archivos .bmp o .gif. En la barra de menú bitmap cargar y se carga el archivo. Crea un dibujo de una carretera con Paint y cárgalo en mswlogo. Saca dos tortugas y muévelas por el camino compitiendo con tu compañero (cada uno con una). Es complicado colocar bien el dibujo en pantalla cargadib “circuito.bmp OJO El archivo debe estar en la misma carpeta que el procedimiento que lo utilice.
  • 47. La tortuga se sitúa inicialmente en el centro de la pantalla, posición que no coincidirá con la línea de salida del circuito que hayamos cargado. ponpos [coordenadaX coordenadaY] Ubica la tortuga en el punto cuyas coordenadas que quieras. ¡OJO! Si el lápiz está bajado dibuja una línea recta en su desplazamiento. Ejemplos ponpos [0 50] o ponpos [0 0] ¿Lo complicamos más? El choque de la tortuga con los bordes negros del circuito lo detectaremos preguntando, cada vez que la tortuga avanza, por el color del punto de la pantalla (píxel) en el que se sitúa. si píxel = [255 0 0] [re 10 gi 50] La línea de programa anterior pregunta si el color del punto en el que se encuentra la tortuga es rojo y en caso afirmativo ejecuta las instrucciones del último corchete: retrocede 10 pasos y gira a la izquierda 50 grados o podemos hacer que vuelva al inicio. ¿¿¿¿¿Y que emita un sonido??????
  • 48. Sonidos podemos cargar pequeños sonidos con suenatono frecuencia duración. Ejem suenatono 30 400 También se pueden reproducir ficheros .wav pero hay que especificar la ruta del archivo suenawave &quot;c:windowstada.wav 1 El 1 es un número fijo que siempre se pone. Intenta que suene un archivo .wav que bajes de internet (lo mejor es que esté en c: para simplificar la ruta). poncontador numero tiempo [instrucciones o procedimiento a ejecutar] Ejecuta las instrucciones o procedimientos encerrados entre los corchetes cada vez que transcurre el tiempo indicado (en milésimas de segundo). MSWLogo puede activar a la vez hasta 31 contadores, por ello, hay que indicar el número del contador activado en la instrucción. Ejemplo: poncontador 1 1000 [haz “tiempo :tiempo+1] El ejemplo anterior activa el contador 1 para que, cada segundo, se incremente la variable tiempo ,que se habrá definido con anterioridad. CONTROL DEL TIEMPO
  • 49. Programación en árbol (Inteligencia artificial) Se trata de ir preguntando y en función de la respuesta seguir por un camino u otro hasta llegar al final. ¿Cómo funciona un programa capaz de jugar a un juego de inteligencia, tal como el ajedrez o las damas? La palabra clave es programación en árbol.
  • 50. La figura 1 muestra una hipotética situación. Las letras A, B y C representan sendas fichas. Para cada una tenemos uno o varios movimientos, que a su vez provocarán movimientos en las piezas de nuestro contrincante. Los números representan la puntuación de cada jugada. Para calcular la jugada óptima se toman cada una de las jugadas propias y a su puntuación se le resta la de la jugada del oponente. Por ejemplo, una jugada de la pieza A nos reporta 9 puntos, pero a continuación la del contrincante le puede suponer 11 puntos, de forma que quedan -2 puntos globales. Por otra parte, una jugada de la figura C nos supone sólo 2 puntos, pero al restarle los -2 de la jugada más óptima del contrincante nos da una ganancia neta de 4 puntos. De esta manera, se puede encontrar la mejor jugada en aquella que proporciona una puntuación neta mayor. Con sólo dos niveles de profundización se tiene un nivel de juego comparable al de un niño de seis años. Ampliando el número de niveles se puede ir mejorando el nivel de juego, a costa de un mayor tiempo de cómputo. Por ello, se han desarrollado técnicas para &quot;podar&quot; el árbol, y eliminar aquellas ramas que a priori se puede saber que no van a dar puntuaciones altas.
  • 51. EJERCICIOS CON PUNTUACIÓN Ejercicio 1: Realiza un programa que me diga los billetes de cambio que debería de dar cuando me pagan con billetes de 100€, de 50€ o de 10€ si el producto cuesta 20€. (En árbol) 1 PUNTO Ejercicio 3: crea un juego de tecnología en que el usuario pueda elegir una pregunta en función del curso que estudie (solo 3º y 4º) y el nivel de la pregunta fácil media o difícil y que además le de una puntuación por acertar la pregunta ( 0 puntos si falla 1 punto fácil 2 media y 3 difícil). ¿Podrías hacer que le hiciera 2 preguntas y se sumaran los puntos? 1 PUNTO Ejercicio 2: crear un semáforo que se active el verde a los 10 segundos de pulsar el usuario para que pueda pasar. 1 PUNTO PROGRAMAS OBLIGATORIOS
  • 52. Ejercicio 4: crea un programa en el que se puedan seleccionar varias figuras en color o imágenes y que el ordenador las enseñe sonando una música para cada figura o imagen. . ¿Y qué se muevan las figuras? Ejercicio 5: crea un programa en el que el usuario vaya eligiendo contestaciones a preguntas y en función de lo que responda le digas la personalidad del usuario (busca información en internet). Ejercicio 6: Haz un programa de preguntas, pero en el que las preguntas sean de 3 áreas diferentes y que el usuario al apretar un botón (sería como tirar el dado) el ordenador elija al azar el tema de la pregunta que le va hacer. Intenta mejorarlo sumando puntos. Ejercicio 7: queremos que el ordenador nos de el precio de los productos vendidos a un cliente en una tienda en la que solo se venden barras de pan (pequeñas, medianas y grandes) y botellas de agua (de ½ y de 1 litro) Por ejemplo si compran 3 barras de pan pequeñas. Realiza el programa en forma de árbol. ¿Serías capaz de que sacara el precio cuando se compra pan y agua a la vez?. (En árbol) ELIGE UNO DE ESTOS 4 PROGRAMAS PARA REALIZARLO 2 PUNTOS
  • 53. PRÁCTICA FINAL DEBEREIS CREAR UN PROGRAMA IDEADO, DISEÑADO Y REALIZADO POR VOSOTROS EN GRUPOS DE 2 PERSONAS 5 PUNTOS ¿QUIERES SABER MÁS SOBRE TECNOLOGÍA? VISITA NUESTRA WEB : WWW.AREATECNOLOGIA.COM