miércoles, 6 de agosto de 2008

Variables y tipos de datos

Las variables almacenan valores que pueden cambiar durante la ejecución de la aplicación. Cuando se utiliza una variable en Visual Basic la memoria es reservada para albergar a la variable de esta manera la aplicación puede acceder y manipular el valor que contiene la variable.

Existen tipos de variables para almacenar diferentes tipos de datos.

La diferencia entre una variable y una constante es que el valor que contiene la constante permanece fijo y no puede ser cambiado en tiempo de ejecución, pues los valores de las constantes siempre se establecen en tiempo de diseño.

Sintaxis para declarar una constante:

[Public] [Private] Const nombreConstante [As type] = valor

En Visual Basic se utilizan las variables para almacenar valores temporalmente durante la ejecución de una aplicación.

Una variable se compone de el nombre de la variable que es utilizado para referirse al valor que contiene la variable y de un tipo de dato el cual determina el tipo de dato que la variable puede almacenar.

El nombre de una variable debe seguir las siguientes reglas:

  • Debe comenzar con un caracter alfabético.
  • No debe contener espacios.
  • No debe contener símbolos no permitidos como ., %, &, !, #, @, $.
  • Debe ser un nombre único dentro de un mismo ámbito.

Convenciones en el Nombre de las Variables

A manera de buenas prácticas de programación deben especificarse los estándares de programación a seguir, por lo que se pueden establecer convenciones a seguir para el nombre de las variables:

ObjetoPrefijo
Boolean bln
Byte byt
Currency cur
Date dt
Double dbl
Integer int
Long lng
Object Estándares
Single sng
String str
Variant var

Tipos de Datos

Las variables Visual Basic pueden almacenar diferentes tipos de datos:

  • Texto:
    1. String de longitud variable

      por ejemplo:

         Dim sNombreCompleto as String
    2. String de longitud fija

      por ejemplo:

         Dim sNombreCompleto as String * 50

      sNombreCompleto contendra siempre 50 caracteres (los caracteres faltantes completan con espacios en blanco)

  • Números:
    1. Integer
    2. Long
    3. Single
    4. Double
  • Boolean
  • Otros:
    1. Variant
    2. Object
    3. Currency
    4. Date

A direncia de otros lenguajes como Lenguaje C, algo importante y que es necesario tenerlo en cuenta es que Visual Basic no requiere especificar explicitamente un tipo de dato al declarar una variable sólo es necesario declarar la variable de manera generica y al ser generica por default las variables Visual Basic son de tipo Variant.

Variant, es un tipo de dato que puede almacenar cualquier tipo de valor, inluyendo, texto, números, objetos y null. Visual Basic determina y convierte los valores Variant.

Empty

Empty es un valor especial distinto de 0, para verificar si una variable contiene el valor Empty utilice la función IsEmpty(nombreVariable).

Por ejemplo cualquier variable declarada sin referencia con un tipo de dato asume por default el tipo de dato Variant y el contenido por default de Variant es Empty antes de asignarle un valor:

 Dim x
Private Sub Command4_Click()
MsgBox IsEmpty(x)
End Sub

Lo anterior regresa True

Es posible asignar el valor Empty a una variable que soporte este valor.s

Null

Null es un valor especial. Puede indicar datos desconocidos o faltantes, por ejemplo en bases de datos. Es posible utilizar la funcion IsNull(nombreVariable) para determinar si contiene el valor Null.

 Dim s As String
Private Sub cmdNull_Click()
MsgBox IsNull(s)
End Sub

Lo anterior regresa False

Dim : Declaración de Variables

Declaración implicita, son aquellas variables que no son declaradas pero si Visual Basic encuentra una declaración de variable le asigna por default el tipo Variant con el valor vacío (""). Una declaración de este tipo a veces es conveniente pero límita el control sobre las variables.

Declaración explicita, Para declarar una variable explícita se utiliza la sentencia Dim.

Sintaxis:

Dim nombreVariable [As tipoVariable]

Donde la cláusula As en la sentencia Dim permite especificar el tipo de dato cuando la variable es declarada, por ejemplo:

   Dim strUserName As String
Dim intUserDept As Integer

