Académique Documents
Professionnel Documents
Culture Documents
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
obtenidos. (rolog,
)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.
Por amigable se entiende un lenguaje cuya interfaz de comunicacin con el usuario es clara y sencilla de entender.
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
elegimos de a<2
mismo.
Por )acer clic sobre un objeto' se entiende situar el cursor sobre el objeto y o*rimir el botn iz+uierdo del ratn.
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.
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
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.
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
para
generar
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
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
/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
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
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
/fuente1. Hl
(ermite clic
definir al lado
tipo,
tamaGo de
!
ont
cualidad aparece
de un
letra.
<acer
derec<o
. 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.
1/
*lignment
/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.
que Figura 3.(4. %olores aparecen con (aleta. @e nuevo al <acer clic a
que la
/estilo
del fondo1.
11
elegir
entre
#",pa-ue
/fondo
opaco1
0.(ransparent
/transparente1.
Border&t+le
aparece una punta de flec<a que al oprimirla permite elegir entre dos opciones
#" i/ed &in0le
/arreglo
nico1
0"none
/ninguno1.
Enabled
objeto. @e nuevo esta propiedad queda definida como variable lgica ! por ende tiene el valor
alse
/*also1
para
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
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
/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
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
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
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
<acer varias veces, el trabajo de alinearlas ser2a de verdad insufrible por lo laborioso. El nuevo objeto que vamos a introducir se llama
rame
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$
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
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.
(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
tipo %omic Eans ;E; tamaGo 4:, cualidad negrita %ombinacin Qanadora 566 4KQrap<ical :I66
tipo Hrial; tamaGo 4:, cualidad negrita %ancelar 566 4KQrap<ical :I66
Una ve" definidos todos los objetos de la forma, va!amos a la programacin del pro!ecto melate.
13
=%ombinacin Qanadora>
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
.odos ellos tienen su funcin ! en la medida de avance ! necesidad los iremos e#plicando. En este caso iniciamos con el evento clicR.
Clic).
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
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]
! 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.
(/
%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
declaracin de tipo para 5ouble es el signo de n mero /61. Ein embargo, si uno desea una variable tipo doble o no
)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
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
((
Nandomi"e.
8andomi'e 9nmero:$
+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.
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
=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
(ositivo o 6
-egativo
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
'ota
Ei
omite
un
contador
en
una
instruccin
'e<t,
la
(2
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
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
(.
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.
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
-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
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
+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
propu D 4nt(#G8nd H n)
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.
>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/
.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
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(
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
/subtitulo1.
-U;ENFE E-.ENFE
ont /fuente1. 1ei02t. 3idt2
4466
nico1.
oreColor 5eft
Visible (op
00
(ara
la
siguiente
etiqueta
que
ser3n
las
cajas
en
donde
lbl-umEnt.
566
nico1.
oreColor 5eft
Visible (op
(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
4nde/
01
(odemos
asimismo
definir
otras
dos
etiquetas
para
los
lblEumaEim.
A.
566
nico1.
oreColor 5eft
Visible (op
4nde/
(ara definir la segunda, la que lleva el signo menos, slo se copia sta posicin.
5eft
/0"quierda1. AD66.
!.
tenemos una interfase como la que se
9asta
02
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.
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).
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
caja. Eobre este color se escribir3 el te#to. (ara colorear el fondo ver instrucciones en p3gina 44.
Border&t+le
aparece una punta de flec<a que al oprimirla permite elegir entre dos opciones
#" i/ed &in0le
/arreglo
nico1
0"none
03
Enabled
objeto. @e nuevo esta propiedad queda definida como variable lgica ! por ende tiene el valor
alse
/*also1
para
/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
/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
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
/)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
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
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
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.
/-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
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
/largo1. @efine el largo de la etiqueta u objeto ! se mide en tLips. .ambin en este caso deber3
tambin
05
4nde/
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
tipo Enap 0.%; tamaGo 4:, cualidad normal Nevisame 566 4KQrap<ical 1/
3idt2$
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
En caso de optar por si aparece otro objeto con el mismo nombre ! propiedades salvo que la propiedad 4nde/ /2ndice1 aumenta en uno.
11
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
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
/Nombre1 fraEuma4. )as iniciales fra son las que anteceden o parte del nombre para cualquier frame o marco.
Apearance$ Bac)Color$
1(
Border&t+le$ Caption$
*i#ed Eingle
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/
figuras,
im3genes,
etc.
en
la
forma.
Un
control
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
10
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$
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
11
Figura 3.27. Hvance en el diseGo de la interfase del pro!ecto Euma. En este caso el otro
rame
problema, por lo tanto cambia figura, te#to de la etiqueta ! rotulo del botn /vase figura ?,:B1.
12
*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.
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
/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
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
fraEuma:.+isible S *alse YEsconde el *rame de #ito cmdEumaEnt.Enabled S .rue End Eub Y9abilita botn Nevisame
15
(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/