Vous êtes sur la page 1sur 50

INTRODUCCION A LA PROGRAMACION EN VISUAL BASIC 6.0 Carlos Armando Cue as Valle!

o DME"CINVESTAV"IPN
Qu es un lenguaje de programacin? Un lenguaje de programacin de alto nivel es una especie de traductor que nos permite comunicarnos con los circuitos internos de una microcomputadora. programacin, En efecto, mediante como un lenguaje en de la

comunicamos

acciones,

escribir

pantalla, calcular, dibujar, etc; a los circuitos internos de una computadora. Ella efect a las tareas asignadas ! una ve" que las completa, los como$ comunica, tambin a travs E#isten del mismo

lenguaje, lenguajes ,asic,

resultados %&&, -et, 'ava, etc.

obtenidos. (rolog,

diversos +isual fines

)isp, con

*ortran, ciertos

+isual

.odos

ellos

particulares. (or ejemplo, 'ava es el lenguaje de la red /0nternet1, % un lenguaje de funciones, )isp procesa listas ! se utili"a para la programacin en inteligencia artificial ! as2 sucesivamente. En esta introduccin veremos uno de los lenguajes m3s utili"ados ! amigables4 +isual ,asic versin 5.6 /+,51. +,5 es un lenguaje dirigido a objetos, esto significa que programar en +,5 es programar objetos computacionales.

(rogramar la computadora mediante un lenguaje significa dar


1

Por amigable se entiende un lenguaje cuya interfaz de comunicacin con el usuario es clara y sencilla de entender.

CARLOS ARMA !O C"#$AS $ALL#%O

una serie de instrucciones a la m3quina para que las ejecute en una cierta secuencia. (ero empecemos por partes. En primer trmino se tiene que 7instalar8 el lenguaje +,5 en la

computadora. +,5 viene desarrollado en tres compactos, el primero instala el lenguaje propiamente ! los otros dos

instalan bibliotecas con programas necesarios para el buen funcionamiento del lenguaje. )a instalacin es autocontenida ! slo basta ir poniendo disco a disco conforme lo solicita ! por lo tanto no nos detendremos en e#plicar algo acerca de lo mismo. Una ve" instalado el lenguaje para empe"ar a programar se 7carga8 el lenguaje de la siguiente forma$ 4 9as clic: con el ;ouse en > :. Una ve" que se abre el abanico del men
Microsoft Visual Basic 6.0

! despus <as clic en =

elegimos de a<2

/vase figura ?.41, <aciendo clic sobre el

mismo.

#$%ura &.'. Carga de $isual &asic en escritorio'

Por )acer clic sobre un objeto' se entiende situar el cursor sobre el objeto y o*rimir el botn iz+uierdo del ratn.

, -RO!"CC,O A $,S"AL &AS,C ../

@e inmediato aparece la siguiente una interfase /vase figura ?.:1.

Figura 3.2. 0nterfase para iniciar un pro!ecto en +isual ,asic ver 5.6. )a ventana de la figura ?.:, nos permite crear diversos tipos de programas que eventualmente describiremos; por lo pronto iniciemos con un pro!ecto reali"ado en una forma est3ndar. Proyecto Juego Melate El juego de melate consiste en elegir seis n meros entre A4 que se proponen. Un jugador toma una tabla ! de ella elige seis n meros con los que podr3 jugar con una opcin entre 4B,66C,D56 posibilidades. El pro!ecto que se propone consiste en generar una s#tupla aleatoria. Es decir, una persona al correr este programa generar3 seis n meros aleatorios entre los A4 propuestos. @e esta forma la persona podr3 jugar al melate con 7la combinacin de la suerte8 dada por la

computadora.

CARLOS ARMA !O C"#$AS $ALL#%O

Ei se elige la opcin EXE estndar, <aciendo clic sobre el icono asociado aparece se la interfase tambin, dada en la figura ?.?. !

Fpcionalmente,

abre

seGalando

esta

opcin

posteriormente se oprimiendo el botn =Abrir>

Figura 3.3. 0nterfase de +,5 con forma est3ndar. @escribiremos a continuacin los elementos de esta interfase. @ejando para despus los tres primeros renglones. )a primera columna contiene los objetos que podemos instalar en la forma. H esta columna se le llama caja de <erramientas ! se describen brevemente en la figura ?.D.

, -RO!"CC,O A $,S"AL &AS,C ../

Figura 3.4. Fbjetos de +,5 que podemos insertar en una forma. )a siguiente columna contiene la Forma. )a forma define la interfase con el usuario. Utili"ando una analog2a, podemos la
forma

es

como

un

lien"o objetos

en que

blanco se

en

donde en

ubicar

los

diversos

tienen

<erramienta ! que una ve" finali"ado se presenta al usuario. @escribamos la idea de cmo se reali"ar3 el pro!ecto.

@eseamos que en una pantalla mediante la opresin de un botn se genere una s#tupla de n meros aleatorios que ser3 7la combinacin ganadora8 para jugar el melate. Una idea ser3 como la que se e#<ibe en la figura ?.A

CARLOS ARMA !O C"#$AS $ALL#%O

Figura 3.5. 0nterfase s#tupla de melate. @esde luego esta interfase

para

generar

una m3s letreros

puede

contener

colores, figuras, etc. El diseGo lo define el que crea el programa, pero esencialmente estos ser3n los objetos de la interfase. )a tercera ! ltima columna /vase figura ?.51, en la parte

superior contiene informacin sobre el pro!ecto que se est3 constru!endo con todas las formas que contuviera. @ebajo de esta parte, aparece el nombre del objeto con el que se este trabajando ! sus propiedades. El objeto puede ser una forma /vase figuras ?.5 ! ?.I1, etiqueta, caja de te#to, etc. *inalmente en la parte inferior se describe el objeto

brevemente /vase figura ?.I1.

, -RO!"CC,O A $,S"AL &AS,C ../

Figura 3.6. (arte de la interfase de +,5 que describe el pro!ecto ! las propiedades del objeto forma.

Figura 3.7. (arte de la interfase de +,5 que describe el pro!ecto ! las propiedades del objeto caja de te#to.

Observacin Ei por el momento tiene alguna confusin por no entender cabalmente, no se preocupe. )os objetos que se describen alcan"ar3n un grado de comprensin ma!or en cuanto empecemos a trabajar con ellos. )a programacin ! el uso de los objetos es algo que se logra gradualmente en el tiempo. 0niciemos ampliando el campo visible de la forma <aciendo clic en el cuadrito J tanto de la forma como del pro!ecto

CARLOS ARMA !O C"#$AS $ALL#%O

/vase figura ?.B1 <asta que quede de la forma que se ilustra en la figura ?.C. Figura 3.8. .oda forma tiene tres opciones que se ofrecen en los tres cuadritos de la dereK c<a. )a primera !" reduce ! esconde la forma del escritorio, la segunda #$" amplia o reduce la forma ! la tercera %" finali"a ! descarga la forma. Figura 3.&. *orma ampliada.

'ota H veces para obtener la ventana deseada para trabajar es necesario ajustarla mediante las barras al lado i"quierdo ! debajo de la ventana de forma /vase figura ?.C1. 0nsertemos a<ora los objetos que queremos para definir la interfase. (rimero insertamos una etiqueta para rotularla con el nombre ;E)H.E. .ambin es posible instalar seis etiquetas m3s en donde pondremos los n meros aleatorios que se

generar3n para jugar el melate. (ara ello, <acemos clic en el objeto etiqueta que se identifica, en <erramienta, por tener una letra en un cuadrito A. Enseguida movemos el ratn <asta la forma ! en donde deseemos ubicar el letrero <acemos clic oprimiendo ! dejando oprimido el botn i"quierdo del mismo ratn. Hl mover el ratn, con el botn i"quierdo oprimido, se va delineando el largo ! anc<o de la etiqueta que deseamos 4

, -RO!"CC,O A $,S"AL &AS,C ../

definir /vase figura ?.461. )as dimensiones de una etiqueta se pueden definir posteriormente, as2 que tan slo se

establece la etiqueta con una dimensin apro#imada. Una ve" que se suelta el botn del ratn, puede mover el objeto si simplemente ubica al ratn sobre l ! al oprimir ! dejar oprimido el botn i"quierdo lo mueve al lugar deseado.

