|
Curso básico
de programación en Visual Basic
Lección
5.2
Expresiones
lógicas
|
Realizamos
programas para la gestión de empresas. Empresas medianas y
pequeñas. Programas de contabilidad, cartera de pedidos
clientes proveedores, facturación control de albaranes,
tesorería cartera de cobros y pagos y estadísticas.
Nuestro
agradecimiento a todos los que por unas causas o por otras
visitan nuestra web. Gestión de empresas PYMES. Curso de
programación de Visual Basic.
|
Ya sabes que mi
segundo nombre es: DESPISTE, si no lo sabías, ahora lo sabes...
Y es que con tanta
explicación de la Quinta Entrega, al final expliqué cosas, pero no
todo.
Al final de la Cuarta Entrega se hicieron una serie de cambios al
programa ese de los bucles. La explicación de la utilidad de todo
ese código es, en términos generales, para cancelar en cualquier
momento el programa.
¿Cómo?
Hemos declarado Contando a nivel de módulo, por tanto será visible
en todo el form.
Cuando se declara una variable, el VB le asigna siempre un valor
predeterminado, en caso de las cadenas de caracteres (string) ese
valor es "" (cadena vacía); a los números se le asigna
un valor CERO. Por tanto, al iniciar el programa, la variable
Contando valdrá CERO, así que la primera vez que se pulse en el
botón Command1 y se compruebe esto:
If Contando Then...
Ah, si... no he explicado para que sirve esto del If...Then...
Las instrucciones If/Then se usan para comprobar si la 'expresión'
que se usa después del IF se cumple o no...
En caso de que se cumpla (sea cierta), se ejecutará todo lo que
haya después de THEN... algo así:
IF <EXPRESIÓN> THEN <INSTRUCCIONES>
También puede
usarse de esta otra forma:
IF <EXPRESIÓN> THEN
<INSTRUCCIONES>
[<MÁS INSTRUCCIONES>]
END IF
En la primera forma
de uso, las instrucciones se ponen a continuación de THEN como en
el caso de:
If Contando = 0 Then Exit
For
En la otra forma de
usarlo, las instrucciones se ponen en las siguientes líneas y
podemos escribir tantas líneas como queramos. Todas se intentarán
procesar...
Esto para el caso de que al evaluar la expresión se cumpla como
verdadero.
En las ocasiones en las que no se cumple la expresión se hará lo
siguiente, según la forma de usar el IF/THEN:
--En el primer método, se procesan las instrucciones que hay en la
siguiente línea y se continúa a partir de ahí el programa.
--En el segundo caso, se busca END IF y se continúa por la
siguiente línea...
Más adelante, en otra entrega,
veremos otras formas de usar IF...THEN...
Ahora voy a explicar un poco esto
de la evaluación de las expresiones.
El IF espera encontrar un valor CERO (FALSO) o un
valor distinto de cero (por extensión VERDADERO)
En
If Contando = 0 Then Exit For,
la expresión es Contando
= 0, aquí no se está usando la asignación, sino que se
está evaluando si el contenido de la variable Contando es igual a
cero; en caso de que sea cierto, es decir que Contando valga cero, (algunas
veces me maravillo de mi lógica aplastante...),
se devuelve un valor Verdadero (TRUE).
Por otra parte si Contando NO vale cero, se devolverá un valor
Falso (FALSE, CERO).
En otros lenguajes
se usa un símbolo distinto para el igual, según sea una
asignación o una comparación.
En Pascal (Delphi) la asignación es :=
y la comparación es =
En C, C++, la asignación es =
y la comparación ==
(esto del ==
puede 'sonarte' si has hecho algo con JavaScript)
En el caso de If
Contando Then, al no haber una
expresión que evaluar, lo que se comprueba es si el contenido de la
variable es cero o no es cero, en caso de que sea NO CERO, se cumple
la condición y se procesa todo lo que viene a continuación; pero
si la variable vale CERO, el IF lo interpretará como FALSO y pasa a
ejecutar lo que haya a continuación de End
If.
Por tanto,
(volviendo por fin al listado), la primera vez que se pulse en el
botón Command1 y se compruebe esto:
If Contando Then
No se cumplirá la
condición, ya que el contenido de Contando es cero, y se pasará a
lo que hay después del End If, es decir a:
Contando = 1
y se continúa con el programa
como antes de añadir todas estas cosas...
Pero, si pulsas de
nuevo en el botón, se vuelve a procesar lo que hay dentro de
Command1_Click, (esto es posible porque al usar DoEvents, permitimos
que Windows siga recibiendo y procesando 'tiritos'), pero cuando
entramos por segunda vez, Contando vale 1 (uno), (ya que al ser una
variable a nivel de módulo conserva el último valor que hayamos
asignado), y esta vez al evaluar:
If Contando Then
si se cumple, así que se procesan las líneas que vienen a
continuación... entre ellas está Contando = 0 y DoEvents que
vuelve a permitir a Windows que las otras cosas que antes de pulsar
en el botón continúen ejecutándose, (esto se hace de forma asíncrona,
es decir, Windows se da por enterado y da los avisos (mensajes)
cuando quiera), pero continúa con la siguiente instrucción sin
esperar a que esos mensajes se terminen de procesar, entonces se
encuentra con el Exit Sub que lo manda fuera del evento... (Si
no te ha quedado demasiado claro, no te preocupes veremos más de
esto a lo largo del curso...)
En caso de que
hayamos pulsado el botón cuando aún no había terminado todo lo
que este Sub estaba haciendo, se continúa igual que si se hubiese
hecho PAUSA y después PLAY.
Con la salvedad de que si VB se encuentra con alguno de los If
Contando = 0 Then Exit Sub, dejará de procesar y se saldrá del
procedimiento... Esta no es la mejor forma de cancelar una tarea ya
iniciada, pero algo es algo...
También es posible que al pulsar por segunda vez en el botón, se
estuviese dentro del Sub Contar, en este caso, también se
evaluaría la expresión y se saldría del procedimiento... así que
también dejaría de procesarse todo.
Cuando pulsemos por
tercera vez... iniciaremos el proceso de nuevo...
Bueno, ahora si que
puedo dar por terminada la Quinta Entrega.
Nos vemos.


|
|