martes, 21 de mayo de 2013

Variables Static - I

Este tipo de variables se caracterizan por el hecho de que conservan su valor después de finalizar el procedimiento en el que han sido declaradas. Se deben declarar utilizando la palabra clave Static, pudiendo opcionalmente omitir la palabra clave Dim. El Código fuente 168 muestra su sintaxis.

Static [Dim] Importe As Integer
Código fuente 168

domingo, 19 de mayo de 2013

Periodo de vida o duración de las variables

El periodo de vida de una variable es el tiempo durante el cual la variable está activa, ocupando el espacio de memoria que le ha asignado el entorno de ejecución de .NET Framework, y disponible para ser utilizada. El periodo de vida de una variable depende de su ámbito, de forma que podemos clasificarlos como se muestra a continuación. 
• Ámbito de bloque. El periodo de vida de estas variables se desarrolla desde el momento en que son declaradas dentro del bloque y hasta que dicho bloque finaliza. 
• Ámbito de procedimiento. Para estas variables, su periodo de vida está comprendido entre el momento en que son declaradas y hasta que la ejecución del procedimiento termina. 
• Ámbito a nivel de módulo y proyecto. En este caso, el periodo de vida de la variable va desde el comienzo de la ejecución de la aplicación y hasta que esta termina.

sábado, 18 de mayo de 2013

Ámbito a nivel de proyecto

Una variable declarada en la zona de declaraciones de un módulo utilizando la palabra clave Public, se dice que tiene ámbito a nivel del proyecto, es decir, que es accesible por cualquier procedimiento de cualquier módulo que se encuentre dentro del proyecto. Si tomamos el fuente anterior y declaramos como Public la variable Nombre, ahora sí podremos manipularla desde cualquier punto de la aplicación. Ver Código fuente 167.

Module General
' esta variable será accesible
' desde cualquier lugar del proyecto
Public Nombre As String
Public Sub Main()
Console.WriteLine("Procedimiento Main()")
Console.WriteLine("Asignar valor a la variable")
Nombre = Console.ReadLine()
Console.WriteLine("El valor de la variable en Main() es: {0}", Nombre)
Manipular()
MostrarValor()
Console.ReadLine()
End Sub
Public Sub Manipular()
Console.WriteLine("Procedimiento Manipular()")
Console.WriteLine("Asignar valor a la variable")
Nombre = Console.ReadLine()
Console.WriteLine("El valor de la variable en Manipular() es: {0}", Nombre)
End Sub
End Module
Module Calculos
Public Sub MostrarValor()
' al haber declarado la variable Nombre
' como Public en el módulo General, podemos acceder a ella
' desde un módulo distinto al que se ha declarado
Console.WriteLine("Procedimiento MostrarValor()")
Nombre = "Antonio"
Console.WriteLine("Valor de la variable Nombre: {0}", Nombre)
End Sub
End Module
Código fuente 167

viernes, 17 de mayo de 2013

Ámbito a nivel de módulo - II

Para comprobar el valor de estas variables a través del depurador, tenemos que utilizar la ventana Automático, que podemos abrir con el menú Depurar + Ventanas + Automático, o las teclas [CTRL + ALT + V, A]. Ver Figura 80.
Figura 80. Ventana Automático, del Depurador.

jueves, 16 de mayo de 2013

Ámbito a nivel de módulo - I

Una variable declarada en la zona de declaraciones de un módulo, es decir, fuera de cualquier procedimiento, pero dentro de las palabras clave Module...End Module, y utilizando como palabra clave Dim o Private, se dice que tiene ámbito a nivel de módulo. Aunque tanto Dim como Private son perfectamente válidas para declarar variables a nivel de módulo, se recomienda usar exclusivamente Private; de este modo facilitamos la lectura del código, reservando las declaraciones con Dim para las variables con ámbito de procedimiento, y las declaraciones con Private para el ámbito de módulo. En el ejemplo del Código fuente 166 declaramos la variable Nombre dentro del módulo, pero fuera de cualquiera de sus procedimientos, esto hace que sea accesible desde cualquiera de dichos procedimientos, pero no desde un procedimiento que se halle en otro módulo.

Module General
'Dim Nombre As String <--- esta declaración es perfectamente válida...
Private Nombre As String ' ...pero se recomienda declarar con Private
Public Sub Main()
Console.WriteLine("Procedimiento Main()")
Console.WriteLine("Asignar valor a la variable")
Nombre = Console.ReadLine()
Console.WriteLine("El valor de la variable en Main() es: {0}", Nombre)
Manipular()
MostrarValor()
Console.ReadLine()
End Sub
Public Sub Manipular()
Console.WriteLine("Procedimiento Manipular()")
Console.WriteLine("Asignar valor a la variable")
Nombre = Console.ReadLine()
Console.WriteLine("El valor de la variable en Manipular() es: {0}", Nombre)
End Sub
End Module
Module Calculos
Public Sub MostrarValor()
' error, no se puede acceder desde este módulo
' a la variable Nombre, que está declarada Private
' en el módulo General
Console.WriteLine("Procedimiento MostrarValor()")
Nombre = "Antonio"
Console.WriteLine("Valor de la variable Nombre: {0}", Nombre)
End Sub
End Module
Código fuente 166

miércoles, 15 de mayo de 2013

Ámbito a nivel de bloque - II

En este punto debemos aclarar que el ámbito dentro de un bloque se entiende como la parte de la estructura en la que ha sido declarada la variable. Por ejemplo, en una estructura If...End If con Else, si declaramos una variable a continuación de If, dicha variable no será accesible desde el bloque de código que hay a partir de Else. Ver Código fuente 165.

If MiNumero > 0 Then
' variable con un ámbito a nivel de bloque
' sólo es accesible dentro de esta estructura If
Dim Calculo As Integer
' ......
Else
' la variable Calculo no es accesible desde aquí
' ......
End If
Código fuente 165

martes, 14 de mayo de 2013

Ámbito a nivel de bloque - I

Una variable declarada dentro de una estructura de control se dice que tiene ámbito local a nivel de bloque, siendo accesible sólo dentro del código que está contenido en la estructura. Ver Código fuente 164.

Public Sub Main()
' variables con ámbito a nivel de procedimiento
Dim MiNumero As Integer
Dim Total As Integer
Console.WriteLine("Introducir un número")
MiNumero = Console.ReadLine()
If MiNumero > 0 Then
' variable con un ámbito a nivel de bloque
' sólo es accesible dentro de esta estructura If
Dim Calculo As Integer
Console.WriteLine("Introducir otro número para sumar")
Calculo = Console.ReadLine()
MiNumero += Calculo
End If
Console.WriteLine("El resultado total es: {0}", MiNumero)
' error, la variable Calculo no es accesible desde aquí
Total = 150 + Calculo
Console.ReadLine()
End Sub
Código fuente 164