[tutorial] Las variables parte1 by hackmin

domingo, 6 de noviembre de 2011
Bueno amigos aquí explicaremos lo que son las variables


los tipos de datos podían ser numéricos o de caracteres. Pero dentro de los numéricos, tenemos cuatro tipos básicos: enteros, enteros largos, simples y dobles. Cada uno de ellos tienen unas capacidades determinadas, además de ocupar más memoria o menos, (ahora lo veremos), lo más importante es que los números enteros y entero largo sólo admiten números enteros (de ahí sus nombres), es decir que no admiten decimales. Sin embargo los otros dos si admiten decimales.
Estas capacidades puedes encontrarlas en el manual del basic o en la ayuda, lo que a mi me interesa que sepas es cómo poder indicarle al Visual Basic que reserve ese espacio de memoria para un tipo determinado. Ya te he dicho que el espacio que ocupa en memoria es diferente para cada uno de estos tipos

Tipo entero, Espacio ocupado 2 bytes tipo de declaración Integer,ejemplo:Dim Numero as integer

Tipo:Entero,Espacio ocupado 4 bytes tipo de declaración Long,ejemplo:Dim numero as Long

Tipo:Simple,Espacio ocupado 4 Bytes , tipo de declaración Single,ejemplo: Dim numero as single

tipo:Doble, Espacio ocupado 8 bytes,tipo de declaración: Double,Ejemplo: Dim numero As double

En el caso de las variables que van a guardar nombres (cadenas de caracteres), se deben declarar como String y el espacio que ocupa será 4 bytes más un byte por cada caracter que tenga, en el caso de VB de 32 bits realmente ocupará 2 bytes por cada caracter que tenga.
La longitud máxima de una variable del tipo String será de aproximadamente 32.000 caracteres y la forma de declararla será:
Dim Cadena As String
Una vez declarada podemos asignarle la cantidad de caracteres que queramos (sin pasarnos) y cuantas veces queramos.
Hay que tener en cuenta que en cualquier variable sólo se queda el último valor asignado.. bien mirad esto para que lo entendáis:

Código:
Dim Número As Integer
Número = 5
Print Número
Número = 12
Print Número

En este ejemplo, el último valor almacenado en Número es el 12. El 5 que tenía en un principio se perdió.
Pero, ¿que tengo que hacer para sumarle una cantidad al valor almacenado en una variable?
Es decir, ¿cómo incrementar el valor de una variable numérica?
La respuesta la tienes en cómo se manejan las expresiones y las asignaciones a las variables.Al asignar a una variable una expresión, primero se calcula la expresión y una vez obtenido el resultado, se asigna a la variable. otro ejemplo

Código:
Dim N As Integer
Dim M As Integer
N = 10
M = N * 3
Print M

El resultado de este programa sería 30, que es lo que resulta de multiplicar 10 por 3
y el ejercicio anterior se podría simplificar poniendo:

Código:
N = N * 3
Print N

También obtendríamos 30.Ya que cuando el Basic calcula la expresión de la derecha del signo igual, N vale 10, una vez obtenido el resultado del cálculo lo asigna a la variable de la izquierda del signo de asignación, sin importarle lo más mínimo de que variables es y como en este caso hemos usado la misma, pues se queda el último valor, perdiéndose el que originalmente estaba "guardado". Esto es útil cuando necesitamos "contar" de forma secuencial, para así incrementar el valor de una variable.

Ahora vamos a ver como podemos manejar las cadenas de caracteres es decir las variables de tipo String.
Con estas variables ocurre lo mismo que con las numéricas, pero la única operación que podemos realizar es la suma.Realmente una suma en una cadena de caracteres es "pegar" dos cadenas en una sola.
Por ejemplo si hacemos esto: N = 3 + 2. El valor obtenido es 5 y eso es lo que se guarda en N.
Sin embargo con los strings hacer esto: Cadena = "A" + "B", se guardará "AB", es decir se unirán las dos cadenas en una sola. Para este tipo de operación se recomienda usar mejor el signo &. Que entre otras cosas le indica al Visual Basic que lo que pretendemos hacer es unir dos cadenas, no sumarlas.
Aunque "teóricamente" no se pueden sumar cadenas, sólo con-catenarlas, veremos cómo podemos llegar a producir "problemillas" de entendimiento entre el VB y nuestras "mentes poderosas". jejeje

Como te he comentado al principio el tipo de datos Variant acepta de todo, números, nombres, etc.
Si no le indicamos de forma correcta al VB cual es nuestra intención, podemos confundirle y hacer que el resultado de algo que nosotros dábamos "por hecho", al final se convierte en un pequeño caos para nuestras pobres mentes.
Vamos a verlo con un par de ejemplos, en estos casos: (al no indicarle de que tipo son las variables, el Basic entiende que nuestra intención es usar el tipo Variant)

Código:
Dim Num1
Dim Num2
Num1 = 5
Num2 = 3
Num1 = Num1 + Num2
Print Num1

¿Que imprimirá? Pruébalo y saldrás de duda. Bueno, imprimirá un 8.
Ahora veamos este otro ejemplo:

Código:
Dim Num1
Dim Num2
Num1 = "5"
Num2 = "3"
Num1 = Num1 + Num2
Print Num1

Fíjate que lo que varía es sólo las comillas. El resultado en este caso es 53, es decir ha unido las dos cadenas.
Ahora quita las comillas del 5, para dejarlo así:

Código:
Dim Num1
Dim Num2
Num1 = 5
Num2 = "3"
Num1 = Num1 + Num2
Print Num1

que!!! ¿Que ha pasado? Pues que ha impreso un 8, es decir ha "pasado" de que el tres sea una cadena de caracteres y lo ha tomado por un número...
En esta ocasión, sólo vamos a cambiar la línea de la asignación para dejarla de esta forma

Código:
Num1 = Num1 & Num2


El resultado será 53. Porque le hemos indicado que una las dos cadenas, por tanto al encontrase con esta "operación" ha considerado al número 5 como una cadena, en lugar de un número.
Cambia ahora la asignación del Num2, para que sea: Num2 = 3
Vuelve a mostrar 53, el signo & tiene unos poderes enormes... y a pesar de ser dos números la única operación que puede realizar es la concatenación de cadenas, por tanto el tipo Variant se convierte por arte de magia en cadena.
Pero fíjate si es "fuerte" el poder de convicción que tiene este operador, que aunque cambiemos el tipo de las variables, sigue "convenciendo" al basic que tipo de operación debe hacer. Esto no debería ocurrir así, pero ocurre.

Código:
Dim Num1 As Integer
Dim Num2 As Integer
Num1 = 5
Num2 = 3
Num1 = Num1 & Num2
Print Num1

Sigue mostrando 53, aunque en este caso debería producir un error, ya que un Integer no es una cadena.
Así que "cuidadín" con las operaciones que realizamos. Ya que si añades esta línea:

Código:
Print Num1 * 2

Verás que realmente Num1 tiene guardado un número y el resultado será: 106
Bueno eso fue todo ya pondré la segunda parte

Saludos

0 comentarios:

Publicar un comentario