Visual Basic

 

 

Liebre german ariel

 

ELEMENTOS DEL LENGUAJE

 

El código en VB se almacena en módulos. Cada módulo está subdividido en distintas secciones; una para cada objeto del módulo. Cada sección de código puede contener uno o más procedimientos distintos. Y un procedimiento está formado por comentarios, declaraciones de constantes y de variables, expresiones, sentencias y llamadas a procedimientos.

 

Comentarios

Cuando una frase va precedida de una comilla simple (‘), VB interpreta que esa frase es un comentario y no ejecuta acción alguna sobre ella. Por ejemplo:

 

‘ Cálculo de la velocidad media

suma = 0 ‘ Se inicia la variable suma con el valor 0

 

Constantes numéricas y de caracteres

Una constante es un valor que no cambia durante la ejecución de un programa. VB admite números decimales, hexadecimales y octales. Un número hexadecimal va precedido por &H y un número octal va precedido por &O. El siguiente ejemplo muestra los mismos números en decimal, hexadecimal y octal.

 

9                      15                    1034                           son números decimales

&H9                 &HF                &H40A                        son números hexadecimales

&O11              &O17              &O2012                      son números octales

 

Una constante de caracteres o constante alfanumérica es una cadena de caracteres encerrada entre comillas dobles. Por ejemplo:

 

“Grados centígrados: “

 

Variables

Una variable contiene un valor que puede modificarse a lo largo de la ejecución de la aplicación. Cada variable tiene atributos propios, como:

¬      Nombre: es el nombre que utilizamos para referirnos a la variable en la aplicación.

¬      Tipo: el tipo determina qué clase de valores puede almacenar la variable.

¬      Ámbito: el ámbito de una variable especifica en qué parte de la aplicación es conocida la variable y por lo tanto puede utilizarse.

 

Nombres de variables

El nombre de una variable tiene que empezar por una letra, puede tener hasta 255 caracteres de longitud y debe ser único dentro de su ámbito.

