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...

=, <>, <, >, <=, >=

Otros

Comparar dos expresiones de cars.

Like

 

Comparar dos referencias a objetos

Is

Lógico

Negación

Not

 

And

And

 

Or inclusiva

Or

 

Or exclusiva

Xor

 

Equivalencia (opuesto a Xor)

Eqv

 

Implicación (falso si primer operando verdadero y segundo operando falso)

Imp

 

Cuando en una expresión aritmética intervienen operandos de diferentes tipos, el resultado se expresa, generalmente, en la precisión del operando que la tiene más alta. El orden, de menor a mayor, según la precisión, es Integer, Long, Single, Double y Currency.

 

Los operandos relacionales comparan dos expresiones dando un resultado True, False o Null (no válido).

 

El operador & realiza la concatenación de dos operandos. Para el caso particular de que ambos operandos sean cadenas de caracteres, puede utilizarse también el operador +. No obstante, para evitar ambigüedades utilice &. El resultado es de tipo String si ambas expresiones son de tipo String; en otro caso, el resultado es de tipo Variant.

 

Los operadores lógicos podemos utilizarlos de dos formas: para obtener un resultado de tipo Boolean (True o False), una vez evaluadas dos expresiones a True o a False, o para realizar una operación lógica bit a bit entre dos expresiones numéricas, colocando el resultado en la variable que se especifique.

Cuando otros tipos de datos numéricos se convierten a Boolean, 0 pasa a ser False, mientras que todos los demás valores pasan a ser True. Cuando los valores Boolean se convierten en otros tipos, False pasa a ser 0, mientras que True se transforma en –1.

Las tablas de verdad correspondientes a estos operadores son las siguientes:

 

A

B

Not A

A And B

A Or B

A Xor B

A Eqv B

A imp B

True

True

False

True

True

False

True

True

True

False

False

False

True

True

False

False

False

True

True

False

True

True

False

True

False

False

True

False

False

False

True

True

 

El operador Not, no lógico, se utiliza para negar la afirmación de un argumento. Por ejemplo, para expresar “si a no es mayor que b, entonces escribir a es menor o igual que b, escribiremos:

 

If Not a > b then Print a; “ es menor o igual que “; b

 

Si queremos expresar “mientras no existe, hacer...”, escribiremos:

 

Dim existe As Boolean

existe = False

While Not existe

  ‘...

Wend

 

El operador And, y lógico, recibe también a nivel de bits el nombre de producto lógico. Por ejemplo, para expresar “si a es mayor que b y b es mayor que c, entonces escribir a, escribiremos:

If a > b And b > c then Print a ‘si el resultado es True se escribe a

 

El operador Or, o lógico, reciba también a nivel de bits el nombre de suma lógica u Or inclusivo. Por ejemplo, para expresar “si a es igual a 0 o b es igual a 0, entonces finalizar”, escribiremos:

 

If a = 0 Or b = 0 then End ‘si el resultado es True se finaliza

 

El operador Xor, Or exclusivo, recibe también a nivel de bits el nombre de suma binaria. Por ejemplo:

 

a = 10: b = 8: c = 6      ‘inicia variables

resu = a > b Xor b > c    ‘devuelve False

resu = b > a Xor b > c    ‘devuelve True

resu = a Xor b            ‘devuelve 2 (comparación bit a bit)

 

Como vemos, el operador Xor ejecuta también una comparación bit a bit para identificar bits de dos expresiones numéricas y establece el bit correspondiente en el resultado según la siguiente tabla de decisión lógica:

 

Si bit en operando1 es

Y bit en operando2 es

El resultado es

0

0

0

0

1

1

1

0

1

1

1

0

 

El operador Like se utiliza para comparar dos expresiones de caracteres (expresiones que son evaluadas a un conjunto de caracteres contiguos). La sintaxis para este operador es la siguiente:

 

                   [resultado = ] expresión Like patrón

 

