Está en la página 1de 31

V|sua| Pro|og

0esarro||o de Ap||cac|ones
con |nterfaz V|sua|






Jav|er loárez (0espacro 0-109)
0errár v|da| (0espacro 0-212)


Ed|l|c|o 03lC





lrger|eria de Requer|r|erlos (1A)

Desarrollo de Aplicaciones Jisuales 2

v|sua| Pro|og

E| s|slera v|sua| Pro|og es ur produclo de Pro|og 0eve|opmenr 0enrer //$ {0opennagenj. A|guras porc|ores
de| 3ollWare sor ura evo|uc|ór de Turbo Pro|og y sor prop|edad de 3or|ano lnrernar|ona|. Esle produclo corsla
de var|os e|ererlos. T|ere ur Erlorro de 0esarro||o v|sua| (v0E) que |rc|uye ed|lores grál|cos y de lexlo,
rerrar|erlas para |a gererac|ór de cód|go (experros) y ur corp||ador Pro|og, erlre olros.

Er esla prácl|ca se eslud|a córo corslru|r ura ap||cac|ór w|rdoWs serc|||a, usardo |as rerrar|erlas de|
erlorro de 0esarro||o v|sua|. Para ura descr|pc|ór exrausl|va, podé|s corsu|lar |os rarua|es vPl (v|sua|
Prograrr|rg lrlerlace) y v0E (v|sua| 0eve|oprerl Erv|rorrerl), asi coro |a |rlorrac|ór d|spor|o|e er |a
ayuda on-||ne de| v|sua| Pro|og.

Tab|a de 6onten|dos

Para empezar a trabajar ¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸ 3
El Entorno de Desarrollo Visual (VDE) ¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸ 3
El Experto en Aplicaciones ¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸ 5
La ventana del proyecto ¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸ 5
Descripcion de la ventana del proyecto¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸ 6
Operaciones sobre las componentes del proyecto ¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸ 7
El codigo Iuente generado¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸ 7
La primera ejecucion ¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸ 8
Como añadir una entrada al menu del proyecto ¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸ 9
Como añadir un submenu ¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸ 10
El Experto en Jentanas v Dialogos ¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸ 12
Como crear un nuevo modulo para una ventana ¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸ 15
Codigo por deIecto para la ventana¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸ 17
Mejorando la Iuncionalidad de la ventana¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸ 20
Como crear un modulo para un Dialogo ¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸ 22
El Experto en Dialogos ¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸ 24
El codigo generado ¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸¸ 27
Desarrollo de Aplicaciones Jisuales 3
Para empezar a trabajar