.ambin una ve" que se <ace clic sobre el objeto aparecen los cuadritos en los bordes que nos permiten estirar /modificar su longitud1 o reducir /modificar el anc<o1 del objeto /vase figura ?.441.

Figura 3.(). Una etiqueta de Figura 3.((. %uadritos en los dimensin apro#imada. bordes de etiqueta que permiten ajustar su dimensin. +amos a<ora a definir algunas propiedades de este objeto. Hl <acer clic sobre el objeto tambin aparecen en la parte derec<a inferior las propiedades de la etiqueta /vase figura ?.4:1. +amos a ir estableciendo algunas de ellas. En primer lugar <acemos clic al lado derec<o de donde dice
(Nombre).

Este ser3 el nombre que tendr3 en el programa el Es decir, con este nombre lo identificar3 el

objeto.

programador ! por supuesto lo bauti"a el mismo. En este caso le pondremos lbl;elate64. Hunque el nombre lo elige el

programador, es acuerdo internacional el que todo objeto de etiqueta inicie con las letras lbl. @e esta manera al

CARLOS ARMA !O C"#$AS $ALL#%O

programar se tendr3n identificados todos los objetos que sean etiquetas de otros objetos al identificar lbl en el nombre.
Caption

/subtitulo1.
Caption

Hl

<acer

clic

al el

lado te#to

derec<o o

de

la que

palabra

se

permite

capturar

titulo

llevar3 la etiqueta. En nuestro caso escribiremos en ma! sculas ;E)H.E.


ont

/fuente1. Hl

(ermite clic

definir al lado

tipo,

tamaGo de

!
ont

cualidad aparece

de un

letra.

<acer

derec<o

cuadrito con tres puntos

. Hl <acer clic

sobre el cuadrito, aparece una ventana /vase figura ?.4?1 que nos permite elegir el tamaGo /n mero1, tipo /fuente1 ! estilo /negrita, cursiva1 de letra que deseamos. En nuestro caso elegimos$ Hrial, DB ! negrita.

Figura 3.(3. +entana para definir tipo, tamaGo ! cualidad del te#to.

Figura 3.(2. (ropiedades del objeto etiqueta.

1/

, -RO!"CC,O A $,S"AL &AS,C ../

*lignment

/Hlineacin1. @efine la alineacin que llevara el

te#to de la etiqueta. Elegimos !"center que es centrar.


Appearance

/Hpariencia1. @efine la apariencia de la etiqueta,

entre plana o de tres dimensiones. -osotros elegimos #"$%.


Auto&i'e

/HutotamaGo1. de acuerdo

(ermite al

establecer del

el

tamaGo Ee

de

la

etiqueta

tamaGo

te#to.

define

como

variable lgica ! por ende tiene el valor /verdadero1. En este caso ser3 (rue.
Bac)Color

alse

/*also1 o (rue

/%olor de fondo1. @efine el color de fondo de la Eobre este color se escribir3 el te#to. (ara

etiqueta.

colorear el fondo al <acer clic al lado derec<o aparece una punta de flec<a /vase figura ?.4D1 ! al <acer clic sobre ella aparece una ventana emergente como se ve en la figura ?.4D. )os colores que aparecen con la pestaGa &istema, son colores propios del sistema ! son tonos negros ! grises. Hl <acer clic en la pestaGa *aleta aparecen diversos colores ! <aciendo clic en el color elegido, definimos el color del fondo de la etiqueta. En este caso naranja.

Figura 3.(4. %olores aparecen con Eistema.


Bac)&t+le

que Figura 3.(4. %olores aparecen con (aleta. @e nuevo al <acer clic a

que la

/estilo

del fondo1.

derec<a, aparece una punta de flec<a que al oprimirla permite

11

CARLOS ARMA !O C"#$AS $ALL#%O

elegir

entre

#",pa-ue

/fondo

opaco1

0.(ransparent

/transparente1.
Border&t+le

/Estilo del borde1. Hl <acer clic a la derec<a,

aparece una punta de flec<a que al oprimirla permite elegir entre dos opciones
#" i/ed &in0le

/arreglo

nico1

0"none

/ninguno1.
Enabled

/9abilitado1. Esta propiedad <abilita o des<abilita un

objeto. @e nuevo esta propiedad queda definida como variable lgica ! por ende tiene el valor
alse

/*also1

para

des<abilitar o (rue /verdadero1 para <abilitar. En este caso ser3 (rue.


oreColor

/%olor de te#to1. %omo su nombre lo indica define el

color del te#to ! se opera en forma semejante a Bac)Color.


1ei02t

/altura o anc<o1. @efine la altura de la etiqueta de un

objeto en tLips. El tLip es una unidad independiente de la pantalla utili"ada para asegurar que la colocacin ! la proporcin de los

elementos de la pantalla de la aplicacin son los mismos en todos los sistemas de pantallas. Un tLip es una unidad de medida de la pantalla igual a 4M:6 de un punto de impresora. E#isten apro#imadamente 4DD6 tLips en una pulgada lgica o A5I tLips en un cent2metro lgico /la longitud de un elemento de pantalla que mide una pulgada o un cent2metro al

imprimirse1.
3idt2

/largo1. @efine el largo de la etiqueta u objeto !

tambin se mide en tLips.


4nde/

/2ndice1. %uando se definen varios objetos de etiqueta

con el mismo nombre, para distinguirlos a cada uno de ellos 1(

, -RO!"CC,O A $,S"AL &AS,C ../

se

le

asocia

un

2ndice

/v.

gr.

lblEtiq/61,lblEtiq/41,

lblEtiq/:1, etc.1.
5eft

/0"quierda1.

;ide

en

Lips

la

distancia

relativa

de

i"quierda a derec<a, del e#tremo i"quierdo de la forma a la etiqueta.


(op

/.ope o cima1 ;ide en Lips la distancia relativa al tope

de la etiqueta a la forma o a alg n contenedor.


Visible

/visible1.

@efine

si

el

objeto

que

se

inserto

es

visible o no en tiempo de ejecucin. Esta propiedad queda definida como variable lgica ! por ende tiene el valor /*also1 para no visible o
(rue alse

/verdadero1

para

que

sea

visible. En este caso ser3 (rue. +,ercicio. (osicione el objeto de etiqueta recin definido dando valores a la altura, anc<o, color de fondo, de letra, tipo ! cualidad de letra, etc. 9emos definido en detalle algunas propiedades de este objeto puesto que muc<os de los otros objetos como botn de comando, caja de te#to, etc. comparten estas propiedades. @e tal forma que conocindolas se aplican al nuevo objeto. %ontinuando con la construccin del programa melate, despus de ubicar la etiqueta con el nombre, podemos insertar otra etiqueta para el n mero que aparecer3, quedando como se

ilustra en la figura ?.4A. El largo, anc<o, color, tipo ! tamaGo del n mero se definen dando los respectivos valores en las propiedades. Hunque es posible definir as2 cada una de las seis etiquetas para los n meros propongo la siguiente manera que creo es m3s

eficiente. Una ve" definida el largo, anc<o, color de fondo, 10

CARLOS ARMA !O C"#$AS $ALL#%O

color de te#to, tipo o fuente, tamaGo, cualidad /negrita1 de la primer etiqueta se le marca <aciendo clic sobre de ella ! aparecen los cuadritos en el borde para reajustar el tamaGo. En ese momento se dirige uno al men de barra /superior1, se persiana que se abre se vuelve a la opcin

<ace clic en Edici6n ! se elige del men la opcin Copiar. Hl cerrarse este men
Edici6n

! al abrirse el men

persiana se elige *e0ar. En ese

momento una ventana nos anuncia que si se desea crear una matri" de controles /etiquetas1 se oprime el botn de si e inmediatamente aparece otra etiqueta con las propiedades

definidas con anterioridad /vase figura ?.451.

Figura 3.(6. %opiando en la forma Figura 3.(5. Estado de la forma una etiqueta. en construccin. Nepitiendo este proceso conseguimos definir las seis

etiquetas requeridas para los n meros. +amos a introducir un nuevo objeto que es mu! diseGo de interfases. Eu utilidad queda til para el cuando

mostrada

tratamos de alinear las seis etiquetas para los n meros. %omo estamos en diseGo ! construccin es mu! posible que

necesitemos cambiar de posicin a las seis etiquetas, pero al <acer esto se tendr2an que alinear de nuevo las seis, de tal forma que si esto por ra"ones de esttica se tuviera que

11

, -RO!"CC,O A $,S"AL &AS,C ../

<acer varias veces, el trabajo de alinearlas ser2a de verdad insufrible por lo laborioso. El nuevo objeto que vamos a introducir se llama
rame

/marco1 ! como su nombre lo dice es

un marco contenedor de varios objetos de tal forma que al mover el marco se mueve con todos los objetos que tenga contenidos en l. Hdem3s los objetos quedan referenciados a este marco. @e nuevo al <acer clic en el cuadrito que tiene en el borde #! en <erramienta !, al arrastrar el ratn en la forma

podemos definir apro#imadamente longitud ! anc<o del marco. H<ora definimos sus propiedades de la siguiente forma /Nombre1 fra;elate. )as iniciales fra son las que anteceden o parte del nombre para cualquier frame o marco que se inserte en una forma
Apearance$ Bac)Color$ Border&t+le$ Caption$

4K?@ El que guste de la paleta *i#ed Eingle

En este caso borramos el nombre *rame4 que por defecto

pone +,5, de esta forma slo queremos el marco sin ning n nombre para el mismo.
1ei02t$ 3idt2$

4?A6 5I66

O son todas las propiedades que definiremos. -i. %uando se desea ajustar un marco /frame1 o cualquier otro objeto, puede ajustarlo en la misma forma <aciendo uso de los cuadritos de ajuste de cualquier control. Una ve" que llegue

12

CARLOS ARMA !O C"#$AS $ALL#%O

a convencerse de las dimensiones, le da un segundo ajuste definiendo las propiedades )eft, Nigt<, 9eig<t ! Pidt<. 9asta el momento tendremos una forma como la que se observa en la figura ?.4I, en la cual pueden cambiar tamaGo ! color de los objetos.

Figura 3.(7. Hvance del pro!ecto melate. (osiblemente el lector, tenga <asta el momento la inquietud de %u3ndo se empie"a a programar? Ei esto fuera as2 es conveniente mencionar que /isual 0asic es un lenguaje de

programacin por objetos, es decir, que el programa inicia o se dispara cuando se act a sobre los objetos. Hs2 lo que se programan son los objetos. En este caso, se <a pensado el programa de forma que inicie las operaciones en cuanto el usuario oprima un botn que diga 7%ombinacin Qanadora8. Esto brevemente quiere decir que toda la accin recaer3 sobre este botn. *inalmente para terminar de ubicar los objetos en la forma pondremos los dos botones que faltan.

1.

, -RO!"CC,O A $,S"AL &AS,C ../

(ara ello se dirige el ratn a <erramienta ! <acemos clic sobre el objeto que es un botn de comando /%ommand

button1 !, al arrastrar el ratn en la forma podemos definir apro#imadamente las dimensiones del botn. Enseguida definiremos sus propiedades de la siguiente forma /Nombre1 cmd;elate. )as iniciales cmd son las que anteceden o parte del nombre para cualquier botn de comando que se inserte en una forma
Apearance$ Bac)Color$ ont7

4K?@ El que guste de la paleta

tipo %omic Eans ;E; tamaGo 4:, cualidad negrita %ombinacin Qanadora 566 4KQrap<ical :I66

Caption$ 1ei02t$ &t+le$ 3idt2$

Enseguida podemos definir el segundo botn de la siguiente forma$ /Nombre1 cmd%ancelar.


Apearance$ Bac)Color$ ont7

4K?@ El que guste de la paleta

tipo Hrial; tamaGo 4:, cualidad negrita %ancelar 566 4KQrap<ical :I66

Caption$ 1ei02t$ &t+le$ 3idt2$

Una ve" definidos todos los objetos de la forma, va!amos a la programacin del pro!ecto melate.

13

CARLOS ARMA !O C"#$AS $ALL#%O

9aciendo doble clic sobre el botn

=%ombinacin Qanadora>

aparece una ventana como la que se aprecia en la figura ?.4B.

Figura 3.(8. +entana para objeto botn de comando.

programar

un

mtodo

del

Este es el momento de aclarar un poco sobre la programacin de los objetos. .odo objeto /etiqueta, caja de te#to, forma, etc.1 tiene propiedades ! eventos o mtodos. )as propiedades, como !a <emos visto, definen las caracter2sticas de su

presentacin. )os eventos por el contrario definen acciones del objeto ante una accin del usuario. Es, valga la

analog2a, como cuando se infla un globo, las propiedades son tamaGo, color, etc. O el evento ser3 qu sucede cuando se le pinc<a? %u3ndo se le suelta? )os eventos asociados al objeto botn de comando /command button1 se pueden obtener <aciendo clic en la flec<a de la ventana derec<a de la figura ?.4B /vase figura ?.:61

Figura 3.2(. )ista de objetos instalados en la forma. Figura 3.2). Eventos asociados a botn de comando.

14

, -RO!"CC,O A $,S"AL &AS,C ../

.odos ellos tienen su funcin ! en la medida de avance ! necesidad los iremos e#plicando. En este caso iniciamos con el evento clicR.
Clic).

Este evento se dispara en cuanto el usuario <ace clic

sobre el botn. O dentro del pro!ecto este evento tendr3 toda la

responsabilidad del mismo. Es decir, en este evento se deben de generar los seis n meros aleatorios ! adem3s ponerlos en las respectivas etiquetas. (ero antes de iniciar propiamente la programacin mencionaremos algunas generalidades de los lenguajes de programacin$ .odo lenguaje contiene en su programacin de tipo los siguientes !

elementos$

variables,

operaciones

aritmtico

lgico, ciclos numricos ! lgicos, funciones ! subrutinas. %uando se <ace el esbo"o de un programa se cuenta las

variables ! tipo de tal forma que en un programa en +,5 lo primero variables @aremos elementos que que una ! se tiene que dentro <acer de es este de declarar programa cada el uno todas o de las

usemos

evento. estos el

descripcin enseguida se

general

mostrar3

programa

para

pro!ecto melate. Una variable es un lugar de almacenamiento con nombre que puede contener cierto tipo de datos que puede ser modificado durante la ejecucin del programa. %ada variable tiene un nombre nico que la identifica dentro de su nivel de 3mbito.

(uede especificar un tipo de datos o no. )os nombres de variable deben comen"ar con un car3cter alfabtico, deben ser nicos dentro del mismo 3mbito, no deben contener m3s de :AA 15

CARLOS ARMA !O C"#$AS $ALL#%O

caracteres

no

pueden

contener

un

punto

car3cter

de

declaracin de tipo. )as variables, pueden ser de tres tipos. +ariables que slo tiene valide" en el procedimiento en que se definen. Usualmente se les llama variables locales.

+ariables que tienen valide" en toda la forma ! se les llama variables locales a la forma ! finalmente variables que son v3lidas en todo el pro!ecto. H estas variables se les suele llamar variables globales. H<ora bien las variables en +,5 pueden ser de varios tipos, por el momento daremos dos. .ipos de variables. )as variables numricas ! las variables

lgicas. )as variables numricas son n meros por lo tanto pueden ser del tipo 0nteger /Entera1. )as variables 0nteger se almacenan como n meros de 45 bits /: b!tes1 con valores que van de 0(' 3.4 a ?:,I5I. El car3cter de declaracin de tipo para el tipo 1nteger es el signo de porcentaje /21. %omo se puede observar el rango para los posibles valores de una variable entera es relativamente pequeGo

[ 0(' 3.4 '

0(' 3.4]

! esto tiene

que ver con la memoria que ocupa una variable de este tipo. Ein embargo, si se desea un ma!or rango puede optar por )ong.
5on0.

)as variables )ong /enteros largos1 se almacenan como con signo de ?: bits /D b!tes1 con un valor

n meros

comprendido entre K:,4DI,DB?,5DB ! :4DI,DB?,5DI. El car3cter de declaracin de tipo para 3ong es el signo 4. Fbserve que )ong ocupa el doble de memoria que 0nteger. )a otra variable numrica usual es @ouble.

(/

, -RO!"CC,O A $,S"AL &AS,C ../

%ouble.

)as

variables

dobles

/punto

flotante

de

doble

precisin1 se almacenan como n meros 0EEE de coma flotante de 5D bits /B b!tes1 con valores de K4,ICI5C?4?DB5:?:E?6B a KD,CD65A5DABD4:DIEK?:D
0/4 0(1 1.353 1/ ' 1.51/ 1/

para valores

negativos ! de D,CD65A5DABD4:DIEK?:D a 4,ICI5C?4?DB5:?:E?6B


0(1 ' 1.353 1/0/4 1.51/ 1/ para valores positivos. El car3cter de

declaracin de tipo para 5ouble es el signo de n mero /61. Ein embargo, si uno desea una variable tipo doble o no

entera de menos precisin /menor memoria1 puede optar por Eingle.


&in0le.

)as

variables

Eingle

/punto

flotante

de

precisin

simple1 se almacenan como n meros 0EEE de coma flotante de ?: bits /D b!tes1 con valores que van de K?.D6:B:?E?B a K4.D64:CBEKDA
04 12 0.1/(4 1/ ' 1.1/1 1/ para

valores negativos ! de
12 04 4.D64:CBEKDA a ?.D6:B:?E?B 1.1/11/ ' 0.1/(4 1/ para valores

positivos. El car3cter de declaracin de tipo para 7ingle es el signo de e#clamacin /81. )as funciones son programas que se pueden invocar en un

programa para que realice cierto proceso !Mo operaciones. )as funciones que utili"aremos en este programa son dos. Nnd=/nmero1>$ Nnd son las siglas para la funcin Nandom /aleatorio1. Esta funcin genera o devuelve un n mero

aleatorio entre 6 ! 4 de tipo Eingle. nmero es un argumento opcional ! es tipo Eingle o cualquier e#presin numrica

v3lida. %uando no se pone argumento ! slo se usa Nnd esta funcin devuelve un n mero ma!or o igual a cero ! menor que

(1

CARLOS ARMA !O C"#$AS $ALL#%O

uno. El valor de nmero determina cmo la funcin 9n: genera un n mero aleatorio$ (ara cualquier valor de semilla inicial se genera la misma secuencia de n meros. Esto es debido a que cada llamada

sucesiva a la funcin 9n: usar3 el n mero anterior como valor de semilla para el siguiente n mero de la secuencia. +alores devueltos 7i nmero es ;enor que cero 9n: genera El mismo n mero todas las veces, utili"ando nmero como valor de semilla. ;a!or que cero 0gual a cero -o especifica (or ejemplo -SrndTD Esta operacin devuelve en -, un n mero de tipo El siguiente n mero aleatorio de la secuencia. El n mero generado m3s recientemente. se El siguiente n mero aleatorio de la secuencia.

single ma!or o igual a 6 ! menor a D. Fbserve que el valor de una funcin debe asignarse a una variable. @e no ser as2 el programa marcar2a un error por que no sabr2a que <acer con el valor que la funcin devuelve. Es conveniente anotar que esta funcin no genera n meros aleatorios en sentido estricto, sino que los genera en un cierto orden. Es por eso que suele llamarse a esta funcin EEU@FH)EH.FN0H. Ei uno quisiera simular una generacin de n meros aleatorios es conveniente utili"ar la funcin

((

, -RO!"CC,O A $,S"AL &AS,C ../

Nandomi"e.
8andomi'e 9nmero:$

El argumento opcional nmero es un tipo

+ariant o cualquier e#presin numrica v3lida. )a instruccin 9an:omi;e utili"a nmero para iniciali"ar el generador de n meros aleatorios de la funcin 9n: ! le asigna un nuevo valor de semilla. Ei omite nmero, el valor devuelto por el reloj del sistema se usa como el nuevo valor de semilla. Ei no utili"a la instruccin 9an:omi;e, la funcin 9n: /sin argumentos1 utili"a el mismo n mero como valor de semilla la primera ve" que se la invoca, usando despus como valor de semilla el ltimo n mero generado.

Ftra funcin que utili"aremos es la funcin 0nt.


4nt(n;mero).

Esta funcin entrega o devuelve la parte entera de

un n mero double o single. Ei el n mero es ma!or que uno devuelve la parte entera si es menor a uno entrega cero. *inalmente tambin utili"aremos una instruccin de ciclo

numrico el cual tiene la siguiente estructura$ For i S k to n 0nstruccin 4 0nstruccin : UU 'e<t i Esta instruccin ejecuta las instrucciones dentro del cuerpo *orKne#t tantas veces como lo indique el contador desde R <asta n aumentando de uno en uno. )a sinta#is se describe a continuacin For contador = principio -o fin =7te. incremento> (0

CARLOS ARMA !O C"#$AS $ALL#%O

=instrucciones> =+<it For> =instrucciones> 'e<t =contador> )a sinta#is consta de las siguientes partes$ Parte Contador 5escri.cin Nequerido. +ariable numrica que se utili"a como contador de bucle o ciclo. )a variable no puede ser ,ooleana /lgica1 ni un elemento de matri". Principio Fin incremento Nequerido. +alor inicial del contador. Nequerido. +alor final del contador. Fpcional. %antidad en la que cambia el

contador cada ve" que se ejecuta el ciclo. Ei no se especifica, el valor predeterminado de incremento es uno. instrucciones Fpcional. Una o m3s instrucciones entre For ! 'e<t que se ejecutan un n mero especificado de veces. %omentarios El incremento puede ser positivo o negativo. El valor del argumento incremento determina la manera en que se procesa el bucle, como se muestra a continuacin$ +alor El bucle se ejecuta si

(1

, -RO!"CC,O A $,S"AL &AS,C ../

(ositivo o 6

contador V S /menor o igual a1 fin

-egativo

contador W S /ma!or o igual a1 fin

Una ve" que se inicia el bucle ! se <an ejecutado todas las instrucciones en el bucle, incremento se suma a contador. En este punto, las instrucciones del bucle se pueden ejecutar de nuevo /si se cumple la misma prueba que caus que el bucle se ejecutara ejecucin inicialmente1 contin a con o la bien se sale del que bucle sigue ! a la la

instruccin

instruccin -e#t. Eugerencia$ %ambiar el valor de contador mientras est3 dentro de un bucle <ace dif2cil su lectura ! depuracin. Ee pueden colocar en el bucle cualquier n mero de

instrucciones E#it *or como una manera alternativa de salir del mismo !, transfiere el control a la instruccin que sigue inmediatamente a la instruccin -e#t. Ee pueden anidar bucles *or...-e#t, colocando un bucle

*or...-e#t dentro de otro. (ara ello, proporcione a cada bucle un nombre de variable nico como su contador. )a

siguiente construccin es correcta$


*or 0 S 4 .o 46 *or ' S 4 .o 46 *or X S 4 .o 46 ... -e#t X -e#t ' -e#t 0

'ota

Ei

omite

un

contador

en

una

instruccin

'e<t,

la

ejecucin contin a como si se <ubiera incluido. Ee produce un

(2

CARLOS ARMA !O C"#$AS $ALL#%O

error

si

se

encuentra

una

instruccin

'e<t

antes

de

su

instruccin For correspondiente. (ara finali"ar la introduccin de objetos instrucciones ! funciones daremos una instruccin de tipo lgico. )a

instruccin 4f...(2en.. Esta instruccin ejecuta condicionalmente un grupo de

instrucciones, dependiendo del valor de una e#presin. Eu sinta#is es la siguiente$ I( condicin T)en 6instrucciones7 6Else 6instrucciones_else77 End I( O bien I( condicin T)en 6instrucciones7 6ElseI( condicin-n T)en 6instrucciones_elseif7 ... 6Else 6instrucciones_else77 End I( Esta instruccin opera de la siguiente manera$ %uando se ejecuta un bloque 4f, se prueba condicin. Ei

condicin es (rue, se ejecutan las instrucciones que est3n a

(.

, -RO!"CC,O A $,S"AL &AS,C ../

continuacin de (2en. Ei condicin es

alse,

se eval an una a

una las condiciones Else4f /si e#isten1. %uando se encuentra una condicin (rue se ejecutan las instrucciones que siguen inmediatamente a la instruccin .<en asociada. Ei ninguna de las condiciones Else4f es (rue /o si no <a! cl3usulas Else4f1, se ejecutan las instrucciones que siguen a Else. @espus de la ejecucin de las instrucciones que siguen a (2en o Else, la ejecucin contin a con la instruccin que sigue a End 4f. )a sinta#is de la instruccin 1>...-?en...+lse consta de tres partes$ Parte condicin 5escri.cin Re+uerido. "no o m8s de los siguientes dos ti*os de e9*resiones: "na e9*resin num;rica o e9*resin de cadena +ue *uede ser e<aluada como True o #alse. instrucciones O*cional en formato de blo+ue= se re+uiere en formato de l>nea sencilla +ue no tenga una cl8usula Else. "na o m8s instrucciones se*aradas *or dos *untos ejecutados si la condicin es True. O*cional. ,gual +ue condicin. O*cional. "na o m8s instrucciones ejecutadas si la condicin-n asociada es True. O*cional. "na o m8s instrucciones ejecutadas si ninguna de las e9*resiones anteriores condicin o condicin-n es True.

condicin-n instrucciones_elseif instrucciones_else

Observacin Hunque puede utili"ar 0fKt<enKelseKend if en la forma de una sola l2nea para pruebas cortas ! sencillas. El formato de bloque proporciona m3s estructura ! fle#ibilidad que la forma de l2nea simple !, generalmente, es m3s f3cil de leer, de mantener ! de depurar.

(3

CARLOS ARMA !O C"#$AS $ALL#%O

-i.s KEl bloque 0f debe terminar con una instruccin End 0f. En caso contrario se marca error. K(ara determinar si una instruccin 0f es un bloque, e#amine lo que sigue a la palabra .<en. Ei lo que aparece detr3s de .<en en la misma l2nea no es un comentario, la instruccin se considera como una instruccin 0f de una sola l2nea. K)as cl3usulas Else ! Else0f son opcionales. (uede tener en un bloque Else0f, tantas cl3usulas 0f como desee, pero

ninguna puede aparecer despus de una cl3usula Else. K)as instrucciones de bloque 0f se pueden anidar; es decir, unas pueden contener a otras. Ejemplo 0f n W ? t<en YEi el valor de n W que ? entonces

lbl;elate.%aptionS 7Oa jugaste tres partidas8 Yasigna un rotulo else YEn caso contrario /si nVS?1 YHsigna

lblmelate.%aptionS8Eigue jugando, puedes ganar8

otro rotulo end if Y*in de bloque if Observacin -ote que tanto en un bloque de tipo ifKt<enKelseKend if; como en forKne#t. )as instrucciones del bloque se escriben con una cierta sangr2a para de esta forma tener a simple vista la longitud del bloque ! las instrucciones que contiene.

(4

, -RO!"CC,O A $,S"AL &AS,C ../

+a!amos a<ora al cuerpo del programa que recordamos debe de estar dentro del evento clicR del botn de comando

7%ombinacin Qanadora8 )a primera parte es la declaracin o dar de alta todas las variables que vamos a utili"ar, mediante la instruccin %im El apostrofe * sirve para incluir comentarios en un programa cuando la m3quina lee el programa al ver la comilla deja de <acerle caso a lo que le sigue.
*ri<ate &ub CmdMelate=Clic)() %im i As 4nte0er %im ? As 4nte0er %im propu As 4nte0er >%eclara i como <ariable entera para tener un contador >%eclara ? como <ariable entera para tener otro contador >%eclara propu como <ariable entera para tener un <alor >inicial para melate %im num(@) As 4nte0er >%eclara 6 <ariables enteras para almacenar los n;meros >de melate. A saberA num(0)B num(#)B num(!)BCB num(@) %im n As 4nte0er >%eclara ? como <ariable entera para definir el n;mero >m/imo de posibles n;meros -ue ?ue0an. ><alores para los n;meros de melate n D E@ FNumero m/imo de posibles enteros para melate

>Contamos con 6 lu0ares o memorias para poner en ellas los n;meros -ue se irn >0enerando en forma aleatoria para la combinaci6n. >El primer lu0ar lo ocupa un n;mero -ue >se 0enera en forma aleatoria mediante la funci6n 8nd() num(0) D 4nt(#G8nd H n) >Ienera un n;mero aleatorio entre # + n

5blMelate(0).Caption D num(0) >Asi0na a la primer eti-ueta el <alor encontrado >num(0) or i D # (o @ >4nicia un ciclo con la <ariable i como contador a partir de ># 2asta @ ?D0 >Asi0na el <alor # a la <ariable ?

(5

CARLOS ARMA !O C"#$AS $ALL#%O

propu D 4nt(#G8nd H n)

>Ienera un n;mero aleatorio entre # + n + se lo asi0na a >la <ariable propu

or ? D i (o 0 &tep "#

>4nicia un ciclo con la <ariable ? como contador a partir >del <alor de i decreciendo en su <alor 2asta 0.

4f num(?) D propu (2en

>instrucci6n de tipo l60ico si propu es i0ual al <alor -ue >contiene num(?) producido anteriormenteB entonces

propu D 4nt(8nd H (n G #)) >se <uel<e a 0enerar propu ?D0 End 4f Ne/t ? num(i) D propu >Asi0na el <alor 0 a la <ariable ? > in del blo-ue if > in del blo-ue or con contador ? >Asi0na a la <ariable si0uiente num(i) (i se 2a >incrementado) el <alor encontrado en propu 5blMelate(i).Caption D propu >Asi0na a la eti-ueta si0uiente lblMelate(i) (i se 2a >incrementado) el <alor encontrado en propu Ne/t i End &ub > in del blo-ue or con contador i > in del blo-ue de la subrutina del e<ento clic) asociado al bot6n

Ejercicios ! preguntas$ Qu sucede si eliminamos del programa la instruccin if con todo ! bloque? (or qu el bloque *or con contador j decrece? -o ser2a posible cambiarlo por uno con contador creciente? (or qu se ocupan e#actamente las seis etiquetas? Es la nica manera de reali"ar este programa? Qu pasa si melate cambia ! a<ora son 5B n meros posibles, sirve el programa? (rueba tu respuesta Qu sucede si a<ora se tiene que elegir B n meros entre B:? (uedes adaptar el programa?

0/

, -RO!"CC,O A $,S"AL &AS,C ../

.odas tus respuestas prubalas cambiando en el programa las instrucciones correspondientes ! verifica qu sucede. :. Ei <aces doble clic en la forma /no sobre un objeto de ella1 se abre una ventana para programar la primer subrutina

o evento que sucede al corre un programa que es &ub orm=5oad En ella se pueden definir las dimensiones que tendr3 la forma adem3s de activar la funcin Nandomi"e para que Nnd genere n meros aleatorios. ;odifica las magnitudes para que observes que sucede <asta llegar a la dimensin que te satisfaga. (rivate Eub *ormZ)oad/1 Pidt< S BA66 9eig<t S I666 .op S 4666 )eft S A66 Nandomi"e End Eub 'ota %uando se comete un error de sinta#is el programa al compilar /traducirlo a lenguaje de m3quina1 marca e#actamente /<asta donde se pueda1 el error. Hs2 que no se preocupe empiece a programar puesto que la nica forma de tener cierta destre"a

en programacin es mediante ensa!o ! error. 7egun:o .royecto Programa .ara ayu:ar a sumar :os n@meros enteros Este segundo pro!ecto es un programa para a!udar a sumar dos n meros enteros. %omo todos los pro!ectos de programacin, se propondr3 una forma de <acerlo ! queda en libertad el autor

01

CARLOS ARMA !O C"#$AS $ALL#%O

para

modificar

aumentar

e#tender

las

diversas

opciones

tanto del problema como del proceso de evaluacin. El pro!ecto ser3 como el que se presenta en la figura

Figura 3.22. 0nterfase para el pro!ecto de suma de dos enteros. @e ser as2 el pro!ecto se requerir3n etiquetas para letreros ! n meros a proponer para la suma, botones de comando ! un nuevo objeto [la caja donde recibir3 la respuesta\ (ara este nuevo elemento se requiere una caja de te#to. Este objeto puede funcionar al igual que la etiqueta, se puede rotular con el, salvo que tiene la propiedad de que el

usuario puede escribir dentro de la caja. )a idea es que el usuario escriba la respuesta en esta caja ! que una ve" terminada oprima el botn de revisar. Enseguida el programa, mediante un letrero, le indicar3 si es correcta o incorrecta la respuesta. 0(

, -RO!"CC,O A $,S"AL &AS,C ../

0niciemos como en el primer pro!ecto definiendo la interfase de este pro!ecto. En primer trmino 7cargamos8 o instalamos +,5 en escritorio /vase pags. :,? ! D1. Enseguida de acuerdo al dibujo de la figura ?.:: insertamos las etiquetas convenientes. (rimero se define la etiqueta que llevar3 el titulo del

programa ! se <ar3 en forma semejante a lo reali"ado en el pro!ecto ;E)H.E /pags. B,C ! 461 Una ve" puesta la etiqueta se definen sus propiedades
(Nombre). Caption

lblEumaE64. (NFQNH;H (HNH NE+0EHN )H EU;H @E @FE

/subtitulo1.

-U;ENFE E-.ENFE
ont /fuente1. 1ei02t. 3idt2

,ooR Hntiqua; 4D; -egrita

4466

/largo1. 5?66 /Hlineacin1. Elegimos !"center que es centrar. /Hpariencia1. #"$%.


alse.

*lignment Appearance Auto&i'e Bac)Color Border&t+le Enabled

/HutotamaGo1. En este caso ser3 /%olor de fondo1. Hl gusto

/Estilo del borde1. #" i/ed &in0le /arreglo

nico1.

/9abilitado1. En este caso ser3 (rue. /%olor de te#to1. Hl gusto

oreColor 5eft

/0"quierda1. :666. /visible1. En este caso ser3 (rue.

Visible (op

/.ope o cima1. 566

00

CARLOS ARMA !O C"#$AS $ALL#%O

(ara

la

siguiente

etiqueta

que

ser3n

las

cajas

en

donde

aparecer3n los n meros a sumar se define para la primera$


(Nombre). Caption

lbl-umEnt.

/subtitulo1. -inguno / se borra el subtitulo 7)abel48

que por defecto pone +,51.


ont /fuente1. 1ei02t. 3idt2

Hrial; ::; -egrita

566

/largo1. B66 /Hlineacin1. Elegimos !"center que es centrar. /Hpariencia1. #"$%.


alse.

*lignment Appearance Auto&i'e Bac)Color Border&t+le Enabled

/HutotamaGo1. En este caso ser3 /%olor de fondo1. Hl gusto

/Estilo del borde1. #" i/ed &in0le /arreglo

nico1.

/9abilitado1. En este caso ser3 (rue. /%olor de te#to1. Hl gusto

oreColor 5eft

/0"quierda1. :D66. /visible1. En este caso ser3 (rue.

Visible (op

/.ope o cima1. :A66 definir la segunda se puede 7copiar8 esta primera

(ara

etiqueta lo cual definir3 una matri" de etiquetas /vase pag. 4?1. Hl copiar la de etiqueta las por defecto las se copian que todas las que

propiedades

cuales

nicas

tendremos

modificar corresponder3n a las de su posicin


5eft (op

/0"quierda1.D?66. /.ope o cima1. :A66 /]ndice1. En este caso ser3 #

4nde/

01

, -RO!"CC,O A $,S"AL &AS,C ../

(odemos

asimismo

definir

otras

dos

etiquetas

para

los

s2mbolos propios de la ecuacinKsuma. )a primera para el s2mbolo m3s ser3$


(Nombre).

lblEumaEim.

Caption /subtitulo1. ont /fuente1. 1ei02t. 3idt2

A.

Hrial; :D; -egrita

566

/largo1. D66 /Hlineacin1. Elegimos !"center que es centrar. /Hpariencia1. #"$%.


alse.

*lignment Appearance Auto&i'e Bac)Color Border&t+le Enabled

/HutotamaGo1. En este caso ser3 /%olor de fondo1. Hl gusto

/Estilo del borde1. #" i/ed &in0le /arreglo

nico1.

/9abilitado1. En este caso ser3 (rue. /%olor de te#to1. Hl gusto

oreColor 5eft

/0"quierda1. ?A66. /visible1. En este caso ser3 (rue.

Visible (op

/.ope o cima1. :A66 /]ndice1. En este caso ser3 0

4nde/

(ara definir la segunda, la que lleva el signo menos, slo se copia sta posicin.
5eft

ltima, modificando, como antes, slo titulo !

/0"quierda1. AD66.

Caption /subtitulo1. 4nde/

!.
tenemos una interfase como la que se

/]ndice1. En este caso ser3 # este momento

9asta

muestra en la figura ?.:?

02

CARLOS ARMA !O C"#$AS $ALL#%O

Figura 3.23. Hvance de la interfase del pro!ecto Euma. +amos a<ora a insertar el objeto que define la caja en donde el usuario escribir3 su respuesta. Una caja de te#to es como su nombre lo indica, una caja en donde podemos escribir

caracteres alfanumricos. Es mu! semejante a una etiqueta definida antes /pags. B,C,46! 441 salvo que en una caja de te#to el usuario puede escribir en tiempo de ejecucin. Es decir, cuando el programa 7corre8 el usuario puede escribir dentro de la caja lo que se le solicita ! buna ve" escrito el programa e#amina el escrito. (ara incorporar una caja de te#to a la forma se <ace lo siguiente. Ee <ace clic en el objeto caja de te#to que se identifica, en <erramienta, por tener las letras ab en un cuadrito .

Enseguida movemos el ratn <asta la forma ! en donde deseemos ubicar la caja de te#to <acemos clic oprimiendo ! dejando oprimido el botn i"quierdo del mismo ratn. Hl mover el ratn, con el botn i"quierdo oprimido, se va delineando el largo ! anc<o de la caja de te#to que deseamos definir. )as propiedades de una caja de te#to son mu! semejantes a la de etiqueta /vase figura ?.:D1. daremos algunas.

0.

, -RO!"CC,O A $,S"AL &AS,C ../

Figura 3.24. 0nterfase de +,5 en donde se visuali"an las propiedades del objeto caja de te#to. En primer lugar <acemos clic al lado derec<o de donde dice
(Nombre).

Es el nombre que tendr3 en el programa el objeto. En

este caso le pondremos t#tEumaEnt. Hunque el nombre lo elige el programador, es acuerdo internacional el que todo objeto de etiqueta inicie con las letras t#t.
*lignment

/Hlineacin1. @efine la alineacin que llevara el

te#to de la caja de te#to. Elegimos !"center que es centrar.


Bac)Color

/%olor de fondo1. @efine el color de fondo de la

caja. Eobre este color se escribir3 el te#to. (ara colorear el fondo ver instrucciones en p3gina 44.
Border&t+le

/Estilo del borde1. Hl <acer clic a la derec<a,

aparece una punta de flec<a que al oprimirla permite elegir entre dos opciones
#" i/ed &in0le

/arreglo

nico1

0"none

/ninguno1. Ee elige #" i/ed &in0le.

03

CARLOS ARMA !O C"#$AS $ALL#%O

Enabled

/9abilitado1. Esta propiedad <abilita o des<abilita un

objeto. @e nuevo esta propiedad queda definida como variable lgica ! por ende tiene el valor
alse

/*also1

para

des<abilitar o (rue /verdadero1 para <abilitar. En este caso ser3 (rue.


ont

/fuente1.

(ermite

definir

tipo,

tamaGo

cualidad

de

letra /vase p3g. B1. En este caso debe concordar con lo definido para las etiquetas de los sumandos. Hrial, :: ! negrita.
oreColor

/%olor de te#to1. %omo su nombre lo indica define el

color del te#to ! se opera en forma semejante a Bac)Color. %olor al gusto.


1ei02t

/altura o anc<o1. @efine la altura de un control -e<t0o<

/la caja1. En este caso tiene que coincidir con la altura definida para las etiquetas de los sumandos. Es decir, 566.
5eft

/0"quierda1.

;ide

en

Lips

la

distancia

relativa

de

i"quierda a derec<a, del e#tremo i"quierdo de la forma a la caja o relativa del e#tremo i"quierdo de un frame o

contenedor a la caja. En este caso es 5:66.


5oc)ed

/cerrado con llave1. Esta propiedad permite cerrar un

control -e<t0o< /la caja1 para que no se escriba sobre ella ! puede ser activada en tiempo de ejecucin. Ee define como variable lgica ! por ende tiene el valor /verdadero1. En este caso ser3
alse. alse

/*also1 o (rue

-ote que si se activa

con (rue la caja actuar3 como etiqueta.


Ma/len0t2

/)ongitud

m3#ima1.

Esta

propiedad

define

un

valor

entero que especifica el n mero m3#imo de caracteres que el usuario puede escribir en un control -e<t0o<. El valor 04

, -RO!"CC,O A $,S"AL &AS,C ../

predeterminado de la propiedad Ma<3engt? es 6, que indica la ausencia de un m3#imo distinto del que imponga la memoria del sistema del usuario para los controles -e<t0o< de una l2nea ! un valor m3#imo de apro#imadamente ?: X, para los controles -e<t0o< de m ltiples l2neas. Un valor ma!or que 6 indica el n mero m3#imo de caracteres.
Multi5ine

/)2neas m ltiples1. Establece, mediante una variable

lgica, un valor que indica si un control -e<t0o< acepta ! muestra m ltiples l2neas de te#to. Es de slo lectura en tiempo de ejecucin.
&crollBars

/,arras para enrollar1. Establece, mediante un valor,

si un objeto tiene o no barras de despla"amiento <ori"ontal, vertical o ambas. Es de slo lectura en tiempo de ejecucin.
(e/t/.e#to1.

Esta propiedad define el te#to que tendr3 la caja

/-e<t0o<B. En general cuando se utili"a la caja para que el usuario escriba se borra el contenido. En este caso as2 ser3.
(op

/.ope o cima1 ;ide en Lips la distancia relativa al tope

de la caja a la forma o a alg n contenedor. En este caso debe coincidir con las etiquetas de los sumandos.
Visible

/visible1.

@efine

si

el

objeto

que

se

inserto

es

visible o no en tiempo de ejecucin. Esta propiedad queda definida como variable lgica ! por ende tiene el valor /*also1 para no visible o
(rue alse

/verdadero1

para

que

sea

visible. En este caso ser3 (rue.


3idt2

/largo1. @efine el largo de la etiqueta u objeto ! se mide en tLips. .ambin en este caso deber3

tambin

coincidir con las etiquetas de los sumandos.

05

CARLOS ARMA !O C"#$AS $ALL#%O

4nde/

/2ndice1. %uando se definen varios objetos -e<t0o< con

el mismo nombre, para distinguirlos a cada uno de ellos se le asocia un 2ndice /v. gr. t#tEum/61, t#tEum/41, t#tEum/:1, etc.1. %on esto conclu!e el e#amen ! definicin de las algunas

propiedades de una caja de te#to /-e<t0o<1 Eiguiendo reali"ado adelante /vase con el diseGo nos de acuerdo al los dibujo botones

figura

?.::1

faltar2an

7Nev2same8 ! 7%ancelar8, adem3s de los respectivos letreros para estimular el #ito o falla en el ejercicio planteado. Esto nos dice que debemos definir otros dos botones para desaparecer los mensajes de est2mulo cuando el usuario los vea. 0nsertemos los primeros dos botones para revisar ! salir cuando el usuario quiera. (ara ello se dirige el ratn a <erramienta ! <acemos clic sobre el objeto que es un

botn de comando /%ommand button1 !, al arrastrar el ratn en la forma podemos definir apro#imadamente las dimensiones del botn. Enseguida definiremos sus propiedades de la siguiente forma /Nombre1 cmdEumaEnt. )as iniciales cmd son las que anteceden a cualquier nombre para botn de comando que se inserte en una forma.
Apearance$ Bac)Color$ ont7

4K?@ El que guste de la paleta

tipo Enap 0.%; tamaGo 4:, cualidad normal Nevisame 566 4KQrap<ical 1/

Caption$ 1ei02t$ &t+le$

, -RO!"CC,O A $,S"AL &AS,C ../

3idt2$

:666 podemos definir el segundo botn para lo cual

Enseguida

sugiero para ello copiar el anterior ! darle otro nombre. -i. Mo:o alternativo .ara co.iar un ob,eto o control Ee seGala el objeto /botn, caja, etiqueta, etc.1 <aciendo clic sobre el mismo /aparecen los cuadritos en el borde para reajustar el tamaGo1. Enseguida, con el ratn sobre el objeto a copiar, se oprime el botn derec<o ! aparece un men de

persiana /vase figura ?.:A1. Ee elige Copiar. Enseguida se <ace clic con el botn derec<o del ratn en la forma o contenedor. @e inmediato aparece el men persiana de donde se

elige *e0ar /vase figura ?.:51 En ese momento se abre una ventana que nos anuncia si se desea crear una matri" de controles /botones, etiquetas, etc.1 si se oprime el botn de no inmediatamente aparece otro objeto /botn, etiqueta, etc.1 con las propiedades del que se copi ! definidas con

anterioridad

salvo el nombre /vase figura ?.451 ! posicin.

En caso de optar por si aparece otro objeto con el mismo nombre ! propiedades salvo que la propiedad 4nde/ /2ndice1 aumenta en uno.

11

CARLOS ARMA !O C"#$AS $ALL#%O

Figura 3.26. Una ve" copiado <aciendo clic con el botn derec<o la forma o Figura 3.25. *orma en contenedor, se pega. para copiar un objeto /Nombre1 cmd%ancelar.
Apearance$ Bac)Color$ ont7

4K?@ El que guste de la paleta 0.%; tamaGoS4:, cualidadSnormal /F el que

tipoSEnap

guste1
Caption$ 1ei02t$ &t+le$ 3idt2$

%ancelar 566

4KQrap<ical :666

+a!amos a<ora a definir los letreros que aparecer3n cuando el estudianteKusuario cometa un error o un acierto. )a idea ser3 que cuando el estudiante cometa un error

apare"ca un letrero con una figura. (ara ello se definir3 un


frame

/vase p3g. 4A1 con las siguientes caracter2sticas

/Nombre1 fraEuma4. )as iniciales fra son las que anteceden o parte del nombre para cualquier frame o marco.
Apearance$ Bac)Color$

4K?@ El que guste de la paleta

1(

, -RO!"CC,O A $,S"AL &AS,C ../

Border&t+le$ Caption$

*i#ed Eingle

En este caso borramos el nombre *rame4 que por defecto

pone +,5, de esta forma slo queremos el marco sin ning n nombre para el mismo.
1ei02t$ 3idt2$

:666 ::66

%omo queremos poner una cierta figura dentro del frame, se requiere para ello un nuevo objeto.
*ictureBo/

/%aja para cuadro1, Este control es semejante a la

caja de te#to /(e/tBo/1 slo que es para insertar$ iconos, fotos,


*ictureBo/

figuras,

im3genes,

etc.

en

la

forma.

Un

control

puede mostrar un gr3fico a partir de un mapa de bits,

un icono o un metarc<ivo, as2 como un metarc<ivo mejorado, un arc<ivo '(EQ o un arc<ivo Q0*. Necorta el gr3fico si el control no es lo bastante grande para mostrar la imagen

completa. Hl <acer clic en el cuadrito que tiene dibujos a color en <erramienta !, al arrastrar el ratn en la forma se puede

definir apro#imadamente longitud ! anc<o del *ictureBo/. H<ora definimos sus propiedades de la siguiente forma /Nombre1 picEuma4. )as iniciales pic son las que anteceden o parte del nombre para cualquier *ictureBo/ que se inserte en una forma
Ali0n.

/Hlinear1 6K-one /Hpariencia1 6K*lat /Huto tamaGo1 Esta instruccin permite que *ictureBo/

Apareance Autosi'e7

estable"ca sus dimensiones de acuerdo a la figura que se

10

CARLOS ARMA !O C"#$AS $ALL#%O

inserta en la caja. %omo es una variable lgica le pondremos el valor de (rue.


Bac)Color$ Border&t+le$ *icture$

El que guste de la paleta 6K-one

/%uadro o figura1 Esta propiedad permite insertar un

cuadro o figura en la caja. En este caso ponemos o insertamos un icono que contiene una figura ! que tomamos de los

arc<ivos de +,5 c:?arc)i<os de *rograma?Microsoft $isual Studio?Common?@ra*)ics?,cons?Misc En realidad puede tomar la figura de la red, o de un banco determinado. @e <ec<o Fffice tiene un banco de im3genes.
1ei02t$ 3idt2$

@eja de actuar con Autosi'e @eja de actuar con Autosi'e

0ntroducimos una etiqueta para rotular Error o Equivoco O un botn de comando para que maneje el flujo del programa. Esto es, el usuario al ver el letrero oprimir3 un botn para continuar u otro para salir o cancelar. 9asta el momento la interfase deber3 estar como la figura ?.:I. (ara finali"ar la interfase copiamos el
rame

fraEuma4 Ealvo

que en este caso daremos nombres diferentes tanto al nuevo frame como a los nuevos objetos contenidos en l / *ictureBo/B
Command Button + 5abel

1O esto se logra porque despus de la

instruccin (egar, +,5 preguntar3 en cada caso / rame *ictureBo/B


Command Button + 5abel

si crea la matri" de controles con el mismo

nombre o no. Elige no ! posteriormente le cambias el nombre que desees.

11

, -RO!"CC,O A $,S"AL &AS,C ../

Figura 3.27. Hvance en el diseGo de la interfase del pro!ecto Euma. En este caso el otro
rame

ser3 para seGalar el #ito en el

problema, por lo tanto cambia figura, te#to de la etiqueta ! rotulo del botn /vase figura ?,:B1.

Figura 3.28. 0nterfase del pro!ecto Euma.

12

CARLOS ARMA !O C"#$AS $ALL#%O

*inalmente se programar3n los objetos. Necuerde que dado el diseGo de esta interfase la ma!or responsabilidad recae en el botn 7Nevisame8. 'ota Esta interfase es mu! criticable desde el punto de vista de diseGo ! posiblemente desde el pedaggico. %on respecto al diseGo <emos utili"ado demasiado colores ! mu! vivos, los cuales molestar3n eventualmente al usuario ! tambin <emos abusado del tipo ! tamaGo de las letras. @esde el pedaggico los botones como rev2same ser3n dif2cil de leer por un niGo por el tipo de letra. Ein embargo, deseamos mostrar diversos tipos de letra ! como programador es cmodo utili"ar muc<os colores para distinguir un objeto del otro.
,ption E/plicit

YEe

usa

nivel

de

mdulo

para

for"ar

declaraciones

Ye#pl2citas de todas las variables en dic<o mdulo. Ei se Yusa, la instruccin ,ption E/plicit debe aparecer en un mdulo Yantes de cualquier procedimiento. )a primera subrutina que corre del (ro!ecto suma es 5oad. Ee utili"a para la definicin de la interfase en primera

instancia ! generacin aleatoria de par3metros. (rivate Eub *ormZ)oad/1 Nandomi"e /.imer1 Y*uncin para similar la generacin Yde n meros aleatorios. .op S 6 )eft S 6 Pidt< S 44?66 Y(ar3metros para la dimensin de la forma

1.

, -RO!"CC,O A $,S"AL &AS,C ../

9eig<t S C666 lbl-umEnt/61.%aption S 0nt/Nnd T CC1 YQenera un n mero

aleatorio entre 6 ! CB ! se lo asigna a la etiqueta lbl-umEnt/41.%aption S 0nt/Nnd T CC1 YQenera un n mero

aleatorio entre 6 ! CB ! se lo asigna a la etiqueta fraEuma4.+isible S *alse YFculta el *rame para el mensaje Yde error fraEuma:.+isible S *alse YFculta el *rame para el mensaje Yde error End Eub (asemos a<ora al botn que lleva la responsabilidad del

programa. El botn 7Nevisame8. (rivate Eub cmdEumaEntZ%licR/1 Y0nicio de subrutina evento YclicR 0f /+al/lbl-umEnt/61.%aption1 & +al/lbl-umEnt/41.%aption11 S +al/t#tEumaEnt..e#t1 .<en YEste
4f

Nevisa

si

la

suma

de

los

contenidos

en

las

dos

etiquetas /sumandos1 es igual al contenido de lo que escribi en la caja de te#to. Hqu2 estamos usando la funcin Val. Esta funcin regresa el valor numrico de una variable de tipo alfanumrica.

Hbundemos en esta parte. @entro de las variables tambin tenemos una variable de tipo 7cadena8 esto es de tipo

caracteres alfanumricos que pueden no tener ning n sentido v. gr. H S OIuA; , S te#to, % S lR5I6^_A, etc. Fbserve que para este tipo de variable la e#presin 7?DA58 no es un n mero, sino slo caracteres concatenados. (ara darle a esta e#presin el car3cter numrico es necesario la funcin Val. 13

CARLOS ARMA !O C"#$AS $ALL#%O

/alCcadenaB devuelve los n meros contenidos en una cadena como un valor numrico del tipo adecuado. El argumento obligatorio cadena es cualquier e#presin de cadena v3lida. )a funcin /al deja de leer la cadena en el primer car3cter que no puede reconocer como parte de un n mero. )os s2mbolos ! caracteres que se consideran a menudo parte de valores numricos, como signos de moneda ! comas, no se reconocen. Ein embargo, la funcin reconoce los prefijos de base
`F

/para octal1 ! `9 /para <e#adecimal1. )os espacios en blanco, los tabuladores ! los avances de l2nea se eliminan del

argumento. )o siguiente devuelve el valor 454A4CB$ /al/a 454A 4CB %alle -.E.a1 En el cdigo que se muestra a continuacin, /al devuelve el valor decimal K4 correspondiente al valor <e#adecimal entre parntesis$ /al/a`9****a1 )a funcin /al slo reconoce el punto /.1 como separador decimal v3lido. como %uando en se utili"an separadores decimales debe

diferentes,

aplicaciones

internacionales,

utili"ar D5bl para convertir una cadena a un n mero. Eigamos adelante con la programacin del evento del botn fraEuma:.+isible S .rue YEn caso de ser cierto /la suma

Yes correcta1 aparece el *rame con #ito Else Y@e otra forma /la suma no es correcta1

fraEuma4.+isible S .rue YHparece el *rame con error End 0f Y*in de if 14

, -RO!"CC,O A $,S"AL &AS,C ../

cmdEumaEnt.Enabled S *alse

Y@es<abilita el botn de

7Nevisame cualquiera que sea la respuesta. End Eub Y*in de subrutina evento clicR

b,otn para %ancelar termina el programa ! descarga la forma. (rivate Eub cmd%ancelarZ%licR/1 Y0nicio de subrutina evento YclicR Unload ;e YEsta instruccin descarga la forma que esta en Yfunciones. End Eub Y*in de subrutina evento clicR

b,otn para proponer la misma suma en caso de error. (rivate Eub cmdFtroZ%licR/1 fraEuma4.+isible S *alse t#tEumaEnt..e#t S aa t#tEumaEnt.Eet*ocus cmdEumaEnt.Enabled S .rue End Eub b,otn para proponer otra suma en caso de #ito. (rivate Eub cmdFtro'uZ%licR/1 lbl-umEnt/61.%aption S 0nt/Nnd T CC1 YQenera un n mero YEsconde el *rame de error Y,orra contenido de caja Y(one el cursor en la caja Y9abilita botn Nevisame

aleatorio entre 6 ! CB ! se lo asigna a la etiqueta lbl-umEnt/41.%aption S 0nt/Nnd T CC1 YQenera un n mero

aleatorio entre 6 ! CB ! se lo asigna a la etiqueta t#tEumaEnt..e#t S aa Y,orra contenido de caja

fraEuma:.+isible S *alse YEsconde el *rame de #ito cmdEumaEnt.Enabled S .rue End Eub Y9abilita botn Nevisame

15

CARLOS ARMA !O C"#$AS $ALL#%O

(rivate Eub *ormZHctivate/1 YEvento que permite situar cursor t#tEumaEnt.Eet*ocus End Eub Ejercicios 41 Nealice un pro!ecto apra la esta de dos entetos con YUbica el cursor en la caja de te#to

solucin en los positivos :1 Nealice un pro!ecto para a!udar /con instrucciones de a!uda1 para encontrar uno de los dos sumandos dada la suma. Esto finali"a esta breve introduccin al lenguaje +,5. -o deseo pasar la ocasin para recordarles que la programacin es algo pragm3tico, es una labor que se aprende a base de ensa!o ! error, ! que la <abilidad en la ejecucin de un buen programador depender3, casi totalmente, en el n mero de <oras que le dedique a programar.

2/

Vous aimerez peut-être aussi