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

o DME"CINVESTAV"IPN
¿Qué es un lenguaje de programación? Un lenguaje de programación de alto nivel es una especie de traductor que nos permite comunicarnos con los circuitos internos de una microcomputadora. programación, 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, también a través 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 programación en inteligencia artificial ! as2 sucesivamente. En esta introducción veremos uno de los lenguajes m3s utili"ados ! amigables4 +isual ,asic versión 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 comunicación 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 término 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 instalación es autocontenida ! sólo 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

! después <as clic en =

elegimos de a<2

/véase 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 botón iz+uierdo del ratón.

(

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

@e inmediato aparece la siguiente una interfase /véase 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 opción 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 combinación de la suerte8 dada por la

computadora.

0

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

Ei se elige la opción EXE estándar, <aciendo clic sobre el icono asociado aparece se la interfase también, dada en la figura ?.?. !

Fpcionalmente,

abre

seGalando

esta

opción

posteriormente se oprimiendo el botón =Abrir>

Figura 3.3. 0nterfase de +,5 con forma est3ndar. @escribiremos a continuación los elementos de esta interfase. @ejando para después 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.

1

, -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 cómo se reali"ar3 el pro!ecto.

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

2

en la parte superior contiene información sobre el pro!ecto que se est3 constru!endo con todas las formas que contuviera. pero esencialmente estos ser3n los objetos de la interfase. *inalmente en la parte inferior se describe el objeto brevemente /véase figura ?. etc. etiqueta. aparece el nombre del objeto con el que se este trabajando ! sus propiedades. etc.I1. @ebajo de esta parte.5.CARLOS ARMA !O C"#$AS $ALL#%O Figura 3. caja de te#to.51. . )a tercera ! ltima columna /véase figura ?.5 ! ?. . 0nterfase sé#tupla de melate. El diseGo lo define el que crea el programa. @esde luego esta interfase para generar una m3s letreros puede contener colores. figuras. El objeto puede ser una forma /véase figuras ?.I1.

Observación Ei por el momento tiene alguna confusión por no entender cabalmente.. )os objetos que se describen alcan"ar3n un grado de comprensión ma!or en cuanto empecemos a trabajar con ellos.O A $.5 que describe el pro!ecto ! las propiedades del objeto forma. no se preocupe.C . (arte de la interfase de +.5 que describe el pro!ecto ! las propiedades del objeto caja de te#to..S"AL &AS.6. )a programación ! el uso de los objetos es algo que se logra gradualmente en el tiempo. -RO!"CC.7. 0niciemos ampliando el campo visible de la forma <aciendo clic en el cuadrito J tanto de la forma como del pro!ecto 3 ./ Figura 3. Figura 3. (arte de la interfase de +.

.ambién es posible instalar seis etiquetas m3s en donde pondremos los n meros aleatorios que se generar3n para jugar el melate. *orma ampliada.C1.B1 <asta que quede de la forma que se ilustra en la figura ?. .CARLOS ARMA !O C"#$AS $ALL#%O /véase figura ?. por tener una letra en un cuadrito A. 0nsertemos a<ora los objetos que queremos para definir la interfase. Figura 3. con el botón i"quierdo oprimido.E.C. Figura 3. (rimero insertamos una etiqueta para rotularla con el nombre .E)H. '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 /véase figura ?. )a primera !" reduce ! esconde la forma del escritorio. la segunda #$" amplia o reduce la forma ! la tercera %" finali"a ! descarga la forma. Enseguida movemos el ratón <asta la forma ! en donde deseemos ubicar el letrero <acemos clic oprimiendo ! dejando oprimido el botón i"quierdo del mismo ratón.8. se va delineando el largo ! anc<o de la etiqueta que deseamos 4 . en <erramienta. <acemos clic en el objeto etiqueta que se identifica. (ara ello. Hl mover el ratón.&.oda forma tiene tres opciones que se ofrecen en los tres cuadritos de la dereK c<a.