Para erlrar desde w|rdoWs er e| erlorro v|sua| Pro|og, desp||ega e| reru 'lr|c|o' (que eslá acces|o|e er |a parle
|rler|or |zqu|erda de |a parla||a) rasla raoer se|ecc|orado:
|n|c|o|Programas|V|sua|Pro|ogX.Y|V|p32.
Cuardo arrarque v|sua| Pro|og, aparecerá er |a parla||a |a verlara pr|rc|pa| de| erlorro de desarro||o v0E. 3| os
ercorlrá|s cor a|gur l|crero o proyeclo ya ao|erlo, s|rp|ererle cerrad |as verlaras.
E| Entorno de 0esarro||o V|sua| (V0E}
E| v0E s|rve para desarro||ar, prooar y rod|l|car ap||cac|ores Pro|og para w|rdoWs. E| v0E d|spore de var|os
rerus, |os cua|es aparecer lodos er |a verlara pr|rc|pa|. Er gerera|, y aurque eslos rerus pueder |rc|u|r olros
|lers ad|c|ora|es deperd|erdo de| l|po de verlara acl|va, e| reru eslárdar corsla de |as s|gu|erles opc|ores:
F||e [ Ed|t [ Project [ 0pt|ons [ he|p [ w|ndow
A|guros |lers de| reru pr|rc|pa| l|erer asoc|ados 'ace|eradores¨. Los ace|eradores (rol |eys) ejecular a|guras
acc|ores d|reclarerle, s|r reces|dad de se|ecc|orar|as a lravés de| reru. La rayoria de verlaras soporla
laro|ér ur reru |oca| desp|egao|e que aparece a| pu|sar e| oolór derecro de| ralór. Las pr|rc|pa|es lec|as de
ace|erac|ór sor:
Key Funct|on
6tr|+| lrvo|es lre lderl|l|er oroWser.
6tr|+T lrvo|es lre Tree d|sp|ay.
6tr|+ß lrvo|es lre 8roWser.
8hft+6tr|+0 Fror lre ed|lor |ocales dec|aral|or lor pred|cale.
8hft+6tr|+6 Fror lre ed|lor |ocales c|auses lor pred|cale.
A|t+F9 Perlorrs Project | ßu||d.
F9 Perlorrs Project | Run (Wr|cr |rc|udes ßu||d).
6tr|+8 3aves lre projecl ard a|| oper l||es.
6tr|+6 Perlorrs a copy ol lre se|ecled |rlorral|or lo lre c||pooard.
6tr|+V Perlorrs ar |rserl lror lre c||pooard. Tre |rserled |rlorral|or
W||| rep|ace ary se|ecled |rlorral|or.
6tr|+X Perlorrs a cul ol lre se|ecled |rlorral|or lo lre c||pooard.
6tr|+w lrvo|es lre 0|a|og and w|ndow Expert d|a|og as |r |ls |asl
used slale.
8hft+6tr|+w lrserls a ca|| lo w|rdoW or 0|a|og creal|or.
8hft+6tr|+V lrserls a vPl pred|cale ca||.
8hft+6tr|+8 lrserls a slardard pred|cale ca||.
8hft+6tr|+| lrserls prololype lor currerl pred|cale rare.
8hft+6tr|+K lrserls a KeyWord.
Desarrollo de Aplicaciones Jisuales 4
E| v0E d|spore laro|ér de |a s|gu|erle oarra de rerrar|erlas er |a verlara pr|rc|pa|



Cada uro de |os |coros de esla oarra de rerrar|erlas rea||za exaclarerle |a r|sra lurc|ór que e|
correspord|erle |ler de| reru pr|rc|pa|:
F||e | New.
F||e | 0pen.
F||e | 8ave.
Ed|t | Undo
Ed|t | Redo.
Ed|t | 6ut.
Ed|t | 6opy.
Ed|t | Paste.
Project | 6omp||e f||e.
Project | ßu||d.
Project | Run
Project | Test Coa|
Project | ßrowse
Project | Tree
0pt|ons | Temporary [ Font
he|p | Loca| he|p.


Para erpezar e| desarro||o de ura ap||cac|ór vPl er esle erlorro, se|ecc|ora de esla oarra de reru, oajo |a
caoecera 'Projecl¨:

Project|New Project

Desarrollo de Aplicaciones Jisuales 5
E| Experto en Aplicaciones

E| 'App||cal|or Experl¨ se usa para desarro||ar ap||cac|ores w|rdoWs que user e| vPl (v|sua| Prograrr|rg
lrlerlace). 3e |rvoca desde e| reru a| se|ecc|orar Project|New Project. A| racer|o, aparecerá ura verlara rueva,
soore |a que se deoe dar rorore a |a ap||cac|ór que se va a desarro||ar (por ejerp|o, VYPR0J), re||erardo e|
carpo 'Projecl Nare¨. A corl|ruac|ór, raorá que aclua||zar e| rorore de| d|reclor|o oase, lec|eardo, por ejerp|o:

6:ìTEHPì<username>ìPracV|P

Recordad que loda |a |rlorrac|ór que a|raceré|s er e| d|sco |oca| 0: será e||r|rada per|ód|carerle de |as
ráqu|ras. Por larlo, s| queré|s rarlerer ura cop|a de vueslro lraoajo, sa|vad|o er ur d|squelle.
0e rorerlo, só|o varos a |rd|car e| rorore y e| d|reclor|o para |a rueva ap||cac|ór, dejardo e| reslo de opc|ores
cor su va|or por deleclo. Caoe deslacar ur|carerle |a opc|ór U| 8trategy de| suoreru Target, desde dorde
poderos dec|d|r s| |a ap||cac|ór va a usar e| vPl, o es sul|c|erle cor ura verlara de erlrada/sa||da ('EasyW|r¨), o
o|er va a lraoajar er rodo 003 ('Texlrode¨). Por deleclo aparece |a eslraleg|a vPl.
F|ra|rerle, pu|sa e| oolór 6reate o da|e a| <ENTER>. Eslo produce |a apar|c|ór de |a verlara de| Proyeclo
('Projecl w|rdoW¨), que se rueslra er |a F|gura 1. Er |a verlara se rueslra que e| s|slera ra gererado
aulóral|carerle dos ródu|os para esle proyeclo: VYPR0J.PR0, que es e| prograra (o ródu|o) pr|rc|pa|, y
vPlT00L3.PR0, que es ur ródu|o que |rc|uye |as rerrar|erlas que rar s|do se|ecc|oradas usardo e|
'App||cal|or Experl¨ (rasla e| rorerlo, só|o |as predel|r|das).
La ventana de| proyecto
Esla verlara rueslra lodos |os l|creros que corlorrar |a ap||cac|ór. Los oolores de |a parle |zqu|erda |rd|car e|
l|po de corporerle o l|crero. Los oolores de |a derecra ejecular acc|ores soore d|cros corporerles.

F|gura '. la venrana oe| Pro,ecro.
Desarrollo de Aplicaciones Jisuales 6
0escr|pc|ón de |a ventana de| proyecto

Hodu|e A| pu|sar esla opc|ór, er |a parle cerlra| de |a verlara se rueslra |a ||sla de ródu|os
luerle (¯.PR0) de| proyeclo er e| que eslaros lraoajardo. Eslos l|creros pueder
corp||arse cor |a opc|ór a Project | ßu||d. Para ed|lar ur ródu|o, oasla cor pu|sar dos
veces cor e| ralór soore e| rorore de| ródu|o.

0|a|og La parle cerlra| de |a verlara rueslra |a ||sla de d|á|ogos er e| proyeclo. ur d|á|ogo es
ur l|po espec|a| de verlara ul|||zada para e| |rlercaro|o de |rlorrac|ór cor e| usuar|o
(erlradas y sa||das). E| ed|lor de d|á|ogos se acl|va para ur d|á|ogo pu|sardo dos veces
e| ralór soore su rorore. E| lorralo de lodos |os d|á|ogos se a|racera er e| l|crero
'<projecl>.vPR¨.

w|ndow La ||sla roslrada er |a verlara cuardo se se|ecc|ora esla opc|ór cors|sle er |as
verlaras a|raceradas er e| l|crero de| proyeclo. E| ed|lor de verlaras se acl|va
cuardo se pu|sa dos veces e| ralór soore ura de |as erlradas de |a ||sla. 3e pueder
del|r|r verlaras cor oarras de rerrar|erlas, rerus, oarras de desp|azar|erlos para
se|ecc|orar |rlorrac|ór, elc.

Henu Vueslra |a ||sla de |os rerus de| proyeclo. Los rerus pueder ser rerus desp|egao|es
('pop-up¨) o rerus asoc|ados a verlaras ('pu||-doWr¨). Pu|sardo dos veces cor e| ralór
se |rvoca e| ed|lor de rerus.

Too|bar Vueslra er |a verlara de| proyeclo |a ||sla de oarras de rerrar|erlas del|r|das er e|
proyeclo. Pu|sardo dos veces cor e| ralór se |rvoca e| ed|lor de |a oarra de
rerrar|erlas se|ecc|orada.

8tr|ng La ||sla rueslra |os grupos de caderas luerle usadas er e| proyeclo. Eslas caderas o
grupos de caderas pueder corlerer rersajes de error, |os prorpls o cua|qu|er olra
cadera de lexlo que |a ap||cac|ór lerga que roslrar. E| ed|lor de caderas se |rvoca
pu|sardo dos veces e| ralór.

|con La verlara rueslra |a ||sla de |coros er |os l|creros luerle. Arles de que eslos |coros
sear usados er |as oarras de rerrar|erlas o er |os d|á|ogos, deoeros |rc|u|r|os er esla
||sla. Los |coros se a|racerar er l|creros cor exlers|ór '.lC0¨ (oajo w|rdoWs). E|
ed|lor grál|co se |rvoca pu|sardo dos veces e| ralór.

6ursor La parle cerlra| de |a verlara de| proyeclo rueslra |a ||sla de cursores |rc|u|dos er e|
proyeclo. Eslos deoer a|racerarse er l|creros cor exlers|ór '.CuR¨ (oajo w|rdoWs).

ß|tmap La ||sla rueslra |os rapas de o|ls del|r|dos (cor exlers|ór '.8VP¨). E| ed|lor grál|co se
|rvoca pu|sardo dos veces e| ralór.

he|p Top|cs La ||sla corl|ere |os |lers de ayuda de| proyeclo. La ayuda or-||re se a|racera er e|
l|crero '<projecl>.lAV¨. Pu|sardo dos veces e| ralór se aore ura verlara de| ed|lor de
lexlos soore e| iler se|ecc|orado.
Desarrollo de Aplicaciones Jisuales 7
0perac|ones sobre |as componentes de| proyecto
New Arade ura rueva corporerle. La |rlorrac|ór recesar|a para |a rueva corporerle
deperde de| l|po de corporerle se|ec|orada (ródu|o, d|á|ogo,.). 3| |a rueva
corporerle se va a a|racerar er |a oase de dalos de| proyeclo, es recesar|o del|r|r
|os alr|oulos de |a corporerle arles de crear|a cor e| ed|lor correspord|erle.

Ed|t Acl|va e| ed|lor soore |a corporerle se|ecc|orada.

0e|ete 8orra de| proyeclo |a(s) corporerle(s) se|ecc|orada(s). La corporerle se e||r|ra
lola|rerle s| eslá a|racerada er |a r|sra oase de dalos de| proyeclo. 3| eslá derlro
de olro d|reclor|o, |o que se e||r|ra es |a corex|ór erlre d|cra corporerle y e|
proyeclo. E| l|crero ro se e||r|ra lis|carerle y puede reeslao|ecerse su corex|ór cor e|
proyeclo usardo |a opc|ór NeW.

Attr|bute Ed|la |os alr|oulos de |a corporerle se|ecc|orada coro, por ejerp|o, e| rorore
as|grado a ura corslarle er ur d|á|ogo.

6ode Expert Acl|va e| experlo de gererac|ór de cód|go de verlaras, d|á|ogos y oarras de
rerrar|erlas.


E| cód|go fuente generado
Para ver |a eslruclura de| cód|go que ra s|do gererado derlro e| ródu|o pr|rc|pa| VYPR0J.PR0, pu|sa e| oolór
Ed|t cor e| l|crero VYPR0J.PR0 se|ecc|orado (o pu|sa dos veces cor e| ralór soore e| rorore de| l|crero). Rev|sa
e| cód|go que aparece er esle l|crero para |os s|gu|erles |lers:

• 'Everl rard||rg¨ para |a "Task W|rdoW¨.

• 00AL pr|rc|pa| de| proyeclo.

• Creac|ór de |a oarra de rerrar|erlas ('loo|oar¨) y |a 're|p ||re¨

• Creac|ór de |a verlara de rersajes 'About d|a|og¨.
Desarrollo de Aplicaciones Jisuales 8
La pr|mera ejecuc|ón

Para corp||ar y ejecular e| cód|go gererado se|ecc|ora, desde |a verlara pr|rc|pa| de| proyeclo, |a opc|ór
Project|Run (a|lerral|varerle, puedes pres|orar e| oolór de |a oarra de rerrar|erlas).

La ejecuc|ór produce |a apar|c|ór de dos verlaras: ura es |a verlara de ejecuc|ór de| proyeclo y |a olra es ura
verlara de rersajes de d|cro proyeclo (se gerera aulorál|carerle por deleclo):


F|gura 2. la ap||cac|on generaoa.
Los |lers que aparecer er |a verlara pr|rc|pa| corresporder a |as opc|ores por deleclo y corsl|luyer ur esque|elo
a parl|r de| cua| podreros corslru|r cada proyeclo o ap||cac|ór parl|cu|ar.
Er esle rorerlo, só|o l|erer lurc|ora||dad a|guros de |os |lers de| reru. Por ejerp|o, |as erlradas F||e|8ave o
Ed|t|6opy, erlre olras, aur ro lurc|orar (y se rueslrar desacl|vadas).
Desarrollo de Aplicaciones Jisuales 9
6ómo añad|r una entrada a| menú de| proyecto

Pu|sa e| oolór Henu s|luado er |a parle |zqu|erda de |a verlara de| proyeclo.

F|gura J. Exrens|on oe| menu.
varos a ed|lar e| reru que se ra gererado aulorál|carerle para e| proyeclo (reru 'Tas|¨). Pu|sa dos veces
soore Task Henu. Aparece |a verlara de| ed|lor de rerus roslrardo |as erlradas de que corsla (por arora) e|
reru se|ecc|orado: F||e, Ed|t y he|p (w|ndow ro aparece, ya que ro puede a|lerarse). Para arad|r ura rueva
erlrada a esle reru a| r|sro r|ve| que |as olras, dárdo|e e| rorore &Test, pu|sa e| oolór New e |rlroduce d|cro
rorore er e| carpo 'Texl¨ de |a verlara que aparece er parla||a, la| y coro se rueslra er |a F|gura 1 (ooserva
que e| carpo 'Corslarl¨ ra quedado curp||rerlado aulorál|carerle cor ur rorore por deleclo: '|d_Test'). E|
siroo|o & |rd|ca que se desea asoc|ar ur ace|erador a |a rueva erlrada (por ejerp|o, Clr|÷T), por |o que
co|ocaros e| & de|arle de |a T. 0|cro carácler aparecerá cor ur '_¨ a| desp|egar e| reru de |a ap||cac|ór.
Double
Click
here
Desarrollo de Aplicaciones Jisuales 10

F|gura 4. Eo|ror oe menus. ao|c|on oe una enrraoa a| menu.
A corl|ruac|ór, pu|sa 0K. Arora e| ed|lor de rerus rueslra |a rueva erlrada '&Test¨ er |a ||sla de erlradas de|
reru:


F|gura 5. E| eo|ror oe menus oespues oe anao|r |a enrraoa Tesr.
6ómo añad|r un submenú

La opc|ór 8ubmenu de| ed|lor de rerus perr|le crear suorerus. A corl|ruac|ór, descr|o|ros córo arad|r ur
suoreru para 'Tesl¨ cor ura ur|ca erlrada: he||o wor|d.
3e|ecc|ora |a erlrada Test de |a ||sla de erlradas de| proyeclo, pu|sa e| oolór 8ubmenu y a corl|ruac|ór e| oolór
New. Curp||rerla e| carpo 'Texl¨ er |a verlara desp|egada cor e| rorore de |a suoerlrada (he||o wor|d}.

Desarrollo de Aplicaciones Jisuales 11

F|gura 6. /o|c|on oe suomenu.
Pu|sa e| oolór Attr|butes (cor |a erlrada le||o wor|d se|ecc|orada) y er |a verlara de |os alr|oulos que aparece,
caro|a er e| carpo 'Corslarl¨ e| va|or que raoia s|do gererado aulorál|carerle por esle ruevo: '|d_he||o¨.
Pu|sa 0K para corl|rrar e| caro|o. Esle rorore de corslarle será ul|||zado |uego para asoc|ar e| cód|go luerle a
esla erlrada.


F|gura 7. venrana oe arr|ouros oe |as enrraoas oe| menu.
Er |a verlara de |os alr|oulos, poderos laro|ér espec|l|car s| |a erlrada eslará rarcada por deleclo ('6hecked¨) o
desacl|vada ('0|sab|ed¨) e |rc|uso del|r|r ur ace|erador para |a r|sra.
3| qu|eres corprooar córo ra quedado corl|gurado e| reru de |a ap||cac|ór lras |os caro|os que reros
elecluado, pu|sa e| oolór ßack de| ed|lor de rerus rasla que aparezca desacl|vado. Pu|sa erlorces e| oolór Test
para roslrar e| suoreru he||o wor|d (aparecerá er e| |ugar dorde se ercuerlra e| reru de lraoajo de v|sua|
Pro|og):
Desarrollo de Aplicaciones Jisuales 12

F|gura 8. E| eo|ror oe menus en mooo "prueoa´.
Para sa||r de esle rodo lesl, vue|ve a pu|sar e| oolór Test (o pu|sa cor e| ralór er olra verlara d|lererle de|
reru). Para sa||r de| ed|lor de rerus, pu|sa e| oolór 6|ose (e |rd|ca|é que 8| qu|eres sa|var e| lraoajo).
Arora ya corocé|s córo se pueder crear ruevos rerus, as|grárdo|e ruevas erlradas a cada uro de e||os. A
corl|ruac|ór vereros córo poderos asoc|ar|es cód|go.
E| Experto en Ventanas y 0ialogos

v|sua| Pro|og olrece a|guras rerrar|erlas para |a gererac|ór de cód|go que deror|ra 'Code Experls¨. Eslas
rerrar|erlas rea||zar ura ouera parle de| lraoajo rul|rar|o y ayudar a orgar|zar e| cód|go er ur lorralo eslárdar y
s|rp|e de rarlerer. Er esle aparlado y |os s|gu|erles aprerdereros córo lurc|ora e| Experro en venranas ,
0|a|ogos ('0|a|og ard w|rdoW Experl¨). E| Experlo er verlaras y 0|á|ogos se |rvoca se|ecc|orardo ura verlara o
ur d|á|ogo er |a verlara de| proyeclo y pu|sardo e| oolór 6ode Expert.

Para arad|r cód|go Pro|og asoc|ado a |a verlara pr|rc|pa| de rueslro proyeclo, pu|sa e| oolór w|ndow derlro de |a
verlara Project y, er |a ||sla de verlaras, p|rcra soore Task w|ndow.
Desarrollo de Aplicaciones Jisuales 13

F|gura 9. 0esoe |a venrana oe| pro,ecro se |nvoca a| "w|noou Experr´.
A corl|ruac|ór, p|rcra a |a derecra de |a verlara e| oolór 6ode Expert (o ul|||za |as lec|as de ace|erac|ór 6tr|+w}.
Eslo |rvoca a| 'w|rdoW Experl¨.

F|gura '0. E| Experro en venranas genera coo|go espec|a||zaoo.
La F|gura 10 rueslra e| experlo er verlaras cor |a verlara Tas| w|rdoW se|ecc|orada (parle super|or de |a
verlara). Esla se|ecc|ór puede caro|arse er |a secc|ór 0ialog or window 3election, |rd|cardo s| se lrala de ura
verlara o de ur d|á|ogo y |uego se|ecc|orárdo|o. A corl|ruac|ór deoeros se|ecc|orar e| ródu|o que va a corlerer
e| cód|go gererado (HYPR0J.PR0). Lo s|gu|erle es se|ecc|orar e| esl||o de| cód|go que |rd|cará córo se creará |a
verlara o e| d|á|ogo. Por e| rorerlo, se|ecc|orar win_Create, que corresporde a |as verlaras y d|á|ogos eslárdar
(corsu|lar |os rarua|es v0E/vPl para olras pos|o|||dades). 3| quereros que e| experlo aclua||ce aulorál|carerle
e| cód|go luerle cuardo se produzcar caro|os er e| lorralo, deoereros rarcar |a cas|||a correspord|erle a|
Automatic 3ource 0pdate. Er |a secc|ór Event handling se pueder arad|r (o oorrar) c|áusu|as para |os
Select
id_hello
Select the
Menu
Event
Desarrollo de Aplicaciones Jisuales 14
pred|cados de rarejo de everlos ('Everl lard|er¨) de |a verlara. Los everlos eslár agrupados er l|pos y arles
de se|ecc|orar e| everlo deoeros se|ecc|orar su l|po. 3| ro ray r|rgura c|áusu|a er e| prograra para e| everlo,
pu|sareros e| oolór Add 6|ause (s| ya ex|sle a|gura c|áusu|a, d|cro oolór eslará el|quelado cor Ed|t 6|ause).

Arora s|gue |os s|gu|erles pasos para del|r|r ura c|áusu|a para e| reru que eslaros corslruyerdo:
1. Er |a ||sla 'Everl Type¨, a |a |zqu|erda de |a verlara de| 'w|rdoW Experl¨, se|ecc|ora e| iler Henu.
2. P|rcra soore e| |ler |d_he||o (er |a ||sla de |lers que aparece er e| cerlro de |a verlara). ul|||za |a oarra de
desp|azar|erlos para ercorlrar e| iler.
3. Pu|sa e| oolór Add 6|ause para gererar e| esque|elo de |a c|áusu|a Pro|og que lralará esle everlo. (Nola que e|
lexlo que aparecia soore e| oolór Add 6|ause ra caro|ado por Ed|t 6|ause cuardo ra s|do se|ecc|orado.)
Para ed|lar e| esque|elo de cód|go gererado, pu|sa e| oolór Ed|t 6|ause. E| Ed|lor de c|áusu|as rueslra |a s|gu|erle
c|áusu|a que ra s|do arad|da para e| pred|cado 'everl-rard|er¨ para |a verlara Task:

º8E0lN Tas| w|rdoW, |d_re||o
las|_W|r_er(_w|r,e_Veru(|d_re||o,_3r|llCl|A|l),0):-l ,
l.
ºEN0 Tas| w|rdoW, |d_re||o

Los corerlar|os º8eg|r - ºErd sor ul|||zados por e| w|rdoW Experl para |oca||zar e| cód|go re|ac|orado cor |a |rlerlaz
de usuar|o. Arora, varos a |rlroduc|r |a acc|ór asoc|ada a| acl|var |a opc|ór he||o wor|d de| reru Test. Para e||o,
s|luaros juslo arles de| segurdo siroo|o de adr|rac|ór y pu|sar e| oolór derecro de| ralór. Aparecerá ur reru
desp|egao|e. 3e|ecc|orad |a opc|ór:
|nsert | Pred|cate 6a|| | w|ndow, 0|a|og or Too|bar
Aparecerá ura rueva verlara, er |a que se deoe |rd|car s| se lrala de ur d|á|ogo predel|r|do ('Corror d|a|og¨), o
o|er de ur d|á|ogo (verlara o oarra de rerrar|erlas) del|r|do por e| usuar|o. 0e rorerlo, se|ecc|orad 6ommon
0|a|og. 0e erlre |os d|sl|rlos d|á|ogos eslárdar, se|ecc|orad d|g_Note (ul|||zado para gererar pequeras verlaras
cor |as que roslrar rersajes oreves). Por u|l|ro, |rlroduce e| lexlo "he||o wor|d" y da|e a| <ENTER>.
E| lexlo resu|larle es arora:

las|_W|r_er(_w|r,e_Veru(|d_re||o,_3r|llCl|A|l),0):-l,
T|l|e = 'T|l|e¨,
d|g_Nole(T|l|e, ¨le||o wor|d¨),l.

E| u|l|ro corle só|o se usa para lac|||lar |a |rserc|ór de cód|go y será e||r|rado por e| corp||ador de Pro|og.
Ejecula de ruevo e| prograra se|ecc|orardo Project|Run (o pu|sardo e| oolór er |a verlara pr|rc|pa| de v|sua|
Pro|og). 3e|ecc|ora arora de| reru de| proyeclo Test|he||o wor|d y aparecerá ura verlara cor e| s|gu|erle
d|á|ogo:

Desarrollo de Aplicaciones Jisuales 15

F|gura ''. E| o|a|ogo creaoo por |a ap||cac|on.
A rerudo, |os d|á|ogos predel|r|dos de |a opc|ór 'Corror 0|a|og¨ resu|lar sul|c|erles para ura ap||cac|ór
serc|||a. 3|r eroargo, laro|ér es pos|o|e del|r|r verlaras y 0|á|ogos cor e| lorralo que deseeros, er|azardo
despues su cód|go cor cua|qu|era de |as erlradas de| Veru.
0oservad córo reros proced|do:
1. leros creado ura rueva erlrada er e| Veru (Tesl) y |e reros asoc|ado ur suoreru cor |a erlrada 'le||o
wor|d¨ (eslo |o reros recro ed|lardo e| corporerle predel|r|do Task de| l|po Henú). La corslarle asoc|ada a|
ruevo |ler de| reru es '|d_re||o¨.
2. leros rea||zado ura ||arada a| 6ode Expert para gererar cód|go asoc|ado a |a corslarle de| reru '|d_re||o¨.
Para e||o, s|rp|ererle reros pu|sado Add 6|ause ÷ Ed|t 6|ause.
3. Por u|l|ro, ros reros co|ocado erlre |os dos corles (l) y reros |rserlado e| cód|go para rea||zar |a ||arada a
ura verlara que rueslre ura rola 'le||o wor|d¨ (usardo |nsert|Pred|cate 6a|||w|ndow, 0|a|og or Too|bar).
Tered er cuerla que e| order a segu|r ro l|ere porqué ser e| arler|or. 0e recro, poderos crear er ura pr|rera
lase lodos |os d|á|ogos y verlaras de rueslra ap||cac|ór, pasardo después a er|azar|os cor opc|ores corcrelas
de| reru pr|rc|pa|. Er e| s|gu|erle aparlado vereros coro del|r|r ur ruevo ródu|o que corlerga e| cód|go para
ura verlara, y segu|reros juslarerle e| order |rverso.

6ómo crear una nueva ventana

Er esle aparlado, desarro||areros |a lorra de crear ura rueva verlara cruzada por dos |ireas d|agora|es. E|
order que varos a segu|r arora es e| s|gu|erle:
• Crear ura rueva verlara "6ross" y produc|r e| cód|go por deleclo para |a verlara (a|racerárdo|o er
HYPR0J.PR0).
• Creareros ura rueva erlrada "6rossw|n" er e| reru Test (cuya corslarle asoc|ada será
|d_Test_crossw|n), y rareros que |a se|ecc|ór de esla erlrada rueslre |a verlara "6ross" por parla||a.
• F|ra|rerle, aclua||zareros e| cód|go por deleclo para que aparezca a|go er |a verlara "6ross" (ur par de
|ireas cruzadas).
Er pr|rer |ugar, varos a |rlroduc|r e| cód|go de ura rueva verlara er e| l|crero.
3egu|reros e| s|gu|erle proced|r|erlo para crear ura rueva verlara. 0erlro de |a verlara de| proyeclo, pu|sa |os
oolores w|ndow (a |a |zqu|erda) y New (arr|oa a |a derecra). Aparecerá e| s|gu|erle d|á|ogo:
Desarrollo de Aplicaciones Jisuales 16

F|gura '4. E| 0|a|ogo oe /rr|ouros oe |a venrana.
lrlroduce e| rorore 'Cross¨ er e| carpo Name y pres|ora 0K. Aulorál|carerle aparece e| w|ndow Ed|tor, que
eslá espec|a||zado er |rlroduc|r corlro|es a |as verlaras (p.e., oarras de desp|azar|erlo, oolores, elc.) y er
rod|l|car su la||a. Coro ro quereros racer éslo de rorerlo, c|erra esla verlara (6tr|+F4}.

F|gura '5. E| Eo|ror oe venranas.
Desarrollo de Aplicaciones Jisuales 17
6ód|go por defecto para |a ventana
Arora varos a |rlroduc|r aulorál|carerle e| cód|go oás|co para |a rueva verlara 'Cross¨.
Para crear e| cód|go de |a verlara, usareros coro arles e| 'w|rdoW Experl¨. Lo acl|varos pres|orardo 6rt|+w o
cor e| oolór 6ode Expert r|erlras e| rorore de verlara 6ross eslá se|ecc|orado derlro de |a verlara de|
proyeclo.


F|gura '6./nao|enoo coo|go por oelecro con e| w|noou Experr.
3e|ecc|ora e| rorore de ródu|o VYPR0J.PR0 ul|||zardo e| oolór de desp|azar|erlo . Arora |rlroduc|ros
cód|go esque|elo er esle l|crero cor e| oolór 0efau|t 6ode.
lrvocaros a| ed|lor cor e| oolór Ed|t 6ode, e| cua| ros rueslra e| s|gu|erle cód|go, que se ra gererado
aulorál|carerle derlro de| l|crero se|ecc|orado:
Desarrollo de Aplicaciones Jisuales 18
º8E0lN_wlN Cross
/¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Creal|or ard everl rard||rg lor W|rdoW: Cross
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯/
C0N3TANT3
º8E0lN Cross, CrealeParrs, 12:11:53-22.11.1995, Code auloral|ca||y updaledl
W|r_cross_w|rType = W_TopLeve|
W|r_cross_F|ags = [Wsl_3|ze8order,Wsl_T|l|e8ar,Wsl_Vax|r|ze,Wsl_V|r|r|ze,Wsl_C|ose,Wsl_C||p3|o||rgs|
W|r_cross_RCT = rcl(100,80,110,210)
W|r_cross_Veru = ro_reru
W|r_cross_T|l|e = ¨Cross¨
W|r_cross_le|p = |dr_corlerls
ºEN0 Cross, CrealeParrs

PRE0lCATE3
W|r_cross_er : ElAN0LER
CLAu3E3
W|r_cross_Creale(Parerl):-
W|r_Creale(W|r_cross_w|rType,W|r_cross_RCT,W|r_cross_T|l|e,
W|r_cross_Veru,Parerl,W|r_cross_F|ags,W|r_cross_er,0).
º8E0lN Cross, e_Creale
W|r_cross_er(_w|r,e_Creale(_),0):-l,
º8E0lN Cross, lr|lCorlro|s, 12:11:53-22.11.1995, Code auloral|ca||y updaledl
ºEN0 Cross, lr|lCorlro|s
º8E0lN Cross, Too|oarCreale, 12:11:53-22.11.1995, Code auloral|ca||y updaledl
ºEN0 Cross, Too|oarCreale
l.
ºEN0 Cross, e_Creale
ºVARK Cross, reW everls

º8E0lN Cross, e_3|ze
W|r_cross_er(_w|r,e_3|ze(_w|dlr,_le|grl),0):-l,
lF0EF use_loar
loo|oar_Res|ze(_w|r),
EN00EF
l.
ºEN0 Cross, e_3|ze

º8E0lN Cross, e_Veru, Parerl W|rdoW
W|r_cross_er(w|r,e_Veru(l0,CA3),0):-l,
PARENT = W|r_0elParerl(w|r),
W|r_3erdEverl(PARENT,e_Veru(l0,CA3)),
l.
ºEN0 Cross, e_Veru, Parerl W|rdoW

ºEN0_wlN Cross
verás que aparecer var|os corerlar|os soore e| cód|go luerle. E| s|slera |os usa para |oca||zar porc|ores de|
cód|go. verás a|guros corerlar|os de| l|po: 'Code auloral|ca||y updaledl¨, que |rd|car que ro deoes rod|l|car eslas
secc|ores, ya que serár aclua||zadas aulorál|carerle por |os 'Code Experls¨.
varos a er|azar esle cód|go cor e| reru Test de |a verlara 'Task w|ndow¨ de ejecuc|ór de| proyeclo. Pr|rero
arad|reros ura rueva erlrada Crosswin a| suoreru (cuyo eleclo será roslrar |a verlara Cross). Coro arles,
usa |os oolores Henu y Ed|t de |a verlara de| proyeclo para ed|lar e| reru Task. Cuardo aparece |a verlara de|
Desarrollo de Aplicaciones Jisuales 19
Henu Ed|tor, se|ecc|ora e| iler &Test y pres|ora e| oolór 8ubmenu. ul|||za e| oolór New para arad|r |a rueva
erlrada ¨Crossw|r¨.

F|gura '7. un irem oe| menu para acr|var |a venrana 0ross.
Arora arad|reros lurc|ora||dad a esla erlrada de| reru. Pr|rero acl|varos e| 'Code Experl¨ para |a verlara Task
(pres|orardo e| oolór w|ndow a |a |zqu|erda de |a verlara de| proyeclo, se|ecc|orardo Task w|ndow y
pres|orardo e| oolór 6ode Expert). Er |a verlara de| 'w|rdoW Experl¨, se|ecc|ora de |a ||sla Everl Type e| l|po
Menu y de |a ||sla de everlos, p|rcra soore id_7est_Crosswin. A corl|ruac|ór, pres|ora e| oolór Add 6|ause.

F|gura '8. /nao|enoo una c|ausu|a con e| Experro oe 0|a|ogos , venranas.
Para |rvocar a| ed|lor, pres|ora e| oolór Ed|t 6|ause. verás que se ra arad|do |a s|gu|erle c|áusu|a:
las|_W|r_er(_w|r, e_Veru(|d_Tesl_crossW|r, _3r|llCl|A|l),0):-l,
l.
3|lua e| cursor a| pr|rc|p|o de |a segurda |irea y ul|||za e| oolór derecro de| ralór para desp|egar e| reru que
perr|le se|ecc|orar:
|nsert | Pred|cate 6a|| | w|ndow, 0|a|og or Too|bar
(o pres|ora 6tr|+8h|ft+w).
Desarrollo de Aplicaciones Jisuales 20
Eslo race que aparezca de ruevo e| s|gu|erle d|á|ogo:

F|gura '9. Espec|l|canoo un preo|caoo a |nserrar.
3e|ecc|ora esla vez |a opc|ór User def|ned w|ndow, e |rd|ca e| rorore de |a verlara 6ross. Cuardo pres|ores e|
oolór 0K, se |rserlará aulorál|carerle ur pred|cado para crear |a verlara 'Cross¨.
las|_W|r_er(_w|N, e_Veru(|0_Tesl_CrossW|r, _3r|llCl|A|l),0):-l,
W|r_cross_Creale(_w|r),
l.
Ejecula |a ap||cac|ór y corprueoa que |a rueva erlrada Test|6rossw|n lurc|ora correclarerle y preserla ura
verlara cor e| lilu|o 'Cross¨.
Er esle rorerlo |a verlara aparece er o|arco. ¸Córo se puede corsegu|r que aparezca a|go er e||a? Er pr|rer
|ugar, podriaros p|arlearros e| uso de 'Wr|le¨ para roslrar lexlo por |a verlara. 3|r eroargo, eslo ro lurc|orará.
3| |rlroduc|ros ura ||arada de| l|po:
Wr|le('0orde esloy?¨)
er e| cód|go, e| rersaje s|erpre aparecerá er |a verlara de rersajes de |a ap||cac|ór ('Vessages¨). Er e|
s|gu|erle aparlado vereros córo corsegu|r que aparezcar d|oujos o lexlo er ura verlara especil|ca.
Hejorando |a func|ona||dad de |a ventana
varos a rev|sar arora a|guros aspeclos oás|cos de| d|oujo de verlaras. ur prograra s|erpre deoe eslar
preparado para red|oujar ura verlara. Por ejerp|o, s| ura verlara ra s|do cuo|erla por olra, ray que red|oujar |os
corler|dos.
Cuardo ura verlara ra de ser red|oujada, e| 'everl-rard|er¨ de |a verlara rec|oe ur everlo e_0pdate y reros de
arad|r e| cód|go para reracer e| d|oujo.
Coro ejerp|o, d|oujareros ura cruz de esqu|ra a esqu|ra de |a verlara. lrvocaros e| 'w|rdoW Experl¨
(se|ecc|orardo |a verlara 'Cross¨) y arad|ros ura c|áusu|a (Add 6|ause + Ed|t 6|ause) para e| everlo e_0pdate:
Desarrollo de Aplicaciones Jisuales 21

F|gura 20. /nao|enoo una c|ausu|a para mane¡ar e| evenro e_upoare.
Para arad|r ||aradas a pred|cados vPl, poderos usar |a erlrada 'lrserl¨ de| reru de| ed|lor o usar |a lec|a de
ace|erac|ór 8h|ft+6tr|+V que, de rarera aulorál|ca, rueslra |a ||sla de pred|cados vPl. Er esle caso, para d|oujar
ura cruz soore |a verlara, podé|s |rlroduc|r rarua|rerle e| s|gu|erle lragrerlo de cód|go:
W|r_cross_er(_w|r, e_updale(_),0):-l,
RCT = W|r_0elC||erlRecl(_w|r),
RCT = rcl(_,_,R,8),
draW_L|re(_w|r, prl(0,0),prl(R,8)),
draW_L|re(_w|r, prl(0,8),prl(R,0)),
l.
Ejecula |a ap||cac|ór y corprueoa que |a rueva erlrada Test|6rossw|n lurc|ora correclarerle y preserla ura
verlara cor e| lilu|o 'Cross¨ y e| s|gu|erle aspeclo:

F|gura 2'. /specro oe |a venrana 0ross.
Esla verlara se corporla de lorra cas| correcla: puedes crear ru|l|p|es cop|as de |a verlara, rover|a, cuor|r|a
cor olra y vo|ver|a a racer v|s|o|e.
Type these Iour lines in here, the
coordinates are relative to the
window, so top leIt is (0,0)
Desarrollo de Aplicaciones Jisuales 22

Pero s| caro|as e| lararo de |a verlara, descuor|rás ur proo|era. 3ó|o se red|ouja correclarerle |a parle rueva
de |a verlara, porque e| s|slera 0ul suoyacerle eslá prograrado para red|oujar e| rir|ro pos|o|e. Esle
corporlar|erlo es correclo para rucras verlaras, coro ed|lores, d|oujos, elc. Pero, er rueslro caso, es
recesar|o red|oujar |a verlara erlera cuardo se caro|a su lararo. ura rarera de lorzar eslo es |rlroduc|r ura
||arada a| pred|cado win_lnvalidate er e| everlo e_3ize: lrvoca de ruevo e| 'w|rdoW Ed|lor¨ y pres|ora e| oolór
Ed|t 6|ause para e| everlo e_3ize. lrserla |a ||arada a win_lnvalidate, de lorra que e| cód|go para e| everlo
e_3ize adqu|era e| s|gu|erle aspeclo:
W|r_cross_er(_w|r, e_3|ze(_w|dlr, _le|grl),0):-l,
W|r_lrva||dale(_w|r),
lF0EF use_loar
loo|oar_Res|ze(_w|r),
EN00EF
l.

3| arora vue|ves a ejecular |a ap||cac|ór, corprooarás que |a verlara se corporla de lorra correcla.
0e lorra s|r||ar a coro reros proced|do para d|oujar |as dos |ireas cruzadas, es pos|o|e laroier ul|||zar olras
||aradas que gererer circu|os, reclárgu|os, lexlo, elc. Por ejerp|o, poderos arad|r |a s|gu|erle |irea:
draW_Texl(_w|r, 55, 20, 'Eslo aparecera er |a verlara Crossl¨),
a| l|ra| de| cód|go de 'W|r_cross_er¨ para e| everlo 'e_updale¨ (delrás de |as 1 |ireas que reros |rserlado arles
para d|oujar |as dos |ireas cruzadas). Ejecula de ruevo |a ap||cac|ór y corprueoa su eleclo.
No varos a corerlar rás acerca de |as verlaras. Podé|s corsu|lar |os rarua|es de| v0E y vPl (o |a ayuda or-
||re) para corprerder rejor |a r|s|ór de cada everlo, asi coro |as d|sl|rlas lurc|ora||dades (oolores, oarras de
rerrar|erlas, rerus, elc.) que se |es pueder |rcorporar. Er e| s|gu|erle aparlado varos a lralar, er caro|o, córo
crear ur d|á|ogo del|r|do por e| prograrador.
6ómo crear un nuevo 0|á|ogo

lasla arora só|o reros creado verlaras. 3|r eroargo, |a rayoria de ap||cac|ores ul|||zar rás a rerudo d|á|ogos
que verlaras. Rea|rerle, |os d|á|ogos sor verlaras espec|a||zadas er erlrada/sa||da que ro reces|lar ser
red|oujados o aclua||zados.
|HP0RTANTE: lay dos c|ases de d|á|ogos: s|r rodo (modeless) y roda|es (modal). Los pr|reros sor coro |as
verlaras que reros d|oujado arles (se puede aor|r ur d|á|ogo s|r rodo y segu|r lraoajardo cor olras verlaras);
s|r eroargo, cuardo se crea ur d|á|ogo roda|, ro es pos|o|e lraoajar cor olras verlaras o d|á|ogos rasla que se
ra lerr|rado cor e| d|á|ogo roda| (|o usua| cuardo se lrala de d|á|ogos de erlrada de dalos, por ejerp|o).
E| cód|go para rarejar d|á|ogos es ruy serejarle a| de |as verlaras. lay ura rerrar|erla espec|a| para rarejar
d|á|ogos que perr|le |r|c|a||zar |os corlro|es, exlraer |os va|ores resu|larles de |a ejecuc|ór y va||dar |os dalos. Esla
rerrar|erla eslá soporlada por e| '0|a|og Experl¨.
Para crear ur d|á|ogo de ejerp|o, s|gue |os s|gu|erles pasos:
1. Crea ur suoreru exlra ||arado 0|a|og oajo |a erlrada Test de |a oarra de reru Task.
2. Crea ur ruevo d|á|ogo ||arado Person derlro de |a verlara de| proyeclo (se|ecc|ora 0|a|og y New).
3. Aparecerá ur ed|lor de d|á|ogos. Vele er e| d|á|ogo |os s|gu|erles corlro|es:
Ed|l corlro|: idc_name (escr|oe eslo er |a |irea 'Corslarl¨, dejardo 'Texl¨ er o|arco)
Ed|l corlro|: idc_age (escr|oe eslo er |a |irea 'Corslarl¨, dejardo 'Texl¨ er o|arco)
Rad|o oullor: idc_male (escr|oe eslo er |a |irea 'Corslarl¨, dejardo 'Texl¨ er o|arco)
Rad|o oullor: idc_female (escr|oe eslo er |a |irea 'Corslarl¨, dejardo 'Texl¨ er o|arco)
Crec| oox: idc_married (escr|oe eslo er |a |irea 'Corslarl¨, dejardo 'Texl¨ er o|arco)
L|sloox: idc_skills (se|ecc|ora |as opc|ores Hu|t|se|ect y Extended se|ect|on)
Desarrollo de Aplicaciones Jisuales 23

lrlerla corsegu|r que e| d|á|ogo lerga e| s|gu|erle aspeclo (aurque s|r r|rgur va|or er |os carpos):

F|gura 22. 0onl|guranoo un o|a|ogo.
Las el|quelas que aparecer a |a |zqu|erda de |os 'Ed|l corlro|s¨ y 'L|sloox¨ sor corlro|es de| l|po '3lal|c lexl¨. La
caja que rodea |os oolores 'Va|e¨ y 'Fera|e¨ es ur '0roup 8ox¨. Puedes se|ecc|orar var|os corlro|es p|rcrárdo|os
cor e| ralór, r|erlras se rarl|ere pu|sada |a lec|a <CTRL>. 3| se|ecc|oraros var|os corlro|es, es pos|o|e
a||rear|os de lorra adecuada usardo |as opc|ores de| reru Layout.
Arora, |rvoca e| 'Code Experl¨ para e| d|á|ogo, e||ge e| ródu|o luerle 'VYPR0J.PR0¨ y e| esl||o de cód|go
dialog_Create[} arles de acl|var e| oolór 0efau|t 6ode. Fijale er que e| order segu|do es s|erpre e| r|sro: (1)
crearos ur ruevo e|ererlo (verlara o d|á|ogo), (2) |rlroduc|ros cód|go por deleclo para e| ruevo e|ererlo, y (3)
er|azaros a|gura de |as opc|ores de| reru de |a ap||cac|ór cor e| ruevo e|ererlo.

F|gura 2J. /nao|enoo coo|go para un o|a|ogo.
Para ver córo lraoaja e| cód|go gererado, só|o ros la|la er|azar |a erlrada 0|a|og de| reru Test cor e| ruevo
d|á|ogo. Para e||o, procederos coro s|erpre: se|ecc|ora Task Henu, pu|sa 6ode Expert, se|ecc|ora |a verlara
Task w|ndow, everlos de l|po Henu, e| everlo |d_Test_0|a|og y pu|sa Add 6|ause y Ed|t 6|ause. F|ra|rerle,
Desarrollo de Aplicaciones Jisuales 24
s|luale dorde varos a |rserlar |a rueva ||arada a| d|á|ogo, pu|sa e| oolór derecro de| ralór y se|ecc|ora
|nsert|Pred|cate 6a|||w|ndow, 0|a|og or Too|bar. 0espués, se|ecc|ora User 0ef|ned 0|a|og e |rd|ca Person.
Ejecula de ruevo |a ap||cac|ór y corprueoa córo se desp||ega e| d|á|ogo a| se|ecc|orar Test|0|a|og.
3|r eroargo, de rorerlo, |os dalos |rlroduc|dos ro l|erer eleclo a|gurol A corl|ruac|ór vereros córo poderos
rarejar eslos dalos.
E| Experto en 0ialogos

ur d|á|ogo rea||sla rueslra uros va|ores por deleclo a| erpezar |a ejecuc|ór, perr|le que éslos se rod|l|quer
|rleracl|varerle y devue|ve e| ruevo corjurlo de va|ores cuardo lerr|ra su ejecuc|ór. Para lac|||lar lodo eslo,
d|sporeros de |a rerrar|erla '0|a|og Pac|age Experl¨, que se acl|va se|ec|orardo ur rorore de d|á|ogo er |a
verlara de| proyeclo, |rvocardo e| 'Code Experl¨ y pres|orardo erlorces e| oolór 0|a|og Pack.
La verlara de| '0|a|og Pac|age Experl¨ eslá d|v|d|da er dos parles. La parle |zqu|erda corl|ere ura ||sla de |os
corlro|es d|spor|o|es. A|guros aparecer prel|jados cor '÷', que s|gr|l|ca que ur 'doo|e c||c|¨ soore e| '÷' rará
aparecer |rlorrac|ór rás dela||ada. La parle derecra se usa para caro|ar |os alr|oulos de| corlro| se|ecc|orado y
l|jar pos|o|es reslr|cc|ores que se usarár para |a va||dac|ór de |os dalos.

F|gura 24. E| 0|a|og Package Experr -E| campo hame.
3e|ecc|orado e| corlro| que va a corlerer |os rorores de persora ( ), e| l|po de var|ao|e deoeria ser
8tr|ng. P|rcra soore e| y, cuardo caro|e a , se|ecc|ora ,espec|l|ca er e| carpo
8ett|ng Hethod que e| va|or |r|c|a| ra de ser ura var|ao|e (ul|||za |a oarra de desp|azar|erlo verl|ca|). lrlroduce e|
va|or |r|c|a| er e| carpo |n|t|ate as y er e| carpo Var|ab|e (|n|t}, |rlroduce e| rorore de var|ao|e Name que se
usará para recoger e| va|or |rlroduc|do por e| usuar|o.
Desarrollo de Aplicaciones Jisuales 25

F|gura 25. E| "0|a|og Package Experr´ -E| campo /ge.
Para e| carpo Age, espec|l|ca que 1) es ur erlero, 2) será recog|do por ura var|ao|e, 3) e| rorore de |a var|ao|e es
¨Age¨, 1) e| rélodo de |rlroducc|ór será espec|l|cado por e| usuar|o , 5) e| va|or rir|ro es ¨0¨, ê) e| va|or ráx|ro
es ¨Z0¨.

F|gura 26. E| "0|a|og Package Experr´ -E| campo Varr|eo.
E| carpo Harr|ed es ur 'crec| oox¨. Espec|l|caros que e| va|or será a|racerado er |a var|ao|e Varr|ed.
Desarrollo de Aplicaciones Jisuales 26

F|gura 27. E| "0|a|og Package Experr´ -E| campo $k|||s ||sr oox.
E| próx|ro carpo es ura ||sla de capac|dades o deslrezas de |a persora ('s||||s¨), que a|racerareros er ura
'ru|l| se|ecl|or ||sl oox¨. La |dea es que |a ||sla de |lers sea l|ja y que puedar se|ecc|orarse |lers de esla ||sla
(r|gr||grled).
Er e| carpo A|ternat|ves, se puede erlrar |a ||sla |rlroduc|erdo |os |lers red|arle slr|rgs separados por coras.
Er e| carpo |n|t va|ue, puedes espec|l|car que |a var|ao|e 8k|||s devo|verá ura ||sla de erleros (|os ird|ces que
corresporder a |as deslrezas se|ecc|oradas).

F|gura 28. E| "0|a|og Package Experr´ -E| grupo Rao|o 3urron.
La u|l|ra cosa a racer derlro de| '0|a|og Pac|age Experl¨ es espec|l|car qué oolores Rad|o perlerecer a qué
grupos (R8 groups) y dar ur rorore a |a var|ao|e que perr|l|rá |r|c|a||zar cada grupo y devover e| va|or l|ra|.
Los ruevos 'rad|o oullor groups¨ se crear pres|orardo e| oolór New, y usardo |os oolores Add y 0e| para
|rlroduc|r y e||r|rar oolores de |os d|sl|rlos grupos.
F|ra|rerle, sa| de| 0|a|og Package y de| 6ode Expert. Puedes ed|lar e| l|crero VYPR0J.PR0 para ver e| cód|go
que se ra gererado.
Desarrollo de Aplicaciones Jisuales 27
|HP0RTANTE: arles de ejecular |a ap||cac|or, ray que pu|sar er UP0ATE 600E para que |os caro|os rea||zados
desde e| 0|a|og Package lergar eleclo. Vás aur, |a lorra correcla de rea||zar ur d|á|oso seria |a s|gu|erle:
pr|rero, crearos e| d|á|ogo y as|graros |os l|pos correclos desde e| 0|a|og Package; y, después, pu|saros soore
0efau|t 6ode para gererar e| cód|go ya cor |a |rlorrac|ór de l|pos correcla.
Ejecula de ruevo |a ap||cac|ór y corprueoa que, s| se |rlroduce ur va|or luera de rargo para Age, se produce ur
rersaje de error que |o |rd|ca.
3|r eroargo, veré|s que |a ap||cac|ór s|gue s|r racer 'rada¨. A parl|r de esle purlo, cor|erza rea|rerle |a larea
de| prograradorl varos a rev|sar e| cód|go gererado aulorál|carerle y a rod|l|car|o para que raga a|go cor |os
dalos |rlroduc|dos por e| d|á|ogo.
E| cód|go generado
Ed|lad e| l|crero VYPR0J.PR0 y ercorlraré|s e| s|gu|erle cód|go:
Desarrollo de Aplicaciones Jisuales 28
C0N3TANT3

º8E0lN Persor, CrealeParrs, 19:0Z:0Z-2ê.10.199Z, Code auloral|ca||y updaledl
d|g_persor_Resl0 = |dd_persor
d|g_persor_0|gType = Wd_Voda|
d|g_persor_le|p = |dr_corlerls
ºEN0 Persor, CrealeParrs

PRE0lCATE3

d|g_persor_er : ElAN0LER
d|g_persor_rard|e_arsWer(lNTE0ER Erd8ullor,0lAL00_vAL_Ll3T)
d|g_persor_updale(0lAL00_vAL_Ll3T)

CLAu3E3

d|g_persor_Creale(Parerl):-

NAVE = ¨¨,
VARRlE0 = o_la|se,
A0E = vo|d,
3KlLL3 = [0|,
ºVARK Persor, reW var|ao|es

d|a|og_CrealeVoda|(Parerl,d|g_persor_Resl0,¨¨,
[
º8E0lN Persor, Corlro|L|sl, 19:0Z:0Z-2ê.10.199Z, Code auloral|ca||y updaledl
dl(|dc_rare,ed|lslr(NAVE,[|),ropr),
dl(|dc_rarr|ed,crec|oox(VARRlE0),ropr),
dl(|dc_age,ed|l|rl(A0E,[rarge(0,Z0)|),ropr),
dl(|dc_s||||s,||sloox([¨Pro|og¨,¨C¨,¨C÷÷¨,¨Pasca|¨,¨0alaoase¨,¨Cooo|¨,¨Ada¨,¨8as|c¨|,3KlLL3),ropr),
dl(|dc_ra|e,rad|ooullorgroup([|dc_ra|e,|dc_lera|e|),ropr)
ºEN0 Persor, Corlro|L|sl
|,
d|g_persor_er,0,vALLl3T,AN3wER),
d|g_persor_rard|e_arsWer(AN3wER,vALLl3T).

d|g_persor_rard|e_arsWer(|dc_o|,vALLl3T):-l,
d|g_persor_updale(vALLl3T).
d|g_persor_rard|e_arsWer(|dc_carce|,_):-l. º lard|e Esc ard Carce| rere
d|g_persor_rard|e_arsWer(_,_):-
errorex|l().

d|g_persor_updale(_vALLl3T):-
º8E0lN Persor, updale corlro|s, 19:0Z:0Z-2ê.10.199Z, Code auloral|ca||y updaledl
_NAVE = d|a|og_vL0elslr(|dc_rare,_vALLl3T),
_VARRlE0 = d|a|og_vL0elCrec|(|dc_rarr|ed,_vALLl3T),
_A0E = d|a|og_vL0el|rl(|dc_age,_vALLl3T),
d|a|og_vL0elL|sl8ox(|dc_s||||s,_vALLl3T,_l0C_3KlLL3_lTEVLl3T,_3KlLL3),
_l0C_VALE = d|a|og_vL0elRad|ooullor(|dc_ra|e,_vALLl3T),
ºEN0 Persor, updale corlro|s
lrue.

ºVARK Persor, reW everls

d|g_persor_er(_,_,_):-l,la||.

ºEN0_0L0 Persor
Desarrollo de Aplicaciones Jisuales 29

3| ooservas e| cód|go, verás que e| pred|cado 'd|g_persor_Creale¨ es qu|er gesl|ora |a creac|ór de |a verlara. Ta|
y coro eslá arora e| cód|go, |o ur|co que race es crear |a verlara, a|racerar |os va|ores que se |rlroduzcar er
|as var|ao|es que |e reros |rd|cado (er e| 0|a|og Package) y cerrar |a verlara a| pu|sar 0k.
Para arad|r cód|go, |a lorra rás serc|||a cors|sle er arad|r|o a| l|ra| de |a del|r|c|ór de 'd|g_persor_updale¨.
Corerceros por a|go s|rp|e. Escr|oe |o s|gu|erle:
d|g_persor_updale(_vALLl3T):-
º8E0lN Persor, updale corlro|s, 19:23:3ê-2ê.10.199Z, Code auloral|ca||y updaledl
_NAVE = d|a|og_vL0elslr(|dc_rare,_vALLl3T),
_VARRlE0 = d|a|og_vL0elCrec|(|dc_rarr|ed,_vALLl3T),
_A0E = d|a|og_vL0el|rl(|dc_age,_vALLl3T),
d|a|og_vL0elL|sl8ox(|dc_s||||s,_vALLl3T,_l0C_3KlLL3_lTEVLl3T,_3KlLL3),
_l0C_VALE = d|a|og_vL0elRad|ooullor(|dc_ra|e,_vALLl3T),
ºEN0 Persor, updale corlro|s
Wr|le(¨Norore: ¨, _NAVE), r|, /¯ Aqui cor|erza |a parle rueva ¯/
Wr|le(¨Edad: ¨, _A0E),r|,
Wr|le(¨Casado: ¨,_VARRlE0), r|,
Wr|le(¨3exo: ¨, _l0C_VALE),r|,
Wr|le(¨3||||s: ¨,_3KlLL3),r|,r|,
lrue.

Ejecula de ruevo e| prograra. 3e|ecc|ora |a opc|ór Test|0|a|og e |rlroduce dalos er |os carpos. A| pu|sar e|
oolór 0K, aparecerá (er |a verlara Hessages) ura |rlorrac|ór de esle esl||o:
Norore: Ara
Edad: |(2ê)
Casado: 1
3exo: 101
3||||s: [0,3,Z|

0oserva que e| va|or de |a var|ao|e _ACE ro es ur rurero erlero. 3| qu|eres oolerer e| va|or erlero
correspord|erle, se puede racer asi:
_Age = |(Edad)

susl|luyerdo erlorces 'Wr|le(¨Edad: ¨, _A0E),r|,¨ por 'Wr|le(¨Edad: ¨, Edad),r|,¨.
Rea|rerle, e| l|po de |a var|ao|e 'Age¨ ro es exaclarerle ur erlero, s|ro 0|AL0C_|NT. 'Nare¨, por e| corlrar|o, si
es de| l|po eslárdar 8TR|NC, r|erlras que 'Varr|ed¨ es de| l|po ß00LEAN, '3||||s¨ de| l|po |L|8T, elc. La
|rlorrac|ór corp|ela soore |os l|pos erp|eados por |os d|á|ogos eslá er e| rarua| de| vPl.
Prueoa arora cor d|sl|rlos va|ores de erlrada y ooserva |os va|ores que se rueslrar er |a verlara 'Vessages¨.
F|ra|rerle, varos a rod|l|car de lorra serc|||a e| cód|go luerle para |rlroduc|r va|ores de erlrada, rec|o|r |os
va|ores de sa||da rod|l|cados y a|racerar d|cros va|ores. Parl|ros de| cód|go or|g|ra| de VYPR0J.PR0 (puedes
oorrar |as |rslrucc|ores que reros arad|do arles). varos a arad|r s|rp|ererle ura oase de dalos cor ur só|o
c||erle, cuyos dalos se roslrarár a| aor|r |a verlara de d|á|ogo, se perr|l|rá su rod|l|cac|ór y, l|ra|rerle, se
|rserlarár de ruevo er |a 80. Para e||o, rod|l|caros pr|rero e| pred|cado dlg_person_Create para que rea||ce
d|cras acc|ores. E| ruevo cód|go rod|l|cado es:
Desarrollo de Aplicaciones Jisuales 30
C0N3TANT3

º8E0lN Persor, CrealeParrs, 19:23:3ê-2ê.10.199Z, Code auloral|ca||y updaledl
d|g_persor_Resl0 = |dd_persor
d|g_persor_0|gType = Wd_Voda|
d|g_persor_le|p = |dr_corlerls
ºEN0 Persor, CrealeParrs

0ATAßA8E - emp|eados
Emp|eado(str|ng, d|a|og_|nt, boo|ean, |||st, d|a|og_contro|_|d}

PRE0lCATE3

d|g_persor_er : ElAN0LER
d|g_persor_rard|e_arsWer(lNTE0ER Erd8ullor,0lAL00_vAL_Ll3T, PER30N) /¯ Nuevo argurerlo ¯/
d|g_persor_updale(0lAL00_vAL_Ll3T, PER30N) /¯ Nuevo argurerlo ¯/
ry_persor_Creale(wlN00w Parerl,PER30N lr, PER30N 0ul) /¯ Nuevo pred|cado ¯/

CLAu3E3
emp|eado("pepe",|(18},b_fa|se,[1,3j,|dc_ma|e}.

d|g_persor_Creale (Parerl) :-
retract(emp|eado(NAHE,HARR|E0,ACE,8K|LL8,8EX}},!,
ºVARK Persor, reW var|ao|es

d|a|og_CrealeVoda|(Parerl,d|g_persor_Resl0,¨¨,
[
º8E0lN Persor, Corlro|L|sl, 19:23:3ê-2ê.10.199Z, Code auloral|ca||y updaledl
dl(|dc_rare,ed|lslr(NAVE,[|),ropr),
dl(|dc_rarr|ed,crec|oox(VARRlE0),ropr),
dl(|dc_age,ed|l|rl(A0E,[rarge(0,Z0)|),ropr),
dl(|dc_s||||s,||sloox([¨Pro|og¨,¨C¨,¨C÷÷¨,¨Pasca|¨,¨0alaoase¨,¨Cooo|¨,¨Ada¨,¨8as|c¨|,3KlLL3),ropr),
dl(3EX,rad|ooullorgroup([|dc_ra|e,|dc_lera|e|),ropr)
ºEN0 Persor, Corlro|L|sl
|,
d|g_persor_er,0,vALLl3T,AN3wER),
d|g_persor_rard|e_arsWer(AN3wER,vALLl3T,NeWPersor).

d|g_persor_rard|e_arsWer(|dc_o|,vALLl3T,NeWPersor):-l,
d|g_persor_updale(vALLl3T,NeWPersor).
/¯ reros desacl|vado e| reslo de oolores (aparle de| 0K) ¯/
º d|g_persor_rard|e_arsWer(|dc_carce|,_,_):-l. º lard|e Esc ard Carce| rere
º d|g_persor_rard|e_arsWer(_,_,_):-
º errorex|l().

/¯ Esla es |a vers|or rod|l|cada de d|g_persor_updale, para que devue|va |a rueva persora a |rserlar ¯/

d|g_persor_updale(_vALLl3T,persor(_NAVE,_A0E,_VARRlE0,_3KlLL3,_3EX)):-
º8E0lN Persor, updale corlro|s, 19:23:3ê-2ê.10.199Z, Code auloral|ca||y updaledl
_NAVE = d|a|og_vL0elslr(|dc_rare,_vALLl3T),
_VARRlE0 = d|a|og_vL0elCrec|(|dc_rarr|ed,_vALLl3T),
_A0E = d|a|og_vL0el|rl(|dc_age,_vALLl3T),
d|a|og_vL0elL|sl8ox(|dc_s||||s,_vALLl3T,_l0C_3KlLL3_lTEVLl3T,_3KlLL3),
_3EX = d|a|og_vL0elRad|ooullor(|dc_ra|e,_vALLl3T),
ºEN0 Persor, updale corlro|s
assert(emp|eado(_NAHE,_HARR|E0,_ACE,_8K|LL8,_8EX}},!,
lrue.

Desarrollo de Aplicaciones Jisuales 31
ºVARK Persor, reW everls

d|g_persor_er(_,_,_):-l,la||.

ºEN0_0L0 Persor

ura recorerdac|ór: eslud|a e| cód|go arler|or, |rcorpóra|o a VYPR0J.PR0, corp||a y ejecula de ruevo e|
proyeclo y corprueoa su correclo lurc|orar|erlo.
Para l|ra||zar, recuerda que |os pasos eserc|a|es a aoordar er e| desarro||o de ura rueva ap||cac|ór w|rdoWs sor:
1. Crear ur ruevo proyeclo (|rd|cardo coro eslraleg|a ul: vPl).
2. Crear |os d|á|ogos (ro predel|r|dos) y verlaras que sear recesar|os (er e| r|sro ródu|o de| proyeclo o er
ródu|os d|sl|rlos).
3. 0ererar e| cód|go esque|elo para cada corporerle usardo |a opc|ór 0efau|t 6ode de| 6ode Expert.
1. Exlerder e| cód|go esque|elo para aurerlar su lurc|ora||dad (s| es recesar|o).
5. 0el|r|r ruevas erlradas er e| reru pr|rc|pa| de |a ap||cac|ór (Task) y er|azar|as cor |os d|sl|rlos oojelos que
reros creado (usardo e| 6ode Expert para asoc|ar acc|ores a |as corslarles de |as erlradas de| reru).
ê. F|ra|rerle, e| esque|elo de |a ap||cac|ór eslará corp|elo, pero ésla ro rara rada ul||. Aqui cor|erza vueslra
larea coro prograradores. 0eoé|s rod|l|car e| cód|go er |a |irea de |o que reros v|slo er esle u|l|ro aparlado
rasla corsegu|r que |a ap||cac|ór rea||ce su oojel|vo.

)
! * # "*. * ! * , 0) % % * *

,
)

%
, % ) ) * ) ) / * -1 ) ! * % / / % *) * " ) / ) - , 0 ! , % *) ) ) ) / *! 2 0 ) 0) / 4 ) * 3 *3 ! () , . 5 & )0 %3 * 3 ) ) * " / * * * ) , ) - +%) ! * % " ) * 0 * * 2* 3

" $ % ' ' ' ' ' $ $ $ % % . $ ( ( ) $ )

! # # & * + , + + + # , / #

, "

* ()

4

. * *

*

)

,

%3 9

%

6 7 !-

8 ()

*

*

$) *

()

) %6 "

,

%3 0 * 0 * 3

* *

* * -

*

!- #

" "
! * % +%) * 5 * * ) / 6 9 6 * 3 % * () ! 6 3 3 ) * * &" & 0 * * "

#
* :

"$
, -! % 3 &' * ) 6 &( ;- < 5 */ * &) * 6- < *= 0 0 & */ - < > )* * * %) * % 4 30 ) () * . -! ! * 6 ) %) * ) 9 *

+ , -. /0 /0 -%1 %1 -/ -) -

% = = = @ @ , , # , , . , ) " " 0 " = -) -/ -+ * * * * * , * * *0 A 0. " ) * * * * 4 * * * . * )* "* ) " " * > * 0 "* *" * * " * * " * "3 % * * * * % * * * * * * * * 1 ? . * * . 2 . " " -1 ) * * * * " * . * * ) * " " * * *" . 0-

/0 /0 /0 /0 /0 -

.! ! * 5 %) * * * $ ) * * % % % " " " " " 4 * ' 6 * 9 * 2 * * ") / () / 5 6 2 .9 ) / . :. * * 3 * 63 > 4 * / . 2 7 . &% . * - ' ( 8 ( - . > *.

" -< * () " > )* / -< * * () * - !" # $ % . 0 * ) / 3 ) ( ) ** > 6 * F * 3 :! 0. :< ' () ) () * -. > ) */ . ' D 3 ( ) )0 * () " - 8 ! * * 5 * ) * * " * . 1D :+ > * ) D # :1 2 * ) * / ) * () * 3 / 6 . ' D 3 ( ) ) * !2 *. . 9: ". ' D -. 3 / * 4 * 4 . * G !E 1 !' H . . 3 . -.! * 0 * 9 B C .+ * ) / 3 () () *) =: 9 ) 0 " * -$ / * @ :. ) 6 / ." ! :+ * " * !2 -# () :.. / * % () * / ) ) * % 30 . * * 3 * 3 / " () 5 / * () ) 5 * 3 ) */ * 4 . > * E *. % % ) * ) 3 3B C.! * ) @ %) . () -+ ) 3 > * ) . * )" " * * / * * * > 3 ) 6 / ) * * % ) .'D 3 3* 3 > 9 . 3 () * * / ) D < # -. * .

