5.1. EXPERIMENTA
1) Carga del Disco de
Utilidades el fichero ángulos
?carga
"ángulos
Aparece el siguiente
menú
Menú
ANGULOS
Opción Ejecución
1 Recto
2 Agudo
4 Conjuntamente
5 FIN
2) Ejecuta varias veces
cada una de las opciones, si te sales del menú y quieres volver, teclea:
?menú

3) Sal del menú, ejecuta
las siguientes órdenes y fíjate en los procedimientos que llevan entradas para
ejecutarlos.
?pt bt
?bt imts
?bp bt
ángulos
?bp bt nombres
?bp bt
ángulo 45
?bp bt arco 45
?bp bt
recto
?bp bt agudo
?bp bt obtuso
?menú
5) Ejecuta
las siguientes órdenes:
?pt im "menú
?bt im
[recto agudo obtuso]
?bt imtodo
6) Ejecuta
las siguientes órdenes:
?pt
?bt imvs
7) Enciende
la impresora, ponle papel y ejecuta:
?pt bt
?eco "lpt1
?im [recto agudo obtuso]
?imvs
?imtodo
?noeco
8) Ejecuta las
siguientes órdenes:
?botodo
?menú
?imtodo
9) Con el Disco de
Utilidades en la unidad A, ejecuta las siguientes órdenes:
?carga
"ángulos
?imts
?bo
"ángulos
?ángulos
?imts
?bo [recto
agudo obtuso]
?imts
10) Con el Disco de Utilidades en la unidad A, ejecuta las siguientes
órdenes:
?carga "ángulos
?imvs
?bovars
?imvs
5.2. OBSERVA
Al igual que
en un restaurante nos presentan la carta con el menú para darnos información sobre
lo que podemos comer, en Informática se sigue la misma nomenclatura para
presentar los contenidos de un trabajo.
Es una buena
costumbre hacer un menú en cada fichero, así tu trabajo puede parecerse al de
un buen profesional.
En uno de
los problemas, aislaremos los procedimientos que presentan el menú y los
guardaremos solos en un fichero para que, con pocas modificaciones, sirvan para
cualquier otro tema.
Poncursor Empieza a escribir PONiendo el CURSOR hacia la derecha tantos lugares como indique la primera
entrada y hacia abajo tantos como indique la segunda entrada. La esquina
superior izquierda de la pantalla es el [0 0]. Ej.
poncursor [7 12]
Es el
espacio de la memoria que el Logo reserva para los procedimientos y variables globales.
Las
funciones en el Area de Trabajo son:
1) Imprimir:
Podemos
imprimir los títulos o nombres de los procedimientos, uno o varios
procedimientos y las variables globales sin necesidad de entrar en el Editor.
Las primitivas más frecuentes son:
imts IMprime los TítuloS de
los procedimientos. Su mayor aplicación es
para ver si un procedimiento tiene
entradas y si las tiene, cuántas
tiene.
¡ni IMprime
uno o varios procredimientos.
imtodoIMprime TODO el Area de Trabajo.
imvs IMprime las VariableS
globales del Area de Trabajo.
2) Borrar:
Podemos borrar un
procedimiento, varios, las variables globales o todo el contenido del Area de
Trabajo.
bo BOrra uno o varios
procedimientos.
bovars BOrra todas las VARiableS
globales.
Botodo BOrra TODO el contenido del
Area de Trabajo.
INTERACTIVIDAD
lc Espera a Leer un Carácter
porteclado, no es necesario pulsarla tecla
![]()
5.3. RESOLUCION DE
PROBLEMAS
PROBLEMA 1:
Escribe el árbol de los procedimientos
del fichero ángulos del Disco de Utilidades.
PROBLEMA 2:
1) Guarda en un fichero
el conjunto de procedimientos mínimos del menú para que te sirva de modelo.
2) Obtén por
impresora una copia de dichos procedimientos.
PROBLEMAS 3:
1) Define la
suma de ángulos

2) Define la
diferencia de ángulos.

PROBLEMA 4:
1) Define el
producto de un número por un ángulo.

2) Define el cociente de un ángulo por un
número.

PROBLEMA 5:
1) Define un menú para los
problemas 3 y 4, guárdalos en un fichero con la variable global arranque.
2) Haz una
copia en la impresora del menú tal como aparece en pantalla

5.4. SOLUCIONES
PROBLEMA 1:
para ángulos
bp bt ot ponct [3 0]
ponfondo 1 ponpaleta 0
poncursor [16 0] es
"ANGULOS
sl av 10 gi 90 av 140 gd
90 bl
ángulo 90
sl gd 90 av 110 gi 90 bl
ángulo 1 + azar 89
sl gd 90 av 110 gi 90 bl
ángulo 91 + azar 89
nombres
fin
para nombres
ponct [1 0]
poncursor [2 14]
es [RECTO \ \ \ \ \ \ \ AGUDO\ \ \ \ \ \ \ \ \ OBTUSO]
ponct [2 0]
poncursor [2 16]
es[A=90
\ \ \ 0 <A <90 \ \ \ \ 90 <A < 180]
ponct [7 0]
poncursor [19 24]
fin
para ángulo :a
poncl 3
av 50 re 50
gd :a
av 50 re 50
gi :a
arco :a
fin
para arco :a
local
"paso
poncl
2
sl av
20 gd 90
haz
"paso 2 * pi * 20 / 36
repite :a / 10 [bl av .1 sl av :paso -.1 gd 10 bl re .1 av .1 sl]
repite :a / 10 [gi 10 re :paso]
gi 90
re 20 bl
fin
para recto
ángulo 90
fin
para agudo
local "a
bp bt
es [Dame un ángulo
comprendido]
teclea [entre 0 y 90\ ]
haz "a lp
ángulo :a
fin
para obtuso
local "a
bp bt
es [Dame un ángulo
comprendido]
teclea [entre 90 y 180\ ]
haz "a lp
ángulo :a
fin
para menú
pt bt
ponct [0 6] poncursor [34
1] es [\ M e n ú \ ]
ponct [4 15] poncursor
[32 4] es [A N G U L O S]
ponct [11 5] poncursor [29 7] es [Opción \ \ \ \ \ Ejecución\
]
ponct [14 1] poncursor [30 10] es [l.\ \ \ \ recto]
poncursor [30 12] es [2.\ \ \ \ agudo]
poncursor [30 14] es [3.\ \ \ \ obtuso]
poncursor [30 16] es [4.\ \ \ \ Conjuntamente]
poncursor [30 18] es [5.\ \ \ \ FIN]
ponct [7 15]
poncursor [27 22] es
[Pulsa una de la opciones]
ponct [7 0] poncursor [39
23]
opciones
fin
para opciones
local "c
haz "c lc
si no miembro?
: c [1 2 3 4 5] [opciones alto]
si 1 = :c [bp
bt recto]
si 2 = :c [bp
bt agudo]
si 3 = :c [bp bt obtuso]
si 4 = :c
[ángulos]
si 5 = :c [pt
bt alto]
continuar
fin
para continuar
loca "v
poncursor [3 24]
teclea [¿Quieres
volver al menú? \(S\/ N\)\ ]
haz "v lc
si "s =
:v [menú]
pt bt
fin
arranque contiene [menú]
Arbol de los procedimientos.