@e esta manera al 5 .().((. programador ! por supuesto lo bauti"a el mismo.. Este ser3 el nombre que tendr3 en el programa el Es decir. %uadritos en los dimensión apro#imada. Hunque el nombre lo elige el programador. puede mover el objeto si simplemente ubica al ratón sobre él ! al oprimir ! dejar oprimido el botón i"quierdo lo mueve al lugar deseado. . es acuerdo internacional el que todo objeto de etiqueta inicie con las letras lbl. )as dimensiones de una etiqueta se pueden definir posteriormente.O A $. Figura 3.ambién 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 /véase figura ?. En primer lugar <acemos clic al lado derec<o de donde dice (Nombre). bordes de etiqueta que permiten ajustar su dimensión./ definir /véase figura ?. Una etiqueta de Figura 3.S"AL &AS. Hl <acer clic sobre el objeto también aparecen en la parte derec<a inferior las propiedades de la etiqueta /véase figura ?. Una ve" que se suelta el botón del ratón.elate64. con este nombre lo identificar3 el objeto.. -RO!"CC. as2 que tan sólo se establece la etiqueta con una dimensión apro#imada. En este caso le pondremos lbl.441. +amos a ir estableciendo algunas de ellas.C .461. +amos a<ora a definir algunas propiedades de este objeto.4:1.

Hl (ermite clic definir al lado tipo. tipo /fuente1 ! estilo /negrita. En nuestro caso elegimos$ Hrial. Figura 3. Caption Hl <acer clic al el lado te#to derec<o o de la que palabra se permite capturar titulo llevar3 la etiqueta. ont /fuente1. cursiva1 de letra que deseamos. En nuestro caso escribiremos en ma! sculas .(3.(2.E)H.E. 1/ . aparece una ventana /véase figura ?.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. Figura 3. tamaGo ! cualidad del te#to. Caption /subtitulo1.4?1 que nos permite elegir el tamaGo /n mero1. DB ! negrita. Hl <acer clic sobre el cuadrito. +entana para definir tipo. <acer derec<o cuadrito con tres puntos . (ropiedades del objeto etiqueta. tamaGo de ! ont cualidad aparece de un letra.

Figura 3. define como variable lógica ! por ende tiene el valor /verdadero1. entre plana o de tres dimensiones.. Appearance /Hpariencia1. @efine la apariencia de la etiqueta.4D1 ! al <acer clic sobre ella aparece una ventana emergente como se ve en la figura ?.O A $. En este caso ser3 (rue.(4. )os colores que aparecen con la pestaGa &istema./ *lignment /Hlineación1.. colorear el fondo al <acer clic al lado derec<o aparece una punta de flec<a /véase figura ?. En este caso naranja.(4.S"AL &AS.C . aparece una punta de flec<a que al oprimirla permite 11 . -osotros elegimos #"$%. Elegimos !"center que es centrar. Hl <acer clic en la pestaGa *aleta aparecen diversos colores ! <aciendo clic en el color elegido. (ara etiqueta. definimos el color del fondo de la etiqueta. @efine la alineación que llevara el te#to de la etiqueta. %olores aparecen con (aleta. Auto&i'e /HutotamaGo1. Bac)Color alse /*also1 o (rue /%olor de fondo1. -RO!"CC. %olores aparecen con Eistema.4D. @efine el color de fondo de la Eobre este color se escribir3 el te#to. Bac)&t+le que Figura 3. @e nuevo al <acer clic a que la /estilo del fondo1. derec<a. de acuerdo (ermite al establecer del el tamaGo Ee de la etiqueta tamaGo te#to. son colores propios del sistema ! son tonos negros ! grises.

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 lógica o A5I tLips en un cent2metro lógico /la longitud de un elemento de pantalla que mide una pulgada o un cent2metro al imprimirse1. Hl <acer clic a la derec<a. Esta propiedad <abilita o des<abilita un objeto.CARLOS ARMA !O C"#$AS $ALL#%O elegir entre #". En este caso ser3 (rue. %uando se definen varios objetos de etiqueta con el mismo nombre. para distinguirlos a cada uno de ellos 1( . %omo su nombre lo indica define el color del te#to ! se opera en forma semejante a Bac)Color. oreColor /%olor de te#to1. Enabled /9abilitado1. @efine la altura de la etiqueta de un objeto en tLips. 1ei02t /altura o anc<o1. Border&t+le /Estilo del borde1. @e nuevo esta propiedad queda definida como variable lógica ! por ende tiene el valor alse /*also1 para des<abilitar o (rue /verdadero1 para <abilitar. @efine el largo de la etiqueta u objeto ! también se mide en tLips. El tLip es una unidad independiente de la pantalla utili"ada para asegurar que la colocación ! la proporción de los elementos de la pantalla de la aplicación son los mismos en todos los sistemas de pantallas.pa-ue /fondo opaco1 o 0. 4nde/ /2ndice1.(ransparent /transparente1. aparece una punta de flec<a que al oprimirla permite elegir entre dos opciones #" i/ed &in0le /arreglo nico1 o 0"none /ninguno1. 3idt2 /largo1.

comparten estas propiedades.ope o cima1 . El largo. gr. tipo ! tamaGo del n mero se definen dando los respectivos valores en las propiedades. quedando como se ilustra en la figura ?.C . %ontinuando con la construcción del programa melate. Visible /visible1. @e tal forma que conociéndolas se aplican al nuevo objeto. de letra. anc<o. Esta propiedad queda definida como variable lógica ! por ende tiene el valor /*also1 para no visible o (rue alse /verdadero1 para que sea visible..S"AL &AS. lblEtiq/61. color de fondo. después de ubicar la etiqueta con el nombre. color. lblEtiq/:1. anc<o.. podemos insertar otra etiqueta para el n mero que aparecer3. (osicione el objeto de etiqueta recién definido dando valores a la altura. -RO!"CC. (op /. 10 ./ se le asocia un 2ndice /v. Hunque es posible definir as2 cada una de las seis etiquetas para los n meros propongo la siguiente manera que creo es m3s eficiente.ide en Lips la distancia relativa al tope de la etiqueta a la forma o a alg n contenedor. color de fondo. del e#tremo i"quierdo de la forma a la etiqueta. @efine si el objeto que se inserto es visible o no en tiempo de ejecución. tipo ! cualidad de letra. +.ide en Lips la distancia relativa de i"quierda a derec<a. Una ve" definida el largo. 5eft /0"quierda1.O A $. 9emos definido en detalle algunas propiedades de este objeto puesto que muc<os de los otros objetos como botón de comando.4A.lblEtiq/41. etc. caja de te#to. En este caso ser3 (rue. etc. .1. anc<o. etc.ercicio.

en construcción. cualidad /negrita1 de la primer etiqueta se le marca <aciendo clic sobre de ella ! aparecen los cuadritos en el borde para reajustar el tamaGo.(5. 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 botón de si e inmediatamente aparece otra etiqueta con las propiedades definidas con anterioridad /véase figura ?. Eu utilidad queda til para el cuando mostrada tratamos de alinear las seis etiquetas para los n meros. +amos a introducir un nuevo objeto que es mu! diseGo de interfases. se persiana que se abre se vuelve a la opción <ace clic en Edici6n ! se elige del men la opción Copiar.451. En ese momento se dirige uno al men de barra /superior1.CARLOS ARMA !O C"#$AS $ALL#%O color de te#to. %omo estamos en diseGo ! construcción es mu! posible que necesitemos cambiar de posición a las seis etiquetas. Estado de la forma una etiqueta.(6. tipo o fuente. %opiando en la forma Figura 3. Nepitiendo este proceso conseguimos definir las seis etiquetas requeridas para los n meros. tamaGo. pero al <acer esto se tendr2an que alinear de nuevo las seis. Figura 3. de tal forma que si esto por ra"ones de estética se tuviera que 11 .

H<ora definimos sus propiedades de la siguiente forma /Nombre1 fra.. @e nuevo al <acer clic en el cuadrito que tiene en el borde #! en <erramienta !.elate. al arrastrar el ratón en la forma podemos definir apro#imadamente longitud ! anc<o del marco.O A $.C . -RO!"CC. Hdem3s los objetos quedan referenciados a este marco. %uando se desea ajustar un marco /frame1 o cualquier otro objeto. el trabajo de alinearlas ser2a de verdad insufrible por lo laborioso. 1ei02t$ 3idt2$ 4?A6 5I66 O son todas las propiedades que definiremos. )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 +. Una ve" que llegue 12 .S"AL &AS. puede ajustarlo en la misma forma <aciendo uso de los cuadritos de ajuste de cualquier control. -i./ <acer varias veces. 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.5.. de esta forma sólo queremos el marco sin ning n nombre para el mismo.

CARLOS ARMA !O C"#$AS $ALL#%O a convencerse de las dimensiones. 1. Figura 3. En este caso.4I. (osiblemente el lector. en la cual pueden cambiar tamaGo ! color de los objetos.(7. le da un segundo ajuste definiendo las propiedades )eft. . 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 programación por objetos. Esto brevemente quiere decir que toda la acción recaer3 sobre este botón. Nigt<. 9asta el momento tendremos una forma como la que se observa en la figura ?. Hs2 lo que se programan son los objetos. que el programa inicia o se dispara cuando se act a sobre los objetos. 9eig<t ! Pidt<. Hvance del pro!ecto melate. *inalmente para terminar de ubicar los objetos en la forma pondremos los dos botones que faltan. se <a pensado el programa de forma que inicie las operaciones en cuanto el usuario oprima un botón que diga 7%ombinación Qanadora8. es decir.

tamaGo 4:.E. Apearance$ Bac)Color$ ont7 4K?@ El que guste de la paleta tipo Hrial. va!amos a la programación del pro!ecto melate. tamaGo 4:. Enseguida definiremos sus propiedades de la siguiente forma /Nombre1 cmd.S"AL &AS. -RO!"CC./ (ara ello se dirige el ratón a <erramienta ! <acemos clic sobre el objeto que es un botón de comando /%ommand button1 !.. al arrastrar el ratón en la forma podemos definir apro#imadamente las dimensiones del botón. cualidad negrita %ombinación Qanadora 566 4KQrap<ical :I66 Caption$ 1ei02t$ &t+le$ 3idt2$ Enseguida podemos definir el segundo botón de la siguiente forma$ /Nombre1 cmd%ancelar. )as iniciales cmd son las que anteceden o parte del nombre para cualquier botón de comando que se inserte en una forma Apearance$ Bac)Color$ ont7 4K?@ El que guste de la paleta tipo %omic Eans .O A $. cualidad negrita %ancelar 566 4KQrap<ical :I66 Caption$ 1ei02t$ &t+le$ 3idt2$ Una ve" definidos todos los objetos de la forma.elate.. 13 .C .

1 tiene propiedades ! eventos o métodos. definen las caracter2sticas de su presentación.odo objeto /etiqueta. Es. Figura 3.(8.2(.CARLOS ARMA !O C"#$AS $ALL#%O 9aciendo doble clic sobre el botón =%ombinación Qanadora> aparece una ventana como la que se aprecia en la figura ?. forma. O el evento ser3 ¿qué sucede cuando se le pinc<a? ¿%u3ndo se le suelta? )os eventos asociados al objeto botón de comando /command button1 se pueden obtener <aciendo clic en la flec<a de la ventana derec<a de la figura ?.4B. valga la analog2a. )os eventos por el contrario definen acciones del objeto ante una acción del usuario. 14 . )ista de objetos instalados en la forma. +entana para objeto botón de comando.:61 Figura 3. como cuando se infla un globo. caja de te#to. como !a <emos visto. color. Figura 3. )as propiedades.2).4B /véase figura ?. Eventos asociados a botón de comando. programar un método del Este es el momento de aclarar un poco sobre la programación de los objetos. las propiedades son tamaGo. etc. etc. .

estos el descripción enseguida se general mostrar3 programa para pro!ecto melate. Este evento se dispara en cuanto el usuario <ace clic sobre el botón. Clic).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.odos ellos tienen su función ! en la medida de avance ! necesidad los iremos e#plicando. )os nombres de variable deben comen"ar con un car3cter alfabético. %ada variable tiene un nombre nico que la identifica dentro de su nivel de 3mbito./ . (ero antes de iniciar propiamente la programación mencionaremos algunas generalidades de los lenguajes de programación$ . O dentro del pro!ecto este evento tendr3 toda la responsabilidad del mismo.odo lenguaje contiene en su programación de tipo los siguientes ! elementos$ variables. deben ser nicos dentro del mismo 3mbito.. Una variable es un lugar de almacenamiento con nombre que puede contener cierto tipo de datos que puede ser modificado durante la ejecución del programa. Es decir. en este evento se deben de generar los seis n meros aleatorios ! adem3s ponerlos en las respectivas etiquetas. funciones ! subrutinas. no deben contener m3s de :AA 15 . %uando se <ace el esbo"o de un programa se cuenta las variables ! tipo de tal forma que en un programa en +.. ciclos numéricos ! lógicos.O A $. (uede especificar un tipo de datos o no. -RO!"CC. operaciones aritmético lógico. En este caso iniciamos con el evento clicR.S"AL &AS.C .

)as variables 0nteger se almacenan como n meros de 45 bits /: b!tes1 con valores que van de −0(' 3. )as variables. por el momento daremos dos. +ariables que sólo tiene valide" en el procedimiento en que se definen. )a otra variable numérica usual es @ouble. )as variables numéricas son n meros por lo tanto pueden ser del tipo 0nteger /Entera1. si se desea un ma!or rango puede optar por )ong. H<ora bien las variables en +. Usualmente se les llama variables locales. (/ . 5on0.ipos de variables.DB?.4] ! esto tiene que ver con la memoria que ocupa una variable de este tipo.4 ' 0(' 3. El car3cter de declaración de tipo para 3ong es el signo 4. )as variables numéricas ! las variables lógicas. Fbserve que )ong ocupa el doble de memoria que 0nteger. El car3cter de declaración de tipo para el tipo 1nteger es el signo de porcentaje /21.5DB ! :4DI. Ein embargo.I5I.5 pueden ser de varios tipos.4 a ?:. .DB?.4DI. pueden ser de tres tipos. %omo se puede observar el rango para los posibles valores de una variable entera es relativamente pequeGo [ −0(' 3.5DI.CARLOS ARMA !O C"#$AS $ALL#%O caracteres ! no pueden contener un punto o car3cter de declaración de tipo. )as variables )ong /enteros largos1 se almacenan como con signo de ?: bits /D b!tes1 con un valor n meros comprendido entre K:. +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.

C .51/ × 1/  para valores positivos. El car3cter de declaración de tipo para 7ingle es el signo de e#clamación /81. Ein embargo. )as variables Eingle /punto flotante de precisión simple1 se almacenan como n meros 0EEE de coma flotante de ?: bits /D b!tes1 con valores que van de K?..1/(4 × 1/ ' 1.D64:CBEKDA a ?.ICI5C?4?DB5:?:E?6B −0(1  ' 1.D6:B:?E?B  1. &in0le..1/(4 ×1/   para valores positivos. Nnd=/número1>$ Nnd son las siglas para la función Nandom /aleatorio1.S"AL &AS.51/ × 1/   para valores negativos ! de D.D64:CBEKDA 04 −12   −0./ %ouble. -RO!"CC.353 × 1/0/4   1. )as funciones que utili"aremos en este programa son dos.D6:B:?E?B a K4. número es un argumento opcional ! es tipo Eingle o cualquier e#presión numérica v3lida.O A $.CD65A5DABD4:DIEK?:D 0/4 −0(1   −1.353 ×1/ ' − 1.1/1× 1/   para valores negativos ! de −12 04 4.CD65A5DABD4:DIEK?:D a 4. Esta función genera o devuelve un n mero aleatorio entre 6 ! 4 de tipo Eingle.ICI5C?4?DB5:?:E?6B a KD. si uno desea una variable tipo doble o no entera de menos precisión /menor memoria1 puede optar por Eingle. )as funciones son programas que se pueden invocar en un programa para que realice cierto proceso !Mo operaciones. El car3cter de declaración de tipo para 5ouble es el signo de n mero /61. %uando no se pone argumento ! sólo se usa Nnd esta función devuelve un n mero ma!or o igual a cero ! menor que (1 . )as variables dobles /punto flotante de doble precisión1 se almacenan como n meros 0EEE de coma flotante de 5D bits /B b!tes1 con valores de K4.1/1×1/ ' 0.

se El siguiente n mero aleatorio de la secuencia.CARLOS ARMA !O C"#$AS $ALL#%O uno. @e no ser as2 el programa marcar2a un error por que no sabr2a que <acer con el valor que la función devuelve. +alores devueltos 7i número es . El n mero generado m3s recientemente. Fbserve que el valor de una función debe asignarse a una variable. Es por eso que suele llamarse a esta función EEU@FH)EH. . Ei uno quisiera simular una generación de n meros aleatorios es conveniente utili"ar la función (( . utili"ando número como valor de semilla. Esto es debido a que cada llamada sucesiva a la función 9n: usar3 el n mero anterior como valor de semilla para el siguiente n mero de la secuencia.a!or que cero 0gual a cero -o especifica (or ejemplo -SrndTD Esta operación devuelve en -. Es conveniente anotar que esta función no genera n meros aleatorios en sentido estricto.FN0H. El valor de número determina cómo la función 9n: genera un n mero aleatorio$ (ara cualquier valor de semilla inicial se genera la misma secuencia de n meros. un n mero de tipo El siguiente n mero aleatorio de la secuencia. sino que los genera en un cierto orden. single ma!or o igual a 6 ! menor a D.enor que cero 9n: genera El mismo n mero todas las veces.

S"AL &AS. Esta función entrega o devuelve la parte entera de un n mero double o single.. Ei no utili"a la instrucción 9an:omi.e. *inalmente también utili"aremos una instrucción de ciclo numérico el cual tiene la siguiente estructura$ For i S k to n 0nstrucción 4 0nstrucción : UU 'e<t i Esta instrucción 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 instrucción 9an:omi. Ei omite número..C . Ftra función que utili"aremos es la función 0nt. -RO!"CC./ Nandomi"e. 4nt(n. incremento> (0 . 8andomi'e 9número:$ El argumento opcional número es un tipo +ariant o cualquier e#presión numérica v3lida. la función 9n: /sin argumentos1 utili"a el mismo n mero como valor de semilla la primera ve" que se la invoca.e utili"a número para iniciali"ar el generador de n meros aleatorios de la función 9n: ! le asigna un nuevo valor de semilla.mero). )a sinta#is se describe a continuación For contador = principio -o fin =7te. usando después como valor de semilla el ltimo n mero generado. Ei el n mero es ma!or que uno devuelve la parte entera si es menor a uno entrega cero.O A $. el valor devuelto por el reloj del sistema se usa como el nuevo valor de semilla.

El valor del argumento incremento determina la manera en que se procesa el bucle. Principio Fin incremento Nequerido.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. el valor predeterminado de incremento es uno.ooleana /lógica1 ni un elemento de matri". +alor final del contador. instrucciones Fpcional. %omentarios El incremento puede ser positivo o negativo.ción Nequerido. Nequerido. Una o m3s instrucciones entre For ! 'e<t que se ejecutan un n mero especificado de veces. %antidad en la que cambia el contador cada ve" que se ejecuta el ciclo. Fpcional. +ariable numérica que se utili"a como contador de bucle o ciclo. )a variable no puede ser . +alor inicial del contador. Ei no se especifica. como se muestra a continuación$ +alor El bucle se ejecuta si (1 .

o 46 *or X S 4 .o 46 .O A $. Ee produce un (2 . colocando un bucle *or.. En este punto.. transfiere el control a la instrucción que sigue inmediatamente a la instrucción -e#t.-e#t dentro de otro.S"AL &AS.-e#t. -RO!"CC. las instrucciones del bucle se pueden ejecutar de nuevo /si se cumple la misma prueba que causó que el bucle se ejecutara ejecución inicialmente1 contin a con o la bien se sale del que bucle sigue ! a la la instrucción instrucción -e#t. Ee pueden anidar bucles *or.C .. incremento se suma a contador. Ee pueden colocar en el bucle cualquier n mero de instrucciones E#it *or como una manera alternativa de salir del mismo !. -e#t X -e#t ' -e#t 0 'ota Ei omite un contador en una instrucción 'e<t./ (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.. )a siguiente construcción es correcta$ *or 0 S 4 ... la ejecución contin a como si se <ubiera incluido.. proporcione a cada bucle un nombre de variable nico como su contador.. (ara ello. Eugerencia$ %ambiar el valor de contador mientras est3 dentro de un bucle <ace dif2cil su lectura ! depuración.o 46 *or ' S 4 .

(2en.. )a instrucción 4f. dependiendo del valor de una e#presión...CARLOS ARMA !O C"#$AS $ALL#%O error si se encuentra una instrucción 'e<t antes de su instrucción For correspondiente.. Esta instrucción ejecuta condicionalmente un grupo de instrucciones. Eu sinta#is es la siguiente$ I( condición T)en 6instrucciones7 6Else 6instrucciones_else77 End I( O bien I( condición T)en 6instrucciones7 6ElseI( condición-n T)en 6instrucciones_elseif7 . . Ei condición es (rue. se prueba condición. (ara finali"ar la introducción de objetos instrucciones ! funciones daremos una instrucción de tipo lógico.. se ejecutan las instrucciones que est3n a (. 6Else 6instrucciones_else77 End I( Esta instrucción opera de la siguiente manera$ %uando se ejecuta un bloque 4f.

(3 . instrucciones O*cional en formato de blo+ue= se re+uiere en formato de l>nea sencilla +ue no tenga una cl8usula Else. @espués de la ejecución de las instrucciones que siguen a (2en o Else.. "na o m8s instrucciones se*aradas *or dos *untos ejecutados si la condición es True. generalmente.<en asociada.. la ejecución contin a con la instrucción que sigue a End 4f. . O*cional.O A $.gual +ue condición.C .ción Re+uerido. %uando se encuentra una condición (rue se ejecutan las instrucciones que siguen inmediatamente a la instrucción . Ei ninguna de las condiciones Else4f es (rue /o si no <a! cl3usulas Else4f1. condición-n instrucciones_elseif instrucciones_else Observación Hunque puede utili"ar 0fKt<enKelseKend if en la forma de una sola l2nea para pruebas cortas ! sencillas. de mantener ! de depurar.rica o e9*resión de cadena +ue *uede ser e<aluada como True o #alse. )a sinta#is de la instrucción 1>... El formato de bloque proporciona m3s estructura ! fle#ibilidad que la forma de l2nea simple !.. "na o m8s instrucciones ejecutadas si la condición-n asociada es True.-?en. "na o m8s instrucciones ejecutadas si ninguna de las e9*resiones anteriores condición o condición-n es True. O*cional..S"AL &AS. O*cional. -RO!"CC. se ejecutan las instrucciones que siguen a Else. Ei condición es alse.+lse consta de tres partes$ Parte condición 5escri. es m3s f3cil de leer. se eval an una a una las condiciones Else4f /si e#isten1./ continuación de (2en. "no o m8s de los siguientes dos ti*os de e9*resiones: "na e9*resión num.

CARLOS ARMA !O C"#$AS $ALL#%O -i.<en. pero ninguna puede aparecer después de una cl3usula Else. como en forKne#t. K)as cl3usulas Else ! Else0f son opcionales.%aptionS8Eigue jugando. tantas cl3usulas 0f como desee. unas pueden contener a otras.s KEl bloque 0f debe terminar con una instrucción End 0f. Ejemplo 0f n W ? t<en YEi el valor de n W que ? entonces lbl. la instrucción se considera como una instrucción 0f de una sola l2nea. K)as instrucciones de bloque 0f se pueden anidar. Ei lo que aparece detr3s de . es decir. En caso contrario se marca error. puedes ganar8 otro rotulo end if Y*in de bloque if Observación -ote que tanto en un bloque de tipo ifKt<enKelseKend if. (uede tener en un bloque Else0f.elate.%aptionS 7Oa jugaste tres partidas8 Yasigna un rotulo else YEn caso contrario /si nVS?1 YHsigna lblmelate. )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 . e#amine lo que sigue a la palabra .<en en la misma l2nea no es un comentario. K(ara determinar si una instrucción 0f es un bloque.

-RO!"CC.meros -ue ?ue0an.S"AL &AS. >El primer lu0ar lo ocupa un n. A saberA num(0)B num(#)B num(!)BCB num(@) %im n As 4nte0er >%eclara ? como <ariable entera para definir el n.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 .meros -ue se irán >0enerando en forma aleatoria para la combinaci6n. mediante la instrucción %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. ><alores para los n./ +a!amos a<ora al cuerpo del programa que recordamos debe de estar dentro del evento clicR del botón de comando 7%ombinación Qanadora8 )a primera parte es la declaración o dar de alta todas las variables que vamos a utili"ar.meros >de melate.mero aleatorio entre # + n 5blMelate(0).C .O A $..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.mero -ue >se 0enera en forma aleatoria mediante la funci6n 8nd() num(0) D 4nt(#G8nd H n) >Ienera un n.mero >má/imo de posibles n.

CARLOS ARMA !O C"#$AS $ALL#%O propu D 4nt(#G8nd H n) >Ienera un n. 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/ .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.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 instrucción 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. 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).

Hs2 que no se preocupe empiece a programar puesto que la nica forma de tener cierta destre"a en programación es mediante ensa!o ! error..S"AL &AS. (rivate Eub *ormZ)oad/1 Pidt< S BA66 9eig<t S I666 .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.royecto Programa . 7egun:o .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. se propondr3 una forma de <acerlo ! queda en libertad el autor 01 .. -RO!"CC.C . . 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 función Nandomi"e para que Nnd genere n meros aleatorios. %omo todos los pro!ectos de programación.O A $.odifica las magnitudes para que observes que sucede <asta llegar a la dimensión que te satisfaga.odas tus respuestas pruébalas cambiando en el programa las instrucciones correspondientes ! verifica qué sucede. :./ .

El pro!ecto ser3 como el que se presenta en la figura Figura 3.CARLOS ARMA !O C"#$AS $ALL#%O para modificar aumentar o e#tender las diversas opciones tanto del problema como del proceso de evaluación. 0( . 0nterfase para el pro!ecto de suma de dos enteros. salvo que tiene la propiedad de que el usuario puede escribir dentro de la caja. Este objeto puede funcionar al igual que la etiqueta. botones de comando ! un nuevo objeto [la caja donde recibir3 la respuesta\ (ara este nuevo elemento se requiere una caja de te#to. Enseguida el programa. se puede rotular con el. mediante un letrero.22. le indicar3 si es correcta o incorrecta la respuesta. )a idea es que el usuario escriba la respuesta en esta caja ! que una ve" terminada oprima el botón de revisar. @e ser as2 el pro!ecto se requerir3n etiquetas para letreros ! n meros a proponer para la suma.

Elegimos !"center que es centrar. 1ei02t. En este caso ser3 (rue. :666. 4D. En este caso ser3 /%olor de fondo1. (rimero se define la etiqueta que llevar3 el titulo del programa ! se <ar3 en forma semejante a lo reali"ado en el pro!ecto .ENFE E-.E /pags. :. 5?66 /Hlineación1.C ! 461 Una ve" puesta la etiqueta se definen sus propiedades (Nombre). Hl gusto /Estilo del borde1.. En este caso ser3 (rue. Hl gusto oreColor 5eft /0"quierda1. B. /9abilitado1. /%olor de te#to1. *lignment Appearance Auto&i'e Bac)Color Border&t+le Enabled /HutotamaGo1.5 en escritorio /véase pags.O A $.H @E @FE /subtitulo1. En primer término 7cargamos8 o instalamos +. 3idt2 .H (HNH NE+0EHN )H EU. -egrita 4466 /largo1. /Hpariencia1. Enseguida de acuerdo al dibujo de la figura ?. /visible1.? ! D1. Caption lblEumaE64. alse. -U. #" i/ed &in0le /arreglo nico1.C .S"AL &AS./ 0niciemos como en el primer pro!ecto definiendo la interfase de este pro!ecto.ope o cima1.ooR Hntiqua.E)H. (NFQNH.. #"$%. 566 00 .ENFE ont /fuente1.:: insertamos las etiquetas convenientes. -RO!"CC. Visible (op /.

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 posición 5eft (op /0"quierda1. Visible (op /. ::. #" i/ed &in0le /arreglo nico1. /Hpariencia1. /visible1. Hl gusto /Estilo del borde1. #"$%. 3idt2 Hrial.ope o cima1. B66 /Hlineación1.ope o cima1. En este caso ser3 /%olor de fondo1. :A66 definir la segunda se puede 7copiar8 esta primera (ara etiqueta lo cual definir3 una matri" de etiquetas /véase pag. 4?1. /9abilitado1. *lignment Appearance Auto&i'e Bac)Color Border&t+le Enabled /HutotamaGo1. ont /fuente1. 1ei02t. /subtitulo1. En este caso ser3 (rue. -inguno / se borra el subtitulo 7)abel48 que por defecto pone +. Hl gusto oreColor 5eft /0"quierda1.51. /%olor de te#to1.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). :A66 /]ndice1. /. -egrita 566 /largo1. Elegimos !"center que es centrar. En este caso ser3 (rue. :D66. alse. Caption lbl-umEnt.D?66. En este caso ser3 # 4nde/ 01 .

ont /fuente1.. Caption /subtitulo1. lblEumaEim. 5eft ltima. sólo titulo ! /0"quierda1. )a primera para el s2mbolo m3s ser3$ (Nombre). :D. /9abilitado1. -RO!"CC. tenemos una interfase como la que se /]ndice1./ (odemos asimismo definir otras dos etiquetas para los s2mbolos propios de la ecuaciónKsuma. #" i/ed &in0le /arreglo nico1. En este caso ser3 0 4nde/ (ara definir la segunda.. -egrita 566 /largo1. En este caso ser3 /%olor de fondo1. modificando. alse. 3idt2 A. :A66 /]ndice1. la que lleva el signo menos.C . Hl gusto /Estilo del borde1. *lignment Appearance Auto&i'e Bac)Color Border&t+le Enabled /HutotamaGo1. Hrial. AD66. 1ei02t. Elegimos !"center que es centrar. D66 /Hlineación1. sólo se copia ésta posición. Visible (op /.:? 02 . /%olor de te#to1.ope o cima1. /visible1. Caption /subtitulo1. 4nde/ !.S"AL &AS.O A $. En este caso ser3 # este momento 9asta muestra en la figura ?. /Hpariencia1. En este caso ser3 (rue. Hl gusto oreColor 5eft /0"quierda1. ?A66. En este caso ser3 (rue. #"$%. como antes.

con el botón i"quierdo oprimido. Enseguida movemos el ratón <asta la forma ! en donde deseemos ubicar la caja de te#to <acemos clic oprimiendo ! dejando oprimido el botón i"quierdo del mismo ratón.CARLOS ARMA !O C"#$AS $ALL#%O Figura 3. por tener las letras ab en un cuadrito .:D1. 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. daremos algunas. Es decir. en <erramienta. 0. )as propiedades de una caja de te#to son mu! semejantes a la de etiqueta /véase figura ?. (ara incorporar una caja de te#to a la forma se <ace lo siguiente. Hvance de la interfase del pro!ecto Euma. Ee <ace clic en el objeto caja de te#to que se identifica. Una caja de te#to es como su nombre lo indica.23. B.46! 441 salvo que en una caja de te#to el usuario puede escribir en tiempo de ejecución. Es mu! semejante a una etiqueta definida antes /pags. Hl mover el ratón. se va delineando el largo ! anc<o de la caja de te#to que deseamos definir. .C. una caja en donde podemos escribir caracteres alfanuméricos. +amos a<ora a insertar el objeto que define la caja en donde el usuario escribir3 su respuesta.

0nterfase de +. En primer lugar <acemos clic al lado derec<o de donde dice (Nombre)./ Figura 3. Hl <acer clic a la derec<a. Bac)Color /%olor de fondo1. aparece una punta de flec<a que al oprimirla permite elegir entre dos opciones #" i/ed &in0le /arreglo nico1 o 0"none /ninguno1. Eobre este color se escribir3 el te#to. Es el nombre que tendr3 en el programa el objeto. Hunque el nombre lo elige el programador. Border&t+le /Estilo del borde1. En este caso le pondremos t#tEumaEnt.. Ee elige #" i/ed &in0le.. *lignment /Hlineación1. es acuerdo internacional el que todo objeto de etiqueta inicie con las letras t#t. 03 . (ara colorear el fondo ver instrucciones en p3gina 44.24.5 en donde se visuali"an las propiedades del objeto caja de te#to. @efine la alineación que llevara el te#to de la caja de te#to.O A $. -RO!"CC.C . Elegimos !"center que es centrar.S"AL &AS. @efine el color de fondo de la caja.

CARLOS ARMA !O C"#$AS $ALL#%O Enabled /9abilitado1. (ermite definir tipo. 566. %omo su nombre lo indica define el color del te#to ! se opera en forma semejante a Bac)Color. En este caso ser3 (rue. En este caso debe concordar con lo definido para las etiquetas de los sumandos. 1ei02t /altura o anc<o1. Ee define como variable lógica ! por ende tiene el valor /verdadero1. oreColor /%olor de te#to1. En este caso ser3 alse. Ma/len0t2 /)ongitud m3#ima1. B1.ide en Lips la distancia relativa de i"quierda a derec<a. %olor al gusto. 5oc)ed /cerrado con llave1. El valor 04 . :: ! negrita. Es decir. . Esta propiedad <abilita o des<abilita un objeto. Esta propiedad permite cerrar un control -e<t0o< /la caja1 para que no se escriba sobre ella ! puede ser activada en tiempo de ejecución. En este caso es 5:66. Hrial. En este caso tiene que coincidir con la altura definida para las etiquetas de los sumandos. @efine la altura de un control -e<t0o< /la caja1. 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<. alse /*also1 o (rue -ote que si se activa con (rue la caja actuar3 como etiqueta. tamaGo ! cualidad de letra /véase p3g. 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. ont /fuente1. 5eft /0"quierda1. @e nuevo esta propiedad queda definida como variable lógica ! por ende tiene el valor alse /*also1 para des<abilitar o (rue /verdadero1 para <abilitar.

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.ope o cima1 . mediante una variable lógica. para los controles -e<t0o< de m ltiples l2neas. @efine si el objeto que se inserto es visible o no en tiempo de ejecución. (op /. En este caso debe coincidir con las etiquetas de los sumandos. (e/t/../ predeterminado de la propiedad Ma<3engt? es 6. 3idt2 /largo1. Un valor ma!or que 6 indica el n mero m3#imo de caracteres.arras para enrollar1.O A $. Es de sólo lectura en tiempo de ejecución. @efine el largo de la etiqueta u objeto ! se mide en tLips. .S"AL &AS. &crollBars /. si un objeto tiene o no barras de despla"amiento <ori"ontal. -RO!"CC. Esta propiedad define el te#to que tendr3 la caja /-e<t0o<B. Establece.C . Establece. Es de sólo lectura en tiempo de ejecución. mediante un valor. un valor que indica si un control -e<t0o< acepta ! muestra m ltiples l2neas de te#to. vertical o ambas. En este caso as2 ser3.ide en Lips la distancia relativa al tope de la caja a la forma o a alg n contenedor. 05 . Visible /visible1. En general cuando se utili"a la caja para que el usuario escriba se borra el contenido. Esta propiedad queda definida como variable lógica ! por ende tiene el valor /*also1 para no visible o (rue alse /verdadero1 para que sea visible.. En este caso ser3 (rue. Multi5ine /)2neas m ltiples1.e#to1.ambién en este caso deber3 también coincidir con las etiquetas de los sumandos.

%uando se definen varios objetos -e<t0o< con el mismo nombre.1. 0nsertemos los primeros dos botones para revisar ! salir cuando el usuario quiera.%. para distinguirlos a cada uno de ellos se le asocia un 2ndice /v. etc. Enseguida definiremos sus propiedades de la siguiente forma /Nombre1 cmdEumaEnt. al arrastrar el ratón en la forma podemos definir apro#imadamente las dimensiones del botón. )as iniciales cmd son las que anteceden a cualquier nombre para botón de comando que se inserte en una forma. t#tEum/41.CARLOS ARMA !O C"#$AS $ALL#%O 4nde/ /2ndice1. adem3s de los respectivos letreros para estimular el é#ito o falla en el ejercicio planteado. Apearance$ Bac)Color$ ont7 4K?@ El que guste de la paleta tipo Enap 0. t#tEum/61.::1 faltar2an 7Nev2same8 ! 7%ancelar8. gr. tamaGo 4:. cualidad normal Nevisame 566 4KQrap<ical 1/ Caption$ 1ei02t$ &t+le$ . Esto nos dice que debemos definir otros dos botones para desaparecer los mensajes de est2mulo cuando el usuario los vea. %on esto conclu!e el e#amen ! definición de las algunas propiedades de una caja de te#to /-e<t0o<1 Eiguiendo reali"ado adelante /véase con el diseGo nos de acuerdo al los dibujo botones figura ?. (ara ello se dirige el ratón a <erramienta ! <acemos clic sobre el objeto que es un botón de comando /%ommand button1 !. t#tEum/:1.

iar un ob. @e inmediato aparece el men persiana de donde se elige *e0ar /véase figura ?.S"AL &AS.451 ! posición. se oprime el botón derec<o ! aparece un men de persiana /véase figura ?. 11 .C . Enseguida se <ace clic con el botón derec<o del ratón en la forma o contenedor. etc. etiqueta. con el ratón sobre el objeto a copiar.ara co./ 3idt2$ :666 podemos definir el segundo botón para lo cual Enseguida sugiero para ello copiar el anterior ! darle otro nombre. -i. Mo:o alternativo .O A $.eto o control Ee seGala el objeto /botón.1 con las propiedades del que se copió ! definidas con anterioridad salvo el nombre /véase figura ?. etiqueta.1 si se oprime el botón de no inmediatamente aparece otro objeto /botón.:A1.. etc.:51 En ese momento se abre una ventana que nos anuncia si se desea crear una matri" de controles /botones. -RO!"CC. Enseguida. etiquetas.1 <aciendo clic sobre el mismo /aparecen los cuadritos en el borde para reajustar el tamaGo1. En caso de optar por si aparece otro objeto con el mismo nombre ! propiedades salvo que la propiedad 4nde/ /2ndice1 aumenta en uno. caja. Ee elige Copiar.. etc.

%. Apearance$ Bac)Color$ 4K?@ El que guste de la paleta 1( . Apearance$ Bac)Color$ ont7 4K?@ El que guste de la paleta 0.25. se pega. Una ve" copiado <aciendo clic con el botón derec<o la forma o Figura 3. )as iniciales fra son las que anteceden o parte del nombre para cualquier frame o marco. (ara ello se definir3 un frame /véase p3g. tamaGoS4:. *orma en contenedor. 4A1 con las siguientes caracter2sticas /Nombre1 fraEuma4. 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. para copiar un objeto /Nombre1 cmd%ancelar.26.CARLOS ARMA !O C"#$AS $ALL#%O Figura 3. )a idea ser3 que cuando el estudiante cometa un error apare"ca un letrero con una figura.

*ictureBo/ figuras. 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 ratón en la forma se puede definir apro#imadamente longitud ! anc<o del *ictureBo/.O A $. un arc<ivo '(EQ o un arc<ivo Q0*. /Hlinear1 6K-one /Hpariencia1 6K*lat /Huto tamaGo1 Esta instrucción permite que *ictureBo/ Apareance Autosi'e7 estable"ca sus dimensiones de acuerdo a la figura que se 10 . Este control es semejante a la caja de te#to /(e/tBo/1 sólo que es para insertar$ iconos. H<ora definimos sus propiedades de la siguiente forma /Nombre1 picEuma4.S"AL &AS. un icono o un metarc<ivo. fotos..5. Un control puede mostrar un gr3fico a partir de un mapa de bits. -RO!"CC. )as iniciales pic son las que anteceden o parte del nombre para cualquier *ictureBo/ que se inserte en una forma Ali0n. en la forma. im3genes. de esta forma sólo queremos el marco sin ning n nombre para el mismo. *ictureBo/ /%aja para cuadro1.C . se requiere para ello un nuevo objeto./ Border&t+le$ Caption$ *i#ed Eingle En este caso borramos el nombre *rame4 que por defecto pone +. etc. 1ei02t$ 3idt2$ :666 ::66 %omo queremos poner una cierta figura dentro del frame.. as2 como un metarc<ivo mejorado.

(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 después de la instrucción (egar. 9asta el momento la interfase deber3 estar como la figura ?. @e <ec<o Fffice tiene un banco de im3genes.cons?Misc En realidad puede tomar la figura de la red.5 preguntar3 en cada caso / rame *ictureBo/B Command Button + 5abel si crea la matri" de controles con el mismo nombre o no. Esto es. 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.CARLOS ARMA !O C"#$AS $ALL#%O inserta en la caja. Elige no ! posteriormente le cambias el nombre que desees. o de un banco determinado. En este caso ponemos o insertamos un icono que contiene una figura ! que tomamos de los arc<ivos de +. 1ei02t$ 3idt2$ @eja de actuar con Autosi'e @eja de actuar con Autosi'e 0ntroducimos una etiqueta para rotular Error o Equivoco O un botón de comando para que maneje el flujo del programa.5 c:?arc)i<os de *rograma?Microsoft $isual Studio?Common?@ra*)ics?.:I. %omo es una variable lógica le pondremos el valor de (rue. +. el usuario al ver el letrero oprimir3 un botón para continuar u otro para salir o cancelar. 11 .

.S"AL &AS. En este caso el otro rame ser3 para seGalar el é#ito en el problema./ Figura 3. Figura 3.O A $. 0nterfase del pro!ecto Euma.. -RO!"CC.:B1.28.27.C . Hvance en el diseGo de la interfase del pro!ecto Euma. te#to de la etiqueta ! rotulo del botón /véase figura ?. por lo tanto cambia figura. 12 .

Ee utili"a para la definición de la interfase en primera instancia ! generación aleatoria de par3metros. %on respecto al diseGo <emos utili"ado demasiado colores ! mu! vivos. la instrucción .CARLOS ARMA !O C"#$AS $ALL#%O *inalmente se programar3n los objetos. los cuales molestar3n eventualmente al usuario ! también <emos abusado del tipo ! tamaGo de las letras. Ein embargo.ption E/plicit YEe usa a nivel de módulo para for"ar declaraciones Ye#pl2citas de todas las variables en dic<o módulo. Necuerde que dado el diseGo de esta interfase la ma!or responsabilidad recae en el botón 7Nevisame8. deseamos mostrar diversos tipos de letra ! como programador es cómodo utili"ar muc<os colores para distinguir un objeto del otro. . . 'ota Esta interfase es mu! criticable desde el punto de vista de diseGo ! posiblemente desde el pedagógico.imer1 Y*unción para similar la generación Yde n meros aleatorios. (rivate Eub *ormZ)oad/1 Nandomi"e /.op S 6 )eft S 6 Pidt< S 44?66 Y(ar3metros para la dimensión de la forma 1. @esde el pedagógico los botones como rev2same ser3n dif2cil de leer por un niGo por el tipo de letra. . Ei se Yusa.ption E/plicit debe aparecer en un módulo Yantes de cualquier procedimiento. )a primera subrutina que corre del (ro!ecto suma es 5oad.

@entro de las variables también tenemos una variable de tipo 7cadena8 esto es de tipo caracteres alfanuméricos que pueden no tener ning n sentido v.<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. S te#to. etc.e#t1 .+isible S *alse YFculta el *rame para el mensaje Yde error fraEuma:. 13 .C . H S OIuA.O A $. sino sólo caracteres concatenados. Hbundemos en esta parte.+isible S *alse YFculta el *rame para el mensaje Yde error End Eub (asemos a<ora al botón que lleva la responsabilidad del programa..%aption S 0nt/Nnd T CC1 YQenera un n mero aleatorio entre 6 ! CB ! se lo asigna a la etiqueta fraEuma4. (rivate Eub cmdEumaEntZ%licR/1 Y0nicio de subrutina evento YclicR 0f /+al/lbl-umEnt/61. (ara darle a esta e#presión el car3cter numérico es necesario la función Val.%aption11 S +al/t#tEumaEnt. El botón 7Nevisame8. Fbserve que para este tipo de variable la e#presión 7?DA58 no es un n mero.S"AL &AS../ 9eig<t S C666 lbl-umEnt/61.. % S lR5I6^_A. gr.%aption1 & +al/lbl-umEnt/41. Esta función regresa el valor numérico de una variable de tipo alfanumérica.%aption S 0nt/Nnd T CC1 YQenera un n mero aleatorio entre 6 ! CB ! se lo asigna a la etiqueta lbl-umEnt/41. . -RO!"CC. Hqu2 estamos usando la función Val.

)a función /al deja de leer la cadena en el primer car3cter que no puede reconocer como parte de un n mero. como signos de moneda ! comas. )os s2mbolos ! caracteres que se consideran a menudo parte de valores numéricos.a1 En el código que se muestra a continuación. Eigamos adelante con la programación del evento del botón fraEuma:. )o siguiente devuelve el valor 454A4CB$ /al/a 454A 4CB %alle -.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. los tabuladores ! los avances de l2nea se eliminan del argumento. aplicaciones internacionales.rue YHparece el *rame con error End 0f Y*in de if 14 . no se reconocen.+isible S . como %uando en se utili"an separadores decimales debe diferentes.1 como separador decimal v3lido. utili"ar D5bl para convertir una cadena a un n mero. Ein embargo.CARLOS ARMA !O C"#$AS $ALL#%O /alCcadenaB devuelve los n meros contenidos en una cadena como un valor numérico del tipo adecuado. El argumento obligatorio cadena es cualquier e#presión de cadena v3lida. /al devuelve el valor decimal K4 correspondiente al valor <e#adecimal entre paréntesis$ /al/a`9****a1 )a función /al sólo reconoce el punto /. la función reconoce los prefijos de base `F /para octal1 ! `9 /para <e#adecimal1.E.+isible S . )os espacios en blanco.

e#t S aa t#tEumaEnt.%aption S 0nt/Nnd T CC1 YQenera un n mero aleatorio entre 6 ! CB ! se lo asigna a la etiqueta t#tEumaEnt.S"AL &AS.+isible S *alse YEsconde el *rame de é#ito cmdEumaEnt.otón para %ancelar termina el programa ! descarga la forma. (rivate Eub cmd%ancelarZ%licR/1 Y0nicio de subrutina evento YclicR Unload ..otón para proponer otra suma en caso de é#ito.Enabled S .O A $.Enabled S . (rivate Eub cmdFtroZ%licR/1 fraEuma4..Enabled S *alse Y@es<abilita el botón de 7Nevisame cualquiera que sea la respuesta.Eet*ocus cmdEumaEnt.+isible S *alse t#tEumaEnt. -RO!"CC.orra contenido de caja Y(one el cursor en la caja Y9abilita botón Nevisame aleatorio entre 6 ! CB ! se lo asigna a la etiqueta lbl-umEnt/41.C ..e YEsta instrucción descarga la forma que esta en Yfunciones. End Eub Y*in de subrutina evento clicR b.rue End Eub b.orra contenido de caja fraEuma:./ cmdEumaEnt. End Eub Y*in de subrutina evento clicR b.%aption S 0nt/Nnd T CC1 YQenera un n mero YEsconde el *rame de error Y..otón para proponer la misma suma en caso de error.e#t S aa Y.rue End Eub Y9abilita botón Nevisame 15 . (rivate Eub cmdFtro'uZ%licR/1 lbl-umEnt/61.

Esto finali"a esta breve introducción al lenguaje +.5. 2/ . en el n mero de <oras que le dedique a programar. casi totalmente. es una labor que se aprende a base de ensa!o ! error.CARLOS ARMA !O C"#$AS $ALL#%O (rivate Eub *ormZHctivate/1 YEvento que permite situar cursor t#tEumaEnt. -o deseo pasar la ocasión para recordarles que la programación es algo pragm3tico. ! que la <abilidad en la ejecución de un buen programador depender3.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 solución 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.