El resultado será True si la expresión coincide con alguna de las definidas por el patrón, False si no hay coincidencia y Null si la expresión y/o el patrón son Null. Por omisión en las comparaciones, se diferencian mayúsculas de minúsculas; esta característica puede ser alterada por la sentencia Option Compare. En el patrón se pueden incluir las caracteres comodín siguientes:

 

En el patrón

Se empareja en la expresión con

?

Un solo carácter

*

Cero o más caracteres

#

Un solo dígito (0-9)

[lista_cars]

Un solo carácter de los pertenecientes a la lista

[!lista_cars]

Un solo carácter de los no pertenecientes a la lista

 

 Por ejemplo

 

Con este patrón

esta expresión retorna True

esta expresión retorna False

a?a

“aaa”, “a5a”, “aBa”, “aba”

“aBbca”

a*a

“aa”, “aBa”, “aBBba”

“aBbc”

a#a

“a0a”, “a2a”, “a9a”

“aaa”, “aba”, “a29a”

a[*]a

“a*a”

“aaa”, “a0a”

[a-z]

“f”, “p”, “j”

“3”, “A”, “.”

[!0-9]

“A”, “a”, “.”, “-”

“0”, “4”, “7”

a[!i-n]#

“ab1”, “az0”, “a99”

“aic”, “ak0”, “Ab1”, “az90”

 

El operador Is se utiliza para comparar si una variable definida se refiere a un objeto de los existentes, o si dos variables definidas se refieran al mismo objeto. Por ejemplo:

 

Dim A As Form

Dim B As Control

Set A = Form1

Set B = Text1

If A Is Form1 And B Is Text1 Then

  ‘acciones a ejecutar si el resultado es True

Else

  ‘acciones a ejecutar si el resultado es False

End If

 

Form y Control son clases predefinidas en VB.

 

Utilización del tipo VARIANT

El tipo de datos Variant permite almacenar todos los tipos de datos definidos en el sistema. Esto lo defina como un tipo de datos genérico. Cuando VB opera con datos de tipo Variant, ejecuta automáticamente las conversiones necesarias. No obstante, hay que tener en cuenta las siguientes consideraciones:

 

·         Cuando se ejecutan operaciones aritméticas, su contenido tiene que poderse convertir a un valor numérico.

·         Como el operador + puede ser utilizado para sumar valores y concatenar cadenas de caracteres, dependiendo del contenido de las variables, los resultados pueden ser inesperados. Por ello, para concatenar variables de este tipo utilizaremos el operador &; ejecuta la concatenación sin tener en cuenta qué contienen las variables.

Recuerde siempre dejar un espacio entre el nombre de la variable y el operador &.

 

Si intenta ejecutar una operación o función matemática sobre una variable Variant que no contenga un valor numérico, ocurrirá un error. Para evitar esto, utilice la función IsNumeric para interrogar si dicha variable contiene un valor que pueda ser utilizado como un número. Por ejemplo:

 

Dim Dato

Dato = “123”

If IsNumeric(Dato) Then

  Dato = Dato + 1111

End If

Dato = Dato & “5”

 

Cuando asignamos un valor numérico a una variable Variant, VB utiliza la representación más compacta para registrar el valor.

 

Una variable Variant no es una variable sin tipo; más bien, es una variable que puede cambiar su tipo libremente. Cuando usted quiere conocer el tipo de dato que almacena una variable Variant, utilice la función VarType. Cada tipo de dato tiene asociado en VB un número entero que lo diferencia de los demás.

 

0 - Empty

1 - Null

2 - Integer

3 - Long

4 - Single

5 - Double

6 - Currency

7 - Fecha/Hora

8 - String

11 - Boolean

17 - Byte

 

 

VB proporciona las funciones de conversión siguientes:

 

CBool(expresión)     conversión a un valor de tipo Boolean

CByte(expresión)      conversión a un valor de tipo Byte

CCur(expresión)        conversión a un valor de tipo Currency

CDate(expresión)    conversión a un valor de tipo Date

CDbl(expresión)      conversión a un valor de tipo Double

CDec(expresión)      conversión a un valor de tipo Decimal

CInt(expresión)       conversión a un valor de tipo Integer

CLng(expresión)      conversión a un valor de tipo Long

CSng(expresión)      conversión a un valor de tipo Single

CStr(expresión)       conversión a un valor de tipo String

CVar(expresión)      conversión a un valor de tipo Variant

 

Las variables Variant también pueden contener valores de tipo Date, siempre se expresan incluidos entre #. Por ejemplo:

 

Dim Dato

Dato = #18-4-97 15:30#

Dato = #18-Apr, 1997 3:30#

Dato = #18-Apr-97#

Dato = #18 Apr 1997#

 

Para verificar si un determinado valor puede considerarse como uno del tipo Date, utilice la función IsDate.

 

Para saber si una variable Variant no ha sido iniciada, esto es, si está vacía, utilice la función IsEmpty. Una variable Variant que contiene el valor Empty es 0 si se usa en un contexto numérico, o una cadena de longitud cero (“”) si se usa en un contexto de cadenas.

 

Para indicar que una variable Variant contiene un dato no válido, se utiliza el valor especial Null. Para verificare si la variable contiene este valos, utilice la función IsNull.

 

El tipo STRING

Una variable de tipo String permite almacenar una cadena de caracteres y manipularla utilizando las funciones proporcionadas por VB. Por ejemplo:

 

Private Sub Command1_Click()

  Dim Nombre As String

  Nombre = “Francisco Javier”

  Nombre = Left(Nombre,4)

  MsgBox Nombre

End Sub

 

La variable Nombre está definida como una cadena de longitud variable. Para declarar Nombre como una cadena de longitud fija hagalo:

 

...

Dim Nombre As String * 60

...

 

 En el ejemplo anterior, si asignamos a Nombre menos de 60 caracteres, se completa con espacios en blanco. En estos casos pueden ser útiles las funciones Ltrim, Rtrim y Trim, que devuelven la cadena sin espacios a la izquierda, a la derecha o  a ambos lados.

 

En un módulo estándar, las cadenas de longitud fija hay que declararlas Private  o Public. En un formulario o en una clase hay que declararlas Private.

 

Si el contenido de una cadena coincide con un valor numérico, se puede asignar la misma a una variable numérica. También es posible asignar un valor numérico a una cadena. Por ejemplo:

 

Dim X As Integer, Y As Single

Dim Str As String

 

Y = 50.65

Str = Y

X = Str

 

El tipo BYTE

Cuando una variable de tipo String es convertida entre los formatos ANSI y Unicode, cualquier dato binario en la variable resulta dañado. Entonces, si de una variable sabe que va a contener datos binarios, declárela como una matriz de tipo Byte; es este tipo los datos no están sometidos a conversiones.

 

Tipo enumerado

La declaración de un tipo enumerado es simplemente una lista de valores que puede ser tomados por una variable de ese tipo. Los valores de un tipo enumerado se representarán con identificadores, que serán las constantes del nuevo tipo. Por ejemplo:

 

Public Enum DiasSemana

  lunes

  martes

  miércoles

  jueves

  viernes

  sábado

  domingo

End Enum

 

Dim hoy As DiasSemana

 

 Las constantes son de tipo Long y sus valores por omisión son 0, 1, 2, etc. Según esto el valor de lunes es 0, martes es 1, y así sucesivamente.

 

A cualquier identificador de la lista se pe puede asignar un valor inicial por medio de una expresión constante. Los identificadores sucesivos tomarán valores correlativos a partir de éste. Por ejemplo:

 

Public Enum DiasLaborables

  Sábado   ‘ toma valor 0

  domingo = 0

  lunes

  martes

  miércoles

  jueves

  viernes

  NoVálido = -1