* * 0 * -< : ) 6 ) .) * * ) * * */ * * " / < % ) ) < % ) ) */ - ") * / * % () * ) > * * 2* () 3 -! 0 * -! * * ) () * * * ) * .$ D .! * * ) / ) 3 * " * ) / ) ) * -. ' .! < * 2* 2* ) / :-$ J ' . . * 0 * * () .< * % " * * 0 * -! * * ) ) ) * * * " ) * 0 * " * " */ 0) - " 2* */ ) * ") % * -+ * 3 / :. ) > 4 . * ) * * > . -.* * ) " * " ) * -! * / 3 . + ) ") * 5 * I-. / ) * ) )* * % * * % * * " ) % * -! " 0 * -J / % ) % ) ) " :G ) * < * " */ / 3 * 6 6 * 6 * 0 * ) 0 * .! * % " ( < * " :G * 2* * * > *H -K +B .> . < * / :-?B .! ) * 3 * 6 3 * * / * * -# * * ) * . - . . ) &* 0 * -< */ 0) ) * * ! .. * . ' D / */ < ) * * * * * 0 */ ) > *H . () ) > 4 * ... B ) : * ) . ) 6 % */ B ) * 0 * .. .

- 0 * - / * :* . / * > : . 0 : . ' D -. .# 0 * 3 * * ) " * * * 0 * " . ' D 3 ) " */ -' • :! • D +< •$ •$ * %. / / ) 3 * * .' 4 * + ) * * )* " + * ? * * * 0 * -! " 0 * ) ! * % "3 + * * )* ) 2 * * * 0 * * * 3 * * * * ) * * -< * " .- # . ' D * " % ) %) * * 9 * / ) */ B C .< * () "& / E . ? @ . .* * * % ) / % / % * 3 % 0 3 > 3 * 0 ) 2/ * * ) 2/ * 0 * -# ) % 3L . " > " / % () * ) *) / % () B C . ' D -.

3 * () ) * 3 / * * 3 6 *) ") ") 0 * 0 * %) ) * % %' " * 0 / * * * ) 6-.8 . > 3 * % / 5 * *) 0 ) () * & . 2 0 > )* * * > / % * 3 ) % */ 3 * * 0 * 3 / < * > ) / ) > / 0 * % * 9) )* * * * > ) / " * 9 0 * 0 * ) &!" < ! " * * * .

*/ 4 * * ) * @ %) " * 9E > 3 $ * M1 3 6 / 6 * () & ) ) F - ) )* D 3* 0 * ) ) :N . * () :$ * *. * * 6 ' * * 3 0 () * * * 0 * * ) C ) ) * % 6 :1 = . . E-! () * .. *) * () B * .> .+ * * 9% C" 0( ) * * 6 () * 3 :1 2 *. 0 * - ' 0 1 (!) 6 () % )* . ) () * * -. () ) * D () ) D * * @ .) A */ .

9( * * % * ) 0 * 3 ) */ / ) * 0 #( * ) ) / $ */ ) 6 -+ * ) / 3 / ) # 4 * -$ ) + . * * . ) 6 B 6 * * :1 2 *.!) * - . / > < ) A / / 6 * :1 * * *.+!) + * ) 69 / 3 ) '+. .+ * 6 * ! ) %' * ) * :D * .

@ * 6 ( ) + + .) .) ) * () * 6 * > */ ) @ . ) * " ) "%) 6 5 1 " 6 * () )% * * * " * : 0 / * * -.) * '+ * */ :$ " * *. ) / () */ .0! ./ % ") * )* )* 2!# ! * # () " *) . % 9 3 ) * * : * )* 3 . -! * * K () 4 & %' 1 0 % * * * * * ) % * * )* * ) () 3 9 : F0 .

! * ) " * * 0 ) # $ ) * / % . !2 *. + * ) 0 / 5 / / * * ) * *3 ) 6 3 ) ) / % ) */ 6 3 */ * ) 4 1 5 */ * * * * > ) -+ " * 5 () / () % ) " ) .3!) .. 03 */ ) * * + . * * 6 ) . * % : % % " ) -! 4 * % * * 3 %) ) * * * * * 0 . 6 -.! !2 0 * 0 ) * @ ) % > )* %) * * */ / 0 0) * 0 "3 ) * * / % % / % 0 * 3 ) () / % ") :$ !2 * . .

% . 2 'G 2 ' .< %) * % -.! / # * / -+ * 3() -# () " * 3 * ) / 1 %' = 4 . !2 *.7! + * ) ! * / 3 :4 * .*/ $ % "3 % 48 )* 9 ) * 5 / . * / % ") * ) ) . * 3 ) * ) !F . * 3 / ) () / 0 *) )* ) ) % * * * * ) * * * ) * () ) / % () * 2 * + .) $- 2 1 2 :!) ) < @ %) ) * 2 * * * -! * / ) * ) % 0 ) % / % % .