Una vez que las variables son creadas con la sentencia Dim, Visual Basic automáticamente inicializa las de tipo numérico con el valor 0 y cadenas de texto o variant con el valor vacío ("").

Sentencia Option Explicit

Ya que es posible declarar variables de manera implicita, esto puede causar errores lógicos al escribir incorrectamente el nombre de la variable, por ejemplo, suponga que declara de manera implicita la variable strUserPwd y después trata de hacer referencia a esta variable pero comete un error al escribir el nombre:

   strUserPwd = txtBoxUserPwd.Text
strUserLevel = strUserPdw + "A"

Visual Basic asume que strUserPdw es una nueva variable implicita, para prevenir esto, es posible que indicar a Visual Basic que todas las variables sean declaradas antes de ser usadas, para ello es necesario escribir la sentencia Option Explicit en las declaraciones generales de la sección de un módulo.

La sentencia Option Explicit instruye a Visual Basic para checar el módulo por cualquier variable que no sea declarada explicitamente y si una variable no es declarada un mensaje de error aparece "Variable not defined" para corregir el error.

Se recomienda siempre utilizar la sentencia Option Explicit.

Para colocar de manera automática la sentencia Option Explicit al inicio del código de cada módulo, selecccione:

Opción Tools del menú principal » Options » Editor tab » Require Variable Declaration.

Para colocar de manera manual la sentencia Option Explicit al inicio del código de cada módulo, selecccione de la ventana editora de código:

  1. Object list box » General
  2. Procedure list box » Declarations
  3. Escribir al inicio Option Explicit

Alcance de las Variables

El alcance de una variable se define como el ámbito de acción sobre la cual la variable actua y su comportamiento depende de como se defina.

Nivel Procedimiento

  • Privado, las variables son privadas del procedimiento en el que aparecen.
  • Público, No es posible declarar variables públicas dentro de un procedimiento.

Las variables a nivel procedimiento sólo se reconocen el el procedimiento en el que se han declarado y también reciben el nombre de variables locales declarandolas mediante la palabra reservada Dim es decir que existen mientras se ejecuta el procedimiento o Static que existen mientras se ejecuta la aplicación.

Nivel Módulo

  • Privado, las variables son privadas del módulo en el que aparecen.
  • Público, las variables están disponibles para todos los módulos.

Una variable a nivel módulo está disponible para todos los procedimientos del módulo, pero no está disponible para otros módulos o los procedimientos de otros módulos.

A nivel módulo no existe diferencia entre Private o Dim. Se recomienda declararlas como Private para diferenciarlas o contrastarlas con Public, haciendo el código más fácil de entender.

Si requerimos que una variable esté disponible para otros módulos se emplea la palabra clave Public para declarar la variable al inicio del módulo.

Es posible tener varios modulos donde cada módulo tiene un procedimiento con el mismo nombre y a su vez el modulo tiene declarada una variable también con el mismo nombre. En este caso para hacer una referencia correcta se escribe el nombre del módulo seguido de un punto y el nombre de la variable:

 mod1.AsignaNombre
mod1.sNombre
mod2.AsignaNombre
mod2.sNombre
mod3.AsignaNombre
mod3.sNombre

NOTA: Cuando se tienen variables con un mismo nombre pero distinto alcance, las variables más locales ocultan a las variables menos locales.

Si en el evento Load de una forma escribe MsgBox Top se hace referencia a la propiedad Top de la forma (NombreForma.Top).

Static

Para preservar el valor de una variable local se declara como Static :

 Private Sub cmdIncrementa_Click()
Cuenta
End Sub

Sub Cuenta()
Static Contador As Integer
Contador = Contador + 1
MsgBox Contador
End Sub

Const : Constantes

Declarar una constante (Cons) significa que el valor que contiene nunca cambiara mientras se ejecute la aplicación.

Poe ejemplo Visual Basic define varias constantes como valores predefinidos como es el caso de los colores: vbRed, vbBlue, vbBlack, etc.

 Const PI = 3.141592
Const YEAR as Integer = 1971

Es posible definir más de una constante en una sola línea, para ello se utiliza como separador el signo coma (;)

 Const PI = 3.141592, YEAR as Integer = 1971

0 comentarios: