Está en la página 1de 40

EJERCICIOS BSICOS

DE MSWLOGO
(VERSIN 1.6)

Luis Gonzlez
Departamento de Tecnologa
I.E.S. Santa Eugenia
Edicin: 00!"
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
INTRODUCCIN
Este manual naci de la necesidad de re+isar la sinta)is , adaptar- a la
+ersin ms reciente de %S&Logo- los e#ercicios propuestos en el e)celente
manual .ue acompa/a a las tar#etas controladoras de Enconor- para usar0
los en mis clases.
De$o agradecer por tanto- en primer lugar- a los amigos de Enconor la
redaccin del manual de usuario .ue- para muc1os de nosotros- 1a sido la
primera incursin sistemtica en el lengua#e Logo.
2 medida .ue i$a pro$ando los procedimientos propuestos- los modi3i0
ca$a para corregir alguna pe.ue/a inconsistencia del cdigo- para 1acerlos
ms claros , comprensi$les o- simplemente- para ponerlos a mi gusto. 2l
1acerlo se me ocurrian nue+os disparates .ue i$an engrosando mi colec0
cin de e#ercicios.
Luego lo a#ust4 a la e)celente +ersin de %S&Logo distri$uida por el
5$ser+atorio Tecnolgico del 67I6E- .ue inclu,e a,uda en castellano ,
apo,o para mane#ar controladoras , simuladores de ro$tica para uso esco0
lar. Desde a.u mi reconocimiento , agradecimiento al tra$a#o del 5$ser+a0
torio.
El manual 1a sido utilizado en las clases de Tecnologas de la In3orma0
cin del 8ac1illerato- en el I.E.S. Santa Eugenia de %adrid. %is alumnos
1an puesto a prue$a todos los procedimientos propuestos , detectado los
errores en la redaccin de este manual. 2 todos ellos- por tanto- mi agrade0
cimiento.
Tam$i4n .uiero mostrar mi agradecimiento a algunos colegas- .ue 1an
ela$orado manuales seme#antes para introducirse en el lengua#e Logo- ,
.ue me 1an proporcionado alguno de los e#ercicios ms flipantes: a 9era %.
:e)ac1- ;. <. =uller , tantos otros. Gracias tam$i4n a :osario :uiz por su
traduccin del arc1i+o de a,uda- sin el cual estara perdido.
2 todos- gracias
Santa Eugenia >%adrid?
Luis Gonz!"z
Edicin: !" de ma,o de @00 <gina @ de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
INDICE#
INTRODUCCIN.............................................................................................. $
MSWLOGO...................................................................................................... %
&RIMITIV'S.................................................................................................... %
&ROCEDIMIENTOS.......................................................................................... 6
V'RI'BLES..................................................................................................... (
CRE'R &ROCEDIMIENTOS.............................................................................. (
&RIMITIV'S )&'R'* )+IN* , )ESCRIBE*........................................................ (
&RIMITIV'S )ROTUL'* )B&* )GD* )GI*......................................................... -
&RIMITIV' ).'/*........................................................................................... -
&RIMITIV' )MENS'JE*.................................................................................. 0
M'NEJ'R &ROCEDIMIENTOS 'LM'CEN'DOS EN EL DISCO DURO................. 0
&RIMITIV'S )CONTENIDO* )BORR'* )GU'RD'R* )C'RG'R*....................... 0
M'NEJO DEL ENTORNO GR+ICO................................................................ 11
&RIMITIV'S )SL* )BL* )'V* )RE* )OT* )MT* )LIM&I'* )&ON&OS*.............11
REITER'CIN............................................................................................... 1$
&RIMITIV'S )RE&ITE* )&ONC&* )&ONCL* )&ONGROSOR*........................... 1$
UTILI/'R &'RMETROS &'R' L' EJECUCIN DE &ROCEDIMIENTOS.......... 11
&RIMITIV'S )RELLEN'* )&ONCOLORRELLENO* )&ONRUMBO*.................... 1%
USO DE &ROCEDIMIENTOS ,' CRE'DOS EN NUEVOS &ROCEDIMIENTOS..... 16
COMENT'RIOS EN EL CDIGO#.................................................................... 1-
&RIMITIV'S ).'/* )LEE&'L'BR'* )LIST'* )LEEC'R* )BORR'TE2TO*.....1-
&RIMITIV'S )LIST'* )LEELIST'* )&RIMERO*............................................. 10
CLCULOS M'TEMTICOS............................................................................ $3
&RIMITIV'S )SEN* )COS* )T'N*................................................................. $3
&RIMITIV'S )ENTERO* )REDONDE'* )R'I/CU'DR'D'*............................. $1
&RIMITIV'S )'/'R* )RESTO* )MUESTR'* )ES&ER'*................................. $1
&ROCEDIMIENTOS RECURSIVOS.................................................................. $$
Edicin: !" de ma,o de @00 <gina A de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
&RIMITIV' )ES&ER'*.................................................................................. $$
CDIGO 'SCII.............................................................................................. $4
&RIMITIV'S )'SCII* , )C'R'CTER*............................................................ $4
EJECUCIN SECUENCI'L , EJECUCIN CONDICION'D'.............................. $1
&RIMITIV'S )SI* , )SISINO*........................................................................ $1
&RIMITIV'S LGIC'S )O* )NO* ),* )BIT,* )BITO* , )BITINVERSO*..........$%
&RIMITIV'S )&RUEB'* )SICIERTO* )SI+'LSO*........................................... $(
CONCE&TO DE BUCLE EN UN &ROGR'M'..................................................... $-
&RIMITIV'S )MIENTR'S* ).'ST'* ).'/.MIENTR'S* ).'/..'ST'*........... $-
&RIMITIV' )+ORM'TONUMERO*.................................................................. $0
&'SO DE 'RGUMENTOS ENTRE &ROCEDIMIENTOS...................................... 43
&RIMITIV'S )DEVUELVE* )'LTO* )LOC'L* )LV'RS*.................................. 43
&ROGR'M'CIN ORIENT'D' ' OBJETOS.................................................... 41
&RIMITIV'S )VENT'N'* , )EST'TICO*....................................................... 41
&RIMITIV'S )BOTON*.................................................................................. 44
&RIMITIV'S )B'RR'DES&L'/'MIENTO*...................................................... 41
&RIMITIV'S )DI'LOGO*............................................................................... 4%
&RIMITIV'S )GROU&BO2* , )BOTONR'DIO*............................................... 46
&RIMITIV'S )C.EC5BO2*............................................................................ 4(
&RIMITIV'S )LISTBO2*................................................................................ 4-
&RIMITIV'S )COMBOBO2*........................................................................... 40
'+TERWORDS............................................................................................... 13
Edicin: !" de ma,o de @00 <gina " de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
MSWLOGO
Logo es un lengua#e de programacin- desarrollado a 3inales de los a/os B0 por un
e.uipo de matemticos- dirigidos por Se,mour <apert en la Cni+ersidad de 6ali3ornia >8er0
Dele,?- con el 3in de entrenar el pensamiento lgico.
Todas las +ersiones de Logo desarrolladas para Cni)- D5S- %acintos1 , &indo*s- son
gratuitas , pueden ser copiadas , distri$uidas- sin ningEn tipo de restriccin- con 3ines
educati+os. MSWLo6o es la +ersin de Logo para &indo*s.
5riginalmente- el lengua#e Logo esta$a destinado a controlar el mo+imiento de un +e10
culo ro$otizado- con aspecto de tortuga- controlado desde un ordenador. En la actualidad-
el icono de la tortuga se 1a sustituido por un tringulo .ue se mue+e en la pantalla del or0
denador.
6ada +ez .ue el programador introduce una orden como- por e#emplo- 2927F2 @00- el
icono de la tortuga se mue+e o$edeciendo la orden , di$u#ando- si el lpiz de la tortuga
est $a#ado- una linea en la pantalla.
&RIMITIV'S
MSWLo6o es un lengua#e interpretado- al igual .ue 9isual8asic. 6uando se escri$e c0
digo de programa en un lengua#e interpretado- cada una de las rdenes escritas es inter0
pretada , e#ecutada al momento- lo .ue permite +er inmediatamente si la instruccin escri0
ta produce el e3ecto deseado.
<or el contrario- los lengua#es .ue de$en ser compilados >como es el caso de 6GG- =or0
tran- <ascal- etc.?- de$en ser con+ertidos a lengua#e m.uina- es decir- con+ertidos a unos
, ceros- para .ue se puedan cargar en memoria , ser e#ecutados.
Las rdenes o instrucciones $sicas de MSWLo6o se llaman 78i9
:i;i<=s. Las primiti+as de$en escri$irse en el cuadro in3erior de
la +entana de tra$a#o. 2l pulsar Enter o 1acer clic en el $otn
E#ecutar- la primiti+a escrita se e#ecuta. Si la primiti+a est mal
escrita o si le 3altan datos- el int4rprete constesta Hno s4 cmo...I
6ada una de las rdenes .ueda anotada en la +entana de tra$a0
#o.
Cn programa tpico- para di$u#ar un tringulo e.uiltero- en lengua#e logo tiene el si0
guiente aspecto:
a+anza !00
giraderec1a !@0
a+anza !00
giraderec1a !@0
a+anza !00
giraderec1a !@0
Las pala$ras =<=nz= , 6i8=>"8"?@= son 78i:i;i<=s- .ue indican a la tortuga .ue de$e
desplazarse 1acia adelante o girar 1acia la derec1a. Los nEmeros .ue completan las ins0
trucciones son los =86u:"n;os- .ue le indican cunto de$e a+anzar o .u4 ngulo de$e gi0
rar.
Edicin: !" de ma,o de @00 <gina de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
<ara salir de MSWLo6o $asta con introducir la primiti+a =>ios en la +entana de tra$a#o
o seleccionar J+i?@"8o K S=!i8L en el menE principal.
9eamos a continuacin una pe.ue/a muestra de las primiti+as ms sencillas de MSW9
Lo6o , de sus a$re+iaturas:
&RIMITIV' 'CCIN 'BREVI'DO
2927F2 !0 La tortuga a+anza el nEmero indicado de puntos.
'V 1%3
:ET:56EDE M0 :etrocede el nEmero de puntos especi3icado.
RE -3
GI:2DE:E6N2 ! Gira a la derec1a el ngulo especi3icado en grados.
GD 1%
GI:2IFOCIE:D2 A0 Gira a la iz.uierda el ngulo indicado.
GI 43
SC8EL2<IF Le+anta el lpiz , no pinta al mo+erse.
SL
82;2L2<IF El lpiz toca el papel , pinta cuando se mue+e.
BL
G5%2 La tortuga $orra a lo largo de su tra,ectoria.
56CLT2T5:TCG2 5culta el icono de la tortuga.
OT
%CEST:2T5:TCG2 %uestra el tringulo .ue representa la tortuga.
MT
85::2<27T2LL2 8orra la pantalla , sitEa la tortuga en el centro.
B&
6E7T:5 Lle+a la tortuga al centro de la pantalla sin $orrarla.
:5TCL2 PN5L2Q Escri$e te)to en la direccin de la tortuga.
RO
<5765L5:L2<IF PAQ Esta$lece el color con el .ue pinta.
&ONCL
T575 P!000 @00Q Emite un sonido de P3recuencia>Nz? duracin>ms?Q
<57G:5S5: P!0 !0Q =i#a el grosor del trazo , la altura.
&ONG
2DI5S Sale de %S&Logo.
&ROCEDIMIENTOS.
Cn procedimiento es un 3ragmento de programa- 3ormado por
una sucesin de primiti+as. Todo procedimiento empieza con la
pala$ra 7=8= .ue declara el nom$re del procedimiento , termina
con la pala$ra Ain. <or e#emplo:
para 78o?">i:i"n;o
primiti+a !
primiti+a @
.
etc.
Ain
Cna +ez creado un procedimiento- puede ser in+ocado como una
primiti+a ms del lengua#e.
Edicin: !" de ma,o de @00 <gina ( de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
V'RI'BLES.
Cna +aria$le es un >=;o- .ue tiene un no:B8"- , .ue puede to0
mar distintos <=!o8"s.
El programador puede crear una +aria$le en cual.uier momento- de3iniendo su no:B8"
, asignndole un <=!o8. <ara ello utiliza la primiti+a J@=zL. <or e#emplo:
1az H+aria$le 0
Las comillas se/alan el comienzo del no:B8" >" != <=8i=B!".
En lo sucesi+o- J<=8i=B!"L +ale 0. Se puede utilizar este +alor asignado a la +aria$le-
en un procedimiento- escri$iendo dos puntos delante del nom$re de la +aria$le. <or e#em0
plo:
rotula :+aria$le
CRE'R &ROCEDIMIENTOS
&8i:i;i<=s )7=8=* )Ain* C )"s?8iB"*
!. 6rea un procedimiento llamado J;=DL .ue escri$a el mensa#e RNola- mundoR "n != <"n9
;=n= >" ;"D;os.
para ;=D
escri$e PNola- mundoQ
3in
In+oca a1ora el procedimiento .ue 1as creado- escri$iendo en la +entana de rdenes la
pala$ra J;=DL. S=uncionaT
@. %odi3ica el procedimiento J;=DL de 3orma .ue escri$a el mensa#e RNola- mundoR , en la
siguiente lnea RSOu4 tal +a todoTR en la pantalla de tra$a#o.
=ic1ero U editar U ta)
para ;=D
escri$e PNola- mundoQ
escri$e PSOu4 tal +a todoTQ
3in
In+oca de nueco el procedimiento J;=DL , comprue$a .ue los cam$ios .ue 1as introdu0
cido se e#ecutan correctamente.
Edicin: !" de ma,o de @00 <gina B de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
&8i:i;i<=s )8o;u!=* )Bo88=7=n;=!!=* )6i8=>"8"?@=* )6i8=izEui"8>=*
A. 6rea un procedimiento llamado J:oDL .ue escri$a el mensa#e REsto es un mensa#eR en
la pantalla de di$u#o.
para :oD
rotula PEsto es un mensa#eQ
3in
In+calo- escri$iendo :oD en la lnea de comandos de la +entana de tra$a#o. 7otars
.ue el rtulo aparece en la direccin apuntada por la tortuga.
". %odi3ica el procedimiento J:oDL para .ue el rtulo se pueda leer 1orizontalmente-
a$riendo el menE:
=ic1ero U editar U mo)
para :oD
gd V0
rotula PEsto es un mensa#e 1orizontalQ
3in
In+calo +arias +eces. 7otars .ue el mensa#e aparece girado V0 grados respecto al an0
terior. %odi3ica el procedimiento J:oDL para .ue el rtulo si":78" aparezca @o8izon;=!.
=ic1ero U editar U mo)
para :oD
$p
gd V0
rotula PEste mensa#e siempre es 1orizontalQ
3in
Si te 3i#as- al incluir en el cdigo del programa la orden $p >$orrapantalla?- cada +ez .ue
llamas al procedimiento Jmo)L la tortuga se sitEa en el centro de la pantalla , orientada
1acia arri$a. <or eso siempre rotula en direccin 1orizontal.
&8i:i;i<= )@=z*
. 6rea un procedimiento llamado J7o8L .ue calcule el producto de ! por (M , lo presen0
te en la pantalla gr3ica:
para 7o8
1az Hnumero! !
1az Hnumero@ (M
1az Hresultado :numero! W :numero@
$p gd V0
rotula P! ) (M X Q
a+ V0
Edicin: !" de ma,o de @00 <gina M de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
rotula :resultado
3in
Es importante .ue comprendas la di3erencia entre el no:B8" de una +aria$le , el <=!o8
de esa misma +aria$le. <or e#emplo:
rotula H1ola producir 1ola
rotula P1olaQ producir 1ola
1az H1ola BV
rotula :1ola producir BV
rotula 1ola W @ producir error
rotula :1ola W @ producir !M
&8i:i;i<= ):"ns=F"*
(. 6rea un procedimiento llamado JsoDL .ue muestre en la pantalla un a+iso pidiendo
.ue lo aceptes o lo rec1aces:
para soD
mensa#e P<lan para esta tardeQ PSOuieres ir al cineTQ
3in
B. %odi3ica el procedimiento JsoDL para .ue pregunte otra cosa distinta.
3ic1ero U editar U so)
para soD
mensa#e P<lan para esta tardeQ PSOu4 tal una siestaTQ
3in
M'NEJ'R &ROCEDIMIENTOS 'LM'CEN'DOS EN EL DISCO DURO
&8i:i;i<=s )?on;"ni>o* )Bo88=* )6u=8>=8* )?=86=8*.
M. Guarda en el disco duro todos los procedimientos creados 1asta a1ora $a#o el nom$re
JMis "F"8?i?ios.!6oL
3ic1ero U guardar como... U %is e#ercicios.lgo
Si o$tienes un mensa#e de error se de$e a .ue ests utilizando una +ersin de %S&Lo0
go anterior a la (.$ , no puedes utilizar ms de oc1o caracteres para dar nom$re a un ar0
c1i+o. En ese caso- gurdalo $a#o un nom$re ms corto
3ic1ero U guardar como U e#eruno.lgo
Edicin: !" de ma,o de @00 <gina V de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
V. 6ierra %S&Logo , $usca en tu disco duro el arc1i+o Mis "F"8?i?ios.!6o .ue aca$as de
guardar. Naz do$le clic so$re el , o$ser+ars .ue se trata de un simple arc1i+o de te)0
to- .ue se puede editar con un editor de te)to simple- como Wo8>7=> o el Cu=>"8no >"
no;=s de &indo*s.
!0. Inicia de nue+o %S&Logo- carga tu arc1i+o , saca un listado de los procedimientos cre0
ados 1asta este momento. , $orra el procedimiento JsoDL
3ic1ero U cargar U %is e#ercicios.lgo
escri$e contenido
!!. 8orra uno de los procedimientos contenidos en el arc1i+o JMis "F"8?i?ios.!6oL
$orra Rso)
escri$e contenido
6ompro$ars .ue el procedimiento JsoDL 1a desaparecido de la lista
!@. 8orra todos los procedimientos contenidos en el arc1i+o JMis "F"8?i?ios.!6oL
$orra contenido
escri$e contenido
En este momento- el arc1i+o JMis "F"8?i?ios.!6oL 1a sido +aciado de procedimientos.
6omo no .ueremos perderlos- 75 92%5S 2 GC2:D2: L5S 62%8I5S E=E6TC2D5S.
3ic1ero U salir U rec1azar
!A. 6arga del disco nue+amente los procedimientos sal+ados anteriormente.
3ic1ero U cargar U %is e#ercicios.lgo
escri$e contenido
6omprue$a .ue 1as recuperado la +ersin guardada de J%is e#ercicios.lgoL , .ue estn
disponi$les todos los procedimientos .ue incluiste en ese arc1i+o.
Edicin: !" de ma,o de @00 <gina !0 de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
M'NEJO DEL ENTORNO GR+ICO
&8i:i;i<=s )s!* )B!* )=<* )8"* )o;* ):;* )!i:7i=* )7on7os*
!". 6rea un procedimiento llamado J;8=zosL .ue di$u#e una linea de trazos- de !00 pi)el
de largo. 2l terminar el procedimiento- muestra la tortuga en el centro de la pantalla.
para ;8=zos
limpia
sl ot
ponpos P000 0Q
gd V0
$a#alapiz a+anza !00 su$elapiz a+anza !00
$a#alapiz a+anza !00 su$elapiz a+anza !00
$a#alapiz a+anza !00 su$elapiz a+anza !00
$a#alapiz a+anza !00 su$elapiz a+anza !00
$a#alapiz a+anza !00 su$elapiz a+anza !00
$a#alapiz a+anza !00 su$elapiz a+anza !00
ponpos P0 0Q
gi V0
mt
3in
5$ser+ars .ue- por comodidad- est permitido usar a$re+iaturas como Jo;L o J:;L en
lugar del nom$re completo de la primiti+a Jo?u!;=;o8;u6=L o J:u"s;8=;o8;u6=L- Js!L o
JB!L en lugar de JsuB"!=7izL o JB=F=!=7izL
!. Naz un procedimiento llamado J?u=>8oL para di$u#ar- en la pantalla gr3ica- un cua0
drado de 0 pi)els de lado. La posicin de partida ser el centro de la pantalla.
para ?u=>8o
$p $l
a+ 0 gd V0
a+ 0 gd V0
a+ 0 gd V0
a+ 0 gd V0
3in
!(. 2+erigua las coordenadas de las cuatro es.uinas de tu pantalla- 1aciendo a+ances e)0
ploratorios. 6uando las conozcas- escri$e un procedimiento- llamado J:=8?oL .ue di0
$u#e un marco rectangular alrededor de la pantalla.
Edicin: !" de ma,o de @00 <gina !! de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
REITER'CIN
<ara e+itar la escritura repetida de lneas de cdigo id4nticas- re0
currimos a rdenes primiti+as .ue indican al ordenador cuntas
+eces de$e repetir una instruccin.
&8i:i;i<=s )8"7i;"* )7on?o!o87=7"!* )7on?o!o8!=7iz* )7on68oso8*
!B. %odi3ica el procedimiento J?u=>8oL para di$u#ar un cuadrado de 0 pi)els de lado- uti0
lizando :uC 7o?=s !in"=s >" ?G>i6o.
para ?u=>8o
$p $l
repite " Pa+ 0 gd V0Q
3in
Los colores- tanto del 3ondo de la pantalla- como del trazo del l0
piz- se 3i#an con las rdenes 7on?o!o87=7"! >7on?7? , 7on?o!o89
!=7iz >7on?!? seguidos de un cdigo de color.
Ese cdigo puede ser un nEmero entre 0 , !- de modo .ue cada
nEmero se corresponde con un color- por e#emplo: poncl ! para
di$u#ar lneas azules.
Tam$i4n se puede emplear un con#unto de tres ci3ras entre cor0
c1etes- entre 0 , @- .ue se corresponden con la cantidad de
luz ro#a- +erde , azul .ue compone el color deseado. <or e#emplo:
poncp P@0B !B( MVQ
65L5:ES:
0 1 2 3 4 5 6 7
8 9 10 11 12 13 14 15
!M. Naz un procedimiento- llamado J@"D=L- .ue di$u#e un 1e)gono de lado !@0- con gro0
sor A , de color marrn >M? so$re 3ondo carmin >!@?.
para @"D=
$p $l
poncp !@
poncl M
pong PA AQ
repite ( Pa+ !@0 gd (0Q
ot
3in
Edicin: !" de ma,o de @00 <gina !@ de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
!V. Naz un procedimiento llamado J>o>"L .ue di$u#e un dodecgono de lado "0- con gro0
sor @ , de color azul >!? so$re 3ondo amarillo >(?
para >o>"
$p $l
poncp !" poncl ! pong P@ @Q
repite !@ Pa+ "0 gd A0Q
ot
3in
=#ate .ue- para di$u#ar cual.uier polgono regular de M0 puntos de lado- el con#unto de
rdenes es el mismo. La Enica +ariacin entre un polgono , otro es el nH:"8o >" !=>os-
.ue coincide con el nEmero de repeticiones- , el n6u!o .ue de$e girar la tortuga.
Toma una 1o#a de papel- copia la ta$la siguiente , rellena las celdas +acas con los +a0
lores adecuados:
<olgono Lados 5rden .ue se repite
Tringulo A repite A Pa+ M0 gd !@0Q
6uadrado " repite " Pa+ M0 gd V0Q
<entgono
Ne)gono (
Neptgono B
5ctgono
Enegono
Decgono
Icosgono
Edicin: !" de ma,o de @00 <gina !A de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
UTILI/'R &'RMETROS &'R' L' EJECUCIN DE &ROCEDIMIENTOS
Se puede escri$ir un procedimiento de tal manera .ue se e#ecute
con el +alor del parmetro Eu" =?o:7=I= al nom$re del procedi0
miento.
Cna <=8i=B!" permite guardar un +alor- tanto num4rico como de
te)to. En cual.uier momento se puede tomar el contenido de esa
+aria$le o cam$iarlo por otro nue+o. 6uando damos un +alor a
una +aria$le .ue ,a e)ista- el +alor antiguo se pierde.
@0. Escri$e un procedimiento capaz de di$u#ar un cuadrado cual.uiera. El tama/o del cua0
drado se especi3icar mediante la +aria$le J!=>oL .ue acompa/ar al nom$re del proce0
dimiento cuando lo in+o.ues.
para ?u=>8o :lado
repite " Pa+ :lado gd V0Q
3in
21ora in+calo para .ue di$u#e una cuadrado de lado !00- tecleando J?u=>8o 133L.
<rue$a tam$i4n a teclear J?u=>8o $3L- J?u=>8o (-L o J?u=>8o 4%L. SLo +esT. Te o$edece.
<ensemos: SSera posi$le construir un Enico procedimiento- .ue 3uese capaz de di$u#ar
cual.uier polgono regularT Si- por.ue el ngulo .ue de$e girar la tortuga puede deducirse
3cilmente a partir del nEmero de lados del polgono.
@!. Escri$e un procedimiento- de nom$re J7o!iL seguido de la +aria$le J!=>osL- .ue di$u#e
un polgono regular de M0 puntos de lado- con el nEmero de lados indicado en la +aria0
$le J!=>osL
para 7o!i :lados
$p $l
poncp !@ poncl M pong PA AQ
1az Hangulo A(0K:lados
repite :lados Pa+ M0 gd :anguloQ
ot
3in
@@. %odi3ica el procedimiento J7o!iL para .ue admita dos parmetros: el nEmero de J!=9
>osL , la J!on6i;u>L de esos lados
para 7o!i :lados :longitud
$p $l
poncp !@ poncl 0 pong PA AQ
1az Hangulo A(0K:lados
repite :lados Pa+ :longitud gd :anguloQ
Edicin: !" de ma,o de @00 <gina !" de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
ot
3in
@A. Y- si somos capaces de di$u#ar un polgono cual.uiera- Spodremos di$u#ar un crculoT.
Escri$e un procedimiento- llamado J=8oL- capaz de di$u#ar un crculo del radio .ue se
le indi.ue.
para =8o :radio
1az Ra+ance :radioWtan !
repite A(0 Pa+ :a+ance gd !Q
3in
@". 21ora- para practicar la programacin de reiteraciones con parmetros- modi3ica el pro0
cedimiento J;8=zosL para crear otro procedimiento llamado J;8=zo :longitudL- .ue di0
$u#e en la pantalla una lnea de trazos de !on6i;u> a#usta$le. :edacta un programa
?on "! :"no8 nH:"8o 7osiB!" >" !Jn"=s >" ?G>i6o- utilizando la repeticin de una
Enica orden. El procedimiento de$era tener un aspecto como este:
para ;8=zo :longitud
...
...
3in
&8i:i;i<=s )8"!!"n=* )7on?o!o88"!!"no* )7on8u:Bo*
Las 3iguras creadas en el entorno gr3ico pueden rellenarse de
color- utilizando la primiti+a J8"!!"n=L. El color de relleno se es0
ta$lece con la primiti+a J7on?o!o88"!!"noL.
<ara .ue el relleno 3uncione se de$en cumplir algunos re.uisi0
tos: la 3igura de$e estar ?"88=>=- la tortuga de$e situarse "n "!
in;"8io8 de dic1a 3igura , el lpiz de$e estar le+antado con la
primiti+a su$elpiz Js!L.
@. 9amos a modi3icar el procedimiento J?u=>8oL para .ue el cuadrado .ue resulta .uede
relleno de color.
para ?u=>8o :lado
$p $l
poncp !" poncl 0 poncolorrelleno !0
repite " P a+ :lado gd V0Q
sl gd " a+ A
rellena
ot
3in
Edicin: !" de ma,o de @00 <gina ! de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
USO DE &ROCEDIMIENTOS ,' CRE'DOS EN NUEVOS &ROCEDIMIENTOS.
Cn procedimiento creado con primiti+as u otros procedimientos-
puede ser utilizado ?o:o un= 78i:i;i<= :s del lengua#e.
@(. Naz un procedimiento- llamado J7"n;=L- .ue di$u#e en la pantalla gr3ica un pentgo0
no de cual.uier longitud de lado. <osteriormente utiliza ese procedimiento ,a creado-
en uno nue+o .ue di$u#e seis pentgonos- unidos entre s por un +4rtice , 3ormando
una estrella.
para 7"n;= :lado
repite Pa+ :lado gd B@Q
3in
para "s;8"!!= :lado
$p $l
poncp !0 poncl 0 pong PA AQ
repite ( Ppenta :lado gd (0Q
ot
3in
=#ate .ue- en el cdigo del procedimiento J"s;8"!!=L aparece una llamada al procedi0
miento J7"n;= :ladoL- Zcomo si 3uese una primiti+a ms del lengua#e[
@B. Guarda este gr3ico- creado con %S&Logo- en una carpeta de tu disco duro con 3ormato
de mapa de $its .B:7. <ara ello a$re el menE
$itmap U Guardar como... U Estrellapenta
\$relo con un editor de imgenes- como Gi:7 o &iDi=- , compro$ars .ue puedes tra0
$a#ar con 4l , e)portarlo a otro 3ormato. Ins4rtalo tam$i4n en un documento de te)to como
5pen533ice *riter.
@M. Escri$e un procedimiento- llamado JAi6u8=L- .ue di$u#e una 3igura compuesta por un
cuadrado- de lado cual.uiera- .ue tiene un tringulo e.uiltero en cada uno de sus la0
dos- como el de la siguiente ilustracin:
Edicin: !" de ma,o de @00 <gina !( de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
@V. 2pro+ec1ando el procedimiento J=8o #8=>ioL .ue ,a tienes creado- escri$e un procedi0
miento llamado J>onu; #8=>ioL .ue di$u#e crculos consecuti+os- pero de 3orma .ue
cada +ez .ue empieza a di$u#ar un crculo nue+o lo 1aga des+indose un cierto ngulo
respecto al anterior- para llegar a 3ormar una corona con aspecto de ros.uilla como la
de la ilustracin siguiente:
6uando +eas aparecer el donut ante tus o#os podrs comprender- .uiz- .u4 es la 78o9
68=:=?iGn "!"6=n;": conseguir un resultado espectacular con mu, pocas lneas de cdigo.
A0. S<odrias di$u#ar una 3lorT Cn m4todo sencillo podra consistir en di$u#ar cada p4talo
con un cuarto de crculo 1ec1o con +arios segmentos. <or e#emplo:
para ?u=8;o :paso
repite V Pa+ :paso gd !0Q
3in
Di$u#ar un p4talo es 3cil- con dos cuartos de crculo:
para 7";=!o :paso
repite @ Pcuarto :paso gd V0Q
3in
21ora te toca a ti lo ms 3cil: escri$e un procedimiento- llamado JA!o8L .ue sea capaz
de di$u#ar una 3lor compuesta de +arios p4talos- como esta:
Edicin: !" de ma,o de @00 <gina !B de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
COMENT'RIOS EN EL CDIGO#
Es una $uena norma completar con comentarios las lineas de
cdigo del programa .ue puedan resultar di3ciles de entender o
puedan suscitar alguna duda a un lector del cdigo.
<ara incluir comentarios en el cdigo se utiliza el sm$olo ] >pun0
to , coma?. Todo lo .ue se escri$a a continuacin del punto ,
coma no se e#ecuta en el programa.
&8i:i;i<=s )@=z* )!""7=!=B8=* )!is;=* )!""?=8* )Bo88=;"D;o*
A!. Naz un procedimiento- llamado Jno:B8"L- .ue te pregunte tu nom$re- lo guarde en
una +aria$le- , lo muestre en la +entana de tra$a#o con el 3ormato TC 75%8:E ES:
nom$re.
para no:B8" ] 6omienza el procedimiento llamado Jnom$reL
$p sl ot gd V0 ] $orra la pantalla , situa la tortuga en posicin
rotula PS6mo te llamasTQ
1az Rname leepala$ra ] asigna la entrada tecleada a JnameL
$p gd V0 ] limpia la pantalla
rotula PZNola[- Q ] escri$e un te)to de saludo , un espacio
ponpos P(0 0Q ] se desplaza a la derec1a
rotula :name ] presenta el +alor de la +aria$le
ponpos P0 0@Q ] se desplaza a la lnea in3erior
rotula PSOu4 tal estsTQ ] completa el saludo
3in ] 3in del procedimiento Jnom$reL
A@. Naz un procedimiento- llamado Jsu:=8L- .ue nos pida dos nEmeros , nos de+uel+a el
resultado de sumarlos en la +entana de gr3icos.
para su:=8
$p gd V0 ot sl $t ] inicializa las pantallas
ponpos P0@00 0Q ] sitEa el puntero
rotula PSOu4 nEmeros .uieres sumarTQ
1az Rnum! leepala$ra ] captura la primera +aria$le
1az Rnum@ leepala$ra ] captura la segunda +aria$le
$p gd V0 ] limpia la pantalla
ponpos P0@00 0Q ] sitEa el puntero al comienzo
rotula PL2 SC%2 DE Q
ponpos P0M 0Q ] de cada uno de los
rotula :num!
ponpos P0" 0Q ] 3ragmentos del mensa#e
rotula PGQ
ponpos P0A0 0Q ] de salida
rotula :num@
ponpos P!0 0Q
rotula PX Q
ponpos PA0 0Q
Edicin: !" de ma,o de @00 <gina !M de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
rotula :num! G :num@ ] calcula la suma , la presenta
3in
&8i:i;i<=s )!is;=* )!""!is;=* )78i:"8o*
5$ser+a .ue- si intentas sumar nEmeros largos- se producen pro$lemas al rotular cada
una de las partes del mensa#e de salida. Si .uieres .ue la presentacin del resultado sea
ms elegante- en una sola lnea de cdigo , sin tener .ue preocuparte de cunto espacio
necesitas para cada ci3ra- puedes conseguirlo utilizando la primiti+a J!is;=L. El procedi0
miento Jsu:=8L .uedara asi:
para su:=8
$p gd V0 ot sl $t
ponpos P0@00 0Q
rotula PSOu4 nEmeros .uieres sumarTQ
1az Rnum! leepala$ra
1az Rnum@ leepala$ra
$p gd V0
ponpos P0@00 0Q
rotula >lista RLa Rsuma Rde :num! RG :num@ RX :num!G:num@?
3in
%uc1o ms elegante- Sno es ciertoT
AA. Naz un procedimiento llamado Ji>"n;i>=>L- capaz de preguntarte tu nom$re , luego
saludarte escri$i4ndolo en la pantalla.
para i>"n;i>=>
$p gd V0 ot sl $t
rotula PS6ul es tu nom$re , apellidosTQ
1az Rnapel leelista
$p gd V0
rotula PZNola[ Q
ponpos PB0 0Q rotula :napel
3in
A". Naz un procedimiento con el nom$re Jini?i=!L- .ue pregunte tu nom$re , responda
cul es la letra inicial de tu nom$re.
para ini?i=!
$p ot sl gd V0
rotula PS6ul es tu nom$reTQ
1az Rletra primero leepala$ra
$p gd V0
ponpos P0!00 0Q
rotula PTu nom$re empieza por Q
ponpos P!@ 0Q
Edicin: !" de ma,o de @00 <gina !V de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
rotula :letra
3in
A. Escri$e un procedimiento capaz de con+ertir euros a pesetas
para 7"s";=s
$p gd V0 sl ot
ponpos P0@00 0Q
rotula PSDe cuntos euros se trataTQ
1az Heuros primero leelista
1az Hpesetas :euros W!((.AM(
$p gd V0
ponpos P0@00 0Q rotula :euros
ponpos P0!0 0 Q rotula PEuros son: Q
ponpos P0"0 0Q rotula :pesetas
ponpos P(0 0Q rotula P<esetas.Q
3in
Del mismo modo .ue 1icimos en el procedimiento Jsu:=8L- podemos resol+er la pre0
sentacin del resultado en una Enica lnea de cdigo con la primiti+a J!is;=L:
para 7"s";=s
$p gd V0 sl ot
ponpos P0@00 0Q
rotula PSDe cuntos euros se trataTQ
1az Reuros primero leelista
1az Rpesetas :euros W !((.AM(
$p gd V0
ponpos P0@00 0Q rotula >lista :euros REuros Rson: :pesetas R<esetas?
3in
CLCULOS M'TEMTICOS
&8i:i;i<=s )s"n* )?os* );=n*
A(. Naz un procedimiento- con el nom$re de J;8i6oL- .ue nos pida el +alor de un ngulo ,
nos de+uel+a el seno- el coseno , la tangente en la +entana de tra$a#o.
para ;8i6o
$t ] $orra la pantalla de tra$a#o
1az R+alor leepala$ra
escri$e >lista H\ngulo: :+alor Hgrados?
escri$e >lista HSu Hseno Hes: sen :+alor?
escri$e >lista HSu Hcoseno: cos :+alor?
escri$e >lista HY Hsu Htangente: tan :+alor?
3in
Edicin: !" de ma,o de @00 <gina @0 de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
AB. 21ora tE solo: escri$e un procedimiento- llamado Js"noi>" #7i?oL- capaz de di$u#ar en
la pantalla la 3uncin ,X9
ma)^
sen >)? dndole el +alor m)imo de la 3uncin J#7i?oL
&8i:i;i<=s )"n;"8o* )8">on>"=* )8=iz?u=>8=>=*
AM. Naz un procedimiento .ue nos pida un nEmero con decimales , nos de+uel+a la parte
entera del mismo- el nEmero redondeado , su raz cuadrada- en la +entana de tra$a#o.
para nu:"8os
$t
escri$e PES6:I8E C7 7C%E:5 657 DE6I%2LESQ
1az R+alor leepala$ra
escri$e >lista R7C%E:5 RS5LI6IT2D5: :+alor?
escri$e >lista RL2 R<2:TE RE7TE:2 RES: entero :+alor?
escri$e >lista RSC R92L5: R:ED57DE2D5 RES: redondea :+alor?
escri$e >lista RSC R:2IF R6C2D:2D2 RES: rc :+alor?
3in
&8i:i;i<=s )=z=8* )8"s;o* ):u"s;8=* )"s7"8=*
AV. Naz un procedimiento- llamado J!o;"8i=L- .ue genere dos nEmeros aleatorios entre el 0
, el @ , los muestre en la +entana de tra$a#o. 2dems de+ol+er el resultado de di+i0
dir el primero entre el segundo- , su resto.
para !o;"8i=
$t ]$orra la pantalla de tra$a#o
1az Rnum! azar @ ]genera al azar dos nEmeros menores .ue @
1az Rnum@ azar @
escri$e >lista R<rimer RnEmero Raleatorio: :num!?
escri$e >lista RSegundo RnEmero Raleatorio: :num@?
escri$e >lista RSu Rcociente Res: :num!K:num@?
escri$e >lista RY R.ueda Run Rresto Rde: resto :num! :num@?
3in
"0. Escri$e un procedimiento- llamado Jnu:13L- .ue sea capaz de escri$ir ( nEmeros ale0
atorios entre 0 , !0.
para nu:13
$t
repite ( Pmuestra azar !!Q
3in
"!. 21ora escri$e un procedimiento- al .ue llamaremos Jnu:$%L- .ue escri$a oc1o ci3ras
elegidas al azar entre el @ , el . Las ci3ras no de$en ser menores .ue @ ni ma,ores .ue
(
para nu:$%
$t
Edicin: !" de ma,o de @00 <gina @! de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
repite M P1az Rnum! azar "
escri$e :num!G@Q
3in
&ROCEDIMIENTOS RECURSIVOS
2 +eces nos puede interesar .ue un procedimiento se repita una
, otra +ez- inde3inidamente. <ara conseguirlo $asta con incluir
una lnea de cdigo- antes del comando J3inL .ue +uel+e a lla0
mar al propio procedimiento para .ue +uel+e a empezar. Este
tipo de procedimientos necesitan una orden JaltoL para detener0
se.
&8i:i;i<= )"s7"8=*
"@. <or e#emplo- escri$e un procedimiento llamado Jnu: #B=Fo #=!;oL- .ue muestre un=
<"z ?=>= s"6un>o un nEmero elegido al azar- entre dos ci3ras lmite.
para nu: #B=Fo #=!;o
$t
1az Rlapso :alto0:$a#o
1az Rnum! azar :lapsoG!
escri$e :$a#oG:num!
espera (0
num :$a#o :alto
3in
<uedes detener la e#ecucin del procedimiento tecleando J'!;oL en la $otonera del rea
de comandos.
"A. 5tro e#emplo: 1agamos un procedimiento .ue di$u#e una lnea en zi6z=6- inde3inida0
mente:
para zi6z=6
ponrum$o "
a+ 0 gd V0
a+ 0 gi V0
espera !0
zigzag
3in
Edicin: !" de ma,o de @00 <gina @@ de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
CDIGO 'SCII
El cdigo 2S6II esta$lece la e.ui+alencia entre cada uno de los
sm$olos de te)to .ue pueden introducirse en el teclado- , un
+alor num4rico $inario de M $its >! $,te?.
2 la letra R2R- por e#emplo- le corresponde el nEmero ( en $ina0
rio determinado- a la RzR le corresponde el nEmero !@@- , as su0
cesi+amente. Tam$i4n estn incluidos los sm$olos gr3icos , los
comandos no imprimi$les- como el espacio o el retorno de carro.
&8i:i;i<=s )=s?ii* C )?=8=?;"8*.
"". Naz un procedimiento llamado J;=B=s?iL- .ue genere una ta$la entre el 0 , el @ en la
.ue aparezca el +alor decimal , su correspondiente cdigo 2S6II. Se mostrar en la
+entana de tra$a#o.
para ;=B=s?i
$t ] 8orra la pantalla de tra$a#o
1az R) 0 ] 6rea un contador , lo pone a 0
repite @ Pescri$e >lista :) caracter :)? ] Escri$e un nEmero , el carcter
1az R) :)G!Q ] e.ui+alente en ascii
3in
". STe sientes capaz de escri$ir un procedimiento- llamado J;=B=s?i$L .ue- en lugar de
escri$ir los caracteres 2S6II en una sola columna en el cuadro de te)to- los presente
rotulados en la pantalla gr3ica en 3orma de ta$laT Int4ntalo
"(. Escri$e a1ora un procedimiento .ue nos pida una letra , de+uel+a su cdigo 2S6II en
la pantalla.
para ;8=>u?"
$t ] $orra la pantalla de tra$a#o
escri$e PI7T:5DC6E C72 LET:2 E7 L2 9E7T272Q
1az R+alor leepala$ra
$t
escri$e >lista RLET:2: :+alor?
escri$e >lista RSu R+alor R2S6II Res: ascii :+alor?
3in
Edicin: !" de ma,o de @00 <gina @A de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
EJECUCIN SECUENCI'L , EJECUCIN CONDICION'D'.
En algunos casos- para escri$ir el cdigo de un programa- $asta
con escri$ir una serie ordenada de primiti+as- .ue se e#ecutarn
una detrs de otra >e#ecucin secuencial?.
<ero es 3recuente tam$i4n .ue en un programa 1a,a .ue e#ecu0
tar unas primiti+as u otras en 3uncin de alguna condicin. De
esta 3orma la e#ecucin del programa se rami3icar por unas pri0
miti+as u otras- segEn se +a,an dando determinadas condiciones
>e#ecucin condicionada?.
&8i:i;i<=s )si* C )sisino*
La primiti+a si permite ordenar al programa .ue e#ecute una accin- en 3uncin de .ue
una condicin se cumpla o no. La sinta)is de la primiti+a si es la siguiente:
si condicin accion
Si la condicin es +erdadera e#ecuta la accin. Si la condicin es 3alsa no 1ace nada.
<or e#emplo:
si !L0 escri$e Hcierto
"B. Naz un procedimiento llamado Jnu:7osL .ue nos pida un nEmero. Si el nEmero .ue
introducimos es positi+o se mostrar su raz cuadrada. Si es negati+o no de$e calcular0
lo- ,a .ue dara un error.
para nu:7os
$t
escri$e PI7T:5DC6E C7 7_%E:5 E7 L2 9E7T272Q
1az R+alor leepala$ra
$t
escri$e >lista REl RnEmero Res: :+alor?
si :+alorL0 Pescri$e >lista RSu Rraiz Rcuadrada Res: rc :+alor?Q
3in
La primiti+a si tam$i4n permite ordenar al programa .ue e#ecute una accin u otra- en
3uncin de .ue una condicin se cumpla o no. En este caso- la sinta)is de la primiti+a si es
la siguiente:
si condicin Paccion!Q Paccion@Q
Si la condicin es <"8>=>"8= e#ecutar la accin!. Si la condicin es A=!s= e#ecutar la
accin @. <or e#emplo:
"M. Escri$e un procedimiento- llamado J7osn"6L- .ue nos pida un nEmero. Si el nEmero
.ue introducimos es positi+o se mostrar su raz cuadrada. Si es negati+o se escri$ir
un mensa#e .ue diga R75 SE <CEDE 62L6CL2: L2 :2IF DE C7 7EG2TI95R.
Edicin: !" de ma,o de @00 <gina @" de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
para 7osn"6
$t
escri$e PI7T:5DC6E C7 7_%E:5 E7 L2 9E7T272Q
1az R+alor leepala$ra
$t
escri$e >lista REl RnEmero Res: :+alor?
si :+alorL0 Pescri$e >lista RSu Rraiz Rcuadrada Res: rc :+alor?Q Pescri$e >lista R7o
Rtiene Rraiz- Res Run RnEmero Rnegati+o?Q
3in
La sinta)is de la primiti+a si e)ige .ue las dos acciones est4n "n != :is:= !Jn"= >" ?G9
>i6o. Na, una primiti+a .ue se comporta de un modo seme#ante: se llama sisino. Su sinta0
)is es similar:
sisino condicin Paccion!Q Paccion@Q
"V. Escri$e un procedimiento- llamado Js=n;i=6oL- .ue 3ormule una pregunta , .ue in3or0
me si la respuesta es correcta o no lo es.
para s=n;i=6o
$t $p sl ot gd V0 poncp !"
ponpos P00 !00Q
rotula PSDe .u4 color es el ca$allo $lanco de SantiagoTQ
1az Rrespuesta leepala$ra
limpia ponpos P00 !00Q
sisino :respuestaXR$lanco Protula >lista RZ[%u, R$ien[[ RZ2certaste[ R REs R$lanco?Q
Protula >lista RZZ6unto Rlo Rsiento[[ R=allaste. R R7o Res :respuesta?Q
3in
0. 21ora- , para terminar con las prcticas de e#ecucin condicionada- escri$e un procedi0
miento llamado J"!"6i8L .ue te o3rezca la posi$ilidad de elegir entre cuatro tareas dis0
tintas. <or e#emplo- .ue te pregunte .u4 tipo de 3igura .uieres .ue di$u#e:
a) Cn cuadrado ro#o
b) Cn crculo azul
c) Cn tringulo amarillo
d) Cn pentgono $lanco
Si respondes JaL di$u#ar un cuadrado ro#o] si tecleas J$L de$er di$u#ar un crculo
azul- , as sucesi+amente. Si tecleas cual.uier otra tecla por error te lo de$e ad+ertir , ne0
garse a 1acer ninguna de las cuatro tareas pre+istas. <rocura .ue las 3iguras sean de ta0
ma/o seme#ante- rellenas de color , so$re un 3ondo del mismo color.
&8i:i;i<=s !G6i?=s )o* )no* )C* )Bi;C* )Bi;o* C )Bi;in<"8so*
7aturalmente- un lengua#e de programacin de$e ser+ir para mane#ar 3unciones lgicas
$sicas: Y- 5- 5E`6LCSI92- etc.
La 3uncin lgica C e+alEa +arias e)presiones. De+uel+e el +alor ?i"8;o si ;o>=s las e)0
presiones e+aluadas tienen el +alor ?i"8;o , de+uel+e el +alor A=!so si =!6un= de las e)pre0
siones es 3alsa. Su sinta)is es como sigue:
Edicin: !" de ma,o de @00 <gina @ de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
C e)presion! e)presion@ si de$e e+aluar @ e)presiones
>C e)presion! e)presion@ e)presionA ...? si de$e e+aluar ms de @ e)presiones
!. <or e#emplo: escri$e un procedimiento llamado J!o6i?=L- .ue nos pida dos nEmeros. Si
los dos nEmeros son ma,ores de !00- nos de+ol+er la suma de am$os. Si es alguno de
ellos es igual o menor .ue !00 nos de+ol+er un mensa#e de error.
para !o6i?=
$p gd V0 sl ot ponpos P0@00 0Q
rotula >lista RIntroduce Rdos RnEmeros Rma,ores R.ue R!00?
1az Rnum! leepala$ra
1az Rnum@ leepala$ra
$p gd V0 ponpos P0@00 0Q
sisino , :num!L!00 :num@L!00 Protula >lista RLa Rsuma Rde :num! R, :num@ Res:
:num!G:num@?Q Protula >lista RZZZError[[[ RCno Rde Rlos Rdos RnEmeros Res Rmenor
R.ue R!00?Q
3in
La 3uncin lgica o e+alEa +arias e)presiones. De+uel+e el +alor ?i"8;o si =!6un= de las
e)presiones e+aluadas tienen el +alor ?i"8;o , de+uel+e el +alor A=!so si ;o>=s las e)presio0
nes son 3alsas. Su sinta)is es como sigue:
o e)presion! e)presion@ si de$e e+aluar @ e)presiones
>o e)presion! e)presion@ e)presionA ...? si de$e e+aluar ms de @ e)presiones
@. <ara comprenderlo- +amos a redactar un procedimiento llamado J!o6i?=$L .ue nos
pida dos nEmeros- uno de los cuales >"B" ser ma,or .ue 00. Si uno o los dos nEme0
ros son ma,ores .ue 00- nos de+ol+er la suma de am$os. Si los dos nEmeros son
iguales o menores .ue 00- nos de+ol+er un mensa#e de error.
para !o6i?=$
$p gd V0 sl ot ponpos P0@00 0Q
rotula >lista RIntroduce Rdos RnEmeros. RCno Rde Rellos Rde$e Rser Rma,or R.ue
R00?
1az Rnum! leepala$ra
1az Rnum@ leepala$ra
$p gd V0 ponpos P0@00 0Q
sisino o :num!L00 :num@L00 Protula >lista RLa Rsuma Rde :num! R, :num@ Res:
:num!G:num@?Q Protula >lista RZZZError[[[ R2m$os RnEmeros Rson Rmenores R.ue
R00?Q
3in
La primiti+a Bi;C de+uel+e el resultado de aplicar la 3uncin lgica , so$re dos o ms
nEmeros- .ue de$en ser nEmeros enteros. Su sinta)is es como sigue:
Bi;C numero! numero@ Si de$e 1acer el clculo con @ nEmeros
>Bi;C numero! numero@ numeroA ...? Si de$e calcularlo con ms de @ nEmeros
Edicin: !" de ma,o de @00 <gina @( de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
La primiti+a Bi;o de+uel+e el resultado de aplicar la 3uncin lgica O so$re dos o ms
nEmeros enteros. Su sinta)is es similar a la de la primiti+a $it,
A. <ara practicarlo- escri$e un procedimiento llamado JAun?ionCoL- .ue nos pida dos nE0
meros enteros , nos de+uel+a el resultado de 1acer la 3uncin lgica J,L entre ellos- ,
la 3uncin lgica JOL.
para Aun?ionCo
$p gd V0 sl ot
ponpos P00 0Q
rotula >lista RIntroduce Rdos RnEmeros Renteros.?
1az Rnum! leepala$ra
1az Rnum@ leepala$ra
$p gd V0
ponpos P00 0Q
rotula >lista RLos RnEmeros Rintroducidos Rson: :num! R, :num@?
ponpos P00 0@0Q
rotula >lista REl Rresultado Rde Raplicar Rla R3uncin RY Res: $it, :num! :num@?
ponpos P00 0"0Q
rotula >lista REl Rresultado Rde Raplicar Rla R3uncin R5 Res: $ito :num! :num@?
3in
&8i:i;i<=s )78u"B=* )si?i"8;o* )siA=!so*
Estas tres primiti+as estn +inculadas entre si. La primiti+a 78u"B= e+alEa una e)pre0
sin , recuerda si el resultado 1a sido ?i"8;o o A=!so- para .ue luego puedan utilizarlo las
otras dos primiti+as: si?i"8;o- .ue puede a$re+iarse como si? , siA=!so- .ue puede a$re0
+iarse como siA.
La sinta)is del con#unto es como sigue:
78u"B= e)presion
si? Pacciones a realizarQ
siA Pacciones a realizarQ
". 9eamos un e#emplo- con un procedimiento- llamado Jso8;"o%3L .ue genera un nEmero
aleatorio entre el 0 , el !00. Si el nEmero generado es menor .ue 0 aparecer un
mensa#e indicndolo. Si el nEmero es igual o ma,or .ue 0 aparecer otro mensa#e .ue
nos lo indica.
para so8;"o%3
$p gd V0 sl ot
1az Rnum azar !00
ponpos P00 0Q
rotula >lista REl RnEmero Ragraciado Res: :num?
ponpos P00 0@0Q
prue$a :numJ0
sic Protula >lista R.ue Res Rmenor R.ue R0?Q
si3 Protula >lista R.ue Res Rma,or R.ue R0?Q
3in
Edicin: !" de ma,o de @00 <gina @B de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
CONCE&TO DE BUCLE EN UN &ROGR'M'
Cn $ucle en un programa es una parte del mismo .ue se e#ecuta
repetidamente un nEmero determinado de +eces. Este nEmero
puede ser 3i#o o depender de determinadas circustancias.
&8i:i;i<=s ):i"n;8=s* )@=s;=* )@=z.:i"n;8=s* )@=z.@=s;=*
Las primiti+as :i"n;8=s , @=s;= dirigen la e#ecucin de una o +arias instrucciones
mientras una e)presin sea cierta. Su sinta)is es como sigue:
:i"n;8=s Pe)presionQ PinstruccionesQ
@=s;= Pe)presionQ PinstruccionesQ
Lo primero .ue 1acen es e+aluar si la e)presin da como resultado ?i"8;o- por lo .ue
las instrucciones podran no e#ecutarse nunca si la e+aluacin de las e)presiones arro#ase
como resultado A=!so.
. <or e#emplo- 1az un procedimiento- llamado J;=B!=:u!L- .ue genere un nEmero aleato0
rio entre el 0 , el A0. Cna +ez elegido ese nEmero- el programa de$e presentarlo en la
pantalla ,- adems- presentar en la +entana de te)to la ta$la de multiplicar por B- des0
de el 0 1asta el nEmero generado al azar.
para ;=B!=:u!
$p $t gd V0 sl ot
1az Rnum azar A0 ]elige un nEmero al azar menor .ue A0
rotula >lista R7Emero Relegido: :num?
escri$e >lista RT28L2 RDEL RSIETE RDE R0 R2 :num?
escri$e P Q ]lnea en $lanco
1az Rcontador 0 ]inicializa un contador
mientras P:contadorJ:numG!Q Pescri$e >lista :contador R) RB RX :contador W B?
1az Rcontador :contador G !Q
3in
(. <ara redundar en la e#ecucin de tareas @=s;= .ue se cumpla una condicin- +amos a
1acer un procedimiento- llamado J;=B!=;8i6oL- .ue calcule los +alores del seno , el co0
seno de un ngulo- desde 0 a !@0 grados- , los presente en la pantalla en 3orma de ta0
$la ordenada.
para ;=B!=;8i6o
$p gd V0 sl ot
poncp P@" !V( !@BQ
1az Rangulo 0
1az R) 0"00
1az R, A00
1asta P:anguloL!@0Q Pponpos >lista :) :,? rotula >lista R\ngulo: :angulo? ponpos
>lista :)G!0 :,? rotula >lista RSeno: sen :angulo? ponpos >lista :)G"0 :,? rotula
>lista R6oseno: cos :angulo? 1az Rangulo :anguloG 1az R, :,0@0Q
3in
Edicin: !" de ma,o de @00 <gina @M de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
Es posi$le .ue tengas .ue retocar las coordenadas iniciales H) e H, para .ue la ta$la
.uede correctamente centrada en tu pantalla.
Las primiti+as @=z.:i"n;8=s , @=z.@=s;= son seme#antes: e#ecutan un grupo de ins0
trucciones :i"n;8=s una condicin sea cierta o @=s;= .ue una condicion sea cierta. Su
sinta)is es como sigue:
@=z.:i"n;8=s PinstruccionesQ PcondicinQ
@=z.@=s;= PinstruccionesQ PcondicinQ
<or e#emplo: @=z R2 0
@=z.:i"n;8=s P1az R2 :2G! escri$e :2Q P:2JAQ
<roduce: 1
$
4
&8i:i;i<= )Ao8:=;onu:"8o*
B. Naz un procedimiento llamado JAo8:=;o$34L .ue genere una lista de nEmeros entre el
-00 , el !-00 con >os decimales , con un incremento entre ellos de 3K34.
para Ao8:=;o$34
$t
escri$e P7_%E:5S DE 2 !Q
escri$e PI76:E%E7T5: 0.0AQ
escri$e P Q
1az Rnum! .00
1az.1asta Pescri$e 3ormatonumero :num! @ 1az Rnum! :num!G0.0AQP:num! L
!Q
3in
M. Naz un procedimiento- llamado J:u!;i7iL- .ue genere la lista de mEltiplos de a
>A-!"!V@?- comprendidos entre el 0 , el !0- con una precisin de tres decimales. La
serie de nEmeros de$e aparecer en la +entana de te)to con una cadencia de 0- segun0
dos entre cada nEmero presentado.
para :u!;i7i
$t
escri$e P%_LTI<L5S DE <I 0JnJ!0Q
escri$e P Q
1az Rnum 0
1az.mientras Pescri$e 3ormatonumero :num B A 1az Rnum :num G A.!"!V@("
espera A0Q P:numJ!0Q
3in
Edicin: !" de ma,o de @00 <gina @V de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
&'SO DE 'RGUMENTOS ENTRE &ROCEDIMIENTOS
Se puede realizar un procedimiento .ue necesite algEn dato pre0
+io para poder realizar alguna operacin con 4l , luego nos de0
+uel+a el dato o los datos del resultado.
Estos datos .ue se pasan al procedimiento- en el momento de
llamarlo o e#ecutarlo o .ue de+uel+e el procedimiento al 3inalizar
su e#ecucin- se denominan argumentos.
&8i:i;i<=s )>"<u"!<"* )=!;o* )!o?=!* )!<=8s*
V. Naz un procedimiento llamado J:u!;i7!i?=L- .ue reci$a dos nEmeros , de+uel+a el
producto de am$os a otro procedimiento .ue lo llame.
para 78o> :) :, ]Se inicia un procedimiento con dos datos de entrada
1az Rz :) W :,
de+uel+e :z ] 2l 3inalizar de+uel+e z al procedimiento .ue lo llam
3in
para :u!;i7!i?=
$t
escri$e PIntroduce los 3actoresQ
1az R) leepala$ra
1az R, leepala$ra
$t
escri$e PEl resultado es:Q
escri$e >lista :) R) :, RX prod :) :,? ] Llama a JprodL , le da los datos.
] De JprodL reci$e un dato , lo presenta
3in
(0. Naz un procedimiento llamado J8"?;=nD4L- .ue reci$a un nEmero , di$u#e un rectn0
gulo de lado 1orizontal A +eces el +ertical. La altura del lado +ertical ser el nEmero re0
ci$ido. Las +aria$les .ue utilice dic1o procedimiento sern de carcter local.
para 8"?;=nD4 :lado
$p $l pong P@ @Q
local Ranc1o
1az Ranc1o :lado W A
repite @ Pa+ :lado gd V0 a+ :anc1o gd V0Q
ot
3in
Edicin: !" de ma,o de @00 <gina A0 de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
&ROGR'M'CIN ORIENT'D' ' OBJETOS
La t4cnica de programacin orientada a o$#etos consiste- a di3erencia de la programa0
cin estructurada mediante procedimientos- en organizar la interaccin con el usuario a
tra+4s de o$#etos .ue aparecen en pantalla. Son o$#etos caractersticos las +entanas- $oto0
nes- casillas de seleccin- etc.
Los o$#etos son los elementos $sicos de la inter3az gr3ica de usuario GUI
!
&8i:i;i<=s )<"n;=n=* C )"s;=;i?o*
Cna +entana es un rea de tra$a#o- tpica del entorno &indo*s-
dotada de una $arra de ttulo- so$re la .ue aparecern otros o$0
#etos para 3acilitar la interaccin del usuario. Cna +entana puede
arrastrase por la pantalla- ma)imizar- minimizar- $orrar- etc.
(!. 6rea tu primera <"n;=n= tecleando la siguiente orden:
crea+entana R Rprimera P%i primera +entanaQ V0 0 !@0 M0 P Q
5$ser+a .ue la +entana tiene un nom$re >primera?- su B=88= >" ;J;u!o muestra el te)to
J%i primera +entanaL- su posicin respecto a la es.uina superior iz.uierda >V0 0? , su
tama/o >!@0 ) M0?. La +entana 1a sido creada en la +entana principal de la pantalla >H?
<uedes desacti+ar la +entana o +ol+erla a acti+ar con las rdenes:
1a$ilitar+entana Hprimera H3also
1a$ilitar+entana Hprimera H+erdadero
(@. 21ora $orra la +entana- utilizando la orden siguiente:
$orra+entana Hprimera
<ara sa$er ms so$re la sinta)is de las +entanas consulta la a,uda.
(A. <uedes crear ;"D;os "s;;i?os- en el interior de una +entana- .ue se mue+en con ella.
<or e#emplo- si est creada , acti+a la +entana H78i:"8= , tecleas
creaestatico Hprimera Hte)to! H<27 @0 ! V
+ers aparecer un te)to en la +entana Hprimera- llamado Hte)to!- .ue contiene la pala0
$ra ><27?- est situado en las coordenadas > @0? desde la es.uina superior iz.uierda
de la +entana , tiene un tama/o de >! V?.
9amos a introducir un nue+o te)to esttico con la orden:
creaestatico Hprimera Hte)to@ HS2:DI72S 2S2D2S A0 ! V
o$ser+ars .ue las nue+as coordenadas > A0? son adecuadas- pero las dimensiones del
te)to son insu3icientes , de$ers aumentarlas- por lo menos- 1asta >( V?
(". <ara $orrar los te)tos estticos de$es emplear las rdenes:
$orraestatico Hte)to!
$orraestatico Hte)to@
!Grap1ic Cser inter3ace
Edicin: !" de ma,o de @00 <gina A! de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
(. <ara practicar la creacin de +entanas , la introduccin de te)tos estticos- escri$e un
procedimiento llamado J8"su!;=>oL- .ue reci$a dos nEmeros , de+uel+a el producto de
am$os en una nue+a +entana.
para 8"su!;=>o
$p gd V0 ot sl
ponpos P0!00 !00Q
rotula PIntroduce dos nEmerosQ
1az Rnum! leepala$ra
1az Rnum@ leepala$ra
1az Rresul :num! W :num@
$p
crea+entana Rroot Rcalculo P :esultado del producto: Q @00 !0 !00 "0 PQ
creaestatico Rcalculo Rresul! :num! @0 !0
creaestatico Rcalculo Rresul@ P)Q @ !0 !0
creaestatico Rcalculo RresulA :num@ A @0 !0
creaestatico Rcalculo Rresul" PXQ !0 !0
creaestatico Rcalculo Rresul :resul ( @0 !0
3in
Si te 3i#as- la posicin de cada uno de los te)tos estticos est calculada para nEmeros
de tama/o medio. <ero- tanto si se introducen nEmeros mu, pe.ue/os- cmo si los nEmeros
son mu, grandes- las coordenadas 3i#as de los te)tos producen una presentacin po$re ,
desa#ustada.
La presentacin me#ora al reemplazar las cinco primiti+as ?8"="s;;i?o por una sola l0
nea de cdigo .ue llama a una lista:
para 8"su!;=>o
$p gd V0 ot sl
ponpos P0!00 !00Q
rotula PIntroduce dos nEmerosQ
1az Rnum! leepala$ra
1az Rnum@ leepala$ra
1az Rresul :num! W :num@
$p
crea+entana Rroot Rcalculo P:esultado del producto:Q @00 !0 !00 "0 P Q
creaestatico Rcalculo Rresul! >lista :num! R) :num@ RX :resul? !0 V0 !0
3in
Naz una prue$a: des1a$ilita la +entana H?=!?u!o , +ers .ue no puedes mane#arla con
el ratn. Si la 1a$ilitas de nue+o podrs acti+arla , arrastrarla por la pantalla.
<ara despe#ar la pantalla- de$es teclear la orden:
Bo88=<"n;=n= Hcalculo
Edicin: !" de ma,o de @00 <gina A@ de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
&8i:i;i<=s )Bo;on*
Cn $otn es un elemento .ue permite manipular un programa
mediante el ratn- .ue puede 1acer clic en 4l o- simplemente-
pasar so$re 4l.
((. Escri$e un procedimiento .ue cree una +entana- llamada JsegundaL- en la .ue 1a,a
un $otn para cerrarla.
<ara s"6un>=
crea+entana H Hsegunda P<ulsa 2ceptar para cerrarQ @00 0 V0 "0 P Q
crea$oton Hsegunda H$oton! P2ceptarQ A0 A0 @0 PsesamoQ
3in
5$ser+a .ue la longitud de la +entana >V0? 1a de ser su3iciente para .ue .uepa el te)to
>pulsa aceptar para cerrar?. La altura de la +entana 1a de $astar para .ue .uepa el $o0
tn- .ue tiene A0 ) @0. Las coordenadas de la posicin del $otn pretenden .ue .uede
centrado en la +entana. Y a1ora- crea el procedimiento Js"s=:oL- .ue se encargar de
cerrar la +entana:
para s"s=:o
$orra+entana Rsegunda
3in
(B. Naz un procedimiento- con el nom$re J<"n4Bo;onL- .ue di$u#e en pantalla una +enta0
na con tres $otones. 2l pulsar el primero aparecer un mensa#e en la misma +entana
.ue diga J7u!s=>oL. 2l pulsar el segundo se di$u#a un donut en la +entana gr3ica , el
te)to del $otn cam$ia a JDONUTL. 2l pulsar el tercero se cierra la +entana con todo
su contenido.
para <"n4Bo;on
crea+entana R Rnue+a P9entana con tres $otonesQ !B0 0 !V0 B0 P Q
crea$oton Rnue+a Rprimero P<ulsarQ ! A0 "0 @0 P$oton!Q
crea$oton Rnue+a Rsegundo P2rrancarQ (B A0 0 @0 P$oton@Q
crea$oton Rnue+a Rtercero P6errarQ !A0 A0 "0 @0 P$orra+entana Rnue+a poncp BQ
3in
para Bo;on1
creaestatico Rnue+a R$oton! P<CLS2D5Q !B !0 A !
3in
para Bo;on$
actualiza$oton Rsegundo PD57CTQ
donut 0
ocultatortuga
3in
Z=#ate .u4 a1orro[. En el tercer $otn se inclu,e ,a el cdigo de lo .ue de$e 1acer al ser
pulsado: $orrar la +entana. 7o es necesario un procedimiento adicional.
Edicin: !" de ma,o de @00 <gina AA de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
&8i:i;i<=s )B=88=>"s7!=z=:i"n;o*
Cna $arra de desplazamiento es un o$#eto .ue tiene un cursor
.ue puede desplazarse mediante el ratn- para dar di+ersos +alo0
res a una +aria$le.
(M. Escri$e un procedimiento .ue cree una +entana- llamada JterceraL- en la .ue 1a,a un
$otn para cerrarla , una $arra de desplazamiento.
<ara ;"8?"8=
crea+entana R Rtercera P%i primera $arra deslizanteQ @00 0 !"0 (0 P Q
crea$arradesplazamiento Rtercera Rcien A0 !0 M0 !0 P Q
pon$arradesplazamiento Rcien 0 !00 0
crea$oton Rtercera Rclose P6errarQ @ A0 @0 P$orra+entana RterceraQ
3in
5$ser+a .ue la longitud de la +entana >!"0? 1a de ser su3iciente para .ue .uepa el ttu0
lo >%i primera $arra deslizante? , la $arra- .ue mide M0 de largo. La altura de la +enta0
na 1a de $astar para .ue .uepan tanto la $arra >M0 ) !0? como el $otn >A0 ) @0?. Las
coordenadas de la posicin del $otn , de la $arra pretenden .ue .ueden centrados en
la +entana. 6omprue$a .ue puedes mo+er el cursor con el ratn , .ue puedes cerrar la
+entana.
(V. 2plica lo .ue 1as aprendido- escri$iendo un procedimiento llamado J<"nB=8L- .ue di0
$u#e en pantalla una $arra de desplazamiento dentro de una +entana. La $arra tendr
un rango de +alores entre 0 , @0. 6ada +ez .ue se mue+a se de$e +isualizar en la
+entana el +alor de su posicin , su raz cuadrada. Tendremos- adems- un $otn .ue
sir+a para cerrar la +entana.
para <"nB=8
crea+entana R Rultima P6alculadora automtica de raicesQ !0 B0 !M0 B0 P Q
creaestatico Rultima Restat P!0Q !"0 !0 @0 !
creaestatico Rultima Restat! PSu raiz cuadrada es:Q ! A0 B0 !0
creaestatico Rultima Restat@ raizcuadrada !0 A "0 A0 !0
crea$arradesplazamiento Rultima R$arra ! !0 !!0 !0 Plee$arraQ
pon$arradesplazamiento R$arra 0 @0 !0
crea$oton Rultima Rprimero P6errarQ !@ A0 "0 @0 P$orra+entana RultimaQ
3in
La $arra de desplazamiento adoptar el +alor inicial de !0 >en el centro de su recorri0
do?. <or lo tanto- el esttico J"s;=;$L de$er ener como +alor inicial la raiz cuadrada de
!0 >se/alado en amarillo?. 6uando el cursor de la $arra se mue+a se e#ecutar el pro0
cedimiento llamado J!""B=88=L .ue 1a$r .ue escri$ir:
para !""B=88=
1az R) lee$arradesplazamiento R$arra
1az R, raizcuadrada :)
actualizaestatico Restat :)
Edicin: !" de ma,o de @00 <gina A" de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
actualizaestatico Restat@ :,
3in
&8i:i;i<=s )>i=!o6o*
Cna +entana de dialogo se utiliza como marco de tra$a#o en el
.ue se pueden a/adir otros o$#etos o controles como $otones-
$arras de desplazamiento- list$o)es- etc. Este o$#eto es similar a
una +entana- e)cepto .ue no >"<o!<"8 "! ?on;8o! =! 78o?">i9
:i"n;o !!=:=n;" @=s;= Eu" != <"n;=n= >" >i!o6o s" ?i"88".
B0. 9amos a crear una +entana de dilogo .ue pida al usuario .ue acepte pulsando un $o0
tn. <ero- en primer lugar- +amos a crear el procedimiento .ue cerrar la +entana al
pulsar el $otn:
para <"n>i=!o
crea$oton Rdialogo! R$ot+ale R26E<T2: @ !0 "0 @0 P$orradialogo Rdialogo!Q
3in
21ora .ue est preparado teclea- en la +entana de tra$a#o- la orden siguiente:
creadialogo R Rdialogo! PEl sistema de$e reiniciarseQ !@0 (0 V0 0 P+endialoQ
7aturalmente- una +ez pulsado el $otn pueden ponerse en marc1a procedimientos
ms am$iciosos .ue el simple cierre de la +entana de dilogo.
B!. Escri$e un procedimiento .ue pregunte al usuario- mediante una +entana de dilogo-
cuntos dias 3altan para su cumplea/os:
para A=!;=n
creaestatico Rcumple R3ec1a P!M0Q ! !0 @0 !
crea$arradesplazamiento Rcumple Rdeslizadias ! !0 !A0 !0 P1az Rdias lee$arra0
desplazamiento Rdeslizadias actualizaestatico R3ec1a :diasQ
pon$arradesplazamiento Rdeslizadias 0 A( !M0
crea$oton Rcumple RoD P2ceptarQ B0 A0 "0 @0 P$orradialogo RcumpleQ
3in
, teclea a continuacin:
creadialogo R Rcumple PS6untos dias 3altan para tu cumplea/osTQ !@0 (0 !M0
B0 P3altanQ
<ara practicar introduce alguna no+edad de tu propia cosec1a. <or e#emplo- .ue rotule
al cerrar el dilogo- so$re una pantalla ro#a , con letras grandes- cuntos dias 3altan.
Edicin: !" de ma,o de @00 <gina A de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
&8i:i;i<=s )68ou7BoD* C )Bo;on8=>io*
Cn $otn radio es un o$#eto .ue permite seleccionar una opcin
con dos estados: +erdadero >$otn seleccionado? o 3also >$otn no
seleccionado?.
Todos los $otones radio- .ue se corresponden con cada una de
las opciones .ue se presentan al usuario- de$en estar asociados
en un grupo o group$o).
B@. <ara practicar- escri$iremos el cdigo de una +entana llamada J?u=8;=L- en la .ue el
usuario de$er elegir su rango de edad seleccionando uno de los $otones radio .ue se
presentan reunidos en un group$o).
para ">=>
crea+entana R Rcuarta PSeleccione su grupo de edadQ @00 0 !! ( P Q
creagroup$o) Rcuarta Rmarco ( "0
crea$otonradio Rcuarta Rmarco R$ot! PJ! a/osQ !0 !A "0 V
crea$otonradio Rcuarta Rmarco R$ot@ P! a !M a/osQ !0 @A V
crea$otonradio Rcuarta Rmarco R$otA PL!M a/osQ !0 AA "0 V
escri$e$otonradio R$ot! R+erdadero
crea$oton Rcuarta Rcierre P2ceptarQ B @0 A0 @0 P$orra+entana RcuartaQ
3in
=#ate $ien- todas las coordenadas estn re3eridas a un origen comEn situado en la es0
.uina superior iz.uierda de la +entana. La creacin de cada o$#eto inclu,e una ruta
compuesta por la +entana padre- el o$#eto padre , su propio nom$re.
Slo puede estar seleccionado uno de los $otones radio de un group$o). 6uando el
usuario selecciona una de las opciones lo pone en estado H+erdadero ,- automtica0
mente- el resto de las opciones se ponen en estado H3also. 2dems- al iniciar el group0
$o)- una de las opciones declararse +erdadera.
BA. Naz un procedimiento llamado J?=!?=?:"L- .ue pida dos nEmeros , di$u#e en una
+entana un grupo con cuatro $otones radio. 6ada $otn tendr asignada una operacin
matemtica. 6uando pulsemos un $otn aparecer el resultado de aplicar la operacin
matemtica seleccionada a los dos nEmeros introducidos. Tendr- adems- otro $otn
.ue permita cerrar la +entana:
para ?=!?=?:"
$p sl gd V0 ot
ponpos P0"0 !0Q
rotula >lista RIntroduce Rdos RnEmeros Ren Rla R+entana?
1az Rnum! leepala$ra
1az Rnum@ leepala$ra
$p
crea+entana R Rultima P6alculadora aritm4tica marca R26%ERQ !0 B0 !M0 !00 PQ
creagroup$o) Rultima Rgrupo !0 !0 !(0 0
crea$otonradio Rultima Rgrupo R$oton! P GQ ! ! @ !0
crea$otonradio Rultima Rgrupo R$oton@ P 0Q ! @ @ !0
crea$otonradio Rultima Rgrupo R$otonA P)Q ! A @ !0
crea$otonradio Rultima Rgrupo R$oton" PKQ ! " @ !0
Edicin: !" de ma,o de @00 <gina A( de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
escri$e$otonradio R$oton! R+erdadero
crea$oton Rultima Rcalcular P62L6CL2:Q @0 (B " ! PcalculoQ
crea$oton Rultima Rcerrar P26282:Q !! (B " ! P$orra+entana RultimaQ
creaestatico Rultima Restat P7C%E:5S: Q 0 @ " !
creaestatico Rultima Restat! :num! !!0 @ @0 !
creaestatico Rultima Restat@ :num@ !"0 @ @0 !
creaestatico Rultima RestatA P:ESCLT2D5:Q 0 "0 0 !
creaestatico Rultima Restat" P Q !!0 "0 A0 ! ] Se crea un esttico sin mensa#e
3in
para ?=!?u!o
1az R) lee$otonradio R$oton!
si :)X R+erdadero P1az RnumA :num! G:num@Q
1az R) lee$otonradio R$oton@
si :)X R+erdadero P1az RnumA :num!0:num@Q
1az R) lee$otonradio R$otonA
si :)X R+erdadero P1az RnumA :num! W:num@Q
1az R) lee$otonradio R$oton"
si :)X R+erdadero P1az RnumA :num!K:num@Q
actualizaestatico Restat" :numA
3in

&8i:i;i<=s )?@"?LBoD*
Cn o$#eto ?@"?LBoD es una casilla .ue el usuario puede selec0
cionar. Todas las casillas ?@"?LBoD de$en estar reunidas en un
group$o). El usuario puede seleccionar +arias casillas simult0
neamente.
B". Naz un procedimiento- llamado J<"n?o:L- .ue di$u#e en una +entana un grupo con
tres $otones de tipo ?@"?LBoD. 6ada uno tendr como eti.ueta un nEmero. 6uando
pulsemos un $otn aparecer un mensa#e indicando el estado de cada uno de ellos.
Tendr- adems- otro $otn .ue permita cerrar la +entana.
para <"n?o:
crea+entana R Rultima P9entana con casillas de compro$acinQ !0 B0 !M0 V0 P Q
creagroup$o) Rultima Rgrupo !0 !(0 0
creac1ecD$o) Rultima Rgrupo R$oton! P<rimeroQ ! ! " !0
creac1ecD$o) Rultima Rgrupo R$oton@ PSegundoQ ! @ " !0
creac1ecD$o) Rultima Rgrupo R$otonA PTerceroQ ! A " !0
crea$oton Rultima Rcompro$ar P65%<:582:Q ! (0 (0 ! Pcomprue$aQ
crea$oton Rultima Rcerrar P6E::2:Q !@0 (0 "0 ! P$orra+entana RultimaQ
creaestatico Rultima Restat! PDesacti+adoQ !00 ! (0 !0
creaestatico Rultima Restat@ PDesacti+adoQ !00 @ (0 !0
creaestatico Rultima RestatA PDesacti+adoQ !00 A (0 !0
3in
Edicin: !" de ma,o de @00 <gina AB de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
para ?o:78u"B=
1az R) estadoc1ecD$o) R$oton!
sisino :)X R+erdadero Pactualizaestatico Restat! P2cti+adoQQ Pactualizaestatico Res0
tat! PDesacti+adoQQ
1az R) estadoc1ecD$o) R$oton@
sisino :)X R+erdadero Pactualizaestatico Restat@ P2cti+adoQQ Pactualizaestatico Res0
tat@ PDesacti+adoQQ
1az R) estadoc1ecD$o) R$otonA
sisino :)X R+erdadero Pactualizaestatico RestatA P2cti+adoQQ Pactualizaestatico Res0
tatA PDesacti+adoQQ
3in
&8i:i;i<=s )!is;BoD*
Cn o$#eto list$o) es una ca#a de te)to- .ue contiene una lista de
opciones entre las .ue el usuario puede elegir una.
B. Naz un procedimiento llamado J<"n:"nuL .ue di$u#e en una +entana un menE de op0
ciones mediante list$o). Dic1o menE tendr opciones: 6I:6CL5- 6C2D:2D5-
T:I\7GCL5- <E7T\G575 , NE`\G575. 6uando pulsemos un $otn se di$u#ar la 3i0
gura seleccionada en el menE. 6on otro $otn podremos $orrar la pantalla gr3ica. Ten0
dr- adems- otro $otn .ue permita cerrar la +entana.
para <"n:"nu
crea+entana R Rultima PTrazado de polgonosQ A00 @0 !M0 V0 PQ
crealist$o) Rultima Rmenu R!0 !0 !00 A0
a/adecadenalist$o) Rmenu P6I:6CL5 :5;5Q
a/adecadenalist$o) Rmenu P6C2D:2D5 2FCLQ
a/adecadenalist$o) Rmenu PT:I27GCL5 9E:DEQ
a/adecadenalist$o) Rmenu P<E7T2G575 2%2:ILL5Q
a/adecadenalist$o) Rmenu PNE`2G575 9I5LET2Q
crea$oton Rultima Rcalcular PDI8C;2:Q !@0 @0 "0 ! Pdi$u#arQ
crea$oton Rultima Rcerrar P26282:Q !@0 0 "0 ! P$orra+entana RultimaQ
crea$oton Rultima R$orrar P85::2:Q (0 0 "0 ! P$pQ
3in
para >iBuF=8
1az R) leeseleccionlist$o) Rmenu
si :)XP6I:6CL5 :5;5Q Paroro#oQ
si :)XP6C2D:2D5 2FCLQ Pcuadro$lueQ
si :)XPT:I27GCL5 9E:DEQ Ptri+erdeQ
si :)XP<E7T2G575 2%2:ILL5Q PpentailloQ
si :)XPNE`2G575 9I5LET2Q P1e)a+iolQ
3in
para =8o8oFo
arcodeelipse A(0 !@0 !@0 0 sl poccr " gd !0 a+ !0 rellena $l ot
3in
Edicin: !" de ma,o de @00 <gina AM de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
para ?u=>8oB!u"
repite " Pa+ @00 gd V0Q sl poccr ! gd !0 a+ !0 rellena $l ot
fin
para ;8i<"8>"
repite A Pa+ @@0 gd !@0Q sl poccr !0 gd !0 a+ !0 rellena $l ot
3in
para 7"n;=i!!o
repite Pa+ !0 gd B@Q sl poccr ( gd !0 a+ !0 rellena $l ot
3in
para @"D=<io!
repite ( Pa+ !@0 gd (0Q sl poccr !A gd !0 a+ !0 rellena $l ot
3in
&8i:i;i<=s )?o:BoBoD*
Cn o$#eto ?o:BoBoD es un o$#eto compuesto por una !is;=- en
la .ue el usuario puede elegir una de las opciones .ue o3rece- ,
una <"n;=n= >" ;"D;o en la .ue el usuario puede introducir una
e)presin .ue no est en la lista.
<ara crear un com$o$o) 1a, .ue utilizar la sinta)is siguiente:
?8"=?o:BoBoD H+entana Hnom$re HTitulo pos) pos, largo alto
Cna +ez creado- podemos a/adir el te)to de las opciones .ue se o3recen en la lista:
=I=>"!in"=?o:BoBoD Hnom$re Pe)presion !Q
=I=>"!in"=?o:BoBoD Hnom$re Pe)presion @Q
...
2 continuacin- designamos cul de las opciones aparecer seleccionada por de3ecto al
crearse el com$o$o)
7on;"D;o?o:BoBoD Hnom$re Pe)presion )Q
<ara a+eriguar cul es la opcin elegida por el usuario- utilizaremos la e)presin:
!"";"D;o?o:BoBoD Mno:B8"
B(. 9amos a escri$ir el cdigo de un script para una agencia de +ia#es- en el .ue el cliente
puede elegir el lugar elegido para sus +acaciones. La agencia de +ia#es o3rece una lista
de destinos comunes- los ms solicitados- pero tam$i4n permite al cliente solicitar un
destino .ue no est en esa lista. Cn o$#eto com$o$o) es la opcin ideal:
para <i=F"
crea+entana R Rdestino PEli#a el destino de su +ia#eQ !0 M0 !@0 !!0 PQ
creacom$o$o) Rdestino Rlistado @0 M0 0
a/adelineacom$o$o) Rlistado PTur.uiaQ
Edicin: !" de ma,o de @00 <gina AV de "0
E#ercicios $sicos de %S&Logo !'(.s)* Luis Gonzlez. Departamento de Tecnologa
a/adelineacom$o$o) Rlistado P9iena clsicaQ
a/adelineacom$o$o) Rlistado P<raga romnticaQ
a/adelineacom$o$o) Rlistado PItaliaQ
a/adelineacom$o$o) Rlistado P=iordos noruegosQ
a/adelineacom$o$o) Rlistado P9i/edos de =ranciaQ
a/adelineacom$o$o) Rlistado P6ostas de Espa/aQ
a/adelineacom$o$o) Rlistado PIslas 6anariasQ
ponte)tocom$o$o) Rlistado P=iordos noruegosQ
crea$oton Rdestino R$otacepto RElegir @0 B0 A0 @0 Pcon3irmaQ
crea$oton Rdestino R$otcierre R6errar B0 B0 A0 @0 P$orra+entana RdestinoQ
creaestatico Rdestino Rte)to P=iordos noruegosQ A0 M0 V
3in
para ?onAi8:=
1az Rlugar leete)tocom$o$o) Rlistado
actualizaestatico Rte)to :lugar
3in
Naz la prue$a- eligiendo lugares de la lista o3recida por la agencia ,- tam$i4n- eligiendo
un lugar de +acaciones .ue no est en la lista.
'A;"8No8>s
8ien- espero .ue 1a,as dis3rutado de tu aprendiza#e como programador.
21ora no me .ueda ms .ue animarte a .ue apli.ues lo .ue 1as aprendido a crear los
programas .ue puedas imaginar. 8uena suerte.
Luis Gonz!"z
<ro3esor de Tecnologas de la In3ormacin
%adrid 00!"
Edicin: !" de ma,o de @00 <gina "0 de "0

También podría gustarte