PROBLEMA 2:
1) Los procedimientos qVe tenemos que guardar
son:
menú, opciones y continuar
Esto se consigue:
?guarda "menú [menú opciones continuar]
Comprobación
?botodo
?carga
"menú
2)
?pt bt
?eco "lpt1
?im [menú opciones continuar]
?noeco
PROBLEMA 3:
Cargamos el fichero
ángulos, de él nos sirven unos cuantos procedimientos.
?carga
"ángulos
Borramos los
procedimientos que no nos hacen falta
?bo [nombres
recto agudo obtuso]
Y comenzamos a definir
los que nos faltan:
1)
para sumar
(local "a "b
"c)
bp bt ponfondo 1
ponpaleta 0 ponct [1 0]
poncursor [6 2] es [S U M
A \ \ \ DE \ \ \ ÁNGULOS]
poncursor [0 22]
ponct [3 0] teclea [Escribe
el valor del primero\ ]
haz "a lp
sl gi 90 av
113 gd 90 bl
ángulo :a
ponct [2 0]
poncursor [418] es :a
ponct [3 0] poncursor [13
10] es "+
ponct [2 0] poncursor [13
18] es "+
bt poncursor [0 22]
ponct [3 0] teclea
[Escribe el valor del segundo\ ]
haz "b lp
bt sl gd
90 av 120 gi 90 bl
ángulo :b
ponct [2 0]
poncursor [19 18] es :b
ponct [3 0] poncursor [28
10] es "=
sl gd 90 av 120 gi 90 bl
haz "c
resto :a + :b 360
ángulo :c
ponct [2 0] poncursor [28
18] es "=
poncursor [34 18] es :c
poncursor [19 24]
fin
2)
para restar
(local "a "b
"c)
bp bt ponfondo 1
ponpaleta 0 ponct [1 0]
poncursor[4 2] es
[RESTA \ \ \ DE \ \ \ ANGULOS]
poncursor [0 22]
ponct [3 0] teclea
[Escribe el valor del primero\ ]
haz "a lp
sl gi 90 av
113 gd 90 bl
ángulo :a
ponct [2 0]
poncursor [4 18] es :a
ponct [3 0] poncursor [13
10] es "-
ponct [2 0] poncursor
[1318] es "
bt poncursor [0 22]
ponct [3 0] teclea
[Escribe el valor del segundo\ ]
haz "b lp
bt sl gd
90 av 120 gi 90 bl
ángulo :b
ponct [2 0]
poncursor [1918] es :b
ponct [3 0] poncursor
[2810] es "=
sl gd 90 av 120 gi 90 bl
haz "c
resto :a - :b 360
ángulo :c
ponct [2 0] poncursor [28
18] es "=
poncursor [34 18] es :c
poncursor [19 24]
fin
PROBLEMA 4:
1)
para multiplicar
(local "r "a
"c)
bp bt ponfondo 1
ponpaleta 0 ponct [1 0]
poncursor [5 2] es
[MULTIPLICACION DE UN NUMERO]
poncursor [5 3] es [POR
UN ANGULO]
poncursor [0 22]
ponct [3 0] teclea
[Escribe el número\ ]
haz "r lp
ponct [3 0] poncursor [4
10] es :r
ponct [2 0] poncursor [4 18] es :r
ponct [3 0] poncursor [13
10] es "*
ponct [2 0] poncursor
[1318] es "*
bt poncursor [0 22]
ponct [3 0] teclea
[Escribe el valor del ángulo\ ]
haz "a lp bt sl gd
90 av 7 gi 90 bl
ángulo :a
ponct [2 0]
poncursor [19 18] es :a
ponct [3 0] poncursor [28
10] es "=
sl gd 90 av 120 gi 90 bl
haz "c
resto :r * :a 360
ángulo :c
ponct [2 0] poncursor [28
18] es "=
poncursor [34 18] es :c
poncursor [19 24]
fin
2)
para dividir
(local "a "r
"c)
bp bt ponfondo 1
ponpaleta 0 ponct [1 0]
poncursor [8 2] es
[DIVISION DE ANGULOS]
poncursor [0 22]
ponct [3 0] teclea
[Escribe el valor del ángulo\ ]
haz "a lp
sl av 20 gi 90 av 113 gd
90
bl ángulo :a
ponct [2 0] poncursor [4 18]
es :a
ponct [3 0] poncursor [13
10] es "/
ponct [2 0] poncursor
[1318] es "/
bt poncursor [0 22]
ponct [3 0] teclea
[Escribe el número\ ]
haz "r lp
bt sl gd 90 av 120 gi 90
ponct [3 0] poncursor [19
10] es :r
ponct [2 0] poncursor [19
18] es :r
ponct [3 0] poncursor [28
10] es "=
sl gd 90 av 120 gi 90 hl
haz "c
resto :a / :r 360
ángulo :c
ponct [2 0] poncursor [28
18] es "=
poncursor [34 18] es :c poncursor [19 24]
fin
PROBLEMA 5:
para menú
pt bt
ponct [0 6] poncursor [34
18] es [\ M e n ú\ ]
ponct [4 15] poncursor
[18 4] es [\ OPERACIONES DE ANGULOS\ ]
ponct [11 5] poncursor
[22 7] es [\ \ Opción \ \ \ \ \ \ Ejecución \ \ \ \ \
ponct [14 1]
poncursor
[25 10]
es[\1.\ \ \sumar\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ]
poncursor
[25 12]
es [ \ 2.\ \ \ restar\ \ \ \ \ \ \ \ \ \ \ \ \
\ \ \ \ \ \ \ ]
poncursor
[25 14]
es [ \ 3.\ \ \ multiplicar por un número\ ] .
poncursor
[25 16]
es [ \ 4.\ \ \ dividir por un número\ \ \ \ \ ]
poncursor
[25 18]
es[\5.\ \ \ FIN
\
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ]
ponct [7 13]
poncursor [28 22]
es [ \ Pulsa una de las opciones\ ]
ponct [7 0] poncursor [39
23]
opciones
fin
para opciones
local "c
haz "c lc
si no miembro?
:c [1 2 3 4 5] [opciones alto]
si 1 = :c [bp
bt sumar]
si 2 = :c [bp bt restar]
si 3 = :c [bp
bt multiplicar]
si 4 = :c [bp
bt dividir]
si 5 = :c [pt
bt alto]
continuar
fin
para continuar
local "v
poncursor [3 24]
teclea [¿Quieres
volver al menú? \(S\/N\)\ ]
haz "v lc
sl "s = :v [menú]
pt bt
fin
Arbol

Definimos la variable global arranque
?haz
"arranque [menú]
Lo guardamos en el disco.
?guarda
"temas
2) Para hacer una copia
del menú tal como aparece en la pantalla, ejecutamos el menú escribiendo:
?menú
Luego es
suficiente pulsar al mismo tiempo las teclas: ![]()
5.5. PROYECTOS
Dibuja un
periscopio

Leticia Fernández
Esther Villarino Martínez
Elena González Rasero
Colegio "María
Inmaculada".
Madrid.
Crea los procedimientos
que dibujen el símbolo de la justicia.

M. Isabel García Cejudo
J. Antonio Rodríguez
L. M. Isabel Cenalmor R.
C. P. "La
Latina".
Madrid.