End Enum

 

A los tipos enumerados se les aplican las siguientes reglas:

 

·         Puede declararse Private o Public.

·         De forma predeterminada, la primera constante se inicia en 0 y las siguientes reciben un valor superior en una unidad al de la constante anterior.

·         Dos o más constantes pueden tener un mismo valor.

·         Para evitar referencias ambiguas cuando se refiera a una constante individual, califique el nombre de la constante mediante su enumeración. Por ejemplo: hoy = DiasSemana.domingo

·         No es posible leer o escribir un valor de un tipo enumerado; esto es, cuando se escribe una variable de un tipo enumerado lo que se escribe es el valor asociado, y cuando se lee, hay que introducir el valor asociado. En cambio en asignaciones o en comparaciones sí se pueden utilizar los identificadores del tipo enumerado.

 

Sentencias

Una sentencia es una línea de texto que indica un o más operaciones a realizar. Una línea puede tener varias sentencias, separadas unas de otras por dos puntos:

 

total = cantidad * precio : suma = suma + total

 

Una sentencia puede escribirse en varias líneas utilizando el carácter de continuación de línea (un espacio en blanco seguido del carácter de subrayado) Por ejemplo:

 

PagoMensual = CantidadPrest * _

   (Interes / (1 – (1 / ((1 + Interes) ^ Meses))))

 

La sentencia más común es la de asignación. Su forma general es

 

                   variable = expresión

 

 


ENTRADA Y SALIDA DE DATOS

 

Una posibilidad de proveer de datos a una aplicación o de visualizar resultados es utilizando cajas de diálogo. Las cajas de diálogo son ventanas con controles que podemos visualizar en el instante en que necesitemos hacer una entrada o salida de datos. VB tiene cajas de diálogo predefinidas que nos permiten realizar operaciones de E/S.

 

Entrada de datos

En VB, una forma de introducir un dato sería utilizando la caja de diálogo provista por InputBox.

 

La función InputBox visualiza una caja de diálogo, con un mensaje que indica al usuario el tipo de información que debe intriducir; devuelve como resultado un valor de tipo String que se corresponde con el dato tecleado. Su sintaxis es:

 

InputBox(mensaje, [título][, por_omisión][, posx][, posy])

 

Por ejemplo:

 

x = InputBox(“Dato: ”) ‘x almacena el dato introducido por el teclado

 

Si el mensaje consiste en varias líneas, hay que introducir explícitamente al final de cada una de ellas los caracteres de retorno de carro (Chr(13)) y avance de línea (Chr(10)). Por ejemplo la sentencia

 

NomAp = InputBox(“Introduzca los apellidos y el nombre.” & _

                    Chr(13) & Chr(10) & “Los apellidos en mayúsculas.”)

 

El resto de los parámetros son opcionales. Si queremos omitir un argumento que precede a otro especificado, hay que poner las correspondientes comas delimitadoras. Por ejemplo:

 

X = InputBox(“Dato:”, , 0)

 

La cadena título será visualizada en la barra de título de la caja de diálogo; si se omite se pone como título el nombre de la aplicación. La cadena por_omisión especifica el texto que aparecerá en la caja de texto; si se omite, la caja de texto aparecerá vacía. Los argumentos posx y posy son las coordenadas donde aparecerá la caja de diálogo, medidas desde la izquierda y desde la parte superior de la pantalla, y expresadas en twip (1/1440 pulgadas); si se omiten, la caja de diálogo se visualizará centrada horizontalmente y a un tercio de la parte superior de la pantalla.

 

Ejercicio: vamos a escribir una aplicación que nos permita introducir el nombre, el apellido, la edad y la fecha de nacimiento de una persona. Una vez introducidos los datos, simplemente los visualizaremos sobre el formulario.

 

Salida de datos