! .. %) %) * + / . !2 * / 0 ) * / ( */ / % ) */ .3 * * % ) ) ) % * *() * * * % () * * ) ) ) @9 *)0 &* * * . N N 4 3 N B QP!E 1 = 4 . ) ) * () */ & () * %) * :! */ %) * * * 1 0 .3 F0 * :! 0 *K 2 * " ) .E * () ) * %) * * .3 % N E * 1 * 3 SK 6 4 N 3N # "*$ * + * 3 9 Q3 S 3Q- ! 6 * !> ) * .3 N * =N . * " 9 -J* 0 * * 3 () * % */ / % % 3 ) : &* * * * () * . -! ! * * P?! E 1 = 4 .# % 9 * ) / ) % " * 6 / 2 0 * / % 0 ) ( ) 0 */ ) * * . * O.> * ) + . ) * * * =N .3 N 6 N 3N # "*$ * + * 3 9 Q 3 < ) ) *) * -+ >) * % -# P? % P! 3 * %) * )* ) & / 9 ) * C () 4 / . % . 3 * % -.+ * " 6 -. ) * %) * -< -# 0 %) ) ) 3 */ ) ) 6 () :4 () * ) ) " */ " . !2 *.. ) 3 6 + ) () ! * 2* ) * ) % * * 3 * * * > 9 * * * " ) F4 * 2* ?( * 3 6 * 3 * ) ) ) )* ) % % H 0 " * 3 :$ () G !E 1 !' H - %. N N 4 3 N B 1 * R :1 * . ) * 2* ( ) . .

