Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TEMA 1
Introducción al Visual Basic.
Manejo de los elementos básicos de un programa en Visual Basic.
Constantes y Variables: Definición. Declaración.
Declaraciones de entrada y salida: Input, Print, Let, Stop, Rem, End.
Hola Jovenes… aquí les dejo una guía donde se tocan todos los puntos que se
mencionan al principio…Pero como el título indica, esto será una cosa para introducir
al que quiere empezar a programar, incluso para el que viene de otro lenguaje,
aunque seguramente, sobre todo al principio, se encontrará con conceptos
demasiados básicos.
aquí iremos creando sobre la marcha, espero tus indicaciones sobre si voy demasiado
rápido o si realmente me estoy pasando en cuanto a 'simpleza'. De cualquier forma,
me gustaría oír tu comentario y tus impresiones, eso nos ayudara a mejorar.
End Sub
Sitúate en medio, es decir, en una línea en blanco después del Private... y escribe el
ejemplo, quedaría así:
Private Sub Form_Load()
Show
Guillermo = 5
Paliza = Guillermo * 7
Print Paliza
End Sub
Print Guillermo
Pulsa de nuevo F5 y verás que ahora además del 35, hay un 5 debajo. El valor de la
variable Guillermo.
Pero, ¿que ocurriría si cambiásemos el valor de Guillermo?
Añade estas líneas a continuación de la anteriores, para que quede de esta forma:
Después de pulsar F5, te mostrará los siguientes valores (cada número en una línea),
35, 5, 10, 35
¿Esperabas que el último fuese 70?
Fíjate que cuando asignamos a Paliza el contenido de Guillermo, éste era 5, por
tanto el Basic evaluó la expresión 5 * 7 y almacenó el resultado (el 35). Una vez
almacenado el resultado, el Basic se olvidó de dónde había sacado ese 5.
Si queremos que se 'actualice' el valor de Paliza, tendremos que indicárselo de nuevo
al Basic, para que vuelva a evaluar la expresión y hacer la correspondiente
asignación. Para ello, pon en medio de los dos últimos prints la siguiente asignación:
Paliza = Guillermo * 7
Esta vez, al ejecutar el programa, mostrará un 70, que será el nuevo contenido
de Paliza.
Ya para terminar, borra todo lo anterior y escribe: (por supuesto debes detener el
programa...)
Bien, Antes que nada una pequeña aclaración, para que los ejemplos que explique
antes deberan poner un Show en el form Load antes de los Prints, para que se
muestre algo... sino no se verá nada.
Una vez hecha esta pequeña aclaraciٔón, sobre el manejo de entrada de datos y una
forma un poco más práctica de mostrar los datos, empezaremos a vernos ya con lo
que es programar con Windows, es decir el manejo de eventos, o al menos el
movernos dentro de los eventos y saber "controlarlos" para las cosas que queramos
hacer.
Con el "basic clásico", no había problemas. Las cosas se producían de forma lineal, es
decir empezaban por el principio del programa y se iban ejecutando a medida que se
avanzaba por él. Salvo en las ocasiones en las que en un momento dado "saltábamos"
a otro sitio, pero era porque nosotros así lo habíamos programado. De una forma u
otra teníamos control total sobre lo que podía ocurrir. Pero en Windows (o los
entornos dominados por los eventos), la cosa no es tan sencilla.
Debemos controlar todas (o casi) las posibilidades que se pueden producir...
Antes vamos a dejar un par de cosillas claras. Según como tengas configurado el
entorno de desarrollo, habrás tenido problemas con los ejemplos anteriores. La razón
es que el Visual Basic nos permite controlar un poco mejor el tema de las variables
que queremos usar. Ese control lo da la instrucción: Option Explicit. Si ponemos
esto en la parte destinada a las declaraciones de cualquier módulo, nos obligará a
declarar las variables que vamos a usar en dicho módulo.
En el último ejemplo, teníamos una variable llamada Nombre, en la cual almacenamos
un nombre, por tanto podríamos haberle avisado a Visual Basic que reservara espacio
para una variable, y para hacerlo usamos la instrucción DIM, con ésta le
indicamos que nos guarde un "espacio" de la memoria para nuestro uso:
Dim Nombre
También nos ofrece una variante con respecto al "basic clásico" y es, precisamente, el
tipo de datos variant. Con este tipo podemos asignar a una variable cualquier tipo
de dato. Desde un número hasta una cadena de caracteres, pasando por cualquier
tipo de objeto que Visual Basic pueda manejar (más o menos).
Los que hayan tenido experiencias anteriores, con Basic u otro lenguaje, sabrán que
cada variable debe ser del tipo de datos que queramos asignarle. En VB por supuesto
esto también es posible y recomendable.
Ya vimos que los tipos de datos podían ser numéricos o de caracteres. Pero dentro de
los numéricos, tenemos cuatro tipos básicos: enteros, enteros largos, simples y
dobles. Cada uno de ellos tienen unas capacidades determinadas, además de ocupar
más memoria o menos, (ahora lo veremos), lo más importante es que los números
enteros y entero largo sólo admiten números enteros (de ahí sus nombres), es decir
que no admiten decimales. Sin embargo los otros dos si admiten decimales.
Estas capacidades puedes encontrarlas en el manual del basic o en la ayuda, lo que a
mi me interesa que sepas es cómo poder indicarle al Visual Basic que reserve ese
espacio de memoria para un tipo determinado. Ya te he dicho que el espacio que
ocupa en memoria es diferente para cada uno de estos tipos, veamos en la siguiente
tabla cómo declararlos y cuanto ocupa:
Espacio Tipo de
Tipo Ejemplo
ocupado declaración
Entero 2 bytes Integer Dim Numero As Integer
Entero Largo 4 bytes Long Dim Numero As Long
Simple 4 bytes Single Dim Numero As Single
Doble 8 bytes Double Dim Numero As Double
En el caso de las variables que van a guardar nombres (cadenas de caracteres), se
deben declarar como String y el espacio que ocupa será 4 bytes más un byte por cada
caracter que tenga, en el caso de VB de 32 bits realmente ocupará 2 bytes por cada
caracter que tenga.
La longitud máxima de una variable del tipo String será de aproximadamente 32.000
caracteres y la forma de declararla será:
Dim Cadena As String
Una vez declarada podemos asignarle la cantidad de caracteres que queramos (sin
pasarnos) y cuantas veces queramos.
Hay que tener en cuenta que en cualquier variable sólo se queda el último valor
asignado. Ya lo vimos en la entrega anterior, pero vamos a refrescarlo un poco:
Dim N As Integer
Dim M As Integer
N = 10
M = N * 3
Print M
El resultado de este programa sería 30, que es lo que resulta de multiplicar 10 por 3.
Cuando se asigna a la variable M el valor de N (que es 10) multiplicado por 3, el VB
toma el contenido de N y lo multiplica por 3. Una vez que sabe la solución, asigna ese
valor, en este caso 30) a la variable que hay a la izquierda del signo igual.
Sabiendo esto, podríamos simplificar la cosa y hacer los siguiente:
N = N * 3
Print N
Ya veremos alguna "utilidad" para estos casos. Ahora vamos a ver cómo podemos
manejar las cadenas de caracteres, es decir las variables de tipo String.
Con estas variables ocurre lo mismo que con las numéricas, pero la única operación
que podemos realizar es la suma.
Realmente una suma en una cadena de caracteres es "pegar" dos cadenas en una
sola.
Por ejemplo si hacemos esto: N = 3 + 2. El valor obtenido es 5 y eso es lo que se
guarda en N.
Sin embargo con los strings hacer esto: Cadena = "A" + "B", se guardará "AB", es
decir se unirán las dos cadenas en una sola. Para este tipo de operación se
recomienda usar mejor el signo &. Que entre otras cosas le indica al Visual Basic que
lo que pretendemos hacer es unir dos cadenas, no sumarlas.
Aunque "teóricamente" no se pueden sumar cadenas, sólo con-catenarlas, veremos
cómo podemos llegar a producir "problemillas" de entendimiento entre el VB y
nuestras "mentes poderosas".
Como te he comentado al principio el tipo de datos Variant acepta de todo, números,
nombres, etc.
Si no le indicamos de forma correcta al VB cual es nuestra intención, podemos
confundirle y hacer que el resultado de algo que nosotros dábamos "por hecho", al
final se convierte en un pequeño caos para nuestras pobres mentes.
Vamos a verlo con un par de ejemplos, en estos casos: (al no indicarle de que tipo
son las variables, el Basic entiende que nuestra intención es usar el tipo Variant)
Dim Num1
Dim Num2
Num1 = 5
Num2 = 3
Num1 = Num1 + Num2
Print Num1
Dim Num1
Dim Num2
Num1 = "5"
Num2 = "3"
Num1 = Num1 + Num2
Print Num1
Fíjate que lo que varía es sólo las comillas. El resultado en este caso es 53, es decir
ha unido las dos cadenas.
Ahora quita las comillas del 5, para dejarlo así:
Dim Num1
Dim Num2
Num1 = 5
Num2 = "3"
Num1 = Num1 + Num2
Print Num1
Sigue mostrando 53, aunque en este caso debería producir un error, ya que un
Integer no es una cadena.
Así que "cuidadín" con las operaciones que realizamos. Ya que si añades esta línea:
Print Num1 * 2
Verás que realmente Num1 tiene guardado un número y el resultado será: 106
¿A dónde nos lleva todo esto? A que debemos usar los signos (operadores) de forma
adecuada. Y si nuestra intención es sumar números, empleemos el signo +, en caso
de que queramos unir cadenas de caracteres, usaremos el &
Para rematar esta segunda entrega, vamos a usar un textbox para que se puedan
introducir datos y empecemos a manejar los eventos, mejor dicho empecemos a
"habituarnos" a los eventos.
Añade al form dos Label, un TextBox y un botón de comandos. El aspecto será algo
parecido al de la siguiente figura:
Añade el siguiente código y después ejecuta el programa, ya sabes F5. Escribe algo en
el cuadro de texto y pulsa en el botón.
Cuando pulsas F5, se produce el evento Form_Load, por tanto se asigna al Label2 y al
Text1 una cadena vacía, con lo cual borramos el contenido anterior, que es el que se
muestra en la Figura.
Hasta que no pulsemos el botón mostrar, no ocurrirá nada y el programa estará
esperando a que ocurra algo.
Una vez pulsado el botón, se produce el evento Click del Command1 y se hace lo que
se indica en su interior, que es tomar lo que hay en la caja de texto y unirla a la
palabra Hola, para asignarla al Label2.
Pruébalo y verás lo que ocurre. Queda "guay" ¿verdad? Pero no es lo que nosotros
pretendíamos. Vamos a intentar remediarlo y de camino vemos nuevas
instrucciones/propiedades, en este caso del TextBox.
Private Sub Text1_Change()
Text1 = UCase(Text1)
Text1.SelStart = Len(Text1)
End Sub
La línea que se ha añadido (realmente la habrás tecleado tú), lo que le indica al Visual
Basic es que haga lo siguiente:
Calcula la longitud del contenido del Text1, (Len cuenta los caracteres de una cadena
y lo devuelve como número), SelStart es una propiedad del TextBox que entre otras
cosas, le indica la posición en la que se insertará el siguiente caracter que se escriba o
bien nos puede indicar la posición actual del cursor. Por tanto obliga a poner el cursor,
(el palico ese que parpadea y que nos indica que podemos escribir), al final de la
última letra que contiene el Text1.
Ahora ya sabes que cada vez que "cambie" el Text1, se produce un evento Change.
Pero hay otra forma de hacer esto mismo y es controlando cada tecla que se pulsa.
Esto lo podemos "controlar" en el evento KeyPress, el cual se produce cada vez que se
pulsa una tecla. Borra el procedimiento anterior y escribe este otro:
s = UCase(Chr(KeyAscii))
KeyAscii = Asc(s)
End Sub
Ahora han entrado dos nuevas funciones en acción: Chr, la cual convierte un número
en una cadena... realmente convierte un código ASCII en la letra que representa
(busca en la ayuda ASCII y léete lo que dice en las opciones que te muestra). Por otra
parte Asc hace lo contrario, es decir convierte una letra en el código ASCII. Y lo que
nosotros hacemos es: convertir el código de la tecla pulsada, representado por la
variable KeyAscii, en una cadena, la pasamos a mayúsculas y después la volvemos a
asignar a la variable, para "engañar" al Visual Basic y así hacerle pensar que
realmente hemos tecleado una letra en mayúsculas.
TEMA 2
Operadores lógicos, relacionales y lógicos
Comparaciones simples, compuestas y bloques.
Condicionales e incondicionales
Iteraciones
Locación línea-columna
Para introducir código en cualquiera de los eventos de los controles o del formulario,
lo único que tienes que hacer es seleccionar el control y el evento que queremos
codificar de las listas desplegables, en el módulo de código, pulsando en Código en la
ventana en la que se muestra los módulos y formularios que forma un proyecto. En la
lista de la izquierda seleccionamos el control y en el de la derecha nos mostrará todos
los eventos soportados por VB para ese control. Si sabemos el nombre del control y el
del evento, podemos teclearlo directamente o bien si copiamos código de otro sitio,
simplemente con pegarlo, se va a su sitio.
En el caso de querer añadir al código, una función o procedimiento se puede hacer de
varias formas, lo acabo de decir, pero lo repito un poco más claro:
ventana de código...
3. Por menú de VB: Según las distintas versiones de VB, será un menú u otro,
(Sub) y las Funciones (Function) hay también Propiedades (Property), estas las
En otra ocasión veremos todas estas cosas y con ejemplos, que es lo que "mola".
Bueno, toda esta "retahíla" venía a cuento de cómo introducir código en los eventos
de los controles o del formulario y cómo crear nuestras propias instrucciones (esto es
lo que más me gustó del QuickBasic 4.0, poder crear mis propias instrucciones (subs)
y funciones).
Option Explicit
Esto nos obliga a declarar todas las variables que usemos en el módulo, ponerlo es
una recomendación, incluso te la impondría como norma. Para que salga de forma
automática en cada nuevo módulo, selecciona del menú Tools/Advanced la opción
Declare variables required (o algo parecido, que viene a significar Requiere la
declaración de variables)
Siguiendo nuestro recorrido por el código, no encontramos con:
Lo de Private significa que sólo se puede acceder a este procedimiento desde dentro
del módulo en el que está declarado. Es decir no se puede llamar desde otro form o
módulo BAS.
Sub indica que es un procedimiento, no una función, ni una propiedad. Los Subs
actúan como instrucciones propias del lenguaje. Las funciones también, pero
devuelven un valor, mientras que los subs no devuelven nada, lo que cogen se los
quedan ellos, aunque en su momento veremos que también nos pueden dar algo a
cambio.
Command1_Click, este es el nombre que habrá que usar para acceder a él desde
cualquier punto de éste módulo.
Los paréntesis sin nada dentro, indica que este procedimiento no recibe parámetros;
los parámetros lo veremos dentro de un "ratillo"
Toda esta línea es la descripción del procedimiento y cuando se le llame, bien desde
nuestro propio código, bien porque se pulse sobre el botón, se ejecutará todo lo que
esté dentro de él. El final del procedimiento está marcado por End Sub.
Las líneas con DIM indican que estamos declarando las variables y lo que se
especifica después del AS es el tipo de variable, los cinco primeros son de cada uno
de los tipos numéricos soportados (otro día veremos otro tipo cuasi-numérico), el
sexto es Variant, el multi-uso, el que vale para todo.
Un inciso, esto de explicar tan detalladamente los listados, no va a ser norma, ya que
al final todos nos aburriríamos, sólo lo haré cuando lo crea conveniente o bien si lo
solicitas, en este caso, no tendré más remedio que cumplir tus deseos...
Command1.Caption = "Calculando..."
Cambiamos el texto mostrado en el botón, para avisarnos de que está haciendo
algo...
timer1 = Timer
Asignamos el valor de la función Timer a la primera de las dos variables que usaremos
para calcular el tiempo empleado por cada uno de los bucles. Esta función devuelve el
número de segundos transcurridos desde la media noche.
Next
Continúa repitiendo el bucle hasta que se alcance el valor máximo, realmente el Next
lo que hace es lo siguiente:
nInt = nInt + 1
¿Es nInt menor o igual que maxBucle? Si la respuesta es SI, sigue con lo que haya
después de la línea FOR, en caso negativo continúa con la línea siguiente al Next
(realmente en la siguiente instrucción después del Next, ya veremos esto en otra
ocasión)
DoEvents
Esta es una instrucción "controvertida" y a la que muchos programadores no les hace
demasiada gracia usar, no porque no tenga su utilidad, sino porque hay que saber
realmente lo que hace y tener cuidado cuando la usamos, ya que algunas veces puede
crear errores o confusión... realmente no es tan drástico, pero casi...
DoEvents, detiene la ejecución del programa y devuelve el control a Windows, para
que ejecute los mensajes que tiene pendientes en la cola de mensajes... ¿? no te
preocupes si no te enteras, es así y punto. ¿por qué la uso? Pues para dar tiempo a
que se vea el contenido del Label; prueba a quitarla y verás lo que ocurre, o debería
ocurrir... que ya a estas alturas no me sorprendería nada que se mostrara...
El resto del programa es idéntico a este bucle, pero usando distintas variables y las
demás etiquetas. El caso es que Contar espera una variable de número entero y un
control, en el caso del control es obvio que se están poniendo las distintas etiquetas y
en el caso del número se convierte a entero, porque eso es lo que espera nuestra
instrucción y si no lo hacemos así, se quejará.
Una vez que Contar termina, por el End Sub, vuelve el control al bucle que lo llamó y
se ejecuta la siguiente instrucción. Por tanto Contar se llamará tantas veces como
dure el bucle en el que se encuentra.
Creo que queda todo más o menos claro y aunque este código no es muy útil por sí,
ha servido para ver algunas cosillas del VB.
Para terminar vamos a ver una serie de cambios y a ver si adivináis que es lo que
hace... así os servirá de ejercicio, cosa que algunos me habéis pedido, pero que aún
no es el momento de hacerlos.
If Contando Then
Command1.Caption = "Calcular"
Contando = 0
DoEvents
Exit Sub
End If
Contando = 1
Bueno, ahí dejo esto y como ejercicio podrías añadir dos controles TextBox para
especificar los valores de maxBucle y elMaximo, de forma que según los valores
introducidos, que por defecto deben ser 10 y 1000, se usen los que especifiques en
cada TextBox y se tengan en cuenta cuando pulsas (haces click) en el botón.
Como pista te diré que las variables usadas y/o declaradas dentro de un
procedimiento son sólo visibles dentro de ese procedimiento. No te quejarás del
"pedazo" de pista que te he dado...
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>
[<MÁS INSTRUCCIONES>]
END IF
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)
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...
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.
Como hemos visto anteriormente, la instrucción IF... THEN... nos permite tomar
decisiones según el valor de una variable o el resultado de una expresión. En esta
guía veremos cómo sacarle rendimiento a esta instrucción.
Pero antes de entrar en detalles, veamos cómo podemos decirle al VB que haga las
cosas. En realidad, vamos a ver la forma en que se le puede decir que las haga...
Podemos poner cuantas instrucciones queramos, separadas con los dos puntos.
Pero, (siempre hay un pero), si una de las instrucciones es el IF/THEN la cosa puede
cambiar...
En los tiempos del BASIC interpretado de MS-DOS, era habitual encontrar las líneas
con varias instrucciones separadas por dos puntos.
En mi caso, cuando empecé a usar el QuickBasic 2.0 y al poder usar bloques IF...
THEN... END IF, fui dejando a un lado el "mogollón" de instrucciones en la misma
línea...
Ahora, salvo en contadas excepciones, escribo cada instrucción en una línea. Y te
recomiendo que hagas lo mismo, tu código ganará en claridad y si alguna vez vuelves
a verlo, te será más fácil de entender.
Después de este pequeño respiro, veamos cómo estaría formada una línea de VB para
usar con un IF... THEN...
Pero, (...), existe otra instrucción que PUEDE acompañar al IF... THEN... y es para los
casos en los cuales el resultado de la expresión sea FALSO.
Si, ya sé que dije que cuando es falso se pasa a la siguiente línea, pero eso es cuando
no se usa la cláusula ELSE.
Con ésta, la definición de la instrucción "tomadora de decisiones" quedaría así:
IF <expresión> THEN
<si se cumple>
ELSE
<si no se cumple>
END IF
Sé que esto puede ocupar más líneas de código, pero nuestro "coco" lo agradecerá, ya
que es más fácil de comprender, sino veamos un ejemplo:
IF numero > limite THEN Print "tu número es grande" ELSE Print "OK,
McKey!"
En este ejemplo, aún queda claro, pero lo podríamos complicar con más instrucciones
para ambos casos, es decir, para cuando la expresión es cierta y también cuando es
falsa.
En los tiempos del BASIC que venían incorporados con los ordenadores, cada línea del
programa había que numerarla, ya que todo lo que se escribía sin número de línea, se
ejecutaba inmediatamente; al igual que ocurre con lo que se escribe en la ventana
Inmediate del Visual Basic.
Los números de líneas se usaban, además de porque era obligatorio, para cambiar el
orden de ejecución, sobre todo después de una comparación. De esta forma, aún sin
tener bloques IF/THEN/ELSE/END IF, se podían simular.
¿Cómo se lograba?
Usando una instrucción que muchos creen que es "indecente, antisocial, etc."
La estrella del Basic: (redoble de tambores) "GOTO"
A partir de hoy, más de un purista de la programación no me dirigirá la palabra...
pero no me importa...
No voy a recomendar el uso del GOTO, para nada, ya que hoy día es innecesario su
uso. Antes no teníamos más remedio, porque el BASIC no disponía de instrucciones
para poder estructurar el código. Pero sería una tontería querer hacer creer que no
existe esta instrucción. Sabiendo que está y cómo podemos evitarla, es preferible a
decir que no existe y si por casualidad la descubres... a que la uses.
Por tanto, insisto en mi recomendación, (de esta forma los PURISTAS volverán a
dirigirme la palabra), NO USES EL GOTO, ni aún cuando creas que no tienes más
remedio... aunque, aquí entre nosotros, algunas veces es más cómodo usarlo... pero
que no se entere nadie...
Este es un programa de los de antes, sirve para mostrar en pantalla los números del 1
al 10 y sin usar el FOR/NEXT
10 A = 1
20 Print A
30 A = A + 1
40 IF A <= 10 THEN GOTO 20
'Con el Commodore este programa se solía escribir así:
10 A=1
20 PRINTA:A=A+1:IFA<=10GOTO20
'Sin ESPACIOS NI NADA... TODO APELMAZADO... ¿que más daba usar el GOTO?
10 For A = 1 To 10
20 Print A
30 Next
10 A = 1
20 While A <= 10
30 Print A
40 A = A + 1
50 Wend
El WHILE/WEND ya casi ni se usa, porque tienen un sustituto más versátil, ahora lo
veremos, pero el uso sería:
WHILE <expresión>
<instrucciones si se cumple>
WEND
Es decir, MIENTRAS la expresión sea cierta, repite todo lo que haya hasta el WEND.
Por supuesto podemos ponerlo todo en una sola línea:
10 A = 1 : While A <= 10 : Print A : A = A + 1 : Wend
Hay que tener cuidado con esto de que la expresiones evalúan el cero como FALSO y
cualquier otro valor como VERDADERO, por ejemplo:
A = 1 o
While A While 1
Print A Print A
A = A + 1 A = A + 1
Wend Wend
While 1
Print "Hola Mundo"
Wend
Esto nunca finalizará, salvo que pulses CRTL+BEAK (o INTERrumpir), para detener el
programa.
Do
Print "Hola Mundo"
Loop
Pero la "gracia" de este tipo de bucle es que podemos usar dos nuevas cláusulas para
evaluar cuanto durará el bucle.
La primera es WHILE y funciona igual que en WHILE/WEND
A = 1
Do While A <= 10
Print A
A = A + 1
Loop
A = 1
Do
Print A
A = A + 1
Loop While A <= 10
Pero con DO/LOOP también puede usarse UNTIL, en este caso, el bucle se repetirá
HASTA que se cumpla la expresión
A = 1
Do Until A > 10
Print A
A = A + 1
Loop
Fíjate que la expresión ha cambiado de <= (menor o igual) a > (mayor), ya que
ahora se evalúa de esta forma:
Hasta que A sea mayor que diez, REPITE todo hasta LOOP.
Por supuesto también podemos usarlo después del LOOP:
A = 1
Do
Print A
A = A + 1
Loop Until A > 10
Sigamos con estos bucles, pero en lugar de contar de menor a mayor, vamos a contar
"pa trás", es decir de mayor a menor... quién sabe, lo mismo necesitas hacer un
programa que cuente al revés...
A = 10
Do While A >= 1
Print A
A = A - 1
Loop
For A = 10 To 1
Print A
Next
For A = 10 To 1 Step -1
Print A
Next
Insisto, todo esto está muy bien, pero en la práctica usaremos otras cosas además de
contar de forma lineal, con incrementos o sin ellos... habrá veces que queramos salir
de un bucle.
Ya lo hemos visto, por ejemplo Exit Sub salía del procedimiento, ¿recuerdas el Exit
For?
Para salir de los bucles podremos Exit y a continuación For, Do, etc. Pero NO
podremos salir de un bucle WHILE/WEND.
Ya veremos ejemplos para estos casos y otros que surgirán más adelante.
Bien, creo que ya hemos dado demasiadas vueltas con tanto bucle, para terminar: los
ejercicios esos que tanto les gustan.
Bueno, hasta aquí esta primera guía que contiene tema 1 y 2 , pues creo que con
esto se pueden ir "entreteniendo". Con estas dos Asignaciones…QUE LES DEJO POR
CLASSROOM
EJERCICIOS
PEDRO 20 MARTHA 15
ALFREDO 18 MARIA 19
JUAN 14 LUZ 13
LUIS 12 LUISA 18
CARLOS 10 MARYCARMEN 16
FREDDY 16 KARLA 16
JOSE 17 ALYS 19
FEDERICO 14 FABIANNA 20
FELIPE 12