scieee Open visual document viewer

Scripting en Rational Rose (LSI-2000-01) : Versión Borrador

Martín Díaz, Octavio

Full text

Sc ip ing en Ra ional Rose (Ve sion b o ado ) Oc a io Ma n Daz Dp o. de Lengua jes y Sis emas In o ma icos Facul ad de In o ma ica y Es ads ica, Uni e sidad de Se illa A da. de la Reina Me cedes s/n, Se illa 41.012 Tel/Fax: 95.455.71.39, e-mail: oc a[email p o ec ed] 26 de Ene o de 2.000 Cap ulo 1 In o duccion El p esen e manual se ha ealizado a pa i de la ayuda o ecida p o Ra ional Rose 98 . 1.1 Ex ensibilidad de Ra ional Rose Ra ional Rose p e mi e la p osibilidad de ex ende y p e sonaliza su uncionalidad a aquellas necesidades de desa ollo de so wa e esp eccas pa a un p oyec o de e minado. Son en e o as:  Au oma iza las acciones del usua io en el en o no de Ra ional Rose con sc ip s (p o ejemplo, c eacion de diag amas y clases, mo dicaciones del mo delo, gene acion de do cu- men os y o as).  Ejecu a las unciones de Rose desde o as aplicaciones median e la au oma izacion OLE .  Accede a las clases, p opiedades y me o dos de un mo delo de Rose desde un en o no de desa ollo de so w a e median e la inclusion de la lib e a de ex ension de ip os.  Pe sonaliza los men us de la aplicacion.  U iliza el adminis ado de anexos ( Add{ins ). 1.1.1 Sc ip ing El lengua je de sc ip ing de Ra ional Rose es una e sion ampliada del lengua je Summi BasicSc ip . Las ex ensiones ealizadas a es e lengua je pe mi en au oma iza las acciones del usua io en el en o no de la aplicacion yen algunos casos ealiza unciones que no es an disp onibles di ec amen e a a es del in e az de usua io. 1.1.2 Au oma izacion OLE La au oma izacion OLE p e mi e la in eg acion de o as aplicaciones con Ra ional Rose de dos o mas:  U ilizando R ose como un con olado de la au oma izacion: un ob je o OLE puede se llamado desde un sc ip . Po ejemplo: un sc ip puede ejecu a unciones en aplicaciones ales como Wo d o Visual Basic . 1 Sc ip de Rose Elemen os del Modelo Diag amas In e az de Ex ensión de Rose (REI) Aplicación Rose Au oma ización de Rose Figu a 1.1: El diag ama de comp onen es de Ra ional Rose .  U ilizando Rose como un se ido de au oma izacion: el ob je o OLE de la aplicacion puede se llamado desde o as aplicaciones que ac uen como un con olado OLE . Po ejemplo: Visual Basic , Excel , Summi BasicSc ip , So b idge Basic Language , C++ yo os. 1.1.3 El mo delo de comp onen es de Ra ional Rose La aplicacion Ra ional Rose es a basada en comp onen es y es a en o cada hacia el desa ollo de so wa e basado en comp onen es. To da la uncionalidad de la aplicacion es accesible a a es del Mo delo del In e az de Ex ension de Rose ( REI ) que esencialmen e es un me amo delo de un mo delo de Rose que exp one los paque es, clases, p opiedades y me o dos que denen y con olan la aplicacion y o das sus unciones. La comunicacion con es e in e az se ealiza a a es de sc ip s o de la au oma izacion OLE . La lib e a de ex ension de ip os Ra ionalRose. lb p e mi e accede al in e az REI desde un en o no de p og amacion. El diag ama de la gu a 1.1 mues a los comp onen es del nucleo de Ra ional Rose , los comp onen es del in e az REI y las elaciones en e ellos:  In e az de ex ension El conjun o com un de in e aces u ilizados po un sc ip o una au oma izacion OLE pa a accede a Ra ional Rose . A su ez se sub di iden en es in e aces muy imp o an es: { Aplicacion Rose Los ob je os de ex ension que o man el in e az a las unciones de la aplicacion. { Diag amas Los ob je os de ex ension que o man el in e az a los diag amas y is as. { Elemen os del modelo Los ob je os de ex ension que o man el in e az a los elemen os de un mo delo.  Sc ip ing El conjun o de sc ip s que inc emen an la uncionalidad de Ra ional Rose .  Au oma izacion El conjun o de ob je os de au oma izacion que p e mi en a Ra ional Rose unciona como un con olado o un se ido OLE . 2 1.1.4 Pe sonalizacion de los men us los men us de la aplicacion se pueden ex ende o adap a mo dicando el che o de men us ( Rose.mnu ) que Rose lee al inicio de su ejecucion. Se p e mi en a ~nadi :  Submen us.  Op ciones de men u que ejecu en: { P imi i as de Rose . { Sc ip s . { Comandos de sis ema. { P og amas ex e nos.  Sepa ado es de men us. 1.1.5 Adminis ado de anexos ( add{ins ) El adminis ado de anexos de Ra ional Rose o ece algunas acilidades pa a ins ala nue os p o duc os y ex ensiones en el en o no de la aplicacion. 1.2 C eacion y mo dicacion de sc ip s Pa a c ea un nue o sc ip se ealizan los siguien es pasos: 1. Selecciona Tools/New Sc ip del men ude R ose . 2. Esc ibi el ex o del sc ip . 3. Selecciona File/Sa e As del men u pa a sal a el nue o sc ip . Y pa a mo dica un sc ip ya exis en e: 1. Selecciona Tools/Open Sc ip del men ude Rose . 2. Selecciona alguno de los sc ip s disp onibles. 3. Pulsa Ok pa a en a en el edi o de sc ip s y isualiza lo. 4. Selecciona el ex o del sc ip y copia lo al p o apap eles. 5. Selecciona Tools/New Sc ip . 6. Pega el con enido del p o apap eles en el nue o sc ip . 7. Selecciona File/Sa e As pa a sal a el nue o sc ip . 3 1.3 Asp ec os basicos del lengua je de sc ip s 1.3.1 Inicio y nalizacion de sc ip s Al igual que en muchos o os lengua jes, la ejecucion del sc ip comienza en la sub u ina M ain . Po lo an o, o do sc ip deb e ene la denida. Cuando la ejecucion llega al End Sub co esp on- dien e a la sub u ina M ain es a se e mina. El siguien e ejemplo mues a la denicion habi ual de M ain : Sub Main() MsgBox ``Es a es la sub u ina Main().'' End Sub La sen encia End naliza de mane a o zada la ejecucion del sc ip , ce ando o dos los che os abie os. Es e segundo ejemplo adelan a la nalizacion del sc ip con la sen encia End : Sub Main() MsgBox "La p oxima lnea e mina alaejecucion del sc ip ." End End Sub 1.3.2 Los comen a ios En el siguien e ejemplo se pueden obse a a ias o mas de in o duci comen a iosenelcodigo de un sc ip : MsgBo x ``Hola'' 'Visualiza un mensa je. REM Es o es un comen a io. MsgBox ``An es del comen a io'' /* Es e pa a o es a o do comen ado. Es a lnea ambien se a igno ada. Es a es la ul ima lnea del comen a io. */ MsgBox ``Despues del comen a io'' 1.3.3 Un asp ec o sin ac ico El ca ac e de con inuacion de lnea ( ) p e mi e di idi una sen encia compleja en a ias lneas. 4 Cap ulo 2 In o duccion al lengua je Summi BasicSc ip Como se ha dicho an e io men e, el lengua je de sc ip ing de Ra ional Rose es a basado en una e sion de Basic ,po lo que su ap endiza je esul a sencillo. A con inuacion se desc ib en las p incipales ca ac e s icas del lengua je y que se p o d an u iliza cuando se esc iba un sc ip pa a Ra ional Rose . 2.1 Tip os de da os simples En p ime luga se mues an los p incipales ip os que o ece el lengua je. 2.1.1 Tip os logicos Bo olean Es e ip o de da os ep esen a a los alo es logicos T ue y False . Po de ec o, una a iable b o oleana end ael alo False . 2.1.2 Tip os nume icos In ege (%) Es e ip o de da os ep esen a a los nume os en e os de has a cua o dgi o de p ecision en el siguien e ango: ; 32768  in eg e  32767 Long (&) Es e ip o de da os ep esen a a los n ume os en e os la gos de has a 10 dgi os de p ecision en el siguien e ango: ; 2  147  483  648  Long  2  147  483  647 5 Cu ency (@) Es e ip o de da os ep esen a a los n ume os en pun o{jo con 15 dgi os a la izquie da del pun o decimal y cua o a la de echa, po lo que son u iles pa a calculos mone a ios. El ango es el siguien e: ; 922  337  203  685  477 : 5808  cu ency  922  337  203  685  477 : 5807 Single (!) Es e ip o de da os ep esen a a los nume os eales con 7 dgi os de p ecision en los siguien es angos: ; 3 : 402823 E 38  sing l e ; 1 : 401298 E ; 45 1 : 401298 E ; 45  sing l e  3 : 402823 E 38 Double (#) Es e ip o de da os ep esen a a los n ume os eales con 15{16 dgi os de p ecision en los siguien es angos: ; 1 : 797693134862315 E 308  doubl e ; 4 : 94066 E ; 324 4 : 94066 E ; 324  doubl e  1 : 797693134862315 E 308 2.1.3 Tip os de cadenas de ca ac e es S ing ($) Es e ip o de da os ep esen a a las cadenas de ca ac e es. Cada ca ac e iene un alo en e 0 y255 (el habi ual codigo ASCI I )yla longi ud maxima de una cadena es de 32767 ca ac e es. Al con a io que en o os lengua jes, las cadenas pueden con ene nulos, como se mues a en el siguien e ejemplo: s$ = ``<''+``Hola''+Ch $(0)+``!'' 'Es a cadena incluyeunca ac e nulo. La unci on Len de uel eelnume o de ca ac e es de la cadena (incluyendo los ca ac e es no imp imibles). No malmen e una cadena se decla a con longi ud a iable (la memo ia eque ida pa a su almacenamien o dep ende a de su longi ud). Las a iables cadena no asignadas ienen po de ec o una longi ud 0. Tambien se pueden decla a con un ama ~no jo (mas ap opiadas pa a el paso de es uc u as con ama ~no jo a u inas ex e nas). Po ejemplo: Dim s As S ing s = ``Hola'' 'Es a cadena iene longi ud 4. Dim s As S ing * 20 s = ``Hola'' 'Es a cadena iene longi ud 20 (el espacio sob an e es ellenado con espacios). 6 Al asigna una exp esion (de ip o cadena) a una a iable ( ambien de ip o cadena) se aplican las siguien es eglas:  Se ellena con espacios has a alcanza la longi ud de la cadena (en caso de que ue a meno ).  Se unca a la longi ud de la cadena (en caso de que sea mayo ). 2.1.4 Tip os de echas y ho as Da e Es e ip o de da os ep esen a a las echas y ho as de mane a conjun a. Su ango es el siguien e: J anua y 1  100 00 : 00 : 00  da e  Decembe 31  9999 23:59:59 ; 6574340  da e  2958465 : 99998843 En el o ma o nume ico, la pa e en e a almacena el n ume o de das desde el 31{Dic{1899 , y la pa e accional el n ume o de segundos anscu idos del da. El alo p o de ec o es 0. Po ejemplo: Dim d As Da e d=#Janua y 1, 1990# Pa a e i a ambig "uedades debidas a los di e sos o ma os u ilizados en dis in os paises se e- comienda la u ilizacion del o ma o de echa uni e sal: Va iableFecha = #YY/MM/DD HH:MM:SS# 2.1.5 Tip os a ian es Va ian Es el ip o p o de ec o en BasicSc ip y se u iliza pa a decla a a iables que puedan con ene da os de di e en es ip os. Du an e la exis encia de un Va ian su ip o puede cambia en e: Nume icos I n eg e , Long , S ing l e , Double , B ool ean , C u ency . Logico B ool ean . Temp o al D a e . Cadena S ing . Ob jec o O bj ec . Da o in alido Un Va ian con da os in alidos se conside a nulo ( Null ). Da o sin inicia Un V a ian sin inicializa se conside a aco ( Emp y ). Las siguien es unciones se u ilizan pa a de e mina el ip o del da o con enido: 7 Va Typ e De uel e una cons an e que ep esen a al ip o. IsNume ic De uel e T ue si el ip o es nume ico, una cadena que con iene un nume o o un ob jec o cuya p opiedad p o de ec o sea nume ica. IsDa e De uel e T ue si con iene una echa, una cadena con e ible a echa o un ob jec o cuya p opiedad p o de ec o sea una echa. IsOb jec De uel e T ue si con iene un ob je o. IsNull De uel e T ue si no con iene un da o alido. IsEmp y De uel e T ue si no es a inicializado. Asignacion a una a iable de ipo a ian e Inicialmen e se le conside a aco ( V a T ype de ol e a ebE mp y ). Si no es a inicializado de- ol e a 0 en las exp esiones nume icas o una cadena de longi ud ce o en una exp esion de cadenas. Si se quie e da un alo nulo a un V a ian que yaes a inicializado hay que asigna le o o V a ian que es e aco. Cuando se le asigna un alo ambien se le asigna un ip o y p o lo an o en o das las op e aciones p os e io es se comp o a a como cualquie a iable de ese ip o. Ope aciones sob e a iables de ipo a ian e No malmen e, un V a ian se comp o a a seg un el ip o de da os que con enga. La unica ex- cep cion es la p omo cion au oma ica de los ip os nume icos en caso de salidas de angos. Po ejemplo: Dim a As In ege , b As In ege , c As In ege Dim x As Va ian , y As Va ian , z As Va ian a% = 32767 b% = 1 c% = a% + b% 'Es a op e acion se sald a de ango x = 32767 y=1 z=x+y 'z se con ie e a Long p o que la suma es a ue a del ango en e o Sumas con a iables de ipo a ian e Seg un el con enido de un V a ian el op e ado +" puede ealiza una de dos unciones: con- ca ena cadenas o suma n ume os. Debido a que el ip o no es cono cido has a el momen o de la ejecucion se pueden ealiza op e aciones e oneas. Se ecomienda u iliza el op e ado &" pa a conca ena dos V a ian que con engan cadenas. Va iables de ipo a ian e sin con enido Una a iable V a ian puede ene asignado un alo esp ecial que indica que no con iene da o alido ( Null ). El alo Null se puede u iliza pa a busca e o es p o que es e alo se p opaga a a es de las exp esiones. Po ejemplo: Dim a As Va ian a=Null Des en ajas de los ipos a ian es 1. La e olucion del p og ama es mas len a compa ada con los ip os undamen ales p o que cada op e acion implica el examen del ip o con enido. 8 MyApp.To olba .Bu ons(0) MyApp.To olba .Bu ons(``Tuesday'') Cada elemen o de una coleccion es en s mismo un ob je o. Po ejemplo: Dim MyTo olba Bu on As Ob jec Se MyTo olba Bu on = MyApp.To olba .Bu ons(``Sa e'') MyAppp.To olba .Bu ons(1).Cap ion = ``Op en'' Una coleccion iene p opiedades pa a ob ene in o macion sob e ella y me o dos que p e mi en la na egacion p o sus miemb os. Po ejemplo: Dim MyTo olba Bu on As Ob jec NumBu ons% = MyApp.To olba .Bu ons.Coun MyApp.To olba .Bu ons.Mo eNex MyApp.To olba .Bu ons.FindNex ``Sa e'' Fo i = 1 To MyApp.To olba .Bu ons.Coun Se MyTo olba Bu on = MyApp.To olba .Bu ons(i) MyTo olba Bu on.Cap ion = ``Copy'' Nex i P opiedades de una coleccion Coun es la unica p opiedad aplicable a las colecciones. Es el n ume o de ob je os con enidos en la coleccion que p e mi e la u ilizacion de un con ado pa a eco e la coleccion median e una i e acion. Me o dos de las colecciones A con in uacion se desc ib en los me o dos de una coleccion, que p e mi en la lo calizacion y p o ce- samien o de elemen os en ella. Aunque o das las p opiedades y me o dos sean los mismos, ac uan sob e ip os di e en es de ob je os seg un el ip o de ob je o con enido. Po ejemplo, el me o do C l assC oll ec ion:Ge A ob iene una ob je o clase", y el me o do C a eg o y C oll ec ion:Ge A ob- iene un ob je o ca ego a", e c. Es os me o dos son: Exis s Indica si un ob je o exis e en una coleccion. FindFi s Ob iene el ndice (p osicion) de la p ime a ins ancia de un ob je o en una coleccion. FindNex Ob iene el ndice (p osicion) de la siguien e ins ancia de un ob je o en una coleccion. Ge Wi hUniqueID Ob iene la ins ancia de un ob je o en una coleccion, dado su iden icado ID unico, excep o pa a aquellos ip os de ob je os que no ienen ID unico (como los ob je os E x e nal D ocumen o P ope y ). Ge A Ob iene una ins ancia esp ecca de un ob je o en una coleccion. Ge Fi s Ob iene la p ime a ins ancia de un ob je o en una coleccion. Ge Ob jec Ob iene el in e az OLE aso ciado con una coleccion dada. IndexO Ob iene el ndice (p osicion) de un ob je o en una coleccion dada. 15 Me o dos pa a las colecciones denidas po el usua io Acon inuacion se desc ib en cua o me o dos de colecciones adicionales, que p e mi en a~nadi o qui a ob je os de una coleccion. Sin emba go, es os me o dos solo son alidos pa a aquellas colecciones denidas p o el usua io y no pueden se u ilizadas en las colecciones co esp ondien es de un mo delo de Ra ional Rose . Add A~nade un ob je o a la coleccion de ob je os. AddCollec ion A~nade una coleccion a una coleccion de ob je os. Remo e Elimina una coleccion de una coleccion de ob je os. Remo eAll Elimina el con enido comple o de una coleccion. 2.3 Cons an es, a iables y exp esiones 2.3.1 Denicion de cons an es Se puede decla a una cons an e pa a se u ilizada en el sc ip .En el momen o de la decla acion, p o d a asigna se una exp esion o mada po li e ales y o as cons an es (no se pe mi en las llamadas a uncion, excep o Ch $). Po ejemplo: Cons s$ = ``Hola'' + Ch (44) Cons a% = 5 'Cons an e en e a cuyo alo es 5 Cons b# = 5 'Cons an e eal doble cuyo alo es 5.0 Cons c$ = ``5'' 'Cons an e cadena cuyo alo es ``5'' Cons d! = 5 'Cons an e eal simple cuyo alo es 5.0 Cons e& = 5 'Cons an e en e a la ga cuyo alo es 5 Cons a As In ege = 5 'Cons an e en e a cuyo alo es 5 Cons bAsDouble=5 'Cons an e eal doble cuyo alo es 5.0 Cons c As S ing = ``5'' 'Cons an e cadena cuyo alo es ``5'' Cons d As Single = 5 'Cons an e eal simple cuyo alo es 5.0 Cons e As Long = 5 'Cons an e en e a la ga cuyo alo es 5 Cons a = 5 'Cons an e en e a Cons b = 5.5 'Cons an e eal simple Cons c = 5.5E200 'Cons an e eal doble Cons FichDe = ``De ec o. x '' Sub Tes 1 Cons FichDe = ``Fiche o. x '' MsgBox FichDe 'Visualiza ``Fic he o. x ''. End Sub Sub Tes 2 MsgBox FichDe 'Visualiza ``De ec o. x ''. End Sub 16 En el siguien e ejemplo se mues an las cons an es decla adas en una en ana de mensa je ( c l p o duce un sal o de lnea en la en ana): Cons c l = Ch $(13) + Ch $(10) Cons s As S ing = ``Es o es una cons an e.'' Sub Main() MsgBox s$ & c l & ``Las cons an es se mues an a iba.'' End Sub 2.3.2 Decla acion de a iables La sen encia Dim La sen encia Dim decla a una lis a de a iables lo cales con sus co esp ondien es ip os y ama ~nos. Su sin axis es: Dim Name &( < S ubsc ip s > )] &As &New] Type ] &,Name &( < S ubsc ip s > )] &As &New] Type ]] ::: Una al e na i a a Dim es el ca ac e de decla acion de ipos . Po ejemplo, las siguien es decla aciones son equi alen es: Dim Temp e a u a As In ege Dim Temp e a u a% El pa ame o S ubsc ip s p e mi e la decla acion de a ays dinamicos y jos (si se exp esan los lmi es sup e io es e in e io es has a 60 dimensiones) siguiendo la siguien e sin axis: & Low e To] U ppe &,& Low e To] U ppe ]... El pa ame o Type esp ecica el ip o del da o que se decla a y puede se : S ing , I n eg e , Long , Single , Double , C u ency , Obj ec ,ob jec os de da os o ip os de da os (del sis ema o denidos p o el usua io). Una sen encia Dim den o de una sub u ina o uncion decla a a iables lo cales a ella. Si apa ece ue a, en onces su alcance es global y equi alen e al de las a iables decla adas con la sen encia P i a e . Cadenas de longi ud ja Se decla an a ~nadiendo la longi ud a la decla acion del ip o S ing : Dim nomb e a iable As S ing * longi ud cadena Decla acion de a iables implci as Cuando BasicSc ip encuen a una a iable no decla ada con Dim ,en onces su ip o se a el esp ecicado p o el ca ac e de decla acion de ip os. Si no lo iene, en onces la p ime a le a del nomb e de la a iable es buscado en las sen encias De T ype pa a asigna le un ip o p o de ec o. Si a un as oda a no se ha encon ado un ip o pa a la a iable, en onces se aun V a ian . Decla acion de obje os de au oma izacion OLE 17 Se pueden decla a a iables de un ip o de ob je o explci o pa a ob je os cono cidos po Basic- Sc ip a a es de las lib e as de ip os. Se sigue la siguien e sin axis: Dim N omb eV a iabl e As Appl ica ion:C l ass El pa ame o Appl ica ion esp ecica la aplicacion u ilizada pa a egis a el ob je o de au o- ma izacion OLE yelpa ame o C l ass esp ecica el ip o de ob je o denido en la lib e a de ip o. De es a mane a se es a u ilizando el enlace es a ico en iemp o de compilacion y mejo ando el endimien o de la in o cacion a sus me o dos. C eacion de nue os obje os La palab a cla e op cional New se u iliza pa a decla a una nue a ins ancia del ob je o de da os esp ecicado y no se puede u iliza cuando se decla an a ays u ob je os de au oma izacion OLE . En iemp o de ejecucion, se no ica a a la aplicacion que se es a deniendo un n ue oob je o: la aplicacion esp onde a median e la c eacion de un nue o ob je o sico (den o del con ex o ap opiado) y de ol e auna e e encia al mismo, que se asigna a inmedia amen e a la a iable que se es a decla ando. Cuando se acab e el ambi o de la a iable en onces se no ica a a la aplicacion pa a que es a des uya ese ob je o sico. Con enciones pa a los nomb es de a iables Los nomb es de a iables deb en segui las siguien es eglas: 1. Deb en comenza con una le a. 2. Pueden con ene le as, dgi os y el ca ac e de sub ayado ( ). Las pun uaciones no se p e mi en. El signo de exclamacion (!) se pe mi e, pe o si es a en la ul ima p osicion se in e p e a a como un ca ac e de decla acion de ip os. 3. El ul imo ca ac e del nomb e puede se un ca ac e de decla acion de ip o: #, @, %, !, &y$. 4. No deb en excede los 80 ca ac e es de longi ud. 5. No pueden con ene palab as ese adas. Ejemplos Los siguien es ejemplos u ilizan la sen encia Dim pa a decla a a iables ipadas: Sub Main() Dim i As In ege Dim l& 'En e o la go Dim s As Single Dim d# 'Real doble Dim c$ 'Cadena Dim MyA ay(10) As In ege 'A ayde10en e os Dim MyS ings$(2,10) 'A ay de bidimensional de cadenas Dim Filenames$(5 o 10) 'A ayde6cadenas(nume adas de 5 a 10) Dim Values(1 o 10, 100 o 200) 'A ayde a ian es bidimensional End Sub 18 La sen encia Public Decla a una lis a de a iables p ublicas, es deci , a iables que son globales pa a o das las sub- u inas y unciones de o dos los sc ip s . La sin axis que se sigue es: Public N ame &( S ubsc ip s )] &As Type ]&, Name &( S ubsc ip s )] &As Type ]]... Cuando no se esp ecica o a cosa, cualquie a iable se decla a implci amen e lo cal a la u ina que la u iliza. La sen encia Gl obal iene el mismo signicado que Public . Cuando se u ilizan a iables compa idas, se deb e asegu a que las decla aciones son iden icas en o dos los sc ip s . El siguien e ejemplo u iliza una sub u ina pa a calcula el a ea de 10 c culos y isualiza el esul ado en una en ana. Las a iables R y A son decla adas como p ublicas pa a que puedan u iliza se an o en Main como en A ea . Cons c l = Ch $(13) + Ch $(10) Public x#, a # Sub A ea() a # = (x# ^ 2) * Pi End Sub Sub Main() msg = ``Las a eas de los diez c culos son:'' & c l Fo x# = 1 To10 A ea msg = msg & x# & ``: '' & a # & Basic.Eoln$ Nex x# MsgBo x msg End Sub La sen encia P i a e Decla a una lis a de a iables p i adas, es deci , a iables que son globales pa a o das las sub- u inas y unciones que se ejecu en en el sc ip ac ual. La sin axis que se sigue es: P i a e Name &( S ubsc ip s )] &As Type ]&, N ame &( S ubsc ip s )] &As Type ]]... La sen encia Redim Se u iliza pa a ol e a decla a un a ay, median e la esp ecicacion de un lmi e in e io y o o sup e io pa a cada dimension del a ay. La sin axis de es a sen encia es: Redim &P ese e] Va iableName (& S ubsc ip Rang e ]) &As Type ], ::: Si la a iable ya es aba an e io men e denida, en onces deb e hab e se decla ado p e iamen e median e la sen encia Dim como un a ay dinamico (sin esp ecica dimensiones). Es os a ays 19 pueden se e{dimensionados cualquie n ume o de eces. El pa ame o S ubsc ip Rang e esp ecica las nue as dimensiones, y cuando no se esp ecican, se conside a que el a ay no end a elemen os. Po de ec o, el lmi e in e io es ce o, aunque dep ende de la sen encia O p ion B ase . Se sigue la sin axis: & Low e To] U ppe &,& Low e To] U ppe ] ::: Las dimensiones del nue oa ay deb en es a en el siguien e ango, gene andose un e o en caso de que no se cumplan: ; 32768  Low e  Uppe  32767 El pa ame o Type puede u iliza se pa a esp ecica el ip o de cada elemen o del a ay. Es os es an es ingidos a cualquie ip o de da os undamen al, ip os de da os denidos p o el usua io o ob je os. La edimension del a aybo a o dos los elemen os al menos que no se u ilice la palab a cla e P ese e .En es e caso, los da os del a ayseman ienen si ello es p osible. Si el n ume o de elemen os se inc emen a, los nue os elemen os se inicializan a ce o o cadena aca. Si el nue o ama ~no es in e io , los elemen os sob an es se an b o ados. Cuando se indica P ese e ,elnue o nume o de dimensiones deb e a se ce o o el mismo n ume o que ya ena. El siguien e ejemplo u iliza la sen encia F il eLis pa a edimensiona un a ay y ellena lo con cadenas de nomb es de che os. Un nue oa ay es en onces edimensionado pa a gua da an os elemen os encon ados p o F il eLis , copiando el a ay y isualizandolo pa cialmen e: Sub Main() Dim *$() FileLis *$,``*.*'' con ado = Ub ound(*$) Redim nl$(Lb ound(*$) To Ub ound(*$)) Fo x = 1 o con ado nl$(x) = *(x) Nex x MsgBox ``El ul imo elemen o del nue o a ayes: ''&nl$(con ado ) End Sub 2.3.3 Exp esiones Como en cualquie lengua je, Las exp esiones es an compues as p o op e ado es y op e andos. Ba- sicSc ip p e mi e u iliza a iables, llamadas a unciones, cons an es y li e ales con di e en es ip os de da os en las exp esiones. Cuando es o o cu e, los dos a gumen os se con ie en al ip o del op e ando con mayo p ecision. Si una op e acion se ealiza en e una exp esion nume ica y o a ex ual, en onceslaul ima se con ie e a una exp esion nume ica. Cuando una a iable de ip o ob je o es u ilizada con op e ado es nume icos ales como la suma o la es a, se u iliza au oma icamen e la p opiedad po de ec o del obje o . En el siguien e ejemplo, las dos op e aciones p os e io es a la decla acion del ob je o son equi alen es p o que la 20 p opiedad p o de ec o de un ob je o de la clase Excel es :V al ue : Dim Excel As Ob jec Se Excel = Ge Ob jec (,``Excel.Applica ion'') MsgBox ``Es a aplicacion es '' & Excel MsgBox ``Es a aplicacion es '' & Excel.Value Op e ado es A con inuacion se denen los op e ado es exis en es en BasicSc ip .Hay que eco da que seg un los ip os de los op e andos a ia a el esul ado de la op e acion. Conca enacion de cadenas & Di ision en e a n Suma, es a, mul iplicacion y di ision +, ; ,  , = Po encia ^ Compa aciones < ,  , > ,  ,=, <> Conjuncion logica o bina ia And Equi alencia logica o bina ia Eq (de uel e T ue si amb os op e andos ienen el mismo alo logico) Implicaci on logica o bina ia Imp (de uel e T ue si el segundo op e ando es T ue ) Iden icacion de clase Is (de uel e T ue si las dos a iables ob je os que son op e andos ha- cen e e encia al mismo ob je o. Es a compa acion puede ealiza se con No hing pa a de e mina si la a iable ob je o es a sin inicializa ) Compa acion con pa ones Lik e Res o de una di ision Mod Negacion logica o bina ia No Disyuncion logica o bina ia O Exclusion logica o bina ia Xo (de uel e T ue si amb os op e andos ienen dis in os alo es logicos) P ecedencia de op e ado es A con inuacion se mues a la p ecedencia en e op e ado es en BasicSc ip (de mayo a meno p ecedencia). A igual p ecedencia, se e al uan de izquie da a de echa. Pa  en esis () Exp onenciacion ^ Menos una io ; 21 Di ision y mul iplicacion =  Di ision en e a n Modulo Mod Suma y es a + ; Conca enacion de cadenas & Compa a i as = <>><< = > = Compa acion de cadenas y ob je os Lik e I s Negacion logica No Conjuncion logica o bina ia And Disjuncion logica o bina ia O Op e ado es logicos o bina ios Xo Eq Imp P ecision de los op e andos BasicSc ip ealiza la con e sion de ip os au oma icamen e, pe o algunas eces es o puede o casiona alg un e o de ango. Po ejemplo, cuando los alo es de pun o *o an e se con ie en aen e os, la pa e accional se pie de, edondeando al en e o m as ce cano u ilizando el edondeo de Bake :  Si la pa e accional es mayo que : 5, el n ume o es edondeado hacia a iba.  Si la pa e accional es meno que : 5, el n ume o es edondeado hacia aba jo.  Si la pa e accional es igual a : 5, el nume o es edondeado hacia a iba si es impa y hacia aba jo si es pa . Cuando se u ilizan op e ado es nume icos, bina ios, logicos o compa a i os, el ip o de da o del esul ado es gene almen e el mismo del ip o de da os del op e ando mas p eciso. Po ejemplo, al suma un en e o y un en e o la go, p ime o se con ie e el en e o a un en e o la go, y despues se ealiza la suma, saliendose de ango solo cuando el esul ado no puede con ene se en un en e o la go. El o den de p ecision se mues a en la siguien e lis a (de meno a mayo p ecision):  E mp y  B ool ean  In ege  Long  Single  Da e  Double  C u ency 22 Hay algunas excep ciones con algunos op e ado es. Las eglas pa a la con e sion de op e andos son mas complicadas cuando alg un op e ando es de ip o Va ian . En muchos casos, un alo ue a de ango causa la p omo cion au oma ica del esul ado al siguien e ip o de da os mas p eciso. Li e ales Los li e ales son alo es con un ip o esp ecco implci o que se pueden u iliza en las exp esiones. Algunos ejemplos de li e ales son:  10  43265  5#  5 : 5  5 : 4 E 100  & HF F  & O 47  & HF F #  Hola"  Hola""  #1 = 1 = 1994# 2.4 Funciones y sub u inas 2.4.1 Decla acion de p o o ip os de sub u inas La sen encia D ecl a e c ea el p o o ip o de una u ina ex e na o una u ina de BasicSc ip que se deni a p os e io men e en el modulo uen e oen o o modulo. La sen encia D ecl a e deb e apa ece en el ex e io de cualquie decla acion Sub o F unc ion y el p o o ip o decla ado solo se a alido en aquel sc ip donde apa ezca. Sigue la siguien e sin axis: Decla e Sub j Func ion g N ame & T y peC ha ] &CDecl j Pascal j Sys em j S dCall] &Lib ``LibName$'' &Alias ``AliasName$'']] &(& P a ame e Lis ])] &As Type ] P a ame e Lis es la lis a de pa ame os (has a 30) de la u ina y cada uno de ellos iene la siguien e sin axis: &Op ional] &ByVal j ByRe ] P a ame e N ame &()] &As P a ame e T ype ] Los pa ame os que se u ilizan son los siguien es:  Name Typ eCha ] Nomb e de la u ina. En las unciones, es op cional indica el ip o de alo a de ol e colo cando un ca ac e de decla acion de ip os (cualquie a de ellos excep o @ pa a el caso de unciones ex e nas). 23  LibName$ Deb e se esp ecicada si la u ina es ex e na pa a indica el nomb e de la lib e a o codigo uen e que la con iene y apa ece aen e comillas. Pueden u iliza se alias en caso de con*ic os ( AliasName$ deb e apa ece en e comillas). Po ejemplo: { Decla e Func ion Ge Cu en Time Lib use " () As In ege { Decla e Func ion Ge Time Lib use " Alias Ge Cu en Time" As In ege  Typ e Indica el ip o a de ol e . Pa a las unciones ex e nas, los ip os alidos son: I n eg e , Long , S ing , S ing l e , D oubl e , Da e , B ool ean y ob je os de da os. Po o o lado, los ip os C u ency y Va ian , las cadenas de longi ud a iable, los a ays, los ip os denidos p o el usua io y los ob je os de au oma izacion OLE no pueden se de uel os p o las unciones ex e nas.  Op ional Pa a indica la op cionalidad de un pa ame o. To dos los pa ame os op cionales deb en se de ip o V a ian , y se decla an al nal de la lis a de pa ame os.  ByVal Se pasa a el pa ame o p o alo , p o lo que no p o d a se mo dicados p o la u ina.  ByRe Se pasa a el pa ame o po e e encia, po lo que p o d a cambia se. Po de ec o, o dos los pa ame os se pasan p o e e encia.  Pa ame e Name Nomb e del pa ame o, que deb e segui las con enciones de nomb es de BasicSc ip . () 00 indica que el pa ame o es un a ay.  Pa ame e Typ e Esp ecica el ip o del pa ame o. La clausula As deb e se incluida solo si el nomb e del pa ame o no con iene un ca ac e de decla acion de ip o. Ademas de los ip os basicos, pueden esp ecica se es uc u as denidas p o el usua io, ob je os de da os y ob je os de au oma izacion OLE . Pa a pasa pa ame os a u inas ex e nas, si el ip o de da o no es cono cido, se puede u iliza Any , o zando al compilado a ela ja el chequeo de ip o, p e mi iendo que cualquie ip o de da os pueda se pasado en el luga de dicho a gumen o. Po ejemplo: { Decla e Sub Con e i Lib MiLib e ia" (a As Any) Paso de pa ame os Po de ec o, el paso de pa ame os en BasicSc ip es po e e encia. Muchas u inas ex e - nas equie en un alo en luga de una e e encia y pa a ello es a ByV al . Po ejemplo, el p o cedimien o en C oid M essag eB eep ( in ) deb e a decla a se as: Decla e Sub MessageBeep Lib ``use '' (ByVal n As In ege ) El siguien e p o cedimien o en C in S y s emP a ame e sI n o ( in  in  in  in ) es un ejem- plo de paso de pa ame os p o e e encia y se esc ibi a as: Decla e Func ion Sys emPa ame e sIn o Lib ``use '' (ByVal ac ion As In ege , ByVal uPa am As In ege , ByRe pIn o As In ege , ByVal up da eINI As In ege ) As In ege Paso de cadenas Las cadenas pueden pasa se p o e e encia opo alo . Cuando se pasan p o e e encia, lo que se pasa es un pun e o a un pun e o a una cadena al es ilo C ( e minada con nul l ) y la u ina ex e na puede cambia el pun e o o mo dica el con enido de la cadena. Cuando se pasa po 24 Salida o zada de sub u inas La sen encia E xi S ub ue za la salida de la sub u ina ac ual, con inuando la ejecucion po la sen encia que sigue a la llamada de la sub u ina. Solo puede apa ece den o del blo que de una sub u ina. En el siguien e ejemplo la sub u ina isualiza una en ana de dialogo y en onces naliza. La ul ima lnea no deb e a se nunca ejecu ada a causa de la sen encia Exi Sub . Sub Main() MsgBox ``Te minando M ain ().'' Exi Sub MsgBox ``Sigue o da a el Main ().'' End Sub 2.4.4 Algunos asp ec os del paso de pa ame os Da o undamen al a Va ian Al pasa el da o p o e e encia se p e iene que el V a ian cambie su ip o den o de la u ina. Po ejemplo: Sub Foo( As Va ian ) =50 'OK. = ``Hola, mundo'' 'Aqu se p o duce un e o de ip o. End Sub Sub Main() Dim i As In ege Foo i 'Pasa un en e o p o e e encia. End Sub Va ian a da o undamen al Un Va ian no puede pasa se a una u ina que acep e da os undamen ales p o e e encia. Po ejemplo: Sub Foo(i as In ege )  End Sub Sub Main() Dim a As Va ian Foo a 'Aqu el compilado da un e o de ip o. End Sub Paso de es uc u as Las UDT's pueden pasa se an o a u inas denidas po el usua io como a u inas ex e nas. Siemp e se pasan p o e e encia: la palab a cla e ByV al no puede u iliza se cuando se denen a gumen os de ip o es uc u a que se pasan a u inas ex e nas (median e D ecl a e ). ByV al solo 31 se p o d a u iliza con ip os de da os undamen ales. En ealidad, cuando se pasa una es uc u a a una u ina ex e na solo se pasa un pun e o lejano a la es uc u a de da os. Paso de a ays Los a ays siemp e se pasan p o e e encia. Po ejemplo: Dim a(10) As S ing FileLis a 'Ambas llamadas es an bien. FileLis a() Pa ame os nominales Muchos elemen os del lengua je sop o an los pa ame os nominales, que p e mi en la esp ecicacion de pa ame os en una uncion o sub u ina median e su nomb e, en luga del adicional o den p ede e minado. Algunos ejemplos de una llamada a MsgBox :  Nominal : { MsgBox P omp := Hola mundo." { MsgBox Ti le:= T ulo", P omp := Hola mundo" { MsgBox HelpFile:= BASIC.HLP",P omp := Hola mundo", HelpCon ex :=10  Posicional : { MsgBox Hola mundo" { MsgBox Hola mundo",, T ulo" { MsgBox Hola mundo",,, BASIC.HLP",10 De es a o ma, el codigo es mas acil de lee y ademas se e i a ene que cono ce el o den de los pa ame os, sob e o do si los pa ame os son muchos y/o op cionales. Se deb en segui las siguien es eglas:  Los pa ame os nominales deb en u iliza el nomb e del pa ame o esp ecicado en la des- c ipcion de ese elemen o del lengua je, de lo con a io hab a un e o de compilacion.  To dos los pa ame os ( an o nominales como op cionales) se sepa an p o comas.  El pa ame o nominal y su alo aso ciado se sepa an con :=".  Si un pa ame o es nominal, o dos los pa ame os que le siguen ambien deb en se lo. Po ejemplo: MsgBox ``Hola mundo'', Ti le:=``T ulo'' 'OK MsgBox P omp :=``Hola mundo'',,``T ulo'' 'MAL 32 2.5 Sen encias selec i as 2.5.1 La sen encia I ...Then...Else Pe mi e al ejecucion condicionada de una sen encia o g up o de sen encias. La sin axis es: I C ondi ion Then S a emen s &Else E l seS a emen s ] Una segunda sin axis a ~nade la clasula ElseI : I C ondi ion Then & S a emen s ] &ElseI E l seC ondi ion Then & E l seI S a emen s ]] &Else & E l seS a emen s ]] End I Los pa ame os son: Condi ion Cualquie exp esion que esuel aun alo logico. S a emen s Una o mas sen encias sepa adas p o +". Es e g up o se ejecu a cuando la condicion es T ue . ElseS a emen s Una o mas sen encias sepa adas p o +". Es e g up o se ejecu a cuando o das las condiciones an e io es son False . ElseCondi ion Cualquie exp esion que esuel aun alo logico. Se e al ua si o das las condi- ciones p e ias son False . Pueden apa ece cualquie n ume o de clasulas ElseI . ElseI S a emen s Una o mas sen encias sepa adas p o +". Es e g up o se ejecu a cuando su condicion es T ue . 2.5.2 La sen encia Selec Case Es la sen encia de seleccion m ul iple, seg un el alo de una de e minada exp esion. Su sin axis es la siguien e: Selec Case T es E xp ession &Case E xp essionLis & S a emen B l ock ]] &Case E xp essionLis & S a emen B l ock ]]  &Case Else & S a emen B l ock ]] End Selec Es a sen encia iene las siguien es pa es: 33 Tes Exp ession Una exp esion nume ica o de cadena. S a emen Blo ck Un g up o de sen encias de BasicSc ip . Si T es E xp ession se iguala con alguna de las exp esiones con enidas en E xp essionLis ,en onces se ejecu a a el blo que de sen encias. Exp essionLis Una lis a de exp esiones (sepa adas po comas) que se an compa adas con T es E xp ession . Se pueden u iliza angos de exp esiones m ul iples den o de una clasula Case simple. Po ejemplo: Case 1 To 10,12,15, Is > 40 Solo se ejecu a a el blo que que iguale p ime o la exp esion. Si no se encuen a ninguno, en onces se ejecu a a el blo que Case Else . El siguien e ejemplo u iliza la sen encia S el ec C ase pa a isualiza el sis ema op e a i o ac ual: Sub Main() OpSys em% = Basic.OS Selec Case OpSys em% Case 0,2 s = ``Mic oso Windows'' Case3 o8,12 s = ``UNIX'' Case 10 s = ``IBM OS/2'' Case Else s = ``O o sis ema'' End Selec MsgBox ``Es a e sion de BasicSc ip es a ejecu andose sob e: '' & s End Sub 2.5.3 Funciones selec i as A con inuacion se mues an es unciones de muy al o ni el que p e mi en esc ibi sen encias selec i as en una sola lnea de codigo: Cho ose Recib e un ndice y has a 13 exp esiones como pa ame os y de uel e la exp esion que se encuen a en la p osicion indicada. II Recib e una exp esion logica y o as dos exp esiones (pa es cie a y alsa) y de ol e a una u o a seg un la e aluacion de la exp esion logica. Swi ch Recib e has a sie e pa es condicion{exp esion y de uel e la exp esion que co esp onde a la p ime condicion que sea T ue . 34 2.6 Sen encias i e a i as 2.6.1 El bucle Do...Loop Se pueden u iliza has a es ip os de bucles: Do While j Un il g C ondi ion S a emen s Lo op Do S a emen s Lo op While j Un il g C ondi ion Do S a emen s Lo op Como en cualquie o o lengua je, el blo que se epi e mien as la condicion sea e dade a o has a que la condicion sea e dade a. El bucle es inni o cuando no se esp ecica la clausula de condicion. La condicion siemp e se a cualquie exp esion logica. Acon inuacion se mues an a ios ejemplos. El p ime o de ellos u iliza la sen encia Do::: while que ejecu a el cue p o de la i e acion p ime o y en onces chequea la condicion, epi iendolo si la condicion es cie a: Dim a$(100) i% = -1 Do i% = i% + 1 I i% = 0 Then a(i%) = Di $(``*'') Else a(i%) = Di $ End I Lo op While (a(i%) <> ``'' And i% < =99) % = Selec Box(i% & `` che os encon ados'',,a) El segundo ejemplo u iliza la sen encia D o W hile : : : Loop , que chequea p ime o la condici on y ejecu a el cue p o de la i e acion si es cie a, ol iendo de nue oalpun o de chequeo: Dim a$(100) i% = 0 a(i%) = Di $(``*'') Do While (a(i%) <> ``'' And i% < =99) i% = i% + 1 a(i%) = Di $ Lo op % = Selec Box(i% & `` che os encon ados'',,a) El e ce ejemplo u iliza la sen encia D o U n il : : : Loop , que ejecu a la i e acion has a que la condicion sea cie a, e aluando p ime o la condicion: 35 Dim a$(100) i% = 0 a(i%) = Di $(``*'') Do Un il a(i%) = ``'' O i% = 100 i% = i% + 1 a(i%) = Di $ Lo op % = Selec Box(i% & `` che os encon ados'',,a) El cua o ejemplo u iliza la sen encia D o : : : Loop U n il , que ejecu a la i e acion has a que la condicion sea cie a, e aluandola as la ejecucion del cue p o: Dim a$(100) i% = -1 Do i% = i% + 1 I i% = 0 Then a(i%) = Di $(``*'') Else a(i%) = Di $ End I Lo op Un il (a(i%) = ``'' O i% = 100) % = Selec Box(i% & `` che os encon ados'',,a) Salida o zada de los bucles ( Do...Loop ) La sen encia E xi D o lle a la lnea de ejecucion a la sen encia que sigue a la clausula Loop . Solo pod a apa ece den o de una sen encia D o : : : Loop . El siguien e ejemplo ca ga un a a y con las en adas de di ec o ios al menos que hayamas de 10 en adas (en es e caso la sen encia Do::: Loop e mina la i e acion): Sub Main() Dim a$(5) Do i% = i% + 1 I i% = 1 Then a(i%) = Di $(``*'') Else a(i%) = Di $ End I I i% > = 10 Then Exi Do Lo op While (a(i%) <> ``'') I i% = 10 Then MsgBox ``<'' & i% & `` en ada p o cesadas!'' Else MsgBox ``<Menos de '' & i% & `` en adas p o cesadas!'' End I End Sub 36 2.6.2 El bucle While...Wend Es una sen encia i e a i a que epi e la ejecucion de una sen encia o g up o de ellas mien as una condicion de en ada sea e dade a. La condicion se chequea al inicio de cada i e acion. La sin axis es: While C ondi ion & S a emen s ] Wend El siguien e ejemplo ejecu a el bucle has a que el gene ado de n ume os alea o ios de uel e el alo 1 (p e o un maximode1000 eces, momen o en el que se ue za la salida): Sub Main() x% = 0 coun %=0 While x% <> 1 x% = Rnd(1) I coun % > 1000 Then Exi Sub Else coun % = coun % + 1 End I Wend MsgBox ``El bucle se ejecu o''&coun % & `` eces.'' End Sub 2.6.3 El bucle Fo Each La sen encia F o E ach epi e un blo que de sen encias pa a cada elemen o de una coleccion o a ay. Su sin axis es: Fo Each M embe In G oup & S a emen s ] &Exi Fo ] & S a emen s ] Nex & M embe ] Es a sen encia iene los siguien es pa ame os: Membe Nomb e de una a iable pa a gua da un elemen o en cada i e acion del bucle. G oup Nomb e de la coleccion o a ay. S a emen s El blo que de sen encias. La a iable de la i e acion es una copia del elemen o de la coleccion o a ay, po lo que los cambios sob e es as a iables no a ec an a los elemen os o iginales. Los elemen os se eco en en el mismo o den en que es an almacenados en memo ia. La ejecucion con in ua has a que no haya mas elemen os. Pueden anida se los bucles F o E ach con o os bucles, po lo que N ex 37 a ec a aalmas in e no ( F o E ach o F o N ex ) en ese momen o. El nomb e de la a iable pa a los miemb os deb e se unico. El siguien e ejemplo mues a una sub u ina que i e a a a es de los elemen os de un a ay u ilizando la sen encias Fo ::: Each : Sub Main() Dim a(3 To 10) As Single Dim i As Va ian Dim s As S ing Fo i = 3 To10 a(i) = Rnd() Nex i Fo Each i In a i=i+1 Nex i s = ``'' Fo Each i In a I s <> ``'' Thens=s&``,'' s=s&i Nex i MsgBoxs End Sub En el siguien e ejemplo la sub u ina isualiza los nomb es de cada ho ja de un lib o de Excel : Sub Main() Dim Excel As Ob jec Dim Shee s As Ob jec Se Excel = C ea eOb jec (``Excel.Applica ion'') Excel.Visible = 1 Excel.Wo kb o oks.Add Se Shee s = Excel.Wo kshee s Fo Each a In Shee s MsgBox a.Name Nex a End Sub 2.6.4 El bucle Fo ... Nex La sen encia Fo : : : Nex epi e un blo que de sen encias un nume o esp ecicado de eces. Su sin axis es la siguien e: 38 Fo Coun e = S a To End &S ep I nc emen ] & S a emen s ] &Exi Fo ] & S a emen s ] Nex & Coun e &, N ex C oun e ] ::: ] Es a sen encia oma los siguien es pa ame os: Coun e Nomb e de una a iable nume ica (los ip os p osibles son: In ege , Long , S ing l e , Double o Va ian ). S a Valo inicial del con ado . End Valo nal del con ado . Inc emen Can idad que se a ~nade al con ado en cada uel a del bucle. Se a p osi i o o nega i o seg un los alo es iniciales y nales. Po de ec o, el inc emen o es +1. No se puede cambia su alo du an e la ejecucion del bucle. S a emen s El cue p o de sen encias del bucle. La sen encia con inua su ejecucion has a que llega a una sen encia E xi F o o cuando el con ado es mayo que el alo nal (o meno si el bucle iene eco ido in e so). Es os bucles pueden apa ece anidados. La sen encia Nex se aplica al bucle Fo : : : Nex mas in e no. La clausula Nex puede op imiza se ag upando a ios con ado es. Po ejemplo, los siguien es bucles son equi alen es: Fo i = 1 To10 Fo i = 1 To10 Fo j=1 To10 Fo j=1To10 Nex j Nex j,i Nex i El siguien e ejemplo cons uye la abla de e dad pa a la op e acion logica O u ilizando a ios bucles F o : : : N ex anidados: Sub Main() Fo x = -1 To0 Fo y = -1 To0 Z=xO y msg = msg & Fo ma (Abs(x%),``0'') &`` O '' msg = msg & Fo ma (Abs(y%),``0'') &`` ='' msg = msg & Fo ma (Z,``T ue/False'') & Basic.Eoln$ Nex y Nex x MsgBox msg End Sub Salida o zada de los bucles ( Fo ...Nex ) La sen encia Exi F o ue za la salida del bucle mas in e no Fo , con inuando la lnea de ejecucion as la sen encia N ex .Solo puede apa ece en los blo ques Fo : : : Nex . El siguien e ejemplo ellena un a ay con en adas de di ec o ios has a que se encuen a una en ada nula o se hayan p o cesado 100 en adas, momen o en el que el bucle e mina po 39 una sen encia E xi F o .La en ana de dialogo isualiza un con ado de che os encon ados y algunas en adas del a ay: Cons c l = Ch (13) + Ch (10) Sub Main() Dim a$(100) Fo i = 1 To 100 I i=1Then a$(i) = Di $(``*'') Else a$(i) = Di $ End I I (a$(i) = ``'') O (i > = 100) Then Exi Fo Nex i msg = ``Hay '' & i & `` che os encon ados.'' & c l MsgBox msg & a$(1) & c l & a$(2) & c l & a$(3) & c l & a$(10) End Sub 40 De aul P op e ies Las p opiedades p o de ec o del mo delo. Deploymen Diag am El diag ama de despliegue aso ciado al mo delo. Ro o Ca ego y La ca ego a Top Le el de Ra ional Rose .Se co esp onde a la is a logica del mo delo. Solo lec u a. Ro o Subsys em El subsis ema Top Le el de Ra ional Rose . Se co esp onde a la is a de comp onen es del mo delo. Solo lec u a. Ro o UseCaseCa ego y La ca ego a az a la que p e enecen los casos de usos. Se co es- p onde a la is a de casos de uso del mo delo. Solo lec u a. UseCases Los casos de usos que p e enecen al mo delo. Ylosme o dos esp eccos de la clase Model son: FindCa ego ies Encon a una coleccion de ca ego as del mo delo. FindCa ego yWi hID Encon a una ca ego a esp ecca del mo delo. FindClassWi hID Encon a una clase esp ec ca del mo delo. FindClassses Encon a una coleccion de clases del mo delo. FindI emWi hID Encon a un  em esp ecco del mo delo. FindI ems Encon a una coleccion de  emes del mo delo. Ge AllClasses Ob ene o das las clases de o das las ca ego as del mo delo. Ge AllCa ego ies Ob ene o das las ca ego as del mo delo. Ge AllSubsys ems Ob ene o dos los subsis emas del mo delo. Ge AllMo dules Ob ene o dos los modulos del mo delo. Ge AllP o cesso s Ob ene o dos los p o cesado es del mo delo. Ge AllDe ices Ob ene o dos los disp osi i os del mo delo. Ge AllUseCases Ob ene o dos los casos de uso del mo delo. Ge Ac i eDiag am Ob ene el diag ama ac ualmen e ac i o del mo delo. Ge Selec edClasses Ob ene o das las clases ac ualmen e seleccionadas en el mo delo. Ge Selec edCa ego ies Ob ene o das las ca ego as ac ualmen e seleccionadas en el mo delo. Ge Selec edMo dules Ob ene o dos los modulos ac ualmen e seleccionados en el mo delo. Ge Selec edSubsys ems Ob ene o dos los subsis emas ac ualmen e seleccionados en el mo- delo. Ge Selec edUsesCases Ob ene o dos los casos de uso ac ualmen e seleccionados en el mo- delo. AddP o cesso A~nadi un p o cesado al mo delo. Dele eP o cesso Elimina un p o cesado del mo delo. 47 AddDe ice A~nadi un disp osi i o al mo delo. Dele eDe ice Elimina un disp osi i o del mo delo. La clase De aul ModelP ope ies es un con enedo pa a las p opiedades p o de ec o que p e enecen al mo delo. Solo hayunobje o D e aul M odel P ope ies po modelo. Los me o dos esp eccos de es a clase son: AddDe aul P op e y A~nadi una p opiedad p o de ec o a un conjun o de p opiedades. CloneDe aul P op e ySe Duplica un conjun o de p opiedades po de ec o pa a u iliza lo como base pa a c ea un nue oconjun o de p opiedades. C ea eDe aul P op e ySe C ea un nue oconjun o de p opiedades p o de ec o (en blanco). Dele eDe aul P op e y Elimina una p opiedad p o de ec o del conjun o de p opiedades p o de ec o. Dele eDe aul P op e ySe Elimina una p opiedad p o de ec o de un mo delo. FindDe aul P op e y Encon a una p opiedad po de ec o esp ecicada dados un mo delo, unaclaseyelnomb e de una he amien a. Ge De aul P op e ySe Ob ene el conjun o de p opiedades po de ec o pa a una he a- mien a y clase dadas. Ge De aul Se Names Ob ene los nomb es de los conjun os de p opiedades p o de ec o pa a una he amien a y clase dadas. Ge To olNamesFo Class Ob ene los nomb es de las he amien as aso ciadas a una clase dada. IsTo olVisible De e mina si la pagina con las p opiedades po de ec o del mo delo de una he amien a dada es a isible en las esp ecicaciones. Se To olVisibili y Es ablece la isibilidad de una he amien a, es deci , si la pagina de p o- piedades pa a esa he amien a apa ece a en las esp ecicaciones. Todas las elaciones ( C l assR el a ion , I nhe i s , Has y Real iz es ) he edan de la clase Re- la ion : sus p opiedades y me o dos p e mi en esp ecica y ob ene la in o macion de o das las pa es in oluc adas en cada elacion del mo delo. Vease la subseccion sob e el diag ama de he encias de Rel a ion . La clase Ex e nalDocumen o ece las p opiedades y me o dos que p e mi en c ea do cu- men os ex e nos o in o mes desde el en o no de Ra ional Rose . Po ejemplo, se puede ejecu a Wo d en Windows pa a pasa la in o macion de un mo delo a un do cumen o de Wo d . Las p opiedades esp eccas de E x e nal D ocumen son: Pa en Ca ego y La aplicacion a u iliza pa a ab i el do cumen o. Pa h El camino comple o al do cumen o. URL La URL del do cumen o en In e ne . Las p opiedades P a h y URL son excluyen es en e s. Ylosme o dos esp eccos de E x e nal D ocumen son: IsURL Chequea si el do cumen o iene una URL . Op en Ab i un do cumen o ex e no. 48 Deploymen Diag am Elemen ModuleDiag am Diag am Scena ioDiag am S a eDiag am ClassDiag am Figu a 3.3: Diag ama de he encia de la clase Diag am . 3.2.3 Diag ama de he encia de la clase Diag am El diag ama de clases de la gu a 3.3 mues a la es uc u a de he encia de la clase D iag am en el mo delo REI . Ya se ha comen ado que cada ob je o en un mo delo es un elemen o, as que la clase Diag am es a di ec amen e sub o dinada a E l emen . La clase Diag am o ece un conjun o de p opie- dades y me o dos que o das las demas clases de diag amas (p o ejemplo, diag ama de clases, diag ama de escena ios, diag ama de comp onen es, e c.) he edan. Cualquie diag ama se com- p one de a ios elemen os ( i ems ) y is as de esos elemen os ( I emV iew s ). Cada I em iew es la ep esen acion sica de un elemen o de Ra ional Rose y es un ob je o con las p opiedades yme o dos que denen su apa iencia en la en ana del diag ama (p osicion, colo , ama ~no, e c.). La op e a i idad basica de la clase Diag am se esume en los siguien es pun os:  La p opiedad D iag am:I emV iew s es u ilizada pa a i e a a a es de la coleccion de is as de elemen os que p e enecen al diag ama.  La p opiedad D iag am:I ems es u ilizada pa a i e a a a es de los elemen os que exis en en el diag ama.  El me o do D iag am:Ge V iew F om es u ilizado pa a encon a la p ime a is a de un elemen o.  Pa a encon a cuales son las is as de los elemen os ac ualmen e seleccionados en el diag ama, se eco e la lis a de is as de elemen os del diag ama. Pa a cada una de ellas, se u iliza el me o do I emV iew :I sS el ec ed pa a de e mina si es a o no seleccionado en el diag ama. Se puede ob ene en onces la is a de elemen o seleccionada o ealiza cualquie o o p o ceso basandose en es a in o macion.  Una mane a apida pa a ob ene o dos los elemen os seleccionados en un diag ama es u iliza el me o do D iag am:Ge S el ec edI ems . En luga de i e a a a es del diag ama y chequea cada is a, es e me o do simplemen e de uel e o do aquello que es e seleccionado. O as p opiedades esp eccas de Diag am son: Do cumen a ion La do cumen acion anexa al diag ama. Visible La isibilidad del diag ama. O os me o dos esp eccos de Diag am son: 49 Exis s Comp oba si un de e minado ob je o del diag ama exis e. Layou Dibuja un diag ama. In alida e Redibuja un diag ama. Up da e Mo dica un diag ama. AddNo eView A~nadi una no a a un diag ama. Remo eNo eView Bo a una no a del diag ama. Ge No eViews Ob ene las no as p e enecien es al diag ama. Rende Sal a el g aco del diag ama en un che o con el o ma o Windows Me ale . Rende Enhanced La misma accion que Rende ,pe oconmayo calidad. Rende ToClipb oa d La misma accion que Rende , p e o gua da el g aco en el p o apap eles. Rende EnhancedToClipBoa d La misma accion que Rende T oC lipboa d , p e o con mayo calidad. IsAc i e Indica si el diag ama es a ac ualmen e ac i o en la aplicacion. Ac i a e Ac i a el diag ama. La clase ClassDiag am p e mi e a ~nadi , ob ene y b o a clases y ca ego as del diag ama de clases. Las p opiedades esp eccas de C l assD iag am son: Pa en Ca ego y La ca ego a que con iene al diag ama de clases. Ylosme o dos esp eccos de C l assD iag am son: AddAsso cia ion A~nadi una aso ciaci on al diag ama. AddCa ego y A~nadi una ca ego a al diag ama. AddClass A~nadi una clase al diag ama. AddUseCase A~nadi un caso de uso al diag ama. Ge Asso cia ions Ob ene la coleccion de las aso ciaciones que p e enecen al diag ama de clases. Ge Ca ego ies Ob ene la coleccion de las ca ego as que p e enecen al diag ama de clases. Ge Classes Ob ene la coleccion de las clases que p e enecen al diag ama de clases. Ge ClassView Ob ene una is a de clase de un diag ama de clases. Ge Selec edCa ego ies Ob ene las ca ego as ac ualmen e seleccionadas en el diag ama de clases. Ge Selec edClasses Ob ene las clases ac ualmen e seleccionadas en el diag ama de clases. Ge UseCases Ob ene los casos de uso p e enecien es al diag ama. IsUseCaseDiag am De e mina si el diag ama de clases es un diag ama de casos de uso. Remo eAsso cia ion Elimina una aso ciacion del diag ama de clases. 50 Remo eCa ego y Elimina una ca ego a del diag ama de clases. Remo eClass Elimina una clase del diag ama de clases. Remo eUseCase Elimina un caso de uso del diag ama. Un escena io es una ins ancia de un caso de uso y mues a los e en os que o cu en du an e la ejecucion del sis ema. La clase Scena ioDiag am p e mi e c ea una ep esen acion isual de un escena io. Las p opiedades esp eccas de S cena ioD iag am son: Ins anceViews La coleccion de is as de ins ancias p e enecien es al diag ama. Ylosme o dos esp eccos de S cena ioD iag am son: AddIns ance A~nadi una ins ancia al diag ama de escena io. AddIns anceView A~nadi una is a de ins ancia al diag ama de escena io. C ea eMessage C ea un mensa je y a ~nadi lo al diag ama de escena io. Dele eIns ance Elimina una ins ancia del diag ama de escena io. Ge Diag amTyp e Ob ene el alo del ip o de diag ama. Ge Messages Ob ene la coleccion de mensa jes que p e enecen al diag ama de escena io. Ge Selec edLinks Ob ene los enlaces ac ualmen e seleccionados en el diag ama de escana io. Ge Selec edMessages Ob ene el conjun o de mensa jes ac ualmen e seleccionados en el dia- g ama de escena io. Ge Selec edOb jec s Ob ene el conjun o de ob je os ac ualmen e seleccionados en el diag ama de escana io. Remo eIns anceView Elimina una is a de ins ancia del diag ama de escena io. La clase S a eDiag am dene las p opiedades y me o dos que p e mi en la manipulacion de ob je os en la is a de es ados (con iene los diag amas de es ado) de un mo delo. Las p opiedades esp ec cas de la clase S a eD iag am son: Pa en La maquina de es ados que con iene el diag ama de es ados. Ylosme o dos esp eccos de S a eD iag am son: AddS a eView A~nadi una is a de es ados a un diag ama de es ados. Ge Selec edS a es Ob ene los es ados ac ualmen e seleccionados en un diag ama de es ados. Ge Selec edS a eViews Ob ene las is as de es ados ac ualmen e seleccionadas en un dia- g ama de es ados. Ge Selec edT ansi ions Ob ene las ansiciones ac ualmen e seleccionadas en un diag ama de es ados. Ge S a eView Ob ene el es ado de una is a de es ados en un diag ama de es ados. Ge S a eViews Ob ene o das las is as de es ados en un diag ama de es ados. 51 Remo eS a eView Elimina una is a de es ados de un diag ama de es ados. Un ModuleDiag am map ea la colo cacion de las clases y ob je os en modulos. Las p opie- dades esp eccas de M odul eD iag am son: Pa en Subsys em El subsis ema que con iene el modulo. Siemp e hace e e encia a un ob je o S ubsy s em alido. Ylosme o dos esp eccos de M odul eD iag am son: AddMo dule A~nadi unmodulo al diag ama de modulos. AddSubsys em A~nadi un subsis ema al diag ama de modulos. Ge Mo dules Ob ene la coleccion que con iene o dos los modulos p e enecien es al diag ama de modulos. Ge Selec edMo dules Ob ene los modulos ac ualmen e seleccionados en el diag ama de modulos. Ge Selec edSubsys ems Ob ene los susbsis emas ac ualmen e seleccionados en el diag ama de modulos. Ge Subsys ems Ob ene la coleccion que con iene o dos los subsis emas que p e enecen al diag ama de modulo. Un diag ama de despliegue es la ep esen acion isual de los disp osi i os yp o cesado es sicos. La clase Deploymen Diag am o ece las siguien es me o dos esp eccos: AddDe ice A~nadi un disp osi i o al diag ama de despliegue. AddP o cesso A~nadi un p o cesado al diag ama de despliegue. Ge De ices Ob ene los disp osi i os que p e enecen al diag ama de despliegue. Ge P o cesso s Ob ene los p o cesado es que p e enecen al diag ama de despliegue. Remo eDe ice Elimina un disp osi i o del diag ama de despliegue. Remo eP o cesso Elimina un p o cesado del diag ama de despliegue. 3.2.4 Diag ama de he encia de la clase Logical El diag ama de clases de la gu a 3.4 mues a la es uc u a de he encia de las dos p incipales clases logicas del mo delo REI : C a eg o y y C l ass . Ambas he edan de las clases Package y RoseI em esp ec i amen e, que p e enecen al diag ama de he encia de la clase M odel . La clase Ca ego y p e mi e deni y manipula colecciones logicas de clases. Las p opiedades esp ecicas de la clase C a ego y son: Asso cia ions La coleccion de o das las aso ciaciones que p e enecen a la ca ego a. Ca ego ies La coleccion de las ca ego as que son hijas de las ca ego a. ClassDiag ams La coleccion de los diag amas de clase que p e enecen a la ca ego a. 52 RoseI em Class Package Ca ego y Figu a 3.4: Diag ama de he encia de la clase Logical . Classes La coleccion de las clases que p e enecen a la ca ego a. Global Iden ica la ca ego a como global. Pa en Ca ego y La ca ego a que con iene a la ca ego a. Scena ioDiag ams La coleccion de los diag amas de escena io que p e enecen a la ca ego a. UseCases La coleccion que con iene los casos de uso que p e enecen a la ca ego a. Ylosme o dos esp eccos de la clase C a eg o y son: AddCa ego y A~nadi una ca ego a a una ca ego a. AddCa ego yDep endency A~nadi una dep endencia de ca ego a a una ca ego a. AddClass A~nadi una clase a una ca ego a. AddClassDiag am A~nadi un diag ama de clase a una ca ego a. AddScena ioDiag am A~nadi un diag ama de escena io a una ca ego a. AddUseCase A~nadi un caso de uso a una ca ego a. Dele eCa ego y Elimina una ca ego a de una ca ego a. Dele eCa ego yDep endency Elimina una dep endencia de ca ego a de una ca ego a. Dele eClass Elimina una clase de una ca ego a. Dele eClassDiag am Elimina un diag ama de clase de una ca ego a. Dele eScena ioDiag am Elimina un diag ama de escena io de una ca ego a. Dele eUseCase Elimina un caso de uso de una ca ego a. Ge AllCa ego ies Ob ene o das las ca ego as que p e enecen a una ca ego a y o das las ca ego as p e enecien es a sus hijas. Ge AllClasses Ob ene o das las clases que p e enecen a la ca ego a y o das sus hijas. Ge AllUseCases Ob ene la coleccion que con iene los casos de uso que p e enecen a la ca e- go a. 53 Ge AssignedSubsys em Ob ene el subsis ema asignado a la ca ego a. Ge Ca ego yDep endencies Ob ene la coleccion de dep endencias de ca ego a que p e enecen a la ca ego a. HasAssignedSubsys em Ob ene el subsis ema asignado a la ca ego a. Relo ca eCa ego y Recolo ca una ca ego a den o de una ca ego a. Relo ca eClass Recolo ca una clase den o de una ca ego a. Relo ca eClassDiag am Recolo ca un diag ama de clase den o de una ca ego a. Relo ca eScena ioDiag am Recolo ca un diag ama de escena io den o de una ca ego a. Se AssignedSubsys em Asigna un subsis ema a la ca ego a. TopLe el Indica si la ca ego a es la ca ego a az. La clase Class pe mi e es ablece y ob ene las ca ac e s icas y elaciones de las clases esp eccas de un mo delo: si es una clase abs ac a, si es un ip o undamen al, si es p e sis en e, si puede se concu en e con o as clases, su conjun o de a ibu os y op e aciones, sus elaciones con o os ob je os del mo delo, e c. Las p opiedades esp eccas de la clase C l ass son: Pa en Ca ego y La ca ego a que con iene la clase. Abs ac Iden ica la clase como abs ac a. A ibu es La coleccion que con iene los a ibu os de la clase. Op e a ions La coleccion que con iene las op e aciones de la clase. Exp o Con ol La isibilidad de la clase. Ca dinali y La ca dinalidad de la clase. ClassKind El ip o de la clase. Concu ency El ip o de concu encia de la clase con o os ob je os. Pe sis ence Iden ica la clase como p e sis en e. Space El algo i mo de espacios a u iliza pa a la clase. Fundamen alTyp e Iden ica la clase como un ip o undamen al. S a eMachine La maquina de es ado que p e enece a la clase. Pa en Class La clase pad e de es a clase. Ylosme o dos esp eccos de la clase Class son: AddAssignedMo dule Asigna un modulo (comp onen e) a la clase. AddAsso cia ion A~nadi una aso ciacion ( Associa ion ) a una clase. AddA ibu e A~nadi un a ibu o a una clase. AddClassDep endency A~nadi una dep endencia de clase a la clase. 54 AddHas A~nadi una ag egacion ( H asR el a ionship ) a una clase. AddInhe i Rel A~nadi una elacion de he encia ( I nhe i Rel a ionship ) en e clases en una clase. AddNes edClass A~nadi una clase anidada a una clase. AddOp e a ion A~nadi una op e acion a una clase. AddRealizeRel A~nadi una elacion de ealizacion a una clase. C ea eS a eMachine C ea una maquina de es ado pa a una clase. Dele eAsso cia ion Elimina una aso ciacion de una clase. Dele eA ibu e Elimina un a ibu o de una clase. Dele eClassDep endency Elimina una dep endencia de clase de una clase. Dele eHas Elimina una ag egacion de una clase. Dele eInhe i Rel Elimina una elacion de he encia en e clases en una clase. Dele eNes edClass Elimina una clase anidada de una clase. Dele eOp e a ion Elimina una op e acion de una clase. Dele eRealizeRel Elimina una elacion de ealizacion de una clase. Dele eS a eMachine Elimina la maquina de es ados de la clase del mo delo. Ge AssignedLanguage Ob ene el nomb e del lengua je de p og amacion asignado a la clase. Ge AssignedMo dules Ob ene los modulos asignados a la clase. Ge Asso cia eRoles Ob ene los oles aso ciados a la clase. Ge Asso cia ions Ob ene las aso ciaciones en las que pa icipa la clase. Ge ClassDep endencies Ob ene la coleccion de clases de dep endencia que p e enecen a la clase. Ge HasRela ions Ob ene las ag egaciones en las que pa icipa la clase. Ge Inhe i Rela ions Ob ene las elaciones de he encia en las que pa icipa la clase. Ge LinkAsso cia ion Ob ene la aso ciacion pa a una clase de enlace ( Link ). Ge Nes edClasses Ob ene las clases anidadas en la clase. Ge RealizeRela ions Ob ene la coleccion de elaciones de ealizacion que p e enecen a la clase. Ge Roles Ob ene los oles de la clase. Ge SubClasses Ob ene las sub clases de la clase. Ge Sup e classes Ob ene las sup e clases co esp ondien es a la clase. IsALinkClass De e mina si una clase es una clase de enlace. IsNes edClass De e mina si una clase es una clase anidada. Remo eAssignedMo dule Bo a una asignacion de modulo de la clase. 55 ClassView Elemen Ins anceView RoseI emView Componen View Subsys emView S a eView No eView Figu a 3.5: Diag ama de he encia de la clase View . 3.2.5 Diag ama de he encia de la clase View El diag ama de clases de la gu a 3.5 mues a la es uc u a de he encia de la clase V iew en el mo delo REI .La clase RoseI emV iew he eda de E l emen , que p e enece al diag ama de he encia de la clase M odel . La clase RoseI emView p e mi e deni y manipula el ama ~no y p osicion de un RoseI em en un diag ama. Las p opiedades esp ecicas de la clase RoseI emV iew son: Name El nomb e de la is a del  em. I em El ob je o RoseI em ep esen ado p o la is a. Pa en Diag am El diag ama que con iene a la is a. Pa en View El ob je o RoseI emV iew que con iene a la is a. SubViews La coleccion de is as de  em que p e enecen a la is a. XPosi ion La co o denada ho izon al (x) del pun o cen al de la is a. YPosi ion La co o denada e ical (x) del pun o cen al de la is a. Heigh La al u a de la is a. Wid h La anchu a de la is a. FillColo .Red Es ablece el colo de la is a a o jo. FillColo .G een Es ablece el colo de la is a a e de. FillColo .Blue Es ablece el colo de la is a a azul. FillColo .T anspa en Es ablece el colo de la is a a anspa en e. LineColo .Red Es ablece el colo de lnea de la is a a o jo. LineColo .G een Es ablece el colo de lnea de la is a a e de. LineColo .Blue Es ablece el colo de lnea de la is a a azul. Fon .Red Es ablece el colo del ex o a o jo. 56 AssignedLanguage El lengua je de p og amacion asignado al modulo. Decla a ions La coleccion de decla aciones co esp ondien es al modulo. O he Pa La segunda pa e del modulo cuando o ma pa e de un subsis ema. Pa en SubSys em El subsis ema que con iene el modulo. Pa Si el modulo es pa e de un subsis ema o no. Pa h El di ec o io donde se encuen a el modulo. Typ e El ip o del modulo. Ylosme o dos esp eccos de M odul e son: AddRealizeRel A~nadi una elacion de ealizacion a un modulo. AddVisibili yRela ionship C ea una nue a elacion de isibilidad y a ~nadi la a un modulo. Dele eRealizeRel Elimina una elacion de ealizacion de un modulo. Dele eVisibili yRela ionship Elimina una elacion de isibilidad de un modulo. Ge AllDep endencies Ob ene o dos los modulos que a ec an al modulo. Ge AssignedClasses Ob ene la coleccion de clases asignadas al modulo. Ge Dep endencies Ob ene la coleccion de modulos incluidos en el modulo. Ge RealizeRela ions Ob ene la coleccion de elaciones de ealizacion p e enecien es a un modulo. Ge Subsys emDep endencies Ob ene la coleccion de elaciones de isibilidad en e un modulo y un subsis ema. 3.2.9 Diag ama de he encia de la clase Rela ion El diag ama de clases de la gu a 3.9 mues a la es uc u a de he encia de la clase Rel a ion en el mo delo REI . Es as clases he edan de RoseI em que p e enece al diag ama de he encia de la clase M odel , y son un sub conjun o de las clases logicas del mo delo. To das las elaciones ( C l assR el a ion , I nhe i s , Has , Real iz es ) he edan de la clase Rela ion , cuyas p opiedades y me o dos p e mi en esp ecica y ob ene la in o macion sob e los ex emos de las elaciones en el mo delo. Las p opiedades esp eccas de la clase Rel a ion son: Supplie Name El nomb e del ex emo suminis ado de la elacion. Ylosme o dos esp eccos de la clase Rel a ion son: HasClien De e mina si la elacion iene una pa e clien e. HasSupplie De e mina si la elacion iene una pa e suminis ado a. Ge Clien Ob ene el ob je o RoseI em que ac ua como clien e de la elacion. Ge Supplie Ob ene el ob je o RoseI em que ac ua como suminis ado de la elacion. 63 RoseI em Rela ion T ansi ion Role Ca ego yDependency RealizeRela ion ModuleVisibili yRela ionShip ClassRela ion Inhe i Rela ion HasRela ionship ClassDepedency Figu a 3.9: Diag ama de he encia de la clase Rela ion . Los oles deno an el p oposi o o capacidad en que una clase se aso cia con o a. La clase Role exp onen un conjun o de p opiedades y me o dos pa a de e mina las ca ac e s icas de los oles y p e mi en ob ene los oles de un mo delo. Las p opiedades esp eccas de la clase Role son: Class La clase co esp ondien e al ol. Cons ain s Las es icciones del ol. Asso cia ion La aso ciacion inculada al ol. Exp o Con ol La isibilidad de los a ibu os. F iend Indica si el ol es iend " o no, p e mi iendo el acceso a sus a ibu os y op e aciones no publicos. Con ainmen La elacion con enedo a del ol. Ca dinali y La ca dinalidad del ol. Agg ega e Indica si el ol es una clase ag egado o no. S a ic Indica si el ol es es a ico o no. Na igable Indica si el ol es na egable o no. Keys La coleccion de cla es co esp ondien es al ol. Ylosme o dos esp eccos de Role son: AddKey De uel eunacla e basada en el nomb e y ip o de un a ibu o. Dele eKey Elimina una cla e de un ol. Ge ClassName Ob iene el nomb e de la clase aso ciado con el ol. 64 La clase Ca ego yDependency p e mi e deni y manipula las elaciones de dep endencia en e las ca ego as. La clase ClassRela ion he eda de la clase Rel a ion y es la clase pad e de H asR el a ionship , C l assD ependency e I nhe i Rel a ion .los me o dos esp eccos de C l assR el a ion son: Ge Con ex Class Ob ene la clase clien e de la elacion. Ge Supplie Class Ob ene la clase suminis ado a de la elacion. La elacion de he encia indica una elacion je a quica en e las clases en las que una clase compa e al es uc u a y/o comp o amien o de o a clase. La clase Inhe i Rela ion exp one un conjun o de p opiedades y me o dos pa a de e mina las ca ac e s icas de la elacion de he encia. Las p opiedades esp eccas de I nhe i Rel a ion son: Exp o Con ol La isibilidad de la elacion de he encia. F iendshipRequi ed Si la p opiedad F iend es eque ida p o la elacion de he encia. Vi ual Si la elacion es i ual o no. La elacion Has " indica una elacion con enedo a o ag egado en e clases. La clase Has- Rela ionship exp one un conjun o de p opiedades y me o dos pa a de e mina las ca ac e s icas de es as elaciones en un mo delo. Las p opiedades esp eccas de H asR el a ionship son: Clien Ca dinali y La ca dinalidad del clien e de la elacion. Con ainmen El con enedo de clase pa a la elacion. Exp o Con ol La isibilidad de la elacion. S a ic Si la elacion es es a ica o no. Supplie Ca dinali y La ca dinalidad del suminis ado de la elacion. La clase ClassDependency exp one un conjun o de p opiedades y me o dos pa a de e - mina las ca ac e s icas de las dep endencias en e las clases. Las p opiedades esp eccas de C l assD ependency son: Clien Ca dinali y La ca dinalidad del clien e de la dep endencia. Supplie Ca dinali y La ca dinalidad del suminis ado de la dep endencia. In ol esF iendship Si la clase implica la p opiedad F iend o no. Exp o Con ol La isibilidad de la dep endencia. Una elacion de ealizacion en e una clase logica y una clase comp onen e mues a que la clase comp onen e ealiza las op e aciones denidas p o la clase logica. Los me o dos esp eccos de clase RealizeRela ion son: Ge Con ex Class Ob ene la clase clien e de la elacion. Ge Con ex Comp onen Ob ene el comp onen e clien e de la elacion. Ge Supplie Class Ob ene la clase suminis ado a de la elacion. 65 Message RoseI em Objec Ins ance Link Pe sis ence Synch oniza ion F equency Figu a 3.10: Diag ama de he encia de la clase Scena io . Ge Supplie Comp onen Ob ene el comp onen e suminis ado de la elacion. La clase ModuleVisibili yRela ionship desc ib e el clien e y suminis ado de una elacion en e modulos. Las p opiedades esp eccas de M odul eV isibil i y Rel a ionship son: Con ex Mo dule El nomb e del modulo clien e de la elacion. Con ex Subsys em El nomb e del subsis ema clien e de la elacion. Supplie Mo dule El nomb e del modulo suminis ado de la elacion. Supplie Subsys em El nomb e del subsis ema sumnis ado de la elacion. La clase T ansi ion es una clase que p e enece al diag ama de he encia de S a e , p e o ambien he eda de la clase Rel a ion p o que se conside a que una ansicion es una elacion en e los es ados uen e y des ino. 3.2.10 Diag ama de he encia de la clase Scena io El diag ama de clases de la gu a 3.10 mues a la es uc u a de he encia de la clase S cena io en el mo delo REI . Las clases O bj ec I ns ance , Link y M essag e he edan de RoseI em que p e enece al diag ama de he encia de la clase M odel . La clase Objec Ins ance exp one un conjun o de p opiedades y me o dos pa a de e mina las ca ac e s icas de los ob je os en un mo delo. Las p opiedades esp eccas de O bj ec I ns ance son: ClassName El nomb e de la clase del ob je o. Links La coleccion de enlaces co esp ondien es al ob je o. Mul ipleIns ances Si exis en m ul iples ins ancias del ob je o o no. Pe sis ence Si la ins ancia del ob je o es p e sis en e o es a ica. Ylosme o dos esp eccos de O bj ec I ns ance son: AddLink A~nadi un enlace a la ins ancia del ob je o. 66 Dele eLink Elimina un enlace de la ins ancia del ob je o. Ge Class Ob ene la clase a la que p e enece la ins ancia del ob je o. IsClass De uel e T ue si la ins ancia del ob je o es una clase. Los ob je os in e accionan a a es de sus enlaces hacia o os ob je os. Un enlace es una ins ancia de una aso ciacion, de la misma mane a que un ob je o es una ins ancia de una clase. Las p opiedades y me odosdelaclase Link p e mi en deni enlaces en e ob je os y de e mina la na u aleza de las aso ciaciones. Las p opiedades esp eccas de Link son: LinkRole1 Dene una ins ancia de ob je o como un enlace en Role 1. LinkRole2 Dene una ins ancia de ob je o como un enlace en Role 2. LinkRole1Sha ed Dene una ins ancia de ob je o como un enlace en Role 1con isibilidad compa ida. LinkRole2Sha ed Dene una ins ancia de ob je o como un enlace en Role 2con isibilidad compa ida. LinkRole1Visibili y Dene una ins ancia de ob je o como un enlace en Role 1 y de e mina su ip o de isibilidad. LinkRole2Visibili y Dene una ins ancia de ob je o como un enlace en Role 2 y de e mina su ip o de isibilidad. Ylosme o dos esp eccos de Link son: AddMessageTo A~nadi un mensa je al enlace. AssignAsso cia ion Asigna una aso ciacion al enlace. Dele eMessage Elimina un mensa je del enlace. Ge Messages Ob ene los mensa jes lle ados p o el enlace. UnAssignAsso cia ion Elimina una asignacion de aso ciacion del enlace. Los mensa jes denen la in e accion en e los ob je os. La clase Message o ece p opiedades y me o dos que p e mi en ob ene el emi en e y des ino del mensa je jun o a o a in o macion esp ecca del mismo. Las p opiedades esp eccas de M essag e son: F equency La ecuencia del mensa je (si el mensa je es en iado solo una ez o p e iodicamen e). Synch oniza ion La seman ica de concu encia del mensa je. Ylosme o dos esp eccos de M essag e son: Ge Sende Ob jec Ob ene el ob je o que en ioelmensaje. Ge Recei e Ob jec Ob ene el ob je o que ecibio el mensa je. IsMessageToSel Si el mensa je es en iado a s mismo o no. IsOp e a ion Si el mensa je es una op e acion o no. 67 Ge Op e a ion La op e acion aso ciada con el mensa je. Ge Link Ob ene el enlace aso ciado con el mensa je. La clase Pe sis ence dene los alo es po de ec o pa a la p e sis encia de ob je os. Las p opiedades esp eccas de P e sis ence son: Pe sis en El alo p o de ec o pa a la p e sis encia de ob je os. T ansien El alo p o de ec o pa a la ansicion de ob je os. La clase Synch oniza ion dene los alo es p o de ec o pa a la sinc onizacion de ob je os. Las p opiedades esp eccas de S y nch oniz a ion son: Asynch onous Dene el alo p o de ec o pa a los mensa jes asnc onos. Balking Dene el alo p o de ec o pa a los mensa jes B al k ing ". Simple Dene el alo p o de ec o pa a los mensa jes simples. Synch onous Dene el alo p o de ec o pa a los mensa jes snc onos. Timeou Dene el alo p o de ec o pa a los mensa jes T imeou ". La clase F equency dene los alo es po de ec o pa a la ecuencia de mensa jes. Las p opiedades p o de ec o de F eq uency son: Ap e io dic El alo p o de ec o pa a los mensa jes no p e iodicos. Pe io dic El alo p o de ec o pa a los mensa jes p e iodicos. 3.2.11 Diag ama de he encia de la clase S a e El diag ama de clases de la gu a 3.11 mues a la es uc u a de he encia de la clase S a e en el mo delo REI .Las clases Ac ion y S a e he edan de Elemen y RoseI em mien as que E en y S a eM achine di ec amen e de Elemen . Tan o Elemen como RoseI em p e enecen al diag ama de he encia de la clase M odel . La clase T ansi ion he eda de Rela ion , que p e enece al diag ama de he encia de la clase Rel a ion . Un e en o es una o cu encia que causa una ansicion de es ado. Las p opiedades y me o dos de la clase E en denen y con olan e en os que a ec an a los es ados y es ablece las ansiciones de ob je os en un mo delo. Las p opiedades esp eccas de E en son: A gumen s Las condiciones que a ec an al e en o. Gua dCondi ion Dene una condicion de gua da: cuando sea T ue p e mi i a la o cu encia del e en o y mien as sea False el e en o no o cu i a. Name El nomb e del e en o. Yelme o do esp ecco de E en es: Ge Ac ion Ob ene la accion co esp ondien e al e en o. 68 S a eMachine Elemen RoseI em E en Rela ion Ac ion S a e T ansi ion Figu a 3.11: Diag ama de he encia de la clase S a e . La clase S a eMachine con iene o da la in o macion sob e el es ado de los ob je os de una de e minada clase. La maquina de es ado de una clase dene o dos los posibles es ados y ansiciones pa a esa clase. Una clase puede ene o no una maquina de es ado y una maquina de es ado solo puede p e enece a una clase. Las p opiedades esp ecca de S a eM achine son: Diag am El diag ama de es ados que con iene la maquina de es ados. Pa en Class La clase a la que p e enece la maquina de es ados. S a es La coleccion de es ados de la maquina de es ados. Ylosme o dos esp eccos de S a eM achine son: AddS a e A~nadi un es ado a una maquina de es ados. Dele eS a e Elimina un es ado de una maquina de es ados. Ge AllS a es Ob ene o dos los es ados de una maquina de es ados. Ge AllT ansi ions Ob ene o das las ansiciones de una maquina de es ados. Ge T ansi ions Ob ene la coleccion de ansiciones de una maquina de es ados. Relo ca eS a e Recolo ca un es ado en una maquina de es ados. La clase T ansi ion p o ee el medio pa a segui la aza de un ob je o en un cam bio de es ado, es deci , en el pun o donde no es a en el es ado o iginal p e o aun no ha llegado a su es ado des ino. Los me o dos esp eccos de T ansi ion son: Ge SendAc ion Ob ene el mensa je a en ia cuando la ansicion o cu e. Ge Sou ceS a e Ob ene el es ado inicial de la ansicion. Ge Ta ge S a e Ob ene el es ado des ino de la ansicion. 69 Ge T igge Ac ion Ob ene la accion a ealiza cuando el e en o dispa ado de la ansicion o cu a. Ge T igge E en Ob ene el e en o que dispa a la ansicion. Redi ec To Redi ecciona la ansicionaunnue o es ado des ino. Una accion es una op e acion que es a aso ciada a una ansicion, oma una can idad insigni- can e de iemp o pa a ealiza se y no se puede in e umpi . Las p opiedades de la clase Ac ion son: A gumen s El con enido de la accion. Ta ge El ob je o des ino de la accion. La clase S a e esp ecica el conjun o de p opiedades y me o dos que con olan la in o macion sob e el es ado de los ob je os de un mo delo. Las p opiedades esp eccasdelaclase S a e son: His o y Esp ecica a que sub es ado se uel e cuando se e o na a un sup e es ado. Pa en S a e El sup e es ado que con iene al es ado. Pa en S a eMachine La maquina de es ados a la que p e enece el es ado. S a eKind El ip o del es ado. Subs a es Los sub es ados del es ado (p o lo an o, es un sup e es ado). T ansi ions El conjun o de ansiciones denidas pa a el es ado. Ylosme o dos esp eccos de S a e son: AddDoAc ion A~nadi una accion ( Do ") a un es ado. AddEn yAc ion A~nadi una accion de en ada (la p ime a ez) a un es ado AddExi Ac ion A~nadi una accion de salida a un es ado. AddS a e A~nadi un sub es ado a un es ado. AddT ansi ion A~nadi una ansicion a un es ado. AddUse DenedE en A~nadi un e en o denido p o el usua io a un es ado. Dele eAc ion Elimina una accion de un es ado. Dele eS a e Elimina un sub es ado de un es ado. Dele eT ansi ion Elimina una ansicion de un es ado. Dele eUse DenedE en Elimina un e en o denido p o el usua io de un es ado. Ge AllSubs a es Ob ene los sub es ados de un es ado. Ge DoAc ions Ob ene las acciones ( Do ") de un es ado. Ge En yAc ions Ob ene las acciones de en ada de un es ado. Ge Exi Ac ions Ob ene las acciones de salida de un es ado. Ge Use DenedE en s Ob ene los e en os denidos p o el usua io de un es ado. Relo ca eS a e Recolo ca un sub es ado en un es ado de e minado. 70 RoseI em UseCase Figu a 3.12: Diag ama de he encia de la clase UseCase . 3.2.12 Diag ama de he encia de la clase UseCase El diag ama de clases de la gu a 3.12 mues a la es uc u a de he encia de la clase U seC ase en el mo delo REI . La clase U seC ase he eda de RoseI em que p e enece al diag ama de he encia de la clase Rel a ion .Se pod a p ensa en un diag ama de casos de uso en luga de una clase, p e o de es a mane a apa ece a en el diag ama de he encia de la clase Diag am . La clase UseCase exp one un conjun o de p opiedades y me o dos que p e mi en deni y manipula los conjun os de diag amas de clases y escena ios que o man los casos de uso de un mo delo. Las p opiedades esp eccas de U seC ase son: Abs ac Si el caso de uso es una clase abs ac a ono. ClassDiag ams La coleccion de diag amas de clases co esp ondien es al caso de uso. Pa en Ca ego y La ca ego a que con iene el caso de uso. Rank El ango del caso de uso Scena ioDiag ams La coleccion de diag amas de escena ios co esp ondien es al caso de uso. S a eMachine La maquina de es ado co esp ondien e al caso de uso. Ylosme o dos esp eccos de U seC ase son: AddAsso cia ion A~nadi una aso ciacion a un caso de uso. AddClassDiag am A~nadi un diag ama de clases a un caso de uso. AddInhe i Rel A~nadi una elacion de he encia a un caso de uso. AddScena ioDiag am A~nadi un diag ama de escena io a un caso de uso. Dele eAsso cia ion Elimina una aso ciacion de un caso de uso. 71 Dele eClassDiag am Elimina un diag ama de clases de un caso de uso. Dele eInhe i Rel Elimina una elacion de he encia de un caso de uso. Dele eScena ioDiag am Elimina un diag ama de escena io de un caso de uso. Ge Asso cia ions Ob ene las aso ciaciones de un caso de uso. Ge Inhe i Rela ions Ob ene la coleccion de elaciones de he encia de un caso de uso. Ge Roles Ob ene la coleccion de oles de un caso de uso. Ge Sup e UseCases Ob ene los sup e {casos de uso de un caso de uso. 3.3 Diag amas del mo delo de empaque amien o de REI Acon inuacion se mues an los paque es en la is a logica del mo delo REI : Applica ion Classes Applica ion Classes  Applica ion  Pa hMap  RoseAddInManage  AddIn  AddInCollec ion Mo del Classes Mo delClasses Sub classes o I em I ems Elemen s RoseI em Elemen De aul Mo delP op e ies Sub classes o Rela ion Sub classes o ClassRela ion Rela ions Con ollableUni 1. Mo del Collec ions  Mo del  RoseI em  Ex e nalDo cumen  Con ollableUni  Package  Elemen  P op e y  De aul Mo delP op e ies 72 Sub Main() Begin Dialog Plan illaDialogoSalida 16,32,116,64,``Salida'' Tex 4,8,108,8,``>Es as segu o de que quie es sali ?'' CheckBox 32,24,63,8,``Sal a los cambios'',.Sal a Cambios OKBu on 12,40,40,14 CancelBu on 60,40,40,14 End Dialog Dim Ven anaDialogoSalida As Plan illaDialogoSalida c% = Dialog(Ven anaDialogoSalida) End Sub 4.2 Visualiza un o mula io 4.2.1 El p o cedimien o Dialog Se u iliza pa a isualiza un o mula io: no de uel e ning un alo , al con a io que la uncion del mismo nomb e. La sin axis es la que sigue: Dialog ( D ial og V a iabl e &  & D e aul B u on ]&  T imeou ]]) La denicion de los es pa ame os es la siguien e: DialogVa iable Nomb e de la a iable que ha sido p e iamen e decla ada como un o mula io denido p o el usua io. De aul Bu on Un en e o que esp ecica que bo on ac ua como bo on po de ec o en el o - mula io. Es e alo sigue la misma no ma que el alo de salida pa a iden ica el b o on. El alo p o de ec o es ; 1 (Bo on OK ). Timeou Un en e o que esp ecica el n ume o de milisegundos pa a isualiza o mula io an es de que au oma icamen e se qui e. El alo po de ec o es 0 (solo se qui a a as una p e icion explci a del usua io). En el siguien e ejemplo se isualiza un o mula io pa a mos a el pico mensa je de e o de disco: Sub Main() Begin Dialog Plan illaE o Disco 16,32,152,48,``E o de Disco'' Tex 8,8,100,8,``La disque e a es a aca.'' PushBu on 8,24,40,14,``Ab o a '',.Ab o a PushBu on 56,24,40,14,``Vol e ain en a '',.Rein en a PushBu on 104,24,40,14,``Igno a '',.Igno a End Dialog Dim E o Disco As Plan illaE o Disco Dialog E o Disco,3,0 End Sub 79 4.2.2 La uncion Dialog Tambien se puede u iliza la uncion Dialog que isualiza un o mula io denido p o el usua io. La uncion de uel eunen e o que ep esen a al b o on que se pulso pa a sali :  -1 El b o on OK ue pulsado.  0 El b o on C ancel ue pulsado.  > 0 Se pulso o o b o on: el n ume o ep esen a al b o on, seg un el o den en el que es aen la plan illa del cuad o de dialogo. El siguien e ejemplo mues a de nue o la en ana a isualiza cuando o cu a un e o de dis- que e a: Sub Main() Begin Dialog Plan illaE o Disco 16,32,152,48,``E o de Disco'' Tex 8,8,100,8,``La disque e a es a aca.'' PushBu on 8,24,40,14,``Ab o a '',.Ab o a PushBu on 56,24,40,14,``Vol e ain en a '',.Rein en a PushBu on 104,24,40,14,``Igno a '',.Igno a End Dialog Dim E o Disco As Plan illaE o Disco % = Dialog(E o Disco,3,0) MsgBox ``Has seleccionado el b o on: '' & % End Sub 4.3 F unciones de mensa jes o en anas de dialogo p edenidas Answe Box Mues a un mensa je y esp e a aque el usua io de una espues a, de ol iendo un en e o indicando que b o on pulso el usua io. AskBox, AskBox$ Mues a una en ana pa a p edi al usua io una en ada de da os, que de uel e como una cadena. AskPasswo d, AskPasswo d$ Mues a una en ana pa a pedi al usua io una en ada de da os, que de uel e como una cadena. Pe o es a ez solo se isualizan as e iscos cuando el usua io in o duzca los da os, p e mi iendo aslaen ada de cla es. Inpu Box, Inpu Bo x$ Mues a una en ana de dialogo con un con ol de edicion de ex os pa a que el usua io pueda in o duci alg un da o. MsgBox Mues a un mensa je en una en ana de dialogo con un conjun o de b o ones p e- denidos. Tiene dos e siones: uncional (de ol iendo un en e o que ep esen a el b o on que ue seleccionado) y p o cedimen al. Op enFilename$ Mues a una en ana de dialogo pa a ab i un che o. Sa eFilename$ Mues a una en ana de dialogo pa a gua da un che o. Selec Box Mues a una en ana de dialogo que pe mi e al usua io selecciona en una lis a de p osibilidades, de ol iendo un en e o que ep esen a el ndice del elemen o que ue seleccionado. 80 4.4 Me o dos y unciones sob e los con oles de los o mula ios 4.4.1 Me o dos Ac i a eCon ol Colo ca el o co en el con ol esp ecicado. DlgCap ion Cambiael  ulodela en ana de dialogo ac ual. DlgEnable Habili a/deshabili a el con ol esp ecicado. DlgFocus Colo ca el o co en el con ol esp ecicado. DlgLis BoxA ay Rellena un con ol de lis a (o a ian es) con los elemen os deuna ay. DlgSe Pic u e Cambia la imagen con enida en el con ol (una imagen o un b o on con imagen). DlgTex Cambia el ex o con enido en el con ol esp ecicado. El esul ado dep ende a del ip o de con ol. DlgValue Cambiael alo de un con ol dado. El esul ado dep ende adel ipodecon ol. DlgVisible Mues a u o cul a el con ol esp ecicado. Selec Bu on Simula la pulsacion de un b o on de la en ana. Selec ComboBoxI em Selecciona un  em de un cuad o combinadodela en ana. Selec Lis BoxI em Selecciona un  em de una lis a de la en ana. Se CheckBox Ma ca el es ado de un con ol de chequeo de la en ana. Se Edi Tex Es ablece el con enido de un edi o de ex o la en ana. Se Op ion Selecciona un b o on de op cion de la en ana. 4.4.2 Funciones Bu onEnabled De uel e T ue si el b o on esp ecicado en el o mula io ac i oes a habili ado (si es as, puede se pulsado u ilizando la sen encia S el ec B u on ). Bu onExis s De uel e T ue si el b o on esp ecicado es a p esen e en el o mula io ac i o. CheckBoxEnabled De uel e T ue si el con ol de e icacion esp ecicado en el o mula io ac i o es a habili ado (si es as, su alo puede se es ablecido u ilizando la sen encia S e C heck B ox ). CheckBoxExis s De uel e T ue si el con ol de e icacion esp ecicado es a p esen e en el o mula io ac i o. ComboBoxEnabled De uel e T ue si la lis a combinada esp ecicada del o mula io ac i o es a habili ada. ComboBoxExis s De uel e T ue si la lis a combinada esp ecicada es a p esen e en el o mu- la io ac i o. DlgCon olId De uel eunen e o que ep esen a el ndice del con ol esp ecicado al y como apa ece en la plan illa del o mula io. DlgEnable De uel e T ue si el con ol esp ecicado es a habili ado. 81 DlgFocus De uel e una cadena que con iene el nomb e del con ol que iene el o co. DlgLis BoxA ay Rellena una lis a, una lis a combinada o una lis a ja combinada con los elemen osdeuna ay, de ol iendo un en e o que ep esen a el n ume o de elemen os que hay ac ualmen e en el con ol. DlgTex $ De uel eelcon enido ex ual del con ol esp ecicado. DlgValue De uel e un en e o que ep esen a el alo del con ol esp ecicado. Suele se el ndice del alo seleccionado den o de un con ol (lis as, g up os de op ciones, e c.). DlgVisible De uel e T ue si el con ol esp ecicado es a isible. Edi Enable De uel e T ue si el con ol de edicion de ex os esp ecicado es a habili ado en el o mula io ac i o. Edi Exis s De uel e T ue si el con ol de edicion de ex os esp ecicado exis e en el o mula io ac i o. Ge CheckBox De uel eunen e o que ep esen a el es ado del con ol de e icacion esp eci- cado. Ge ComboBoxI em$ De uel e una cadena que con iene el ex o de un elemen o den o de una lis a combinada. Ge ComboBoxI emCoun De uel e un en e o que con iene el nume o de elemen os en la lis a combinada esp ecicada. Ge Edi Tex $ De uel e una cadena que es el con enido del con ol de edicion de ex os es- p ecicado. Ge Lis BoxI em$ De uel e una cadena que con iene el elemen o esp ecicado en una lis a. Ge Lis BoxI emCoun De uel e un en e o que con iene el nume o de elemen os en la lis a esp ecicada. Ge Op ion De uel e T ue si el b o on de op cion esp ecicado es a ac i o. Lis BoxEnabled De uel e T ue si la lis a esp ecicada es a habili ada en el o mula io ac i o. Lis BoxExis s De uel e T ue si la lis a esp ecicada exis e en el o mula io ac i o. MenuI emChecked De uel e T ue si el elemen o de men u esp ecicado exis e y su con ol de e icacion es aac i o. MenuI emEnabled De uel e T ue si el elemen o de men u esp ecicado exis e y es a habili- ado. MenuI emExis s De uel e T ue si el elemen o de men u esp ecicado exis e. Op ionEnabled De uel e T ue si el b o on de op cion esp ecicado es a habili ado en el o mu- la io ac i o. Op ionExis s De uel e T ue si el b o on de op cion esp ecicado exis e en el o mula io ac i o. PopupMenu Mues a un men u eme gen e que con iene los elemen os esp ecicados, de ol iendo un en e o que ep esen a el ndice al elemen o seleccionado. 82 4.5 P o cesamien o de acciones sob e un o mula io Cuando se p o duce una de e minada accion sob e un o mula io, BasicSc ip llama a una uncion esp ecial que iene aso ciada y que ges iona a el p o cesamien o de al accion. La sin axis pa a deni es a uncion es: F unc ion D l g P oc ( C on ol N ame $  Ac ion S uppV al ue ) As I n eg e Pa a aso cia es a uncion a un o mula io se indica median e el pa ame o :D l g P oc en la sen encia B eg in D ial og que lo dene. Los pa ame os que ecib e la uncion aso ciada al o mula io son: Con olName$ Cadena que con iene el nomb e del con ol aso ciado con Ac ion . Ac ion En e o que ep esen a la accion p o la que se llamo a la uncion. SuppValue En e o que con iene in o macion ex a aso ciada con dic ha accion. Cuando BasicSc ip isualiza un o mula io se p o ducen di e sos e en os debidos a la in e accion con el usua io: pulsacion de b o ones, in o duccion de ex os p o el eclado, seleccion de elemen os de una lis a y o os. Cuando se p o ducen es as acciones, BasicSc ip llama a la uncion aso ciada al o mula io, pasandole como pa ame os: la accion que ha o cu ido, el nomb e del con ol y o a in o macion ele an e. La siguien e abla desc ib e las di e en es acciones que se pueden en ia a una uncion de o mula io: 1 Es a accion es en iada inmedia amen e an es de que el o mula io se mues e p o p ime a ez: de es a o ma se da la op o unidad de p epa a la u ilizacion del o mula io. Los demas pa ame os no son signica i os y se igno a ael alo esul ado de uel o p o la uncion. 2 Es a accion es en iada cuando:  Se pulsa un b o on. En es e caso, C on ol N ame $con end asunomb e y S uppV al ue se a: 1 si es un bo on Ok , 2 si es un bo on C ancel o un alo indenido si es o o b o on. Si la uncion de uel e 0 como espues a en onces el o mula io se a ce ado.  Se ha mo dicado el es ado de un con ol de e icacion. En es e caso, Con olN ame $ con end asunomb e y SuppV alue el nue oes ado(1siac i oo 0 si desac i o).  Se ha seleccionado un b o on de op cion. En es e caso, C on ol N ame $con end asu nomb e y SuppV alue el ndice del b o on ac i ado den o del g up o de op ciones (que empieza en 0).  Se ha cambiado la seleccion ac ual de una lis a o lis a combinada. En es a caso, C on ol N ame $ con end a su nomb e y SuppV alue el ndice del nue o em selec- cionado (que empieza en 0). 3 Es a accion es en iada cuando el con enido de un con ol de edicion de ex o o una lis a combinada ha sido mo dicado. Es a accion solo se en a cuando dicho con ol pie de el o co. En es e caso, Con olN ame $con end a su nomb e y S uppV al ue la longi ud del nue ocon enido. El alo que de uel ela uncion es igno ado. 4 Es a accion es en iada cuando un con ol ob iene el o co de con ol. C on ol N ame $con end a su nomb e y S uppV al ue el ndice del con ol que p e dio el o co (que empieza en 0). El alo que de uel e la uncion es igno ado. 83 5 Es a accion es en iada con inuamen e cuando un o mula io es a inac i o. Si la uncion de uel e 1 en espues a, en onces la accion inac i idad" ol e aase en iada. Pe o si la uncion de uel e0, en onces la accion no ol e a a ep e i se. En es e caso, Con olN ame $ no con iene nada y S uppV al ue el n ume o de eces que se ha en iado has a el momen o. 6 Es a accion es en iada cuando se mue eel o mula io. En es e caso, los pa ame os no son signica i os y se igno a ael alo de uel o p o la uncion. La uncion de un o mula io no puede deni o os o mula ios, aunque s p o d a in o ca cualquie cuad o de dialogo p edenido ( ales como MsgBox o I npu B ox $). Po o o lado, las unciones de los o mula ios s p o d an u iliza o as sen encias y unciones de BasicSc ip , p e mi iendo la manipulacion de los con oles del o mula io de una mane a dinamica. Es as son: D l g V isibl e , DlgT ex $, D l g T ex , D l g S e P ic u e , D l g Lis B oxA ay , DlgF ocus , D l g E nabl e y D l g C on ol I d . El siguien e ejemplo habili a/deshabili a un g up o de b o ones de op cion cuando un con ol de e icacion es ac i ado/desac i ado: Func ion FuncionFo mula io(Con olName$, Ac ion%, SuppValue%) I Ac ion% = 2 And Con olName$ = ``Imp imi '' Then DlgEnable ``Op cionesImp esion'',SuppValue% SampleDlgP o c = 1 'No ce a el o mula io. End I End Func ion Sub Main() Begin Dialog Plan illaFo mula io 34,39,106,45,``Ejemplo'',.FuncionFo mula io OKBu on 4,4,40,14 CancelBu on 4,24,40,14 CheckBox 56,8,38,8,``Imp imi '',.Imp imi Op ionG oup .Op cionesImp esion Op ionBu on 56,20,51,8,``Apaisado'',.Apaisado Op ionBu on 56,32,40,8,``Ve ical'',.Ve ical End Dialog Dim UnFo mula io As Plan illaFo mula io UnFo m ula io.P in ing = 1 % = Dialog(UnFo mula io) End Sub 84 Cap ulo 5 La ges ion de e o es 5.1 In o duccion BasciSc ip o ece un me o do pa a p o cesa de mane a adecuada los e o es que ocu en en iemp o de ejecucion. 5.1.1 Denicion del ges o de e o es Una plan illa gene ica pa a la denicion de un ges o de e o es den o de una sub u ina p o d a se : Sub UnaFuncion() On E o Go o ca ch 'Codigo de la uncion. Exi Sub ca ch: 'Codigo del P o cesamien o del E o . End Sub B e emen e, la lnea de ejecucion ejecu a el codigo del algo i mo y si o cu e un e o , en onces la lnea de ejecucion se anse e al codigo esp ecial pa a p o cesa lo. 5.1.2 La cap u a de un e o La sen encia On E o dene la accion a lle a a cab o cuando o cu e un e o cap u able en iemp o de ejecucion. La sin axis es la siguien e: On E o Go o l abel j Resume Nex j Go o 0 g La o ma O n E o Go o Label anse e la lnea de ejecucion ala e ique a esp ecicada cuando o cu e un e o . La o ma O n E o Resume N ex ue za la con inuacion de la ejecucion po la sen encia que sigue a la causan e del e o . La o ma O n E o Go o 0anula cualquie e o cap u ado exis en e. 85 5.1.3 El p o cesamien o del e o Una ez que el ges o del e o iene el con ol, deb e a descub i cual ue la condicion que causo el e o y con inua la ejecucion con la sen encia Resume pa a einicia el ges o de e o es, ans iendo la ejecucion a un luga ap opiado den o del p o cedimien o ac ual. La sin axis es: Resume &0] j Nex j label g En el siguien e ejemplo se obse an a ios de sus usos que siguen la siguien e secuencia: El usua io eclea dos en e os pa a mul iplica los. Si alguno de los n ume os es mayo que un en e o, el p og ama ejecu a una u ina de e o y la ejecucion del p og ama con inua en una seccion esp ecca u ilizando Resume <l abel > . En onces se es- ablece un nue o pun o de cap u a de e o es, einiciando el ges o de e o es de la sub u ina e indicando que el p og ama con inue su ejecucion p o la siguien e sen en- cia incluso si o cu ie a alg un e o . Sub Main() Dim a%, b%, x% O aVez: On E o Go o E o Rango a% = Inpu Box(``In o duzca el p ime en e o a mul iplica '',``In oduzcaunnume o'') b% = Inpu Box(``In o duzca el segundo en e o a mul iplica '',``In o duzca un n ume o'') On E o Resume Nex 'Con inua la ejecucion del p og ama en la x% = a% * b% 'siguien e lnea si o cu e un e o . i e = 0 hen MsgBoxx% else Msgb ox a% & `` * '' & b% & `` sale del ango de los en e os'' end i Exi Sub E o Rango: 'Ges o de e o es. MsgBox ``Has in o ducido un alo no en e o. <In en alo o a ez!'' Resume O aVez End Sub El e o es anulado si el p o cedimien o e mina sin hab e ejecu ado es a sen encia. En ge- ne al, exis en cua o o mas pa a einicia el ges o de e o es de mane a que se p e mi e que el p o cedimien o acab e sin isualiza ning un mensa je de e o :  La ejecucion llega a una sen encia On E o o Resume .  Se asigna ; 1a E :N umbe .  Se llama al me o do E :C l ea .  La ejecucion llega a una sen encia E xi S ub , E xi F unc ion , E nd F unc ion o End Sub . 86 5.1.4 El p o ceso en cascada pa a cap u a un e o Una ca ac e s ica esp ecial es que se p e mi e el anidamien o de ges o es de e o es: si o cu e un e o den o del ges o de e o es, en onces se llama a al ges o de e o es p opio. En cualquie caso si du an e la ejecucion o cu e un e o y no hay denido ning un ges o On E o en el p o cedimien o, en onces BasicSc ip uel e al p o cedimien o que lo llamo y ejecu a all el ges o de e o es. Es e p o ceso se epi e has a que se encuen a ese ges o , o no haya mas p o cedimien os. Si un e o no se cap u a u o cu e den o de un ges o , BasicSc ip mues a un mensa je de e o , de eniendose la ejecucion del sc ip . 5.2 El ob je o p edenido E Es e ob je o iene las siguien es p opiedades:  E .Desc ip ion Es ablece u ob iene la desc ip cion del e o .  E .HelpCon ex Es ablece u ob iene el iden icado de con ex o en la ayuda pa a con- segui mas in o macion sob e el e o .  E .HelpFile Es ablece u ob iene el nomb e del che o de ayuda que con iene la in o - macion sob e el e o .  E .Las DLLE o Ob iene el ul imo e o gene ado p o una llamada ex e na.  E .Numbe Es ablece u ob iene el n ume o de e o .  E .Sou ce Es ablece u ob iene la uen e de un e o en iemp o de ejecucion. Y o ece los siguien es me o dos:  E .Clea Inicializa las p opiedades del ob je o E .Es o se ealiza au oma icamen e cuando se ejecu a alguna de las siguien es sen encias: Resume , E xi F unc ion , On E o y E xi S ub .  E .Raise Gene a un e o en iemp o de ejecucion, es ableciendo las p opiedades ade- cuadas en el ob je o E (y que se pasan como pa ame os).  Es as son: el n ume o de e o , la uen e del e o , la desc ip cion del e o , el che o de ayuda con in o macion sob e el e o y el con ex o den o de la ayuda. 5.3 Funciones pa a la ges ion de e o es Algunas unciones que an a ayuda pa a ges iona los e o es son: E l De uel eelnume odelnea (den o del sc ip ) del e o mas ecien e. E o , E o $ De uel e una cadena que con iene el ex o que co esp onde al n ume o de e o dado o al e o mas ecien e. IsE o De uel e T ue si la exp esion es un alo de e o denido p o el usua io. 87 5.4 Compa ibilidad con Visual Basic BasicSc ip iene los mismos codigos y mensa jes de e o que Visual Basic , acili ando la p o abilidad en e es os en o nos. Ello es debido a que BasicSc ip ob iene el e o median e la uncion E o o la p opiedad E :D esc ip ion . Hay es ca ego as de e o es: 1. E o es compa ibles con Visual Basic (0 a 799). 2. E o es de BasicSc ip (800 a 999). 3. E o es denidos p o el usua io (  1000). 5.5 O os ejemplos sob e la ges ion de e o es Mues an es ip os de ges ion de un e o . El p ime caso simplemen e igno a el e o cap u ado ycon inua la ejecucion del p og ama. El segundo caso ejecu a un sal o hacia una u ina com un de p o cesamien o de e o es, einicia el ges o y eanuda la ejecucion del p og ama. El e ce caso einicia el ges o , p o lo que la ejecucion se pa a a cuando apa ezca el siguien e e o . Sub Main() Dim x% a = 10000 b = 10000 On E o Go o Eqi 0 'Cuando o cu a un e o , sal a a es a e ique a. Do x% = a * b Lo op E iq0: E = -1 'Inicializa la se ~nal de e o . MsgBox ``Se ~na de e o inicializada y con inuacion.'' On E o Go o E o Rango 'Sal o a una nue a u ina de e o pa a x% = 1000 'los siguien es e o es. x% = a * b x% = a / 0 On E o Go o 0 'Inicializa los sal os de e o . x% = a * b 'El p og ama pa a a aqu. Exi Sub 'Salida p e ia a la u ina com un de e o es. E o Rango: 'Comienzo de la u ina com un de e o es. I E = 6 hen MsgBox ``Sal o p o E o en el Rango.'' Else MsgBox E o (E ) End I Resume Nex End Sub 88 Righ , Righ $, Righ B, Righ B$ De uel e la sub cadena o mada po los n ul imos ca ac- e es o by es de la cadena esp ecicada. S Comp Compa acion de cadenas. S Con Con ie e la cadena esp ecicada seg un un pa ame o de con e sion: mayusculas, min usculas, e c. S ing, S ing$ De uel e una cadena de una longi ud dada que se ellena con el ca ac e esp ecicado. T im, T im$, LT im, LT im$, RT im, RT im$ De uel e una copia de la cadena pasada donde se han eliminado los espacios al inicio o al nal de la misma. UCase, UCase$ De uel e la cadena de en ada en le as mayusculas. Wo d$ De uel e una cadena que con iene la secuencia de palab as en e dos pun os dados del ex o esp ecicado. Wo dCoun De uel eunen e o que ep esen a el n ume o de palab as en el ex o esp ecicado. Algunas unciones sob e los ipos: CBo ol Con ie e una exp esion al ip o B ool ean . CCu Con ie e una exp esion al ip o C u ency . CDa e, CVDa e Con ie e una exp esion al ip o D a e . CDbl Con ie e una exp esion al ip o Double . CIn Con ie e una exp esion al ip o I n eg e . CLng Con ie e una exp esion al ip o Long . CSng Con ie e una exp esion al ip o S ing l e . CS Con ie e una exp esion al ip o S ing . CVa Con ie e una exp esion al ip o Va ian . CVE Con ie e una exp esion en un n ume o de e o denido p o el usua io. IsDa e De uel e T ue si la exp esion dada puede con e i se a una echa. IsEmp y De uel e T ue si la a iable dada es de ip o Va ian y no ha sido inicializada. Es equi alen e a (Va Type(exp ession) = ebEmp y) . IsNull De uel e T ue si la a iable dada es de ip o V a ian y no con iene da os alidos. Es equi alen e a (Va Type(exp ession) = ebNul l) . IsNume ic De uel e T ue si la exp esion puede con e i se a un n ume o. IsOb jec De uel e T ue si la a iable dada es de ip o Va ian ycon iene un ob je o O bj ec . S , S $ Con ie e un n ume o en una cadena. Typ eName De uel e el nomb e del ip o de la a iable esp ecicada. 95 Typ eO ob jec a iable Is ob jec yp e De uel e T ue si obj ec a iabl e es del ip o obj ec y pe esp ecicado. Es a uncion es muy u il pa a de e mina el ip o de los ob je os de au oma- izacion OLE . Val Con ie e una de e minada exp esion cadena a un n ume o. Va Typ e De uel eunen e o que ep esen a el ip o de da o de la a iable esp ecicada. Algunas unciones que no en an en ca ego as an e io es:  Fiche os de ex os y bina ios ( EOF , F il eA , F eeFile , Loc , Lo y Seek ).  Fiche os INI y el egis o de Windows ( Ge Al l S e ing s , Ge S e ing , ReadI ni $).  Acceso a base de da os con SQL ( SQlBind , S QLC lose , S QLE o , S QLE xecQue y , S QLGe S chema , S QLO pen , S QLR eq ues , S QLR e ie e y S QLR e ie eT oF il e ).  Funciones es ads icas ( DDB , F , Ipm , IRR , MIRR , NP e , Np , Pm , PPm , P , Ra e , Sln y SY D ).  Po apap eles (Clipb oa d$).  O as ( I M ES a us y M acI D ). 6.2 Congu acion de op ciones La sen encia O p ion congu a de mane a global al sc ip algunos asp ec os del p o cesamien o. Es a sen encia deb e apa ece ue a de cualquie blo que de sub u ina o uncion. El lmi e in e io de los a ays Po de ec o, el lmi e in e io es 0, p e o se puede p one a 1. La sin axis que sigue es: Op ion Base 0 j 1 g Po ejemplo: Op ion Base 1 Sub Main() Dim a(10) 'Con iene 10 elemen os (y no 11). End Sub La compa acion de cadenas Se puede con ola el mo do en que se compa an las cadenas. Po de ec o el mo do es B ina y (la compa acion es sensi i a a las mayusculas). Se puede cambia al mo do Tex (la compa acion no es sensi i a). La sin axis es: Op ion Compa e &Bina y j Tex ] Po ejemplo: Op ion Compa e Bina y 'Compa acion sensi i aa mayusculas. 96 Sub Compa aSensi i a a$ = ``Es a Cadena Con iene MAY  USCULAS.'' b$ = ``es a cadena con iene mayusculas.'' I a$ = b$ Then MsgBox ``Las dos cadenas ue on compa adas de mane a no sensi i a.'' Else MsgBox ``Las dos cadenas ue on compa adas de mane a sensi i a.'' End I End Sub Op ion Compa e Tex 'Compa acion no sensi i aamayusculas. Sub Compa aNoSensi i a a$ = ``Es a Cadena Con iene MAY  USCULAS.'' b$ = ``es a cadena con iene mayusculas.'' I a$ = b$ Then MsgBox ``Las dos cadenas ue on compa adas de mane a no sensi i a.'' Else MsgBox ``Las dos cadenas ue on compa adas de mane a sensi i a.'' End I End Sub Sub Main() Compa aSensi i a 'Llama a la sub u ina denida p e iamen e. Compa aNoSensi i a 'Llama a la sub u ina denida p e iamen e. End Sub Las cadenas de escap e al es ilo de sc C Habili a o deshabili a la u ilizacion de las secuencias de escap e al es ilo de C en las cadenas. Cuando es a habili ado, el compilado a a el ca ac e n como el inicio de una secuencia de escap e (los picos n , n n, n , n , e c.). Po de ec o, es aop cion es a deshabili ada. La sin axis que sigue es: Op ion CS ings On j O. g Po ejemplo: Op ion CS ings On Sub Main() MsgBox ``Ellos dije on, n ``<Mi a aquello! n '''' MsgBox ``P ime a lnea. n n nSegunda lnea.'' MsgBox ``Ca ac e A: n x41 n n nCa ac e B: n x42'' End Sub Tip o po de ec o de las a iables Es ablece el ip o p o de ec o pa a las a iables y unciones cuando no se esp ecica. Po de ec o, es e ip o es V a ian . Ac ualmen e, solo se puede esp ecica I n eg e como ip o al e na i o(pa a man ene compa ibilidad con an e io es e siones de BasicSc ip . La sin axis que sigue es: 97 Op ion De aul y pe Po ejemplo: Op ion De aul In ege Func ion SumaEn e os(a As In ege ,b As In ege ) SumaEn e os = a + b End Func ion Sub Main Dim a,b, esul ado a = Inpu Box(``Teclee un en e o:'') b = Inpu Box(``Teclee o o en e o:'') esul ado = SumaEn e os(a,b) End Sub Sob e la decla acion implci a Se u iliza pa a p e eni la decla acion implci a de las a iables y los p o cedimien os ex e nos. La sin axis que sigue es: Op ion Explici 6.3 P opiedades y me o dos de los ob je os p edenidos 6.3.1 El ob je o Basic P opiedades  Basic.A chi ec u e $ Una cadena que con iene la pla a o ma sob e la que se ejecu a BasicSc ip . Algunas de ellas son I n el ", Powe PC ", Al phaAX P ", e c. Es a cadena es a aca si la a qui ec u a no puede se de e minada.  Basic.CodePage Un en e o que ep esen a la pagina de codigos de ca ac e es lo cal.  Basic.Eoln $ Una cadena que con iene la secuencia de n de lnea ap opiada a la pla a o ma ac ual.  Basic.F eeMemo y Un en e o la go que ep esen a el nume o de by es de memo ia lib e en el espacio de da os de BasicSc ip (el ama ~no del blo que lib e mas g ande). P e iamen e, el espacio de da os es compac ado pa a consolida el espacio lib e en un blo que unico. Es e espacio con iene las cadenas y a ays dinamicos.  Basic.HomeDi $ Una cadena que con iene el di ec o io donde se ubica BasicSc ip .  Basic.Locale $ Una cadena que con iene in o macion del en o no lo cal donde se es a ejecu ando BasicSc ip : o ma os de echa y ho a, congu acion dep endien e del pas y analogos. 98  Basic.Ope a ingSys em $ Una cadena que con iene el nomb e del sis ema op e a i o. Es os alo es son: W indow s ", W indow s o W o k g oups ", Win 32 s ", W indow s 95", W indow sN T ", OS= 2", M acin osh "y N e w a e ".  Basic.Ope a ingSys emVendo $ Una cadena que con iene el ab ican e del sis ema op e a i o sob e el que se ejecu a BasicSc ip . Es os alo es son: M ic oso ", IBM ", Appl e ", e c.  Basic.Ope a ingSys emVe sion $ Una cadena que con iene la e sion del sis ema op e- a i o sob e el que se ejecu a BasicSc ip .  Basic.OS Un en e o indicando la pla a o ma ac ual. Es as cons an es son: ebW in 16, ebW in 32, ebM acin osh , ebS ol a is ,e c. Es muy ap opiada pa a la c eacion de sc ip s mul ipla a o ma.  Basic.Pa hSepa a o $ Una cadena que con iene el sepa ado en las cadenas de di ec o io de la pla a o ma ac ual.  Basic.P ocesso $ Una cadena que con iene el nomb e del p o cesado en el o denado donde se ejecu a BasicSc ip . Es a cadena es a a aca si no es capaz de es ablece lo.  Basic.P ocesso Coun Un en e o que ep esen a el n ume o de p o cesado es p esen es.  Basic.Ve sion $ Una cadena que con iene la e sion de BasicSc ip en el o ma o maj o :mino :B uil dN umbe . Me o dos El me o do Basic.Capabili y de uel e T ue si pla a o ma ac ual admi e la capacidad que se esp ecica (pasada como pa ame o). 6.3.2 El ob je o HWND P opiedades La p opiedad po de ec o de un ob je o HW N D de uel e un Va ian que con iene un ges o ( HAN DLE )dela en ana sica de una a iable ob je o HW N D . Su sin axis es window .Value . Es a p opiedad es de solo lec u a, y se u iliza pa a ob ene el alo de un ob je o HW N D en el en o no op e a i o ac ual. Su ama ~no dep ende a del sis ema en el que se ejecu a el sc ip ypo lo an o siemp e se a gua dado en una a iable Va ian . En el siguien e ejemplo se isualiza una en ana que con iene el nomb e de clase de la en ana del P og am Manage 's" y lo hace u ilizando la p opiedad :V al ue , pasandola di ec amen e a una u ina ex e na: Decla e Sub Ge ClassName Lib ``use '' (ByVal Win%,ByVal ClsName$,ByV al ClsNameLen%) Sub Main() Dim P og amManage As HWND Se P og amManage = WinFind(``P og am Manage '') ClassName$ = Space(40) Ge ClassName P og amManage .Value,ClassName$,Len(ClassName$) MsgBox ``El nomb e de clase del p og ama es: '' & ClassName$ End Sub 99 6.3.3 El ob je o Msg P opiedades La p opiedad Msg.The mome e cambia el p o cen a je ma cado en el e mome o de una en ana de mensa je (abie a p e iamen e con el me o do Msg:Open ). Si la en ana no es a abie a o el alo es a ue a del in e alo 0{100 se gene a un e o . Me o dos Los siguien es me o dos son esp eccos pa a Windows.  Msg.Open Mues a una en ana de mensa je con un b o on de cancelacion y un e mome o que son op cionales. Tiene a ios pa ame os: el ex o del mensa je, el iemp o que se mos- a a el mensa je, si apa ece el b o on de cancelacion, si apa ece el e mome o y la p osicion de la en ana. La en ana es no mo dal, p o lo que p e manece a abie a has a que el usua io seleccione la cancelacion, expi e el iemp o indicado o se ejecu e el me o do Msg:Close . Solo pod a hab e uno de es os mensa jes al mismo iemp o y se qui a aau oma icamen e cuando e mine el sc ip . Hay que llama p e iodicamen e al p o cedimien o DoE en s pa a pasa el con ol al sis ema: de es a mane a se cie a la en ana cuando se pulse el bo on de cancelacion.  Msg.Close Cie a la en ana de mensa je no mo dal. 6.3.4 El ob je o Sc een P opiedades  Sc een.DlgBaseUni sX Un en e o que se u iliza pa a ealiza la con e sion pxeles/uni- dades de dialogo en el eje ho izon al. Es e alo dep ende a de la uen e u ilizada en las en anas de dialogo. Pa a pasa de pxeles a unidades: (( X P ixel s  4) + ( S c een:D l g B aseU ni sX ; 1)) =S c een:D l g B aseU ni sX Pa a pasa de unidades a pxeles: ( X D l g U ni s  S c een:D l g B aseU ni sX ) = 4)  Sc een.DlgBaseUni sY Un en e o que se u iliza pa a ealiza la con e sion pxeles/uni- dades de dialogo en el eje e ical. Es e alo dep ende a de la uen e u ilizada en las en anas de dialogo. Pa a pasa de pxeles a unidades: ( Y P ixel s  8) + ( S c een:D l g B aseU ni sY ; 1) =S c een:D l g B aseU ni sY Pa a pasa de unidades a pxeles: ( YDlgUni s  S c een:D l g B aseU ni sY ) = 8  Sc een.Heigh Un en e o que ep esen a la al u a en pxeles de la pan alla. Es una p opiedad de solo lec u a.  Sc een.TwipsPe PixelX Un en e o que ep esen a el nume o de wips po pxel en el eje ho izon al del disp osi i ode pan alla ins alado. La p opiedad es de solo lec u a. 100  Sc een.TwipsPe PixelY Un en e o que ep esen a el nume o de wips po pxel en el eje e ical del disp osi i ode pan alla ins alado. La p opiedad es de solo lec u a.  Sc een.Wid h Un en e o que ep esen a la anchu a en pxeles de la pan alla. Es una p opiedad de solo lec u a. 6.3.5 El ob je o Sys em P opiedades To das ellas son esp eccas del en o no Windows .  Sys em.F eeMemo y Un en e o la go que indica el n ume odeby es de memo ia lib e.  Sys em.F eeResou ces Un en e o que ep esen a el p o cen a je de ecu sos lib es del sis ema. Es un alo en e 0 y 100.  Sys em.To alMemo y Un en e o la go que ep esen a el n ume o de by es de la memo ia lib e disp onible.  Sys em.WindowsDi ec o y $ Una cadena que con iene el di ec o io donde se encuen a el sis ema op e a i o.  Sys em.WindowsVe sion $ Una cadena que con iene la e sion del sis ema op e a i o. 6.3.6 El ob je o Clipboa d Me o dos  Clipboa d.Clea Bo a el con enido del p o apap eles.  Clipboa d.Ge Fo ma De uel e T ue si los da os disp onibles en el p o apap eles siguen un de e minado o ma o (que se pasa como pa ame o).  Clipboa d.Ge Tex De uel e el ex o que con iene el p o apap eles.  Clipboa d.Se Tex Copia el ex o esp ecicado (pasado como pa ame o) en el p o apa- p eles. 6.3.7 El ob je o Desk op Me o dos Los siguien es me o dos son esp eccos pa a Windows.  Desk op.A angeIcons Reo ganiza las aplicaciones minimizadas en la pan alla.  Desk op.Cascade Reo ganiza en cascada las en anas no minimizadas.  Desk op.Se Colo s Cambia los colo es del sis ema a un conjun o de colo es p edenido (que se pasa como pa ame o).  Desk op.Se Wal lpape Cambia el apiz de la pan alla al mapa de bi s esp ecicado (que se pasa como pa ame o). 101  Desk op.Snapsho Toma una seccion de la pan alla y la sal aen el clipb oa d como un mapa de bi s.  Desk op.Tile Reo ganiza o das las en anas no minimizadas de mane a que no se sup e - p ongan. 6.3.8 El ob je o Ne Me o dos Los siguien es me o dos son esp eccos pa a Windows.  Ne .CancelCon Cancela una conexion de ed.  Ne .Dialog Visualiza una en ana de dialogo que p e mi e congu a la ed ac ualmen e ins alada.  Ne .Ge Caps De uel e un en e o que in o ma sob e la ed y sus capacidades, seg un el ip o eque ido de in o macion (que se pasa como pa ame o).  Ne .Ge Con $ De uel e el nomb e del ecu so de ed aso ciado al disp osi i o lo cal que es a edi eccionado.  Ne .Use $ De uel e in o macion sob e el usua io conec ado a la ed. 6.3.9 El ob je o Viewpo Me o dos Los siguien es me o dos son esp eccos pa a Windows.  Viewpo .Clea Limpia la en ana esp ecial abie a.  Viewpo .Close Cie a la en ana esp ecial abie a.  Viewpo .Open Ab e una en ana esp ecial pa a mos a in o macion. Acep a como pa ame os el  ulo de la en ana, la p osicion y el ama ~no. En combinacion con la sen- encia P in , es as en anas son ap opiadas pa a la salida de in o macion de depu acion. Es a en ana se cie a au oma icamen e cuando la aplicacion que la ab io e mina. Solo se puede ene una en ana abie a cada ez. El ama ~no maximo del bu.e que iene aso ciado es de 32K., po lo que la in o macion al p incipio del mismo se a b o ada pa a hace hueco cuando se in o duce nue os da os p o el nal. Po ejemplo: Sub Main() Viewp o .Op en ``Ven ana esp ecial de BasicSc ip '',100,100,500,500 P in ``Es o se isualiza aenuna en ana esp ecial.'' Sleep 2000 Viewp o .Close End Sub 102 6.4 Di ec i as de p ep o cesado 6.4.1 La di ec i a #Cons Dene una cons an e pa a se u ilizada en la o a di ec i a del p ep o cesado #I ...Then...#Else. Su sin axis es: #Cons cons name = exp ession In e namen e, o das es as cons an es son de ip o V a ian . Po lo an o, la exp esion puede se de cualquie ip o. Po ejemplo: #Cons SUBPLATFORM = ``NT'' #Cons MANUFACTURER = ``Windows'' #Cons TYPE = ``Wo ks a ion'' #Cons PLATFORM = MANUFACTURER & `` '' & SUBPLATFORM & `` '' & TYPE Sub Main() #I PLATFORM = ``Windows NT Wo ks a ion'' Then MsgBox ``Ejecu andose ba jo Windows NT Wo ks a ion'' #End I End Sub 6.4.2 La di ec i a #I ...Then...#Else Fue za al compilado la inclusion o exclusion de secciones del codigo basandose en unas condi- ciones dadas. La sin axis de es a di ec i a es: #I exp ession Then & s a emen s ] &#ElseI exp ession Then & s a emen s ]] &#Else & s a emen s ]] #End I La exp esion ep esen a cualquie exp esion alida de BasicSc ip que e alue un ip o b o oleano. Puede consis i de li e ales, op e ado es, cons an es denidas con # Cons o alguna de las cons an es p edenidas del p ep o cesado (p o ejemplo, Win 32 es T ue si el en o no de desa ollo es a basado en Windows pa a 32{bi s). Cualquie cons an e no denida e alua aa E mp y . Po ejemplo: #Cons VERSION = 2 Sub Main #I VERSION = 1 Then di ec o y$ = `` n apps n widge '' #ElseI VERSION = 2 Then di ec o y$ = `` n apps n widge 32'' 103 #Else MsgBox ``Ve sion descono cida.'' #End I End Sub Una u ilizacion habi ual de es a di ec i a es la inclusion op cional de sen encias de depu- acion en el codigo. El siguien e ejemplo mues a como se puede depu a el codigo si se incluye condicionalmen e el chequeo de pa ame os a una uncion: #Cons DEBUG = 1 Sub Cambia Fo ma o(Nue oFo ma o As In ege , Tex oEs ado As S ing) #I DEBUG = 1 Then I Nue oFo ma o <> 1 And Nue oFo ma o <> 2Then MsgBox ``Pa ame o '' ``Nue oFo ma o'' `` es in alido.'' Exi Sub End I I Len(Tex oEs ado) > 78 Then MsgBox ``Pa ame o '' ``Tex oEs ado'' `` es demasiado la go.'' Exi Sub End I #End I Rem Cambia el o ma o aqu... End Sub El siguien e ejemplo llama a una u ina ex e na. Es as llamadas son muy esp eccas de la pla a o ma, po lo que end emos que esc ibi el codigo adecuado pa a cada una de ellas, p o duciendo un codigo mul ipla a o ma: #I Win16 Then Decla e Sub Ge WindowsDi ec o y Lib ``KERNEL'' (ByVal Di Name As S ing,ByVal MaxLen As In ege ) #ElseI Win32 Then Decla e Sub Ge WindowsDi ec o y Lib ``KERNEL32'' Alias ``Ge WindowsDi ec o yA'' (ByVal Di Name As S ing,ByVal MaxLen As Long) #End I Sub Main() Dim Nomb eDi As S ing * 256 Ge WindowsDi ec o y Nomb eDi ,len(Nomb eDi ) MsgBox ``El di ec o io de Windows es '' & Nomb eDi End Sub 104