Documento

Anuncio
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
Descargar