* ) 3 3 () * () % -! %) 0 * %) * >) * * ) * ) * ) * * :K %) ) * * * 4 * 6 : N ) % % 3* " 5 ) () 9 * * .!) + ) 3 -# 6 ) / % / . % % %' ) * " )" * * () ) 3 / D 6 1 ) @ * ..K .- * C ) * / % ()5 / 3 > ! • $ .K 4 ) . • $ F • @ & ! # %) * ) F * 3 ) )% 3 %) * * () * () * 3 %) ) ) 2 'G 2 ' ) * *) * ) 30 * 5 5 " %) ? * () / % ) * 04 * / % ) ) H 0 ? ) * 9 ) ) / " * ) ) -+ H * () * * " * %) * * / % 6 ) " * )0 * % * % 9 0 * 3 ) * * * H * ? ) * ) & % -! * ? * H ) - + . O. ) Q 0 * " ) " / % %."3 B " * 6 / % :$ * 0 B 6* 0 * % M " * . ) 1 " ) * 6 * 30 6 * * ) ) . ) B -< 6 * * * :K * * * / % ) 3 )5 ) / ) () * % 6 : N .

0 .+) * .-3 * 3 # * * * * * 3 # -%I$ ) * * " C() 3 * .!) ) # + ! .+!) * ) * " :$ * ) * -$ . ) () * 5 * 4 6 0 * 1 '+.

' D ) * */ " C 9 ) ) * %) * / % 3 () + # . # / % )* * () * * * * " * " */ / ) %' < % % */ 8 9 ) * -+ * % ) B C . */ 0 * * / % "3 ) )* * * * 3) 5 * / % * * :4 ) . !2 * * *.-) 0! .> + . ' D -.< :$ * * * ..

3 9 9T O . . 9$ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIF $D E# P?! . "N B 2 N N' $ 1 R * 3W 3 3 N NB 6 R N 6 N N 1 * R S$ S N NK R N * * $ 3$ * . N N 4 1 0 3. *. *3.P?! E N 4 E $ FIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII $ * * % " . . N N @ % 3. ' ! $ +1 !# . . "N B * Q 3. "N 1 * ? 3. "N # ? 3. . N *. N N 4 3 N B 6 3$ +# 3 9 Q3 . . . $ * * ) * : @ * " * * $ * 3 + & . * 0) 3. . "N $ 3. +' !E 1 R .- T3$ T3$ )* )* * * 0) 0) * Q * Q P!E $ PB +' A $ * P?! E $ . . *4 3 ! * .9 9T O .T 3 $ )* N N4 10 R . . P!E 1 +E 1 # E $ 3$ * . N N ' $ 1 3. P?! P!E P?! P!E 9 !K +E < !' N$ * . N1 < N N @ % R U. P!E N 4 E $ () / % 30 () * %) *) * ) ) . N N $ < +J # !# . *. P?! . . N . N N 3 * 3 N$ * 3 $ * * 3 E $ 3 N$ N N N4 E $ 3 *$ $ 3 *$ * E $ 31 $ 31 $ Q3 N$ * 3 .* . +' !E 1 3 N B 6 3$ +# 3 . / % * 0" * )* 6 ) * * 9 :$ * / % )* * ") 0 ) * -! :$ * Q.. N# QP!E $ 3 NB 63. N @ !@ ) * !E !@ QP!E $ 3 N 3 N# N4 3 N4 * 3N K % * 3 9 Q3 N# P?! E $ 3 NB 63.3 * 6 0 * * )0 * () !2 * . N N1 * 3 N N B 6 3. "N $ # % V . 3 N# N4 N* N' * N 3 9 Q3 9 9T O . *9 N$ * . * 6 ) () > ) / * @-$ ) " 0 * -.

!2 *.. . * " S$ C 4 S- &* D 0 */ / -J* */ 4 * ) 2!= + ") */ */ 0 * * ) "3 * 3 * -! > * () * " * 6-.3 -+ * ) :$ 0 * 3 / 3 !2 *. * =N . * ! */ @ ) *10 * @ * 0 * ! 3! . 3 N # "*$ * + * 3 9 Q3 # *6 * ) 9 %) & 0 )* ) */ * C */ % 6 () -/0 -) - + * . N QN4 %6 */ " - % () ) 6 $ # %) * ) ) 9 * 3 3 NB 6 N1 *N . * :4 % * .

0 * )> )> ) 3 : * -. * . !2 *.-$ ) * * )* / 6 * *N $ .! * () ) %) * % 9 7!) # */ '+3 * =N . 9 * * - %) / % 3 * * * %) () )> * 2* > ) * / :B &" - % ." * ) .- () ) * -X$ / ) * 2* ) ") %) () * -# * % % 3 * 0 Y ! ") * ) ) * 0Y . * > 5 )> 3 * () ) ) .! . N Q- % <% * 3 % * . () ) ) * * * . ) * > / :. . %) )> ) * $) $ ) / % > 3 )> * ) :$ . # )> * . ) * ) 3 N # "*$ * + * 3 9 Q3 * :$ N4 E 3 NB 6 N1 N$ * N4 3 !> ) * * ! * )% 3 & # * ) .. N .J * ) % * 3 * :4 * 0() 0 . * : / *&*) * 0 :$ * * ) .

. %6 .0 () %) * ) * 9 * ) ") * * 0 * ) & ! ! * * * 0 * " % % * 9 ) 6 * * 3 3 ) + . N *$ *' * N 4 3 R * N 3N 3' 3? 3 N< N 4 3 * 3 3 * ' 3? 3 N< N 4 3 * 3? 3 * ' 3 3 3 5 1 54 % % 1 41 1 . -! / % 9 * * ) 3 * )> * - ) N '$1 '$1 .&:! . . * * " % @= 6 * . Q- () 3 3 5 N N4 3 NJ * N 3 9 Q3 R .. / /0 ) . 3 ) )* * ) ) * 3 ) * * %) * ? : *. 4 !> ) * * / *&*) 0 :$ ) .

