Cuando empezamos a trabajar en programación, obviamente nos encontramos en la situación que querer guardar valores para usarlos más tarde.
O sea, reservar un espacio en la memoria de la computadora (ordenador), por cada valor que queremos utilizar.
Obviamente, poder identificar cada una de las que quieras usar, implica darles un nombre. Ese es entonces el concepto de variable.
Por otra parte, en muchos (no en todos), los lenguajes de programación se puede decir además, que tipo de dato va a almacenarse allí.
Cada lenguaje de programación utiliza su sintaxis para esto, como los dos siguientes ejemplos, donde vemos declaraciones de una variable de tipo entero y otra para almacenar caracteres.
Dim Entero As Integer Dim Cadena As String
int Entero; string Cadena;
También es posible darle a cada variable un valor predeterminado.
(No solo se puede, Es lo recomendado, para que no haya errores)
Dim Entero As Integer = 0 Dim Cadena As String = ""
int Entero = 0; string Cadena = "";
Obviamente esto vale para cualquier tipo de dato, inclusive objetos complejos. Y así, se reservan espacios para cualquier uso. Sin embargo, existen algunas cuestiones más para tener en cuenta.
Alcance. (Ámbito)
Se define como alcance o ámbito, la característica que determina en que parte del código existe realmente cada variable.
Para determinar esto, existen dos mecanismos distintos; uno posicional y otro declarativo.
Declarativo.
En la siguiente tabla vemos los modos posibles:
Posicional.
Por otra parte, una variable tiene el ámbito del conjunto de código dentro del cual se declara.
Cuando la declaración se realiza en el conjunto de código (clase, por ejemplo), estará disponible en todos y cada uno de sus miembros
Si en cambio, se declara dentro de un miembro, solo será hallable dentro del mismo.
Finalmente, si se declara dentro de un bloque de ejecución, por ejemplo, en el interior de un bucle de repetición, o una sentencia condicional, sólo será alcanzable dentro de éste, ni siquiera en el resto del miembro.
Public Class Variables Private DeLaClase As Integer = 0 Private Function EstoEsUnaFunción() As String Dim DeLaFunción As Integer = 0 If condición Then Dim DelBloque As Integer = 0 End If 'Aqui no se ve la variable DelBloque End Function ' Aquí no se ven ni DelBloque ni DeLaFunción End Class
public class Variables { int DeLaClase = 0; string EstoEsUnaFunción() { int DeLaFunción = 0; if (condición) { int DelBloque = 0; } //Aqui no se ve la variable DelBloque } // Aquí no se ven ni DelBloque ni DeLaFunción }
Las variables genéricas
Antiguamente, los lenguajes de programación se dividían entre:
los que exigían tipificación de variables como COBOL, C, C++.
Los que no exigían declaración aunque permitían al programador establecer la obligatoriedad, la familia de los Basic: BASIC, BASICA, GWBASIC, Quick Basic, Visual Basic.
Los que no tipificaban las variables como la familia de los xBase, como dBase, Fox, Clipper, Visual Fox.
Cuando surge .Net, se establece la obligatoriedad de tipificar las variables en todos los casos.
Sin embargo, bajo ciertas situaciones, la tipificación estricta puede conllevar imposibilidades programáticas. Desde la aparición de la versión 3 del .net Framework, es factible declara variables no tipificadas, pero que el compilador haga lo necesario para que el código siga siendo estricto.
En C#, por ejemplo, aparece la palabra reservada var, para indicar la declaración de una variable sin tipificar.
var a = 1;
En Visual Basic, la ya existente sentencia Dim hace las veces de “comodín” declarativo.
Dim a = 1
Sin embargo, ten en cuenta que cuando se compila, estas declaraciones «genéricas» se traducen al tipo que el compilador estima debe corresponder.
En General funciona… pero no siempre.