Según hemos visto, el método Print visualiza datos en un formulario. Así mismo, permite visualizar datos en una caja de imagen (PictureBox) o en una impresora (Printer). Su sintaxis es:

 

                            objeto.Print lista de expresiones

 

Donde lista de expresiones es un conjunto de expresiones numéricas y alfanuméricas separadas por comas, espacios en blanco o puntos y comas. Las constantes de caracteres deben ponerse entre comillas. Por ejemplo:

 

Print a + 5, a * b / 2, c$, “Fin”

Print x; y + 5; w

Print n; m

Print “LISTADO DE RESULTADOS”

 

Si se omite la lista de expresiones, se visualiza una línea en blanco.

 

La interrogación (?) puede utilizarse como un modo abreviado de introducir Print. Por ejemplo:

 

? a; b

 

No obstante, cuando el corrector sintáctico comprueba la sintaxis de la sentencia anterior, sustituye automáticamente el símbolo ? por Print.

La posición de cada elemento a visualizar está determinada por la puntuación utilizada para separar los elementos en la lista de expresiones. VB divide la línea en zonas de 14 espacios cada una, cuando se utiliza como separador una coma. En la lista de expresiones, una como produce un salto al inicio de la zona siguiente. Un punto y coma produce la visualización de la expresión, inmediatamente después de la última visualizada. Por ejemplo:

 

Print “          1          2          3”

Print “12345678901234567890123456789012345”

a = 5

Print a; a^2; a * (-5)

Print a, a^2, a * (-5)        

Print “FIN DEL PROCESO”

 

Cuando una coma o punto y coma terminan la lista de expresiones, es decir, se escriben al final de la línea, el siguiente método Print continuará escribiendo sobre la misma línea, en caso contrario se efectuará un salto al inicio de la línea siguiente. Por ejemplo:

 

a = 50

Print a,

A = a * -2

Print a

Print

Print “FIN “;

Print “DEL PROCESO”

 

Visualizar datos sobre un objeto

El método Print ¿sobre qué objeto visualiza los datos? La respuesta es: sobre el objeto para el que es invocado.

 

Como ejemplo, vamos a modificar la aplicación que creamos y vamos a añadir al formulario un control PictureBox para que los resultados sean visualizados sobre dicho control. Cambie sus propiedades AutoRedraw a True y BackColor a blanco. Después cambie la propiedad BackColor del formulario a “cara del botón”.

 

Posiciones de impresión

 

Función Spc

Inserta n espacios antes de imprimir la expresión especificada a continuación. Su sintaxis es:

 

Spc(n)

 

Spc solo puede utilizarse con Print. Si Spc está al final de la lista de expresiones, no se produce un retorno de carro. Por ejemplo:

 

n$ = InputBox(“Nombre y apellidos:”)

edad = InputBos(“Edad:”)

Print Spc(12); “NOMBRE”; Spc(16); “EDAD”

Print “----------------------------------------------------------------------”

Print n$; Spc(11); edad

 

Función Tab

Indica la posición n (columna) donde se desea que comience la impresión de una determinada expresión. Su sintaxis es:

 

Tab(n)

 

Tab sólo puede utilizarse con sentencias Print. Si la posición de impresión actual es superior a la indicada por n, entonces Tab indica la posición n en la siguiente línea. La posición más baja es la 1. Si Tab está al final de la lista de expresiones, no se produce un retorno de carro. Por ejemplo:

 

n$ = InputBox(“Nombre y apellidos:”)

edad = InputBos(“Edad:”)

Print Tab(13); “NOMBRE”; Tab(35); “EDAD”

Print “----------------------------------------------------------------------”

Print n$; Tab(35); edad

 

Dando formato a la salida

La función Format permite dar formato a la salida de acuerdo con un patrón especificado: Print Format(Entrada, Patrón). Por ejemplo:

 

Print Format(n, “#,##0.00”)

 

 

 

 

 

STARMEDIA        CERRAR