
Variables en Visual Basic
Una variable es un nombre simbólico que se refiere a un dato determinado almacenado en memoria. Las nombraremos de acuerdo a las siguientes pautas:
* Siempre comenzarán por letra.
Serán menores de 255 caracteres.
No se permiten espacios (blancos), puntos (.), ni caracteres especiales.
No pueden utilizarse palabras reservadas del lenguaje.
Según los tipos de datos que alberguemos en las variables, así serán de un tipo u otro, como se describe a continuación:
Las variables Single y Double pueden ocupar números reales muy grandes, por eso no hemos entrado en detalles, casi siempre nos servirá con Single si deseamos números decimales. Además, hay otro tipo de variables, las variables tipo variant, que son como una variable standar que admite cualquier tipo de dato. No obstante, evitaremos usarla, y declararemos el tipo de variable según convenga. (Como buenos programadores).
Reglas usadas para los nombres de variables:
• No más de 40 caracteres
• Pueden incluír letras, números, y underscore (_)
• El primer caractér debe ser una letra
• No pueden usarse palabras reservadas (las que usa el Visual Basic)
Declaración de las Variables
• Hay tres maneras de declarar una variable:
1. Default
1. Implicit
2. Explicit
• Si las variables no son implicita o explicitamente declaradas se les asigna el tipo variant por default. Una variable tipo variant puede contener datos numéricos, string o date indistintamente.
• Para declarar implicitamente una variable, se usa el correspondiente suffix, por ejemplo,
TextValue$ = "This is a string"
• crea una variable string
Amount% = 300
crea una variable integer.
• Hay muchas ventajas en declarar explicitamente las variables. Primero que nada aseguramos que los cálculos se hacen apropiadamente y los errores de tipeo son más fáciles de trazar, Visual Basic se cuidará de asegurar la consistencia en las mayúsculas y minúsculas usadas en los nombres, etc.
• Para declarar explicitamente una variable, debemos determinar su scope (alcance). Hay cuatro niveles de alcance:
• Procedure level
• Procedure level, static
• Form and module level
• Global level
• Dentro de un procedure, las variables se declaran usando Dim:
Dim MyInt as Integer
Dim MyDouble as Double
Dim MyString, YourString as String
• Las variables a nivel de Procedure declaradas de esta manera no retienen su valor después de terminado el procedure.
• Para hacer que una variable a nivel de procedure retenga su valor al terminar este, reemplace Dim por Static:
Static MyInt as Integer
Static MyDouble as Double
• Las variables a nivel de Form (module) retienen su valor y están disponibles para todos los procedures dentro de la form (module). Las variables a este niovel se declaran en la sección declarations del objeto general de la form (venbtanilla de código). Se usa la sentencia Dim :
Dim MyInt as Integer
Dim MyDate as Date
• Las variables a nivel Global retienen su valor y están disponibles para todos los procedures de la aplicación. Se declaran en la parte declarations del objeto general de un módulo. (Se recomienda colocar todas las variables globales en un mismo módulo.) Use la sentencia Global:
Global MyInt as Integer
Global MyDate as Date
Ámbito en Visual Basic
El ámbito de un elemento declarado es el conjunto de todo el código que puede hacer referencia a él sin calificar su nombre o marcarlo como disponible mediante Imports (Instrucción). Un elemento puede tener uno de los niveles de ámbito siguientes:
Nivel Descripción
Ámbito de bloque: Ámbito disponible únicamente en el bloque de código en el que se ha declarado
Ámbito de procedimiento: Disponible para todo el código dentro del procedimiento en el que se ha declarado
Ámbito de módulo: Disponible para todo el código dentro del módulo, clase o estructura en el que se ha declarado
Ámbito de espacio de nombres: Disponible para todo el código dentro del espacio de nombres en el que se ha declarado
Estos niveles de ámbito progresan desde el más restringido (bloque) al más amplio (espacio de nombres), donde ámbito más restringido significa el conjunto de código más pequeño que puede hacer referencia al elemento sin calificación. Para obtener más información, consulte "Niveles de ámbito" en esta página.
Especificar ámbito y definir variables
El ámbito de un elemento se especifica al declararlo y puede depender de los factores siguientes:
• La región (bloque, procedimiento, módulo, clase o estructura) donde se declara el elemento.
• El espacio de nombres que contiene la declaración del elemento.
• El nivel de acceso que se declara para el elemento.
Tenga cuidado cuando defina variables del mismo nombre pero con ámbito diferente, puesto que ello podría causar resultados inesperados. Para obtener más información, consulte Resolver una referencia cuando muchas variables tienen el mismo nombre.
Niveles de ámbito
Un elemento de programación está disponible en toda la región en la que se declara. Todo el código de la misma región puede hacer referencia al elemento sin calificar su nombre.
Ámbito de bloque
Un bloque es un conjunto de instrucciones incluido dentro de las instrucciones de declaración de inicio y fin, como lo siguiente:
• Do y Loop
• For [Each] y Next
• If y End If
• Select y End Select
• SyncLock y End SyncLock
• Try y End Try
• While y End While
• With y End With
Si declara una variable dentro de un bloque, sólo puede utilizarla dentro de ese bloque. En el ejemplo siguiente, el ámbito de la variable de entero cube es el bloque entre If y End If, y las referencias a cube dejan de ser posibles cuando termina la ejecución del bloque.
If n < 1291 Then
Dim cube As Integer
cube = n ^ 3
End If
Nota
Incluso si el ámbito de una variable está limitado a un bloque, su período de duración sigue siendo el del procedimiento completo. Si utiliza el bloque varias veces durante el procedimiento, todas las variables de bloque conservan su valor anterior. Para evitar resultados inesperados en estos casos, es mejor inicializar las variables de bloque al principio del bloque.
Ámbito de procedimiento
Un elemento declarado en un procedimiento no está disponible fuera de él. Solamente el procedimiento que contiene su declaración puede utilizarlo. Las variables en este nivel también se denominan variables locales. Se declaran con Instrucción Dim (Visual Basic), con o sin la palabra clave ¡Error! Marcador no definido..
Los ámbitos de procedimiento y de bloque están estrechamente relacionados. Si se declara una variable dentro de un procedimiento, pero fuera de un bloque dentro del procedimiento, puede considerarse que la variable tiene ámbito de bloque, donde el bloque es el procedimiento completo.
Nota
Todos los elementos locales, aunque sean variables Static, son privados para el procedimiento en el que aparecen. No se puede declarar un elemento mediante la palabra clave Public (Visual Basic) dentro de un procedimiento.
Ámbito de módulo
Por comodidad, el término nivel de módulo se aplica por igual a módulos, clases y estructuras. Puede declarar elementos a este nivel si sitúa la instrucción de declaración fuera de cualquier procedimiento o bloque pero dentro del módulo, clase o estructura.
Cuando se incluye una declaración en el nivel de módulo, el nivel de acceso seleccionado determina el ámbito. El espacio de nombres que contiene el módulo, la clase o la estructura también afecta al ámbito.
Los elementos para los que se declara el nivel de acceso Private (Visual Basic) están disponibles para todos los procedimientos del módulo, pero no para el código de otros módulos. La instrucción Dim en el nivel de módulo toma Private como valor predeterminado si no utiliza ninguna palabra nivel de acceso. No obstante, el ámbito y el nivel de acceso serán más patentes si utiliza la palabra clave Private en la instrucción Dim.
En el ejemplo siguiente, todos los procedimientos definidos en el módulo pueden hacer referencia a la variable de cadena strMsg. Cuando se llama al segundo procedimiento, muestra el contenido de la variable de cadena strMsg en un cuadro de diálogo:
' Put the following declaration at module level (not in any procedure).
Private strMsg As String
' Put the following Sub procedure in the same module.
Sub initializePrivateVariable()
strMsg = "This variable cannot be used outside this module."
End Sub
' Put the following Sub procedure in the same module.
Sub usePrivateVariable()
MsgBox(strMsg)
End Sub
Ámbito de espacio de nombres
Si declara un elemento en el nivel de módulo mediante la palabra claveFriend (Visual Basic) o Public (Visual Basic), dicho elemento quedará disponible para todos los procedimientos del espacio de nombres en los que se declare. La siguiente modificación del ejemplo anterior permite que el código haga referencia a la variable de cadena strMsg en cualquier parte del espacio de nombres de su declaración.
' Include this declaration at module level (not inside any procedure).
Public strMsg As String
El ámbito de espacio de nombres incluye espacios de nombres anidados. Un elemento disponible de un espacio de nombres también está disponible en cualquier espacio de nombres anidado en su interior.
Si un proyecto no contiene Namespace (Instrucción), todo lo que incluya el proyecto estará en el mismo espacio de nombres. En este caso, el ámbito de espacio de nombres se puede considerar como el ámbito del proyecto. Los elementos Public de un módulo, clase o estructura también están disponibles para cualquier proyecto que haga referencia a sus proyectos.
Elección de ámbito
Cuando declara una variable, debe tener presente los puntos siguientes al elegir su ámbito.
Ventajas de variables locales
Las variables locales son una buena elección para cualquier tipo de cálculo temporal, por las razones siguientes:
• Evitar conflictos de nombres. Los nombres de variables locales no son susceptibles de entrar en conflicto. Por ejemplo, es posible crear varios procedimientos distintos que contengan una variable denominada intTemp. En tanto que intTemp esté declarado como una variable local, cada procedimiento reconocerá únicamente su propia versión de intTemp. Cualquier procedimiento puede cambiar el valor de su variable intTemp local sin que ello afecte a las variables intTemp del resto de los procedimientos.
• Consumo de memoria. Las variables locales sólo utilizan la memoria mientras su procedimiento está en ejecución. Su memoria se libera cuando el procedimiento vuelve al código de llamada. Por el contrario, las variables Shared (Visual Basic) y Static (Visual Basic) consumen recursos de memoria hasta que su aplicación deja de ejecutarse, por lo que se deben utilizar sólo cuando sea necesario. Las variables de instancia utilizan la memoria mientras su instancia sigue existiendo, lo que les resta eficacia frente a las variables locales pero son potencialmente más eficaces que las variables Shared o Static.
Minimizar el ámbito
En general, cuando se declara una variable o una constante, es un buen hábito de programación asignar un ámbito lo más restringido posible (el ámbito de un bloque es el más restringido). Esto permite que no se pierda memoria y reduce al mínimo la posibilidad de que el código haga referencia por error a una variable incorrecta. Del mismo modo, sólo debería declararse una variable como Static (Visual Basic) si es necesario que conserve su valor entre una llamada al procedimiento y otra.
eso es toda mi tare!!!!
Muy bien Rubí, solamente que me gustaría que reconsiderarás parte de tu información ya que estás tocando estructuras de datos y otras cosas que aún no consideramos. Pero muy bien, sería interesante que subrayaras los diferentes tipos de ámbito que colocaste para distinguirlos.
ResponderEliminar