INTRODUCCIÓN
Visual Basic 6.0 es uno de los lenguajes de programación que más
entusiasmo despiertan entre los programadores de PCs, tanto expertos como
novatos. En el caso de los programadores expertos por la facilidad con la que
desarrollan aplicaciones complejas en poquísimo tiempo (comparado con lo que
cuesta programar en Visual
C++, por ejemplo). En el caso de los programadores novatos por el hecho
de ver de lo que son capaces a los pocos minutos de empezar su aprendizaje. El
precio que hay que pagar por utilizar Visual
Basic 6.0 es una menor
velocidad o eficiencia en las aplicaciones.
Visual Basic 6.0 es un lenguaje de programación visual, también
llamado lenguaje de 4ª generación. Esto quiere decir que un gran número de
tareas se realizan sin escribir código, simplemente con operaciones gráficas
realizadas con el ratón sobre la pantalla.
Visual Basic 6.0 es también un programa basado en objetos, aunque no orientado a objetos como C++ o Java. La diferencia está
en que Visual Basic 6.0 utiliza objetos con propiedades y métodos, pero carece de
los mecanismos de herencia y polimorfismo propios de los verdaderos
lenguajes orientados a objetos como Java y C++.
En este primer capítulo se
presentarán las características generales de Visual
Basic 6.0, junto con algunos ejemplos sencillos que den idea de la
potencia del lenguaje y del modo en que se utiliza.
PROGRAMAS
SECUENCIALES, INTERACTIVOS
Y ORIENTADOS A EVENTOS
Existen distintos tipos de
programas. En los primeros tiempos de los ordenadores los programas eran de
tipo secuencial (también llamados tipo batch) Un programa
secuencial es un programa que se arranca, lee los datos que necesita, realiza
los cálculos e imprime o guarda en el disco los resultados. De ordinario,
mientras un programa secuencial está ejecutándose no necesita ninguna
intervención del usuario. A este tipo de programas se les llama también programas basados u orientados a
procedimientos o a algoritmos (procedural languages).
Este tipo de programas siguen utilizándose ampliamente en la actualidad, pero
la difusión de los PCs ha puesto de actualidad otros tipos de programación.
Los programas interactivos exigen la intervención del
usuario en tiempo de ejecución, bien para suministrar datos, bien para indicar
al programa lo que debe hacer por medio de menús. Los programas interactivos
limitan y orientan la acción del usuario. Un ejemplo de programa interactivo
podría ser Matlab.
Por su parte los programas orientados a eventos son los programas típicos de Windows, tales como Netscape, Word, Excel y PowerPoint. Cuando uno
de estos programas ha arrancado, lo único que hace es quedarse a la espera de
las acciones del usuario, que en este caso son llamadas eventos.
El usuario dice si quiere
abrir y modificar un fichero existente, o bien comenzar a crear un fichero
desde el principio. Estos programas pasan la mayor parte de su tiempo esperando
las acciones del usuario (eventos) y respondiendo a ellas. Las acciones que el
usuario puede realizar en un momento determinado son variadísimas, y exigen un
tipo especial de programación: la
programación orientada a eventos. Este tipo de programación es
sensiblemente más complicada que la secuencial y la interactiva, pero Visual Basic 6.0 la hace especialmente sencilla
y agradable.
PROGRAMAS PARA
EL ENTORNO WINDOWS
Visual Basic 6.0 está orientado a la realización de programas
para Windows,
pudiendo incorporar todos los elementos de este entorno informático: ventanas,
botones, cajas de diálogo y de texto, botones de opción y de selección, barras
de desplazamiento, gráficos, menús, etc.
Prácticamente todos los
elementos de interacción con el usuario de los que dispone Windows
95/98/NT/XP/7 pueden ser programados en Visual Basic 6.0 de un modo muy sencillo. En
ocasiones bastan unas pocas operaciones con el ratón y la introducción a través
del teclado de algunas sentencias para disponer de aplicaciones con todas las
características de Windows
95/98/NT/XP/7. En los siguientes apartados se introducirán algunos
conceptos de este tipo de programación.
Modo de Diseño y Modo
de Ejecución
La aplicación Visual Basic de Microsoft puede trabajar de dos modos
distintos: en modo de diseño y en modo de ejecución. En modo de diseño el usuario construye
nteractivamente la aplicación, colocando controles en el formulario, definiendo
sus propiedades, y
desarrollando funciones para gestionar los eventos.
La aplicación se prueba en modo de ejecución. En
ese caso el usuario actúa sobre el programa (introduce eventos) y prueba cómo
responde el programa. Hay algunas propiedades de los controles que deben establecerse en modo
de diseño, pero muchas otras pueden cambiarse en tiempo de ejecución desde el programa
escrito en Visual Basic 6.0,
en la forma en que más adelante se verá. También hay propiedades que sólo pueden establecerse
en modo de ejecución y que no son visibles en modo de diseño.
Todos estos conceptos –controles, propiedades, eventos, etc.- se
explican en los apartados siguientes.
Formularios y Controles
Cada uno de los elementos
gráficos que pueden formar parte de una aplicación típica de Windows 95/98/NT/XP/7 es
un tipo de control:
los botones, las cajas de diálogo y de texto, las cajas de selección
desplegables, los botones de opción y de selección, las barras de
desplazamiento horizontales y verticales, los gráficos, los menús, y muchos
otros tipos de elementos son controles para Visual
Basic 6.0. Cada control debe tener un nombre a través del cual se puede
hacer referencia a él en el programa. Visual
Basic 6.0 proporciona
nombres por defecto que el usuario puede modificar.
En la terminología de Visual Basic 6.0 se llama formulario (form) a una ventana.
Un formulario puede ser considerado como una especie de contenedor para los
controles. Una aplicación puede tener varios formularios, pero un único
formulario puede ser suficiente para las aplicaciones más sencillas. Los
formularios deben también tener un nombre, que puede crearse siguiendo las
mismas reglas que para los controles.
Objetos y Propiedades
Los formularios y los
distintos tipos de controles son entidades genéricas de las que puede haber
varios ejemplares concretos en cada programa. En programación orientada a objetos (más bien basada en objetos, habría que
decir) se llama clase a estas entidades genéricas,
mientras que se llama objeto a cada ejemplar de una clase
determinada. Por ejemplo, en un programa puede haber varios botones, cada uno
de los cuales es un objeto del tipo de control command button, que
sería la clase.
Cada formulario y cada tipo
de control tienen un conjunto de propiedades que definen su aspecto gráfico
(tamaño, color, posición en la ventana, tipo y tamaño de letra, etc.) y su
forma de responder a las acciones del usuario (si está activo o no, por
ejemplo). Cada propiedad tiene un nombre que viene ya definido por el
lenguaje.
Por lo general, las
propiedades de un objeto son datos que tienen valores
lógicos (True, False)
o numéricos concretos, propios de ese objeto y distintos de las de otros
objetos de su clase. Así pues, cada clase, tipo de objeto o control tiene su
conjunto de propiedades, y cada objeto o control concreto tiene unos valores
determinados para las propiedades de su clase.
Casi todas las propiedades de
los objetos pueden establecerse en tiempo de diseño y también -casi siempre- en
tiempo de ejecución. En este segundo caso se accede a sus valores por medio de
las sentencias del programa, en forma análoga a como se accede a cualquier
variable en un lenguaje de programación. Para ciertas propiedades ésta es la
única forma de acceder a ellas. Por supuesto Visual Basic 6.0 permite crear distintos tipos
de variables, como más adelante se verá.
Se puede acceder a una propiedad de un objeto por medio del nombre del objeto a que pertenece, seguido de un punto y el nombre de la propiedad,
como por ejemplo optColor.objName.
En el siguiente apartado se
estudiarán las reglas para dar nombres a los objetos.
Nombres de objetos
En principio cada objeto de Visual Basic 6.0 debe tener un nombre, por medio
del cual se hace referencia a dicho objeto. El nombre puede ser el que el
usuario desee, e incluso Visual
Basic 6.0 proporciona nombres por defecto para los diversos controles.
Estos nombres por defecto hacen referencia al tipo de control y van seguidos de
un número que se incrementa a medida que se van introduciendo más controles de
ese tipo en el formulario (por ejemplo VScroll1,
para una barra de desplazamiento -scroll bar- vertical, HScroll1, para una barra
horizontal, etc.).
Los nombres por defecto no son
adecuados porque hacen
referencia al tipo de control, pero no al uso que de dicho control está
haciendo el programador. Por ejemplo, si se utiliza una barra de desplazamiento
para introducir una temperatura, conviene que su nombre haga referencia a la
palabra temperatura,
y así cuando haya que utilizar ese nombre se sabrá exactamente a qué control
corresponde. Un nombre adecuado sería por ejemplo hsbTemp, donde las tres
primeras letras indican que se trata de una horizontal
scroll bar, y las restantes (empezando por una mayúscula) que servirá para
definir una temperatura.
Existe una convención
ampliamente aceptada que es la siguiente: se
utilizan siempre tres letras minúsculas que indican el tipo de control,
seguidas por otras letras (la primera mayúscula, a modo de separación)
libremente escogidas por el usuario, que tienen que hacer referencia al uso que
se va a dar a ese control.
Abreviatura Control
Abreviatura Control
Eventos
Ya se ha dicho que las
acciones del usuario sobre el programa se llaman eventos. Son eventos
típicos el clicar sobre un botón, el hacer doble clic sobre el nombre de un
fichero para abrirlo, el arrastrar un icono, el pulsar una tecla o combinación
de teclas, el elegir una opción de un menú, el escribir en una caja de texto, o
simplemente mover el ratón. Más adelante se verán los distintos tipos de
eventos reconocidos por Windows
95/98/NT/XP y 7 y por Visual Basic 6.0.
Cada vez que se produce un
evento sobre un determinado tipo de control, Visual
Basic 6.0 arranca una
determinada función o procedimiento que realiza la acción
programada por el usuario para ese evento concreto. Estos procedimientos se
llaman con un nombre que se forma a partir del nombre del objeto y el nombre
del evento, separados por el carácter (_), como por ejemplo txtBox_click, que es el
nombre del procedimiento que se ocupará de responder al evento click en el objeto txtBox.
Métodos
Los métodos son funciones que también son
llamadas desde programa, pero a diferencia de los procedimientos no son
programadas por el usuario, sino que vienen ya pre-programadas con el lenguaje.
Los métodos realizan tareas típicas, previsibles y comunes para todas las aplicaciones.
De ahí que vengan con el lenguaje y que se libere al usuario de la tarea de
programarlos. Cada tipo de objeto o de control tiene sus propios métodos.
Por ejemplo, los controles
gráficos tienen un método llamado Line que se encarga de dibujar
líneas rectas. De la misma forma existe un método llamado Circle que dibuja circunferencias y
arcos de circunferencia Es obvio que el dibujar líneas rectas o circunferencias
es una tarea común para todos los programadores y que Visual Basic 6.0 da ya resuelta.
Proyectos y ficheros
Cada aplicación que se
empieza a desarrollar en Visual
Basic 6.0 es un nuevo proyecto. Un proyecto
comprende otras componentes más sencillas, como por ejemplo los formularios (que son las ventanas de la
interface de usuario de la nueva aplicación) y los módulos (que son conjuntos de
funciones y procedimientos sin interface gráfica de usuario).
¿Cómo se guarda un proyecto
en el disco? Un proyecto se compone
siempre de varios ficheros (al menos de dos) y hay que
preocuparse de guardar cada uno de ellos en el directorio adecuado y con el
nombre adecuado. Existe siempre un fichero con extensión *.vbp (Visual Basic Project)
que se crea con el comando File/Save
Project As. El fichero del proyecto contiene toda la información de conjunto. Además
hay que crear un fichero por cada formulario y por
cada módulo que tenga el
proyecto. Los ficheros de los formularios se crean con File/Save Filename As teniendo como extensión *.frm. Los ficheros de
código o módulos se guardan también con el
comando File/Save Filename
As y tienen como
extensión *.bas si se trata de un módulo estándar o *.cls si se trata de un módulo de clase (class module).
Clicando en el botón Save en la barra de herramientas se
actualizan todos los ficheros del proyecto. Si no se habían guardado todavía en
el disco, Visual Basic 6.0 abre cajas de diálogo Save As por cada uno de los ficheros
que hay que guardar.
VARIABLES CON VISUAL BASIC
Si has
estudiado pseudocódigo y tipos de variables con pseudocódigo previamente los
conocimientos adquiridos serán válidos y útiles con Visual Basic, pero con
matices. Vamos a tratar los aspectos más básicos de la declaración de variables
con Visual Basic y a dar algunas orientaciones a través de las que profundizar
en el manejo de variables.
NOMBRES Y
TIPOS DE VARIABLES. DECLARACIÓN. Option Explicit.
Para
establecer nombres de variables puedes ver las indicaciones que se dan en el
curso “Bases de la programación Nivel I” de aprenderaprogramarcom, apartado
“Nombres de variables”. Visual Basic permite no declarar una variable antes de
ser usada. Por tanto, en cualquier punto de un programa podríamos escribir algo
similar a “Mostrar velocidad01”, sin necesidad de haber declarado la variable
velocidad01. ¿Qué nos mostrará si no hemos asignado contenido a la variable
velocidad01? Visual Basic es de los lenguajes que asignan automáticamente
contenido cero, vacío o falso a una variable, dependiendo de qué tipo sea. Por
tanto, se nos mostraría cero, “ ”, o falso. Conocido que no es estrictamente
obligatorio, nosotros vamos a trabajar con Visual Basic realizando declaración
de variables siempre. Los motivos para ello ya han sido expuestos, pero podemos
resumirlos en:
· Generar
buenos programas.
· Evitar
errores y confusiones.
El propio
Visual Basic dispone de una instrucción que obliga a tener que declarar todas las
variables, denominada Option Explicit. La obligación de declaración de
variables puede establecerse de dos maneras.
a) En la
ventana de código escribir Option Explicit (en las versiones más
modernas debe escribirse Option Explicit On).
b) En el menú Herramientas, selecciona Opciones...
y en la pestaña Editor (en otras versiones Herramientas, Opciones, Proyectos y
Soluciones, Valores predeterminados de VB) establece (o comprueba que está establecida)
la opción Requerir declaración de variables como activa ó Option Explicit On.
Ten en
cuenta que la opción a) es manual, y tendríamos que escribir Option Explicit
cada vez que fuéramos a programar, mientras que la opción b) es automática y va
a hacer que cada vez que arranquemos Visual Basic nos obligue a declarar
variables sin tener que estar escribiendo código. Por tanto, activa la opción
automática (o comprueba que esté activada) y así evitaremos olvidos. No vamos a
volver a incidir en esto, pero siempre vamos a considerar que trabajamos con
Option Explicit activado. ¿Qué ocurrirá si utilizamos en el código una variable
que no ha sido declarada? En este caso Visual Basic impedirá la ejecución del
programa mostrando el mensaje de error: “Error de compilación. Variable no
definida / no declarada” así como la línea de programa donde ha aparecido
la variable no declarada. Siempre que exista al menos una variable no declarada
ocurrirá esto, lo cual nos obliga a declarar todas y cada una de las variables.
En cuanto a los tipos de
variables, Visual Basic las clasifica en función del tipo de dato que
contienen. Veamos las más usuales.
TIPO DE DATOS
|
ABREVIATURA
|
MEMORIA REQUERIDA
|
RANGO DE VALORES
|
EQUIVALENCIA CON USADAS EN
PSEUDOCÓDIGO
|
OBSERVACIONES
|
Integer
(Entero)
|
%
|
2 bytes ó 4 bytes según versión
|
- 32768 a 32767 ó
-2.147.483.648 a 2.147.483.647 según versión
|
Entero
|
Uso en contadores, control de
bucles etc.
|
Long
(Entero largo)
|
&
|
4 bytes ó 8 bytes según versión
|
- 2147483648 a
2147483647 ó -9,2E+18 a 9,2E+18 según versión
|
Entero
|
Igual que integer pero admite
un rango más amplio
|
Single
(Decimal simple)
|
!
|
4 bytes
|
- 3,4·1038
a
3,4·1038
|
Real
|
Hasta 6 decimales o más según
versión. También admite enteros
|
Double
(Decimal doble)
|
#
|
8 bytes
|
- 1,79·10308
a
1,79·10308
|
Real
|
Hasta 14 decimales o más según
versión. También admite enteros
|
Boolean
(Booleano)
|
No tiene
|
2 bytes
|
True
o
False
|
Booleano
|
False es el valor
predeterminado y va asociado a cero
|
String
|
$
|
10 bytes + 1 byte por cada carácter
|
0
a
2·109 caracteres
|
Alfanumérica
|
Texto de longitud variable
|
Variant (Object en otras
versiones)
|
No tiene
|
Variable
|
Los del tipo double para números o los del tipo
string para texto
|
No tiene
|
Admite números enteros,
decimales o texto
|
Conociendo
ya el significado de Option Explicit, los tipos de variables y cómo nombrarlas,
veamos ahora cómo declararlas. Hay distintas formas y sitios para declarar
variables con Visual Basic. Veremos ahora una forma básica que nos permita
empezar a trabajar y, de paso, crear nuestro primer programa.
Usaremos para ello la instrucción
Dim. Su sintaxis será:
Dim [Nombre de variable] As
[Tipo de variable]
|
El lugar
donde realizaremos la declaración de variables será la cabecera del código
asociado al formulario. Así pues, crea un nuevo proyecto (Menú archivo
--> Nuevo Proyecto --> Exe estándar ó Menú Archivo --> Nuevo
proyecto --> Aplicación de Windows Forms). Vete a la ventana de
código (Ver ---> Código) donde quizás te aparezca una línea que ponga Option
Explicit ó Public Class Form1 End Class. Escribe una nueva línea de código
(debajo de Option Explicit o debajo de Public Class Form1) con este contenido:
Dim Numerodeplantas As Integer
|
Has
declarado la variable Numerodeplantas como tipo entero. También puedes usar la
abreviatura correspondiente al tipo Integer de esta forma:
Dim Numerodeplantas%
|
Usar el
símbolo % unido al nombre de la variable declarada equivale a escribir “As
Integer”, lo cual nos supone ahorrar unas cuantas pulsaciones de teclas.
En
algunas versiones se permite declarar una variable para la que no se especifica
tipo de forma extendida o abreviada. Si esto se hiciera y fuera permitido, la
variable es automáticamente asignada por Visual Basic al tipo Variant. Así si
escribimos:
Dim Numerodeplantas
|
Hay dos
opciones: bien obtenemos un error de compilación (si la versión de
Visual Basic que estemos usando no admite esta declaración), bien la variable
Numerodeplantas es considerada por Visual Basic como tipo Variant. Todavía no
está definido si es de tipo numérico (números) o alfanumérico (texto). En este
caso la definición se producirá a posteriori cuando asignemos contenido a la
variable. Otra forma de declarar la variable como tipo genérico (Variant u
Object, según la versión) es usar la expresión:
Dim
Numerodeplantas As Variant (ó Dim Numerodeplantas As Object)
|
Esta
expresión no tiene abreviatura. Siempre será preferible especificar “As
Variant” o “As Object” antes que declarar la variable sin especificación
alguna. ¿Por qué? Simplemente porque al especificar As Variant ó As Object
dejamos constancia de que nosotros, como programadores, hemos decidido crear
esa variable como tipo Variant u Object. Si no se especifica puede dar la
impresión de que se nos ha olvidado indicar el tipo de variable.
Las
variables Variant u Object son un “caso especial”. Las podríamos calificar de
potentes y peligrosas. Potentes porque a diferencia de otro tipo de variables,
pueden contener distinto tipo de información como texto, números enteros o
decimales, etc. y con pocas limitaciones. Peligrosas porque es fácil incurrir
en un mal uso de ellas dando lugar a programas difíciles de leer o depurar y
más ineficientes.
Supón que
declaras: Dim edad As Variant ó Dim edad As Object, como variable destinada a
contener la edad de una persona. Sabemos que la edad de una persona puede
oscilar entre cero y 150 años (siendo groseros), y que sus valores no son
decimales. Por tanto puede declararse como tipo Integer sin ningún problema.
¿Qué supone el declararla sin especificación de tipo (tipo Variant)?
a) Vamos a ocupar mayor cantidad de memoria al
sistema cuando podríamos haber ocupado una menor cantidad. Es una falta de
eficiencia y economía.
b) A la hora de liberar de errores al programa
(depurarlo) no sabremos a ciencia cierta qué tipo de datos contiene la variable
edad, ya que puede contener tanto el valor numérico 56 como el valor
alfanumérico “cincuenta y seis”. Hacemos al programa más difícil de entender.
A la hora
de declarar variables conviene seguir las pautas indicadas en el curso
"Bases de la programación nivel I" de aprenderaprogramar.com y,
resumidamente:
· Elegir siempre el tipo de variable más
sencillo posible. Consideraremos que el grado de sencillez viene definido
por la memoria requerida (a menor memoria requerida mayor es la sencillez).
Esto redunda en un menor consumo de recursos del sistema y en una mayor rapidez
de las operaciones que realiza el ordenador.
· Realizar declaraciones ordenadas y claras.
· Evitar el uso del tipo Variant u Object en la
medida de lo posible, es decir, sólo usar estos tipos cuando realmente sean
necesarios.
Hasta
ahora estamos viendo las bases que nos van a permitir construir programas. A
medida que vayamos avanzando, empezaremos a construir pequeños programas para
aprender practicando.
DECLARACIÓN DE VARIABLES EN VISUAL BASIC
A la hora
de declarar variables conviene seguir las pautas indicadas en el curso “Bases
de la programación nivel I” de aprenderaprogramar.com y, resumidamente:
· Elegir siempre el tipo de variable más sencillo
posible. Consideraremos que el grado de sencillez viene definido por la memoria
requerida (a menor memoria requerida mayor es la sencillez). Esto redunda en un
menor consumo de recursos del sistema y en una mayor rapidez de las
operaciones que realiza el ordenador.
· Realizar declaraciones ordenadas y claras.
· Evitar el uso del tipo Variant u Object en la
medida de lo posible.
Visual Basic permite declarar variables en
múltiples líneas una por línea pero también varias variables en una línea.
Veamos ejemplos:
Expresión abreviada
|
Equivalente
|
a) Dim i%, j%, k%
|
a´)
Dim i As Integer, j As Integer, k As Integer
|
b)
Dim i% : Dim j% : Dim k%
|
b´)
Dim i As Integer : Dim j As Integer : Dim k As Integer
|
c)
Dim i%, j%, k As Integer
|
c´)
Dim i As Integer, j As Integer, k As Integer
|
d) Dim
i%
Dim
j%
Dim
k%
|
d´)
Dim i As Integer
Dim k
As Integer
|
e) Dim
i As Integer
Dim
j%, k%
|
e´)
Dim i As Integer
Dim j As Integer, k As Integer
|
Las
opciones a), b), c), d), e) dan lugar a un mismo resultado. Se declaran tres
variables tipo Integer denominadas i, j, k. Las opciones a´- e´), escritas de
forma extendida, también son válidas y con el mismo resultado. Nosotros nos
decantamos por usar opciones como la c), donde en una misma línea aparezcan
variables de un tipo de forma abreviada, excepto la última que se pone
extendida de forma aclaratoria, y en las que las variables de una misma
línea tienen algún tipo de relación. Por ejemplo tratarse de contadores para
bucles.
Ten en
cuenta que la declaración Dim i, j, k As Integer no declara tres variables de
tipo entero de forma correcta. Esta sintaxis es imprecisa y por tanto no
debemos utilizarla. Según la versión de Visual Basic que estemos usando esto
puede generar errores o problemas. Conviene tener cuidado a la hora de realizar
declaraciones de variables para evitar prácticas de este tipo.
Una expresión como Dim i!, j%, k& equivale a Dim i As Single, j As
Integer, k As Long. Esta
expresión es válida, aunque como hemos dicho preferimos no declarar distintos
tipos de variables en una misma línea.
EJERCICIO
Realizar una declaración de variables para las
siguientes propuestas de programas.
a) Un programa que muestra un mensaje
de bienvenida.
b) Un programa que nos pide nuestra edad y
nos muestra el año en que nacimos.
c) Un programa que nos muestra el valor medio
de tres magnitudes.
d) Un programa que trabaja con: tres contadores
para bucles, tres valores de tensión en una viga (de magnitud no conocida),
valores de longitud de la viga, canto y ancho y un valor interruptor que
permite o impide que se muestren resultados.
SOLUCIÓN
a) Dim mensaje As String. También es
válida la expresión abreviada Dim mensaje$.
b)
Dim edad As Integer. También
podemos usar la expresión abreviada Dim edad%.
Se podría definir otra variable llamada
añonacimiento según el programador lo estime oportuno o no.
c)
Dim magnitud1!, magnitud2!, magnitud3 As Single
Dim media
As Single
Hemos
utilizado el tipo Single para cubrirnos las espaldas. No sabemos con qué tipo
de valores vamos a trabajar y por ello cogemos un tipo de variables bastante
amplio como es el Single. Preferimos no coger Double si no es estrictamente
necesario.
Hemos
utilizado dos líneas pero sólo un tipo de variable ¿Por qué? El programador
ordena la declaración de variables como estime más conveniente. En este caso
ordenamos “valores para el cálculo” en una línea y “resultados” en otra.
Resulta más fácil de leer y analizar que estando todo en una sola línea.
d) Dim i%, j%, k As Integer
Dim tension1!, tension2!, tension3 As
Single
Dim largo!, canto!, ancho As Single
Dim Muestraresultados As Boolean.
Siempre
será preferible usar las expresiones tension1, tension2 y tension3 antes que
t1, t2 y t3 que resultan más confusas. Sin embargo, este tipo de decisiones
siempre quedan a criterio del programador.
CONTENIDO Y ASIGNACIÓN DE CONTENIDO A VARIABLES
Las
normas para asignar contenido a variables serán las indicadas en el curso
“Bases de la programación nivel I” de aprenderaprogramar.com, teniendo en
cuenta que de forma general usaremos estas equivalencias.
Nota: las
variables "todo en uno" se denominan Variant en algunas versiones mientras
que en otras el tipo Variant no existe y su equivalente sería el tipo
Object.
Ejemplos
de asignación de contenidos son estos:
Declaración
|
Ejemplo
asignación contenidos
|
Dim A As Integer
|
A = 123
|
Dim A As Single
|
A = - 3323.57
|
Dim A As String
|
A = “Hay que mejorar”
|
Dim A As String
|
A = “123 coches”
|
Dim A As String
|
A = “Son 35,37 euros”
|
Dim Salario As Integer
|
A = 30500
|
Dim Salario As Single
|
A = 30500
|
Dim Salario As String
|
|
Dim A%, B%, Suma%
|
A = 5 + 2
B = 32
Suma = A +
B [Suma valdrá 39]
|
Dim A%, B%, C%, D%, E%
|
A = 5
B = 32
C = A * B [C
toma el valor 160]
D = A + C [D toma
el valor 165]
E =
D [E toma el valor 165]
|
Dim Agotamiento As Boolean
|
Agotamiento = True
|
Nota: la
separación decimal normalmente es un punto, pero tendrás que comprobarlo en tu
computador porque puede variar en función de las configuraciones aplicadas. Es
decir, normalmente se escribirá un decimal como 3.33 en lugar de cómo 3,33.
Un programa que conste de:
Dim
A As Integer
A = 7 * B |
dará
lugar a un error debido a que B no está declarada.
En
cambio:
Dim A%, B%
A = 7 * B |
Supone que A valga cero, ya que
si no se asigna un valor a B ésta tiene por contenido el valor por
defecto, es decir, cero. 7 * B equivale en este caso a 7 * 0, que vale
cero.
IF … THEN (SI … ENTONCES) E IF …
THEN … ELSE (SI … ENTONCES … SINO)
La
sintaxis a emplear con Visual Basic es muy similar a la que se estudia en los cursos
de algoritmia y pseudocódigo, con la sustitución del Si por If, del Entonces
por Then, del SiNo por Else y del Finsi por End If. La única salvedad a tener
en cuenta es que Visual Basic permite además de la escritura en bloques la
escritura en una sola línea.
Sintaxis en bloque:
If
[condición] Then
Instrucción
1
Instrucción 2 · · · Instrucción n
Else
Instrucción
A
Instrucción B · · · Instrucción Z
End If
|
Sintaxis
en una sola línea:
If [condición] Then Instrucción 1 Else
Instrucción A
|
También
es posible encadenar varias acciones derivadas de un Then o de un Else en una
sola línea. Sin embargo, recomendamos usar la opción de sintaxis en una
sola línea exclusivamente para desarrollos sencillos como puede ser una
instrucción en caso de que se cumpla la condición y otra en caso de que no se
cumpla. Si intervienen varias instrucciones, siempre resultará más legible usar
el formato de bloque.
La
instrucción If ... Then es anidable dentro de sí misma, siendo siempre
preferible el formato de bloque cuando se vayan a generar anidamientos.
Ejemplo:
If A > 7 And B < 5 Then
MsgBox ("A es mayor que 7
y B menor que 5")
End If
|
También
válido es:
If A
> 7 And B < 5 Then MsgBox ("A es mayor que 7 y B menor que
5")
|
Si
introducimos una cláusula Else el modelo es:
If A > 7 And B < 5 Then
MsgBox ("A es mayor que 7
y B menor que 5")
Else
MsgBox ("A no es mayor
que 7 ó B no es menor que 5")
End If
|
También
válido:
If A > 7 And B < 5 Then MsgBox ("A es
mayor que 7 y B menor que 5") _
Else MsgBox ("A no es mayor que 7 ó B no es
menor que 5")
|
Una
cuestión a tener en cuenta es que cuando la condición indicada por un If
en bloque no se cumple, se produce el salto a la siguiente instrucción
inmediatamente posterior a la palabra End If. En cambio, cuando la condición
indicada por un If en una línea no se cumple, se produce el salto a la
siguiente línea ignorando todas las instrucciones que pudieran encontrarse en
la misma línea del If. Veámoslo con un ejemplo. Ejecuta estos dos pequeños programas:
Programa 1
|
Rem Curso Visual Basic
aprenderaprogramar.com
Option Explicit Dim a% Private Sub Form_Load() a = 3 If a = 5 Then MsgBox("Se cumple que a vale 5") End If a = 25 MsgBox("El valor actual de a es " & a) End Sub |
Programa 2
|
Rem Curso Visual Basic
aprenderaprogramar.com
Option Explicit Dim a% Private Sub Form_Load() a = 3 If a = 5 Then MsgBox ("Se cumple que a vale 5"): a = 25 MsgBox ("El valor actual de a es " & a) End Sub |
En el
programa 1 el resultado es que se muestra en pantalla "El valor actual de
a es 25", mientras que en el programa 2 se muestra "El valor
actual de a es 3". La razón para que en la versión 2 no se ejecute
la orden a = 25 es que al no cumplirse la condición del If se produce un salto
a la siguiente línea, ignorándose todas las instrucciones que se encuentren en
la misma línea del If. En general consideramos recomendable habituarse a usar
la sintaxis de bloque siempre pues resulta más fácil de interpretar y evita
posibles confusiones como ésta, donde muchas personas podrían pensar que si no
se cumple el if se ejecutará la instrucción que aparece en la misma línea a
continuación.
INSTRUCCIÓN SEGÚN (CASO) HACER
(SELECT CASE)
La
sintaxis a emplear con Visual Basic es la que indicamos a continuación. Como se
podrá comprobar, mediante esta instrucción establecemos una serie de
casos que se podrían cumplir para el valor de una expresión o variable, y en
función del valor de la variable se ejecutarán una serie de instrucciones
asociadas u otra.
Select Case [expresión]
Case
[valor expresión 1]
Instrucción 1 Instrucción 2 Case [valor expresión 2] Instrucción 3 Instrucción 4 . . . Case [valor expresión n] Instrucción k Case Else Instrucción m |
Select Case en Visual Basic
equivale a la instrucción switch de otros lenguajes.
La
expresión a evaluar puede ser un valor numérico o una cadena de texto.
Sólo se puede evaluar una expresión y no múltiples expresiones. La evaluación
de expresiones puede ser:
a) De coincidencia: por ejemplo, Case 12 indicaría
que si la expresión evaluada vale 12 se ejecutarán las instrucciones anexas.
b) De intervalo: usando la palabra clave
To. Por ejemplo, Case 12 To 14 indicaría que si la expresión evaluada tiene un
valor comprendido entre 12 y 14 (incluidos los extremos de los intervalos), se
ejecutarán las instrucciones anexas.
c) De comparación: usando la palabra clave Is. Por
ejemplo, Case Is <= 14 indicaría que si la expresión evaluada tiene un valor
menor o igual a 14 se ejecutarán las instrucciones anexas.
Cuando
varios casos son válidos, sólo se ejecutan las instrucciones asociadas
al primer caso verificado, siguiendo el flujo del programa por la siguiente
instrucción después de End Select. Esto debemos tenerlo muy en cuenta, ya que
si pretendemos que cuando se cumplan dos condiciones se ejecuten sendos bloques
de instrucciones, convendrá hacerlo a través de la instrucción If en vez de a
través de Select Case.
Las
instrucciones Select Case se pueden anidar. Cada instrucción Select Case debe
tener su correspondiente terminación End Select.
La
instrucción Select Case presenta similitudes marcadas con la instrucción If -
Then. Por ello, en general podremos conseguir resultados similares con ambas
instrucciones y elegir usar una u otra dependerá de nuestro gusto y de cuál se
adapte mejor a nuestros intereses, que en general serán ahorrar código y
conseguir claridad para cumplir el objetivo. Otras veces será interesante
anidar ambas instrucciones.
Prueba el siguiente código:
Código
|
Rem Curso Visual Basic aprenderaprogramar.com Option Explicit Dim A As Integer Private Sub Form_Load() A = 12 Select Case A Case 12 MsgBox ("A vale 12") Case Is < 14 MsgBox ("A es menor que 14") Case 160 To 200 MsgBox ("A está comprendida entre 160 y 200") Case Else MsgBox ("No se ha verificado ninguna de las condiciones previstas") End Select End Sub |
El
resultado es que se muestra en pantalla "A vale 12". Sin embargo, a
pesar de que la hipótesis A < 14 se cumple, no llega a evaluarse y
por tanto las instrucciones asociadas a este caso no se ejecutan.
ESTRUCTURAS DE REPETICIÓN
(BUCLES) CON VISUAL BASIC
Vamos a
ver cómo materializar con Visual Basic estructuras de repetición que permitirán
que en nuestros programas se realice un proceso n veces. En concreto veremos
las instrucciones Desde … Siguiente (For … Next) con su cláusula
Paso (Step), la instrucción Mientras … Hacer (Do While … Loop) y la instrucción
Hacer … Repetir Mientras (Do … Loop While).
Muchas
veces podremos optar indistintamente por usar una instrucción u otra. En otros
casos, es recomendable decantarse por una de ellas por hacer el programa más
legible o sencillo que usando otras opciones.
INSTRUCCIÓN DESDE ... SIGUIENTE
(FOR ... NEXT) Y CLÁUSULA PASO (STEP)
La sintaxis a emplear con Visual
Basic es la siguiente:
For VAR = Vi To Vf
Instrucción 1
Instrucción 2
·
·
·
Instrucción n
Next
VAR
|
El
incremento que sufre el contador es, por defecto, unitario. Es
decir, el primer valor que toma VAR en el bucle será Vi, el segundo Vi + 1, el
tercero (Vi + 1) + 1, etc. La modificación de dicho valor de incremento la
realizaremos a través de la cláusula Step después del valor Vf. Step 2
implicará que en cada repetición del bucle el contador se incremente en dos
unidades, Step 5 implicará que en cada repetición del bucle el contador se
incremente en cinco unidades. Un paso negativo del tipo Step -1 supone que el
contador decrece en vez de incrementarse. Si el paso es negativo, Vi
necesariamente habrá de ser mayor que Vf, ya que en caso contrario no se
producirá la entrada en el bucle.
Con este código se nos muestra en
pantalla 3 veces hola (se ha invertido el sentido del bucle):
Código
|
Rem Curso Visual Basic aprenderaprogramar.com Option Explicit Dim VAR As Integer Dim Vi As Integer Dim Vf As Integer Private Sub Form_Load() Vi = 1 Vf = 3 For VAR = Vf To Vi Step –1 '[También supondría tres repeticiones For VAR = Vi to Vf] MsgBox ("hola") Next VAR End Sub |
Con
Visual Basic resulta admisible usar Next sin indicar la variable que está
sirviendo de guía del bucle, pues todo bucle ha de tener un cierre. Sin
embargo, no lo creemos recomendable pues puede dificultar la lectura y
depuración de los programas.
La
instrucción For ... Next es anidable dentro de sí misma o dentro de otros tipos
de bucles o estructuras, debiendo seguir las pautas que ya hemos comentado.
INSTRUCCIÓN
MIENTRAS ... HACER (DO WHILE ... LOOP)
La
sintaxis que hemos de seguir es la siguiente:
Do While [condición]
Instrucción 1
Instrucción 2
.
.
.
Instrucción n
Loop
|
Las
instrucciones tipo Do While son anidables dentro de sí mismas o dentro de otras
estructuras. Es importante verificar que los bucles diseñados con esta
instrucción dispongan de una condición de salida válida.
Ejemplo: k = 0: Do while k < 5. Dentro del bucle tendremos que incrementar el valor
de k, k = k +1.
INSTRUCCIÓN
HACER ... REPETIR MIENTRAS (DO ... LOOP WHILE)
La
sintaxis a utilizar es:
Do
Instrucción 1
Instrucción 2
.
.
.
Instrucción n
Loop While [condición]
|
Un Do ...
Loop While es anidable dentro de sí mismo o dentro de otras estructuras. Es
importante verificar que los bucles diseñados con esta instrucción dispongan de
una condición de salida válida.
Ejemplo:
Do
LabelTabla.Text = LabelTabla.Text & "Iteración " & k &
vbCrLf
k = k + 1
Loop While k <= 5


No hay comentarios:
Publicar un comentario