Los caracteres pueden ser letras, dígitos, el carácter de subrayado y los caracteres de declaración del tipo de variable (%, &, ¡, #, @ y $).

No se puede utilizar el punto ni otros caracteres que tienen un significado especial para VB; por ejemplo, los paréntesis. Los caracteres de declaración del tipo, cuando se utilicen, tiene que ocupar la última posición.

El nombre de una variable no puede ser una palabra reservada. Una palabra reservada tiene un significado especial para VB. Son palabras reservadas las sentencias predefinidas (como For), los nombres de funciones (como Val), métodos (como Hide), propiedades (como Caption), tipos (como Long) y operadores (como And).

 

Tipos de datos intrínsecos

Todas las variables tienen un tipo de dato que determina la clase de datos que pueden almacenar. Una variable puede ser de alguno de los tipo siguientes:

 

Tipo

Descripción

Car-Tipo

Rango

Integer

Entero (2 bytes)

%

-32768 a 32767

Long

Entero largo (4 bytes)

&

-2147483648 a 2147483647

Single

Coma flotante.

Precisión simple (4 bytes)

¡

-3.40E+38 a 3.40E+38

Double

Coma flotante.

Precisión doble (8 bytes)

#

-1.79D+308 a 1.79D+308

Currency

Número con punto decimal fijo (8 bytes)

@

+/- 922337203685477.5807

String

Cadena de caracteres (10 bytes + 1 byte por carácter)

$

231 caracteres (64 K si es de longitud fija)

Byte

Carácter (1 byte)

(ninguno)

0 a 255

Boolean

Boolean (2 bytes)

(ninguno)

True o False

Date

Fecha/Hora (8 bytes)

(ninguno)

1/Enero/100 a 31/Diciembre/9999

Object

Referencia a un objeto (4 bytes)

(ninguno)

Cualquier referencia a tipo Object

Variant (por omisión)

Con números 16 bytes. Con cars. 22 bytes + 1 byte por caracter

(ninguno)

Almacena datos de cualquier tipo de los anteriores

Decimal

Números con 0 a 28 decimales (12 bytes) (No se puede declarar una variable de este tipo. Sólo se puede utilizar con un Variant)

(ninguno)

Valor mayor con 0 decs: +/-79.228.162.514.264.337.593.543.950.335

Valor mayor con 28 decs: +/-7,9228162514264337593543950335 

 

Un número expresado en coma flotante es un número fraccionario con punto decimal variable. En el tipo Currency el punto decimal es fijo (cuatro decimales).

    Visual basic

Declaración de variables

 

Antes de utilizar una variable, es aconsejable declarar su tipo. Una forma de hacerlo es utilizando la sentencia Dim (o una de las palabras Public, Private o Static). Cualquier declaración de éstas inicia las variables numéricas con el valor cero y las variables alfanuméricas con el carácter nulo. Por ejemplo:

 

Dim I As Integer

Dim R As Double

Dim Nombre As String

Dim Etiqueta As String * 10

Dim F as Currency

Dim L As Long, X As Currency

 

Observe que en una sentencia Dim puede realizar más de una declaración. La cláusula opcional As tipo de la instrucción Dim le permite definir el tipo de dato o de objeto de la variable que va a declarar.

 

Cuando se declara una variable y no se especifica su tipo, se asume que es de tipo Variant. Por ejemplo:

 

Dim A. B As Integer

 

La sentencia anterior le puede inducir a pensar que A y B son de tipo entero, lo cual no es cierto; A es de tipo Variant (por omisión) y B es de tipo Integer.

 

Otra forma de declarar una variable es utilizando los caracteres de declaración de tipo. Por ejemplo:

 

I%               Variable entera

R#               Variable real de precisión doble

Nombre$      Cadena de caracteres

F@               Variable fraccionaria

 

Cuando se utiliza una variable que no se ha declarado, se asume que es de tipo Variant. Por ejemplo:

 

L = “Dato:”  ‘variable de tipo String

‘...

L = 3.25678 ‘variable de tipo Double

 

Suponiendo que L no ha sido declarada explícitamente, las sentencias anteriores declaran L como una variable Variant que ha cambiado su tipo para comportarse como una cadena de caracteres, y a continuación vuelve a cambiar su tipo para comportarse como una variable de coma flotante de doble precisión.

 

Conversiones entre datos numéricos

 

Cuando una variable numérica de un tipo se asigna a otra variable numérica de un tipo diferente, VB convierte el dato asignado al tipo de la variable destino de los datos. Las conversiones se hacen de acuerdo con las reglas siguientes:

 

Dim ent1 As Integer, ent2 As Integer

Dim fracsp As Single, fracdp As Double

 

1.      Si se asigna un valor numérico de una precisión a una variable numérica de precisión diferente, el número será almacenado con la precisión declarada en el nombre de la variable destino. Por ejemplo:

 

ent1 = 40.17

ent2 = 37.83

Print ent1, ent2 ‘resultado: 40 38

 

2.      Si se asigna un valor numérico de una precisión más alta a una variable de precisión más baja, dicho valor se redondea, no se trunca. Por ejemplo:

 

fracsp = 22.3445577

ent1 = 17.5

Print fracsp, ent1 ‘resultado: 22.34456 18

ent1 = 17.4

ent2 = 17.6

Print ent1, ent2

fracsp = 22.37

Print fracsp ‘ resultado: 22.37

 

Tenga en cuenta que un valor de tipo Single no tiene más de 7 cifras significativas (cifras enteras más cifras decimales). Por lo tanto, el redondeo ocurre cuando tratamos de asignar más cifras de las aceptadas por la variable. Un razonamiento similar se puede seguir para el resto de los tipos.

 

3.      Si se cambia un número de precisión más baja a una precisión más alta, el número de precisión más alta resultante no podrá ser más exacto que el número de precisión más baja. Por ejemplo:

 

fracsp = 17.55

fracdp = fracsp

Print fracsp, fracdp  ‘resultado: 17.55  17.5499992370605

 

En este ejemplo se ha asignado un valor de precisión simple a una variable de precisión doble. Quizás usted esperaba como resultado el mismo valor asignado.

 

4.      Durante la evaluación de una expresión, todos los operandos en una operación aritmética o de relación se cambian al mismo grado de precisión, que es el del operando más preciso. Por ejemplo:

 

ent1 = 8

fracdp = 3

Print ent1 / fracdp ‘resultado: 2.66666666666667

 

 

Para probar lo expuesto, cree una nueva aplicación, asigne al formulario por omisión el título Conversiones entre datos numéricos, asigne a su propiedad AutoRedraw el valor True y a su propiedad BackColor el color blanco. Luego, escriba el siguiente código.

 

(General)

Option Explicit

Dim ent1 As Integer, ent2 As Integer

Dim fracsp As Single, fracdp As Double

 

 

Private Sub Form_Load()

  ent1 = 40.17

  ent2 = 37.83

  Print ent1, ent2 ‘resultado: 40 38

 

  fracsp = 22.3445577

  ent1 = 17.5

  Print fracsp, ent1 ‘resultado: 22.34456 18

 

  fracsp = 17.55

  fracdp = fracsp

  Print fracsp, fracdp  ‘resultado: 17.55  17.5499992370605

 

  ent1 = 8

  fracdp = 3

  Print ent1 / fracdp ‘resultado: 2.66666666666667

End Sub

 

Guarde la aplicación asignando, al formulario el nombre conver.frm y al proyecto el nombre conver.vbp, ejecútela y observe los resultados. Como práctica, defina otras variable de tipos diferentes, asígnelas valores de interés y compruebe los resultados.

 

Declaración explícita

En VB no es necesario declarar una variable antes de utilizarla. Sin embargo, esta forma de trabajar puede ser una fuente de errores. Por ejemplo:

 

 

 

Dim M As Integer, N As Integer

VarTemp = M

‘...

N = VaTemp

 

En este ejemplo, VarTemp no se ha declarado explícitamente. Esto no supone un error, ya que VB se encarga de crear dicha variable. Ahora observe que, por error, el nombre de esa variable se ha escrito mal en la última sentencia. Cuando VB encuentra un nuevo nombre, no puede determinar si es debido a un error o a la definición de una nueva variable.

 

Para evitar este tipo de errores, podemos indicar a VB que genera un mensaje de error siempre que encuentre una variable no declarada explícitamente. Para ello, como ha podido observar en la figura del ejemplo anterior, escribiremos la sentencia Option Explicit en la sección de declaraciones del formulario, del módulo o de la clase.

 

Esta sentencia opera sólo en el formulario o en el módulo donde se haya puesto. Para tener esta opción activa para todo el código de una aplicación, ejecute la orden Opciones del menú Herramientas, haga clic en la pestaña Editor y seleccione la opción Requerir declaración de variables.

 

Módulos de Visual Basic

El código de una aplicación VB se edita en módulos. Los módulos tienen incorporadas funciones automáticas de formato y comprobación de sintaxis. Hay tres tipos de módulos:

 

·         Módulo de formulario: es un fichero con extensión .frm que puede contener descripciones gráficas de un formulario, sus controles y sus valores de propiedades, declaraciones de constantes, variables y procedimientos externos a nivel del formulario, así como procedimientos conducidos por eventos y procedimientos generales.

·         Módulo estándar: es un fichero con extensión .bas que sólo contiene declaraciones y definiciones de procedimientos, tipos y datos a los que tienen acceso otros módulos de la aplicación. Las declaraciones a nivel de módulo y las definiciones en un módulo estándar son Public por omisión.

·         Módulo de clase: es un fichero con extensión .cls que contiene la definición de una clase de objetos; esto es, la definición de cada una de sus propiedades y métodos.

 

Ambito de las variables

Se entiende por ámbito o alcance de una variable el espacio de la aplicación donde la variable es visible y por lo tanto se puede utilizar. La figura siguiente indica los lugares donde se puede declarar una variable:

 

 

 

 

 

 

 

 

 

 

 

 

Aplicación

La tabla siguiente resume cómo debe declararse una variable en función del espacio donde deseamos que sea visible:

 

Ambito

Declaración

Local

Dim, Static o ReDim (dentro de un procedimiento)

Módulo

Dim o Private (sección de declaraciones del módulo)

Global

Public (sección de declaraciones de un módulo)

 

A nivel de módulo, no hay diferencias entre Dim y Private, pero se aconseja utilizar Private en contraste con Public. En un procedimiento no tiene lugar esta observación, ya que no se puede utilizar Public.

 

Variables locales

Una variable local se reconoce solamente en el procedimiento en el que está definida. Fuera de ese procedimiento, la variable no es conocida. Su utilización más común es intervenir en cálculos intermedios.

 

Para declarar una variable local a un procedimiento, coloque la sentencia correspondiente dentro del mismo. Por ejemplo, el procedimientos Form_Load que se muestra a continuación define ent1 y ent2 como variables locales.

 

Private Sub Form_Load()

  Dim ent1 As Integer, ent2 As Integer

  ent1 = 40.17

  ent2 = 37.83

  Print ent1, ent2

End Sub

 

Una variable local es reiniciada cada vez que se entra en el procedimiento. En otras palabras, una variable local no conserva el valor entre una llamada al procedimiento y la siguiente. Para hacer que esto suceda, hay que declarar la variable estática. VB inicia una variable estática la primera vez que se llama al procedimiento. Para declarar una variable estática, utilice la palabra clave Static en lugar de Dim. Por ejemplo:

 

Static ent1 As Integer

 

Para hacer que todas las variables de un procedimiento sean estáticas, puede también proceder declarando el procedimiento estático. Por ejemplo:

 

Private Static Sub Form_Load()

  ‘...

End Sub

 

Si una variable aparece en un procedimiento y no está explícitamente declarada, es por omisión local. En cualquier caso, se aconseja declarar todas las variables explicítamente.

 

Variables utilizadas dentro del módulo

Una variable declarada a nivel de módulo (formulario, estándar o clase) puede ser compartida por todos los procedimientos de ese módulo. Una variable a nivel de módulo hay que declararla con Dim o Private en la sección de declaraciones del módulo (sección General).

Este tipo de variables son por omisión estáticas.

 

Variables globales

Una variable global es una variable a nivel del módulo pero a la que se puede acceder desde cualquier otro módulo.

Para hacer que una variable sea global o pública, hay que declararla Public en la sección de declaraciones del módulo.

Por ejemplo, vuelva a la aplicación realizada anteriormente y ejecute la orden Agregar módulo del menú Proyecto. A continuación mueva, no copie, las definiciones de las variables que relizó en el formulario, al módulo estándar que acaba de crear, y guarde este módulo con el nombre conver.bas.

 

Si ahora ejecuta la aplicación, obtendrá un error: Error de compilación: Variable no definida; porque las variables han sido declaradas en conver.bas utilizando Dim, lo que restringe su utilización a los procedimientos que definamos en este módulo. Para hacer que dichas variables puedan ser utilizadas por todos los módulos de la aplicación, hay que declararlas Public.

 

Cuando una variable se declara Public en un formulario, por ejemplo en Form1, para acceder a ella desde otro módulo es necesario especificar su pertenencia: esto es, de qué objeto es dato miembro dicha variable. Por ejemplo, si a nivel de Form1 realizamos la declaración

 

Public varform As Integer

 

para acceder a esta variable desde un procedimiento del módulo estándar, procederíamos de forma similar a:

 

Public Sub Test()

  ‘varform esta definida en el formulario

  Form1.varform = 10

  Form1.Print Form1.varform

End Sub

 

Para añadir el procedimiento Test, ejecute la orden Agregar procedimiento del menú Herramientas. Para que este procedimiento se ejecute y escriba los resultados sobre el formulario, simplemente hay que invocarlo. Por ejemplo, añada al procedimiento Form_Load la línea:

 

Private Sub Form_Load()

  ‘...

  Test ‘llama al procedimiento Test del módulo estándar

End Sub

 

En un procedimiento no se pueden declarar variables globales.

 

Variables con el mismo nombre

Una variable local y otra a nivel del módulo pueden tener el mismo nombre, pero no son la misma variable. La regla para estos casos es que el procedimiento siempre utiliza la variable de nivel más cercano (local, módulo y global; en este orden). En otro caso, debe calificar la variable, por ejemplo:

 

Public Temp As Integer ‘declaración en Form1

Public Sub Test() ‘procedimiento en Modulo1

  Dim Temp As Integer

  Temp = 10 ‘referencia a la variable local

  MsgBox Form1.Temp ‘referencia a la variable global

End Sub

Si varias variables públicas comparten el mismo nombre en diferentes módulos, para diferenciarlas es necesario especificar su pertenencia. Por ejemplo, si hay una variable entera X declarada tanto en el módulo Form1 como en el Modulo1, debemos referirnos a ella así:

 

MsgBox Form1.X ‘visualiza el valor de la X de Form1

MsgBox Modulo1.X ‘visualiza el valor de la X de Modulo1

 

Es aconsejable en programación que los nombres de las variables sean diferentes entre sí, así como los nombres de las propiedades y de los módulos.

 

Constantes simbólicas

A menudo utilizamos valores constantes una y otra vez en el código, o bien el código depende de ciertos números difíciles de recordar. En estos casos, la mejor solución es definir estos valores como constantes simbólicas y utilizar en lo sucesivo los nombres que identifican estas constantes.

 

Para definir una constante simbólica, utilice la siguiente sintaxis:

 

     [Public|Private] Const constante [As tipo] = expresión

 

Si no declara explícitamente el tipo de constante (utilizando As tipo), se asigna a la constante el tipo de datos más apropiado a su valor.

 

Para nombrar una constante, se utilizan las mismas reglas que se aplican para nombrar variables. La expresión puede ser numérica, alfanumérica o de tipo fecha y hora. Por ejemplo:

 

Public Const MAX_ELEMS = 99

Public Const VERSION = “ver. 4.05.0A”

Const PI = 3.1415926, DOS_PI = 2 * PI

Const FECHA_POR_DEFECTO = #1/01/97#

 

Es aconsejable definir todas las constantes globales en un único módulo. El ámbito de una constante se define por las mismas reglas que las variables.

 

Operadores

La tabla que se muestra a continuación presenta el conjunto de operadores que soporta VB ordenados de mayor a menor prioridad respecto a cómo se evalúan cuando varios de ellos intervienen en una misma expresión. Los operadores que aparecen sobre una misma línea tienen igual prioridad. Las operaciones que se incluyan entre paréntesis se evaluarán antes, ejecutándose primero los paréntesis más internos.

 

Tipo

Operación

Operador

Aritmético

Exponenciación

^

 

Cambio de signo

-

 

Multiplicación y división

*, /

 

División entera

\

 

Resto de una división entera

Mod

 

Suma y resta

+, -

Concatenación

Concatenar o enlazar

&

Relacional

Igual, distinto, menor, mayor...