& :$ * *.$ .() " > K * () )> . . 5 * 3 & -! * ) ) ") ) * 3 % 6 3 * . '2 * * ! / % % () * . * $ Q.! * 3 ) ) */ * () %) N N4 3 N# N4 . N 1 2* N 4 > )* & ) 3TT3 3 :! * / 3 3 N ) > * %) () )> 3* 2* 3 * -...!> ) * * / ) % - * : NJ ) -. 0 "3 .%) > * * * * 9 3 %) 6 @04 * - % ! * * 9 ! * * 9 ' ) ** 9 ' ) ** 9 & $ = 29 < * 29 ' -B * * * * * * 0 * % %) * * 9 & :$ * *. & :$ * *.' *) 4 "9 K 0 () % 3 ) 5 * * 3 )> ) % % : * J -# % % ) % ) ) 3 ) * * * 9 ) % * > % -K 0) ) * * * 0 0 * * %) * * * 3 * > ) / 0 % 3 0 & * )* F -< > % > ) () * % * * * * () > * -! * Z )0 > * * 3 2* % !2 *. & :$ * *.3 > :1 2 *.3 > :1 2 *.3 > :1 2 *. N .+ ) ) ) ) ) ) > * * % 6 2* % * * > / . ! * . N 3 * () * * $ * * * * ) * %* 9 % * 3 9 Q3 3 J ) ) 0 ) * * * * * * )> & 3 * 3 )> 3 * . * * * )> " % . .3 > :1 2 *. N * N4 3 @ !@ ) N * * N' N4 3 !E !@ Q- * 3NK # " ) () % . & :$ * *. 3 * & > * . .3 > :1 2 *.$ O. 3 ) ) * -J " * %# ) :4 . * * & )* * & 9 * 0) * * * 3 3 3 / * " )> E / % & * :. 3 * / 0 ) * * * %) * * ) * 3 " %) & () ) " * !0 .0 $ 3 " () / % * % ) -#/ )> * * * ) .

.# 6 8 . 0 %) * ) * :# * * * 2 *. :! * * . ' . 3 > / % % 3 / 9 * F %' " * @ .@ &> * () * ) / % " / ) * + :$ ( * ) ) %) &(! .* * %) () % * % %) * * ) () %6 9 &&! < *() * () > () */ 3 " 3 ) () .. ) : ) ? 2 . % -. */ % 3 < 6 * * * * D -. . % 3 % / ) ") * :B C . @ ) / * 3 * 3 * * . 0 :< * 2 . ' D . F 0 ) 6 * 3 ) 6 "3 0" 3 -@ ) * * 3 ..< 3 / % 9 * 30 O * * ) :B . 0 :@ * ) ) !2 * * * 6 *. ) * G$ 1' <H.

. 0 % () 0 * ) ) ) * () 03 ) ) * %A ) ) % B 3 * 3 * " * 4 .* & ) () 3 )* # $3 * ) / . .3 ( ) :$ !2 *. " ) */ @* () () ) : * )* * =. * ) "() * * % * [M [ 0 * 3 * * * % .*6 * ) !> ) * # > ) % 3 * * 3 * - * * C / 0 * ) ) * ) / * )5 3 % % 3 ) 6 % " * %) Q+ */ */ * ) / / 0 - " J * * < * " "> * * % * * 0 0 * 3 : ) ) * " * >) * ) * : % . = % !2 *.+%) / * -< * () ) * -< % " * - &+!) # / / ) -. = % !2 *. 0 ) * "> * / [M [3 ( ) ) ) > ) / 3 * () 5 * ) > ) / -.

!) 4 .&.! " %A () ) 5 ) % C B - . S+% S3 S] S3 5* * " ) () / ) * " 3 %A ) % ) ) 5 ) % ) 3T & 3O S S3 \ 2 &0!) 4 ! . ) : = 2 ..

. %A = % !2 () "3 ) *. 3 () * * ) * * % * & () * ) * - * "> 0 () ) /@ * ) &3!) 4 < 6 * % ) ' ?% ) < * @ () ) ) : 0 * 3 % * 0 ) ** * ) % ) @ .&2!) 4 ! /2 : ) * * % % * ! ! ) 2 . ' D ' * " 0 / % ()5 4 * 30 ) * " -. ' D -.< 5 5 3 3 ) * * () ) * " * * () - %A * * * ) 5 ) % A : = 1 . * * 0 % ) : % .) ! . * 5 ) " */ D ()5 % ) * 0 * B C .

. ' D 0 * 5 %) * / % 9 # .+ * ) * * 0 * ") * ) * 3 " ) * ) !> ) * > # % * * ) ) () % 3 Q 5 () () % " ! * > " B C . '2 3 4 "9 * @ % > )* 3 0() ) * % " * -B 6 3 " % 0 % * * / % 0 " / / 0 ) / % %) / % % () 3 : )* * 6 * " ' " ) @ () Z 03 % & )5 3 ) +% 3 * % %) * 9 * ) . ' D -..

N' R N N %10 R . . +E # 4 !' 3 +< < # 1 N N) N N 2* . % S3S$ S3S$ M M S3S.P K N 3N 9 S3S$ S3S+ S3S? SV3# A < < # 3 3 ! $ %N N) * N +< < # 1 9 P?! E . 3 9 ]9 ] \. E 1 ! !' ! ?) ** 3 +< D N) * +< D N +< N < # 1 3$ * . *3 % N N' 3SS3 * Q P!E . N = 3 +< < # 1 9 Q3 +< < # 1 N 3N 9 Q. ' ! $ +1 !# %N %N %N $ < +J # !# %N N$ * .$ D E # 1 +E 1 # P?! E . 3J * * *) PB +' A . 3$ * B U " " " " " 3 . %N %N %N P!E . * .. . %N P!E N < N . 3 .. 3 . 3J * * 3 9 ]9 ] \.] 3 $ )* * 0) N 3 * * E +B !3UV 3 3 N 3 = 2 B +' ' ! 3 3 N % 3 * * + !3U % 3] V 3 3 N = 3 * 2 US. S3S * N 3 ) ** % ) U N 3 N" V3 3$ * < * V3 %N N 3 3 +< < # 1 3+E # 4 !' 3 N N . * N 3N 3N 9 Q3" - & .]3$ )* * 0) * Q N E +B ! R %N < * * N 3N +< < # 1 3 N B +' ' ! R % N < *$ = N 3N +< < # 1 3 N+ !R % N < * * N % 3N +< < # 1 3 % N < *< *? 2 N = 3N +< < # 1 3N $ N # A < < # N 1 !B < # 1 3N # A < < # 3 N $ N B +< ! R % N < *' ) ** N 3N +< < # 1 3 P!E . %N %N %N %N %N N N N * < *3 9 ] 9 ] \ . ]3$ )* * 0) * Q N +< N < # 1 E +B ! R SS3 B +' ' ! R N " + !R 3 # A < < # R U V3 PB +' A . NB NK R N * * 3$ * . %N$ P?! E . *9 N 9 !K +E < !' N N .

''8 " 4 3 :# = . ) * * * ) / % % * ) * ) .# 0 .:E . 3J * * 3 9 O 9O \ \ . $ / % 3 * () / % 3 % () / % 3 6 " -! : %N () @ %) * * 9 ]3$ +< < # 1 3 )* N$ 0 * . / % :+% .# () * * ) * *) 0 ' * " . * S! 9 S3 N + ! 3 3 .- %N N) * N +< < # 1 9 P?! E . * S# 2 9 S3 N $ N B +< ! 3 3 . () * 3 * " % * ) " / '@ - / () : %N * * ) N) -1 * . * * " * * ) . ' D ) * ) / " / 03 " * 3 () * . 2 () :B 0 * S! 9 S3 ! 3 3. ' D -. ) " / * * ) * 9 * -+ ) E 9+ ! 9 \ $ 9 # 2 9 # = 9 U 3O 3] V D () * 3 _Age = Edad F 7 " ) &9 ) 6 * .< % . * * * % 3 *) * 3 )0 * ) -! ) 3 " " 9 * 3 B C . :.- () / % ") * -.- / 2 47 3 * * * * " " 0 () * * ? -. * SE 9 S3 N E +B ! 3 3 FI +( ) & . ) . 3J * * . % * * * 3 8 '7 F 4 . * S$ 9 S3N B +' ' ! 3 3 . * S! 9 S3 N + ! 3 3.N E +B ! R %N < * * N 3N +< < # 1 3 N B +' ' ! R % N < *$ = N 3N N+ !R % N < * * N % 3N +< < # 1 3 % N < *< *? 2 N = 3N +< < # 1 3N $ N # N $ N B +< ! R % N < *' ) ** N P!E .3 * :B * 3 & 8 / 3 * . * S# = 9 S3N # A < < # 3 3 3 *) - * 0) * Q A < < # N 1 !B < # 1 3N # A < < # 3 3N +< < # 1 3 * ) IF !> ) * */ '+3 ) % -# * / . ) @ * 3 / * 3 * * * :.

NB %N NK R N * * P!E . 3$ * . . % S3S$ S3S$ M M S3S. 9 Q3 +< < # 1 3E . N 3N 3N 9 Q. S3S * S3S$ " # !^ 3 ) ** % ) U N 3 N" V3 3$ * < * V3 %N N 3 3 +< < # 1 3+E # 4 !' 3 %N N N . .. # 3 .] 3 $ )* * 0) * Q " N 3 * * E +B !3UV 3 3 " N 3 = 2 B +' ' ! 3 3 " N % 3 * * + !3U % 3] V 3 3 " N = 3 * 2 US. !' # D E D ) * FI E ) FI E ) FI E ) %) %) * IF * IF IF P?! E . *3. N$ L C #M N $C F * . N 3N 3N 9 * S3S+ S3S? SV3# A < < # 3 3 %N FI P %N P %N P FI ! * $ %N N) * 3 () ) ) * IF %N N) * N +< < # 1 3 N E +B !3N + !3N B +' ' ! 3N # A < < # 3N # !^ 9 P?! E . +E # 4 !' 3 +< < # 1 3E .$ D E # 1 +E 1 # P?! E . * B .] 3 $ )* * 0) * Q N E +B ! R %N < * * N 3N +< < # 1 3 N B +' ' ! R % N < *$ = N 3N +< < # 1 3 N+ !R % N < * * N % 3N +< < # 1 3 % N < *< *? 2 N = 3N +< < # 1 3N $ N # A < < # N 1 !B < # 1 3N # A < < # 3 N # !^ R % N < *' ) ** N 3N +< < # 1 3 P!E .. !' # D E N$ * 4 E D 4 . P!E . E 1 ! !' ! ?) ** 3 +< D N +< N < # 1 3 . 2 2 " CF 7 "CF / + 8 8 / CF / " $$CQC *) - . "CF . / "K # ]3$ )* * 0) * Q " C F C C C F F $ . 2 2 " C 7 "C/ + 8 8 / C/ " $$CQC COM C PC F $ N 9 !K +E < !' N N . .%N N' R N %N N %10 R . N %N * N N N N 2* " N N) . "C. !' # D E N) * +< D N +< N < # 1 3 . !' # D E 3 . 3J * * # #F 4 . *3 % N N' 3SS3 U 3 $ * < *3 9 O 9O \ \ . 3 9 O 9O \ \ . ' ! $ +1 !# %N %N %N 0N $ < +J # !# #L %N PB +' A . . . N = 3 +< < # 1 3E . %N$ * 9 #4 .P K ! . 3$ * . * * * D A IF . 3J * * 3 9 O 9O \ \ .

. ) 9 J 9 . 0 * "3 / @ 0 * * * 6 * . 3 . * N 3N 3N 9 Q3" - J 0 * 0 . %N P!E N < N . ' D 3 ) ) 0 > )* / 4 / ) . ' D -.+( ) & * * 6 * 5 * & () * * > * 6 ) * () * - % * * / % / % * ) * 3 % %) () () * () () * * " 0 * () * ) / ) 6 "3 / 5 / " * ) ") * ) / % > * - * 3 + .PB +' A .!2 * T\.@ * * " ) " ) 3 ) ) ) / 9 ) *) () 0 * / % * ") * 3 * * * % / B C .$ / ) O.$ .