Ejemplos resueltos de programación con MSWLogo EJEMPLOS RESUELTOS DE PROGRAMACIÓN CON MSWLOGO. 1. LOS GRÁFICOS DE LA TORTUGA 1.1.- Realizar un procedimiento llamando triángulo que dibuje la siguiente figura: 40 Nota: la esquina inferior izquierda del triángulo está situada en las coordenadas [0 , 20] del mundo de la tortuga. [0,20] 30 Solución: Podríamos intentar hacerlo con las órdenes de avance y giro de la tortuga, pero nos encontramos con la dificultad de que habría que calcular primero los ángulos del [0,60] triángulo y el valor de la hipotenusa. Aunque MSWLogo puede hacerlo, es mucho más engorroso. Los resolveremos utilizando la primitiva PONPOS (o si queremos la PONXY que hace lo mismo). Primero calculamos las coordenadas de los otros dos vértices del triángulo. 40 El procedimiento sería: [30,20] [0,20] para triangulo subelapiz ponpos [0 20] ponlapiz ponpos [0 60] ponpos [30 20] ponpos [0 20] fin 30 Empezamos subiendo el lápiz para no dejar rastro al desplazarnos al punto [0,20]. Después bajamos el lápiz para dibujar. Por último, con ponpos vamos desplazándonos de vértice en vértice. 1.2.- Realizar un procedimiento llamado equilatero tal que al ejecutarlo, dibuje un triángulo equilátero como el de la figura, de forma que el pico inferior izquierdo esté situado en el punto en que en el momento de ejecutar el procedimiento se encuentre la tortuga. El lado de dicho triángulo será 60. unidades. Solución: Rumbo 30 para equilatero ponlapiz ponrumbo 30 repite 3 [av 60 gd 120] fin 2 120º 30º El punto de partida ha sido el punto 1. 1 Tecnología 4. IES Bellavista. 3 1 Ejemplos resueltos de programación con MSWLogo 2. EL USO DE LAS VARIABLES 2.1.- Realizar un procedimiento llamado tres.triángulos, cuya entrada al ejecutarlo sea un número que indica la longitud de los lados de los triángulos, que dibuje la siguiente figura. El vértice izquierdo del primer triángulo estará situado en el punto en el que se encuentre la tortuga en el momento de ejecutar el procedimiento. L Nota: los tres triángulos son equiláteros (todos sus lados son iguales y todos sus ángulos de 60º). Solución: El procedimiento sería: para tres.triangulos :L ponlapiz repite 3 [ponrumbo 30 repite 3 [av :L gd 120] ponrumbo 90 av :L] fin El primer repite 3 hace cada uno de los tres triángulos. Cada triángulo empieza poniendo el rumbo a 30º y luego, el segundo repite 3 dibuja los tres lados de cada triángulo empezando por el vértice izquierdo. Tras dibujar un triángulo, vuelve al vértice de partida, por lo que hay que poner rumbo 90º y avanzar L para situarse en el punto de inicio (vértice izquierdo) del siguiente triángulo. 2.2.- Realizar un procedimiento denominado rectángulo tal que al ejecutarlo dibuje un rectángulo con sus dos diagonales. La longitud de los lados (base y altura) del rectángulo se introducen como entradas al procedimiento. La esquina inferior izquierda del rectángulo debe estar situada en la posición en la que se encuentre la tortuga en el momento de ejecutar el procedimiento. a b Solución: para rectángulo :a :b ponlapiz ; por si el lápiz estaba subido ponrumbo 0 ; pongo a la tortuga mirando hacia arriba local [v1 v2 v3 v4] ; creamos unas variables locales para guardar las coordenadas de los vértices haz "v1 pos ; al pasar por cada vértice guardo la lista con sus coordenadas en una variable av :a gd 90 haz "v2 pos v3 v2 av :b gd 90 haz "v3 pos av :a gd 90 haz "v4 pos a av :b ;hemos llegado de nuevo al vértice v1 ponpos :v3 ;dibujo la diagonal de v1 a v3 ponpos :v4 ; me coloco en v4 ponpos :v2 ; dibujo la diagonal de v4 a v2 v4 v1 b fin Tecnología 4. IES Bellavista. 2 Ejemplos resueltos de programación con MSWLogo 2.3.- Realizar un procedimiento llamado hexágono que dibuje un hexágono cuyo lado se introduce como entrada y cuyo centro geométrico esté situado en la posición en la que se encuentre la tortuga en el momento de ejecutar el procedimiento; el procedimiento también rellenará el hexágono con un color cuyo índice también se introduce como entrada. Nota: por ejemplo, si ejecutamos hexágono 100 4, el procedimiento haría que se dibujara un hexágono de lado 100 relleno de color rojo (4 es el índice de color del rojo). Solución: Lo primero que hacemos es subir el lápiz y desplazarnos hasta el vértice v1 del hexágono (tener en cuenta que en un hexágono, la distancia del centro a los vértices es igual al lado). A continuación ponemos rumbo 90, ponemos el color del lápiz a 0 (negro), por si de aplicaciones anteriores se había quedado de otro color, y ponemos el lápiz. Observemos que entre lado y lado, la tortuga tiene que girar 60º. Una vez dibujamos los seis lados, hemos vuelto al vértice v1 y con rumbo 90; por tanto, giramos 60º y nos dirigimos hacia el centro del hexágono con el lápiz subido. Ponemos el color el lápiz que se ha introducido al ejecutar el procedimiento y rellenamos. Por último se oculta la tortuga para ver mejor el dibujo para hexágono :L :c sl ponrumbo –30 av :L ponrumbo 90 poncl 0 pla repite 6 [av :L gd 60] gd 60 sl av :L poccr :c rellena ot fin v1 60º L 30º centro L 2.4.- Realizar un procedimiento llamado línea que dibuje una línea recta entre dos puntos cuyas coordenadas se introducen como entradas al procedimiento por sus coordenadas en forma de lista. El color de la línea también se introduce como entrada Nota: por ejemplo, si ejecutamos línea [10 20] [100 150] 6 me dibujaría una línea entre los puntos de coordenadas (10, 20) y (100, 150) de color amarillo (6 es el índice de color del amarillo). Solución: para línea :a :b :c poncl :c sl ponpos :a ;subo el lápiz antes de mover el cursor al punto inicial pla ponpos :b ; pongo el lápiz y desplazo el cursor al punto final fin Tecnología 4. IES Bellavista. 3 Ejemplos resueltos de programación con MSWLogo 2.5.- Realizar un procedimiento que se llame cuadros tal que llamando a otro procedimiento que se llame cuadrado, realice la figura de tres cuadrados inscritos que se adjunta. El valor del lado del cuadrado mayor será una entrada del procedimiento. Como ampliación del ejercicio modificar el procedimiento para que el número de cuadrados inscritos uno dentro de otro pueda ser variable, dándolo como entrada al procedimiento. Nota: para realizar este ejercicio debes saber que si un cuadrado tiene de lado L, el cuadrado formado al unir los puntos medios de sus lados tiene de lado L / 2 . Solución: Primero hacemos el procedimiento que dibuja un solo cuadrado. para cuadrado :L repite 4 [av :L gd 90] fin Observemos que como cada cuadrado apoya sus vértices en los puntos medios de los lados del cuadrado inmediatamente mayor, si empezamos a dibujar por el cuadrado más grande, una vez dibujado el primer cuadrado, tan solo tendremos que desplazar la tortuga hasta el punto medio de uno de sus lados, girar 45º y calcular el lado del siguiente cuadrado para poder empezar a dibujarlo; y así sucesivamente. para cuadros :L :n pla ot ponrumbo -45 repite :n [cuadrado :L av :L/2 gd 45 haz "L :L/(rc 2)] fin 3. MANEJO DE DATOS Y OPERACIONES ARITMÉTICAS 3.1.- Realizar un procedimiento llamado cálculos, cuyas entradas al ejecutarlo sean dos números, a y b, y calcule su suma (a + b) y su diferencia (a – b ) y haga escribir en pantalla: La suma de a y b da a+b La diferencia de a y b da a–b Por ejemplo, si ejecutara cálculos 7 2, deberá aparecer en pantalla: La suma de 7 y 2 da 9 La diferencia de 7 y 2 da 5 Solución: para cálculos :a :b (es [La suma de] :a [y] :b [da] :a+:b) (es [La diferencia de] :a [y] :b [da] :a-:b) fin Tecnología 4. IES Bellavista. 4 Ejemplos resueltos de programación con MSWLogo 3.2.- Realizar un procedimiento llamado ecuación1 que resuelva las ecuaciones de la forma a x + b = 0. La entrada del procedimiento será una lista con los coeficientes a y b. El procedimiento debe responder de la forma: La solución de la ecuación es x = x1 (donde x1 será la solución de la ecuación). Nota: En principio, hasta que sepamos utilizar las condicionales supondremos que el coeficiente a no puede ser 0 ( el programa dará error). Solución: para ecuación1 :coef haz “a primero :coef haz “b ultimo :coef (es [La solución de la ecuación es x =] -:b/:a) fin 3.3.- Realizar un procedimiento llamado multisaludos1 que salude de forma sucesiva a los nombres de una lista de cinco elementos, de la forma: Hola nombre , ¿Qué tal? Mejorar el procedimiento haciendo que el número de miembros de la lista no tenga que se fijo. Llamar al procedimientos multisaludos2. Solución: para multisaludos1 :listanombres haz “i 1 repite 5 [ (es [Hola] elemento :i :listanombres [, ¿Qué tal]) haz “i :i+1] fin Para extender el procedimiento a un número indefinido de miembros, usamos cuenta para multisaludos2 :listanombres haz “i 1 repite cuenta :listanombres [(es [Hola] elemento :i :listanombres [, ¿Qué tal]) haz “”i :i+1] fin 3.4.- Realizar un procedimiento llamado cuboraíz cuya entrada sea un número, que calcule su cubo y su raíz cuadrada y que responda de la forma: El cubo de x es y La raíz cuadrada de x es z Solución: para cuboraiz :x (es [El cubo de] :x [es] potencia :x 3) (es [La raíz cuadrada de] :x [es] rc :x) fin 3.5.- Realizar un procedimiento llamado raizcuared que calcule la raíz cuadrada de un número que se le introduce como argumento y ofrezca el resultado redondeado a tres decimales como máximo. Solución: para raizcuared :n Tecnología 4. IES Bellavista. 5 Ejemplos resueltos de programación con MSWLogo (es [La raíz cuadrada de ] :n [es ] (redondea 1000*rc :n)/1000) fin 3.6.- Realizar un procedimiento llamado partedeci que calcule la parte decimal del cociente entre dos números que se le introducen como argumento. Debe darse redondeada a tres decimales como máximo. Solución: para partedeci :num :den (es [La parte decimal de ] :num [entre ] :den [es ] (redondea 1000*:num/:den)/1000 – entero :num/:den) fin 3.7.- Realizar un procedimiento llamado saludos1 que al ser invocado salude al usuario (no nominalmente) con un mensaje extraído al azar de una matriz de mensajes. Solución: para saludos1 haz “matrizsaludos {[Hola, amigo ¿Buenos días?] [¿Qué tal amigo, que te vaya bien el día?] [Hola, tus deseos son órdenes para mí] [Buenos días ¿Tenemos que trabajar mucho hoy?]} es sacaalazar :matrizsaludos fin 4. COMUNICACIÓN DEL PROGRAMA CON EL USUARIO 4.1. Realiza un procedimiento llamado cuadracircu que una vez ejecutado, cada vez que pulse una tecla dibuje un cuadrado de 20 unidades de lado y al soltarla dibuje un círculo de 20 unidades de diámetro. La situación de los cuadrados y círculos debe ser al azar dentro del cuadrante positivo de la pantalla (coordenadas x e y positivas). Solución: para cuadracircu ot (ponteclado [micuadrado][micirculo]) ponfoco [Pantalla de MSWLogo] fin para micuadrado haz “x azar 480 haz “y azar 480 sl ponxy :x :y pla ponr 0 repite 4 [av 20 gd 90] sl fin para micirculo haz “x azar 480 haz “y azar 480 sl ponxy :x :y bl circulo 10 sl fin Tecnología 4. IES Bellavista. 6 Ejemplos resueltos de programación con MSWLogo 4.2.- Realiza un procedimiento llamado dibujacuacir tal que al ejecutarlo, cada vez que hagamos clic con el botón izquierdo del ratón en un punto de la pantalla dibuje un cuadrado de 30 unidades de lado centrado en dicho punto y que cada vez que hagamos clic con el botón derecho dibuje un círculo de 30 unidades de diámetro centrado en dicho punto. Solución: para dibujacuacir sl ot ponraton [ponpos posraton micuadrado][sl]~ [ponpos posraton micirculo][sl][ponpos posraton] fin para micuadrado ponr 0 ponxy coorx-15 coory-15 bl repite 4 [av 30 gd 90] sl ponxy coorx+15 coory+15 fin para micirculo bl circulo 15 sl fin Nota: recordar ejecutar un quitarraton posteriormente para que los efectos del ratón dejen de actuar. 5. FUNCIONES BÁSICAS DE WINDOWS: VENTANAS PREDEFINIDAS 5.1.- Realizar un procedimiento llamado saludos2 tal que aparezca una ventana en la que te pregunte tu nombre y una vez introducido aparezca otra ventana con un mensaje saludándote. Solución: para saludos haz “nombre preguntabox [Introduce tu nombre][Por favor, introduzca su nombre para saludarle] mensaje [Saludo](frase [Hola estimado] :nombre [, espero que te vaya bien el día.]) fin 5.2.- Realiza un procedimiento llamado equipopreferido que despliegue una ventana en la que pregunte cuál es tu equipo de fútbol preferido, el cual debe elegirse de entre los de una lista. El procedimiento terminará presentando una ventana de mensaje indicando la opción elegida. Solución: para equipopreferido haz “matrizequipos {[Real Betis Balompié] [Sevilla F.C.] [Real Madrid][F.C. Barcelona] [Atlético de Madrid][C. D. Málaga] [Real Zaragoza]} haz “x seleccionbox [Elija su equipo preferido] [[Real Betis Balompié] [Sevilla F.C.] [Real Madrid][F.C. Barcelona] [Atlético de Madrid][C. D. Málaga] [Real Zaragoza]] mensaje [Su elección](frase [Su equipo es el] elemento :x :matrizequipos) fin Tecnología 4. IES Bellavista. 7 Ejemplos resueltos de programación con MSWLogo 5.3.- Realiza un procedimiento llamado preguntas que te pregunte tu nombre, a continuación tu dirección y luego tu edad. Al acabar las preguntas te responderá escribiendo las respuestas en la caja de lista. Solución: para preguntas (local “nombre “dirección “edad) haz “nombre preguntabox [Nombre][Por favor, escriba su nombre y apellidos.] haz “dirección preguntabox [Dirección][Por favor, escriba su dirección completa.] haz “edad preguntabox [Edad][Por favor, si no es indiscreción, escriba su edad.] mensaje [Agradecimiento][El proceso de preguntas ha terminado. Gracias por su colaboración.] es (frase [Hola, usted se llama] :nombre [, vive en] :dirección [y tiene] :edad [años.]) fin 6. ORDENES DE CONTROL: SENTENCIAS CONDICIONALES 6.1.- Realizar un procedimiento llamado cambiarumbo que haga que el rumbo de la tortuga, empezando en 0º, se incremente en 5º cada segundo hasta que complete una vuelta completa. Sin embargo, si durante el proceso se pulsa la tecla p (de parar) se interrumpirá el procedimiento, quedando fijado el rumbo de la tortuga. Solución: para cambiarumbo haz "teclapul "a ponteclado [haz "teclapul caracter leecar] ponfoco [Pantalla de MSWLogo] ponr 0 espera 60 repite 72 [gd 5 espera 60 Si :teclapul = "p [es [Pulsaste parar] quitateclado alto]] fin Notas: Hemos de dar un valor inicial a la variable “teclapul pues si no dará error la primera vez al compararla con el carácter p. Recordar que leecar devuelve el valor ASCII de la última tecla pulsada y que carácter devuelve el carácter correspondiente al valor ASCII que se le da como argumento. 6.2.- Realizar un procedimiento llamado adivinapalabra que pregunte una palabra. Si la palabra respondida coincide con una palabra clave (elegida por el diseñador del procedimiento) responderá que es correcto, en caso contrario dirá que se ha equivocado. Solución: para adivinapalabra haz “respuesta preguntabox [Escriba palabra][Por favor, escriba la palabra clave] Sisino :respuesta = [miclave] [es [La palabra clave es correcta] ] [es [Lo siento, se ha equivocado] ] fin Nota: Tener en cuenta que preguntabox devuelve una lista, no una palabra. Tecnología 4. IES Bellavista. 8 Ejemplos resueltos de programación con MSWLogo 6.3.- Realizar un procedimiento llamado adivinanúmero que pida un número comprendido entre 1 y 20. Si coincide con el número secreto (elegido por el diseñador del procedimiento) dirá que ha acertado y si no coincide informará de si es mayor o menor que el número secreto. Solución: para adivinanúmero haz “respuesta preguntabox [Escriba número][Por favor, escriba un número entre 1 y 20] Sisino :respuesta = [15] [es [En efecto, el número secreto es 15] ] [Sisino (primero :respuesta) >15 [(es [Se equivocó, el número secreto es menor que] :respuesta)] [(es [Se equivocó, el número secreto es mayor que] :respuesta) ] ] fin Notas: - Tener en cuenta que preguntabox devuelve una lista. - Es necesario utilizar primero :respuesta para obtener el número introducido y poder compararlo con el número secreto (15 en este caso), si no estaríamos comparando una lista con un número, lo cual daría error. 6.4.- Realizar un procedimiento llamado clicsaludo que dibuje un recuadro relleno de color rojo en la pantalla y que, a partir de que se ejecute, cada vez que haga clic con el botón izquierdo del ratón sobre él, escriba un saludo en la caja de lista. Cuando haga clic con el botón derecho se rellenará de verde informará de que se acabó el proceso y dejarán de tener efecto los clics de ratón. Solución: para clicsaludo bp ot ponlapiz repite 4 [av 20 gd 90] ponr 45 sl av 10 poccr [255 0 0] rellena ponraton [Si pixel = [255 0 0] [es [Hola amigo] ] ] [ ] ~ [Si pixel = [255 0 0] [poccr 2 rellena es [Se acabó] quitarraton] ] [ ] [ponpos posraton] fin 6.5.- Realizar un procedimiento llamado botones que dibuje en pantalla dos botones, uno verde y otro rojo. Simulan botones de encendido y apagado respectivamente. Cuando hagamos clic sobre el botón verde, el fondo de la pantalla se pondrá amarillo (luz encendida) y cuando hagamos clic sobre el rojo se pondrá de gris oscuro (luz apagada). Solución: para botones bp ponlapiz repite 4 [av 15 gd 90] sl ponrumbo 45 av 5 poccr [0 255 0] rellena ponxy 30 0 ponr 0 ponlapiz repite 4 [av 15 gd 90] sl ponrumbo 45 av 5 poccr [255 0 0] rellena ocultatortuga ponraton [Si pixel = [255 0 0] [ponxy 100 100 poccr [111 111 111] rellena]~ Si pixel = [0 255 0] [ponxy 150 115 poccr [255 255 164] rellena]] [ ] ~ [ ] [ ] [ponpos posraton] fin Tecnología 4. IES Bellavista. 9 Ejemplos resueltos de programación con MSWLogo Nota: [0 255 0] es verde claro, [255 0 0] es rojo, [111 111 111] es un gris oscuro y [255 255 164] es un amarillo claro. Al usar índices de color en lugar de listas el programa no funciona correctamente. 7. ÓRDENES DE CONTROL: LOS BUCLES 7.1.- Realizar un procedimiento llamado múltiplos7 que escriba en la caja de lista los 50 primeros múltiplos de 7. Solución: Podemos resolverlo usando desde. para múltiplos7 desde [i 1 50 1][es 7*:i] fin 7.2.- Realizar un procedimiento llamado saludos3 que pida una lista de nombres (el número de nombres es indefinido) y que los salude uno por uno en la caja de lista. Solución: para saludos3 haz “listasaludo preguntabox [Personas a saludar] ~ [Escriba los nombres de las personas a saludar] haz “x cuenta :listasaludo desde [i 1 :x 1] [(es “Hola elemento :i :listasaludo [¿Cómo estás?])] fin 7.3.- Realiza un procedimiento llamado saludos4 que te pida el nombre y te salude, y vuelva a pedirte el nombre sucesivas veces hasta que introduzcas el número 0 y salgas del procedimiento. Solución: para saludos4 haz “nombre 1 hasta [:nombre = 0] [haz "nombre pri preguntabox [Nombre][Introduzca su nombre]~ (es [Hola] :nombre)] fin Si queremos que no salude al 0 que introducimos al final hacemos el cambio siguiente: para saludos4.2 haz “nombre 1 hasta [:nombre = 0] [haz "nombre pri preguntabox [Nombre][Introduzca su nombre]~ Si no :nombre = 0 [(es [Hola] :nombre)]] fin Tecnología 4. IES Bellavista. 10 Ejemplos resueltos de programación con MSWLogo 7.4.- Realizar un procedimiento llamado ordenar.4 que pida una lista de cuatro números cualesquiera y que los escriba ordenados de menor a mayor en la caja de lista. A continuación mejora el procedimiento para que pueda ordenar una lista de números con tantos miembros como se quiera. Denomina a éste último ordenar.n. Solución: para ordenar.4 haz “listanum preguntabox [Escriba números][Escriba cuatro números] haz “matriznum listaamatriz :listanum desde [i 1 3 1] [desde [j :i+1 4 1] [Si ((elemento :i :matriznum) > (elemento :j :matriznum)) ~ [haz “provi elemento :i :matriznum ~ ponelemento :i :matriznum (elemento :j :matriznum)~ ponelemento :j :matriznum :provi ]]] es :matriznum fin Nota: El método utilizado para ordenar es el siguiente: cojo el primer número y lo voy comparando con los que le siguen en la lista. Si encuentro alguno menor los intercambio. A continuación hago lo mismo con el segundo número respecto a los que le siguen. Así hasta el penúltimo número. Para conseguir que el procedimiento valga para ordenar una lista de números con tantos miembros como se quiera, lo modificaríamos del siguiente modo: para ordenar.n haz "listanum preguntabox [Escriba números][Escriba los números a ordenar] haz "n cuenta :listanum haz "matriznum listaamatriz :listanum desde [i 1 :n-1 1] [desde [j :i+1 :n 1] [Si ((elemento :i :matriznum) > (elemento :j :matriznum)) ~ [haz "provi elemento :i :matriznum ~ ponelemento :i :matriznum (elemento :j :matriznum)~ ponelemento :j :matriznum :provi ]]] es :matriznum fin 7.5.- Realizar un procedimiento llamado polinomio que calcule el valor de un polinomio del tipo ax3 + bx2 + cx + d para los valores de x que se le den. El procedimiento pedirá una lista con los coeficientes del polinomio ordenada de mayor a menor grado (a, b, c, d,....). Podrá haber tantos términos como se desee. A continuación pedirá el valor de x y ofrecerá el resultado. Volverá a pedir un valor de x y así sucesivamente. Cuando en lugar de un número introduzcamos la letra p al pedirnos un valor de x, el procedimiento acabará. Solución: Nota: Para calcular el valor del polinomio utilizaremos la siguiente agrupación ax3 + bx2 + cx + d = ((ax + b)x + c)x +d para polinomio haz "liscoef preguntabox [Introducir coeficientes] ~ [Introducir coeficientes de mayor a menor grado] haz "grado cuenta :liscoef Tecnología 4. IES Bellavista. 11 Ejemplos resueltos de programación con MSWLogo haz.hasta [haz "x pri preguntabox [Introduzca valor de x][Para parar introduzca p] calculos][:x = "p] es [Pulsaste p, procedimiento terminado] fin para calculos Si :x = "p [Alto] haz "resul elemento 1 :liscoef desde [i 1 :grado-1 1][haz "resul :resul * :x + elemento (:i+1) :liscoef] (es [El resultado para x = ] :x [es:] :resul) fin Nota: Recordar que preguntabox devuelve una lista, por eso ponemos pri preguntabox para obtener el elemento que está dentro de lista, que será un número 8.- OPERACIONES LÓGICAS 8.1.- Realizar un procedimiento llamado dosclaves que pida dos palabras clave. El programa responderá diciendo si ambas son correctas, si sólo una de ellas es correcta o si ninguna lo es. Solución: para dosclaves Haz "listaclaves preguntabox [Introducción de claves][Introduzca dos palabras] Si y (pri :listaclaves) = "clave1 (ul :listaclaves) = "clave2 [es [Ambas son correctas] alto] Si o (pri :listaclaves) = "clave1 (ul :listaclaves) = "clave2 [es [Sólo una es correcta] alto] Es [Ninguna es correcta] Fin 8.2.- Realizar un procedimiento llamado aleatorios que extraiga números aleatorios entre 1 y 50 y los escriba en pantalla hasta que salga el 15 ó el 35. Solución: para aleatorios haz.hasta [haz “num (1 + azar 50) es :num] [o :num = 15 :num = 35 ] fin 9. LA RECURSIVIDAD 9.1.- Realizar el procedimiento que ya hemos visto antes que pide el nombre y saluda a ese nombre y vuelve a pedir otro nombre y así sucesivas veces hasta que se introduce el 0. Pero esta vez utilizando la recursividad. Llama al procedimiento saludorecur. Solución: para saludorecur haz “nombre preguntabox [Escribe nombre][Escriba su nombre] Si (pri :nombre) = 0 [Alto] (es [Hola] :nombre) saludorecur fin Tecnología 4. IES Bellavista. 12