¿Que es una variable? En cualquier programa siempre necesitaremos hacer cálculos, usar información, procesarla y mostrarla.

En la mayoría de los casos, necesitaremos un lugar temporal en el cual guardar parte de esa información, incluso toda. Todos los lenguajes, y el Basic no iba a ser menos, nos permiten guardar datos en la memoria, para que cuando los necesitemos, podamos tomarlos, modificarlos y volverlos a guardar para usarlos más tarde. Si no seguimos unas normas o usamos unas reglas, de poco nos iba a servir el guardar esa información, si después no podemos almacenarla en ningún sitio, pero ese será tema de otro capítulo... ahora centrémosno en la memoria.

¿La memoria? Espero que este concepto lo tengas claro, pero si no es así, ahí va un poco de 'rollo': La memoria es el lugar donde el ordenador almacena de forma temporal los programas y parte de la información que necesita o utiliza. Así pues, los lenguajes de programación usan también esa memoria para guardar información propia del lenguaje y del programa que queramos realizar. El programa una vez que se está ejecutando puede necesitar también guardar información, aunque esta información sólo estará disponible mientras se esté ejecutando. Esas posiciones o lugares de la memoria donde los programas pueden almacenar información son las variables. El que se llamen de esta forma es porque podemos hacer que el contenido de ese lugar de almacenamiento varíe, es como si tuviésemos una serie de cajas y en ellas pudiésemos guardar cosas, con la salvedad de que en cada caja sólo puede haber una cosa a la vez; aunque también veremos cómo hacer que el contenido pueda variar y que varíe dependiendo de lo que contenía antes... Veamos un ejemplo: Imagínate que quieres guardar tu nombre en una variable, para ello tendríamos que 'guardar' el nombre en la memoria, es decir asignar a una variable un valor. En este caso nuestro nombre. Para ello el lenguaje de programación pone a nuestra disposición unos lugares donde almacenar nuestro nombre, pero nos impone una serie de reglas de conducta. Si queremos guardar en una de nuestras cajas una hoja, por lo menos tendremos una caja con el tamaño adecuado y que tenga una 'forma', para que el papel no vuele al menor soplo de viento.

Esta es la regla básica para poder usar esos lugares de almacenamientos (variables): Llamar a esas posiciones de memoria con un nombre. Simple, ¿verdad? En principio, es todo el requisito necesario: que le demos un nombre al sitio en el que queremos guardar la información. Por tanto, si queremos guardar un nombre, (el nuestro, por ejemplo), en la memoria, podríamos llamarlo nombre. Y ahora tendremos que seguir otra norma de conducta (o funcionamiento), que en este caso el lenguaje Basic nos dicta:

L.I.S.C. GONZALEZ RENDON ODILON PREFECO: “QUETZALCAOTL”

sino porque te diría que no coinciden los tipos (Type Mismatch) ¿Que son los tipos? Los distintos tipos de datos. debes hacerlo de la siguiente manera: ---Pon el nombre con el que quieres llamar a esa parte de la memoria. letras y/o números. básicamente. una frase. no porque Guillermo (yo) no sea un paliza.C. Si queremos guardar un número en una variable. es el literal (o palabra) "7" Así que cuando veas algo entrecomillado.) Los datos pueden ser. multiplicar a Guillermo por 7 (como no hay bastante con uno. tendremos que indicarlo poniendo dicha información dentro de comillas dobles. ---a continuación pones el signo igual (=) y ---después lo que quieras guardar. el ejemplo quedaría así: Nombre = "Guillermo" Ahora no hay confusión posible. Por tanto para guardar Guillermo en la variables nombre. (es que el Basic. hemos seguido lo que el Basic nos ha dicho: variable. etc. por tanto Guillermo también podría ser una variable.. la cosa es más simple: Numero = 7 ¿Te estás enterando? Pero. Así pues. ya que el Basic no nos dice nada sobre cómo debemos llamar (o si lo prefieres. no sabe que ese es mi nombre!!!).. a pesar de que llevo tantos años bregando con él. cómo hay que escribir) el nombre de una variable. tendríamos que hacer (o casi): Nombre = Guillermo Pero esto podía llevar a confusión. El primero es el número 7 y en el segundo caso.S. por supuesto) Según esto. nombre o cualquier tipo de información alfabética. pero es tratada como si fuesen palabras. piensa que no es un número. signo igual. valor a almacenar.. el Basic debería permitir hacer esto: Guillermo = 5 Paliza = Guillermo * 7 L.. (que esfuerzo mental. pero si podemos multiplicar una variable por un número (siempre que la variable sea numérica. Para el Basic 7 y "7" son dos tipos de datos diferentes. GONZALEZ RENDON ODILON PREFECO: “QUETZALCAOTL” .Para guardar en una variable (posición de memoria) algo. cuando queramos guardar en una variable una palabra. ¿qué ocurre si quisiéramos repetir 7 veces a Guillermo? Podrías hacer esto.) Paliza = "Guillermo" * 7 Pero el Basic te diría que eso no está bien. de dos tipos: Numéricos: sólo números y Alfanuméricos: cualquier cosa. frases.I. sino una palabra (más vulgarmente llamada cadena de caracteres o string en inglés) Hemos visto que no podemos multiplicar una palabra (cadena) por un número.

. efectuará el cálculo y almacenará el resultado en. en lugar de guardarlo en una variable. bórralo. Haciendo Print Guillermo. así que: Resultado = 5 * 2 guardaría un 10 en la variable Resultado... ok. Antes de seguir 'imaginando' las cosas. Si le decimos simplemente: 5 * 2 El Basic no sabrá qué hacer con el resultado de esta 'expresión' (que por cierto es 10) y nos dirá: o te aplicas o lo tienes rudo conmigo. También podríamos decirle que nos mostrara el resultado. porque el contenido de Guillermo es 5 y 5 * 7 es 35 (y sin calculadora!!!) Veamos si es cierto que Guillermo vale 5. Ciérralo y muestra la ventana de código. incluso a veces ni eso. volvamos al Paliza del Guillermo. más adelante veremos dónde). Así que lo más juicioso sería decirle: ok. lo hará en una memoria que tiene para esas cosas. Por ejemplo cuando el Basic se encuentra con 5 * 2 tiene que 'evaluar' lo que significa. Es decir vamos a probar que todo esto es cierto. lo calcula y el resultado lo guarda en la variable que está a la izquierda del signo de asignación (=) ¿Expresión? Expresión es cualquier cosa que el Basic tenga que 'desglosar' para poder entenderla. te mostrará: Private Sub Form_Load() End Sub L. pero si no le indicamos que debe hacer con ese resultado. Te creará un Form nuevo. Carga el Visual Basic (si es que aún no lo has hecho).El Basic tomaría el 5 y lo almacenaría en una variable numérica llamada Guillermo. GONZALEZ RENDON ODILON PREFECO: “QUETZALCAOTL” .I..S. y nos mostraría 35.. Después se encuentra con: Paliza = Guillermo * 7 y aquí lo que hace es evaluar la expresión que está después del signo igual. una vez que ha evaluado nuestra intención de multiplicar esos dos números. y aquí llega nuestra primera instrucción: Print. de esta forma sabrá que tenemos una operación en la cual queremos multiplicar dos números. Con ella le decimos al Basic que lo imprima (o sea que los muestre. según lo dicho. (estará en la parte superior). el Basic diría que muy bien y mostraría un 10 Pero. nos dará un error. más adelante te explicaré para que sirve. tendríamos que hacer algo como esto: Print Paliza. haciendo esto: Print 5 * 2. guárdalo en una variable. para poder hacer el cálculo. mostrará un 5.C.. si no le decimos dónde. Ahora sitúate en Form (selecciónalo de la lista desplegable que está a la izquierda). ya que el valor de Paliza sería 35. Mostrará la parte de las declaraciones Generales del Formulario. Si tiene escrito Option Explicit. es decir al ejemplo de Paliza = Guillermo * 7 Si quisiéramos mostrar el valor de Paliza. que estará vacío. vamos a verla en funcionamiento.

C. Pero. antes debes parar el programa.S. o bien pulsa en el botón detener de la barra de herramientas del VB. lo siguiente: Print Guillermo Pulsa de nuevo F5 y verás que ahora además del 35. y escribe el ejemplo. es decir. Ahora veamos otros ejemplos. ¿qué ocurriría si cambiásemos el valor de Guillermo? Añade estas líneas a continuación de las anteriores. para que quede de esta forma: Private Sub Form_Load() Show Guillermo = 5 Paliza = Guillermo * 7 Print Paliza Print Guillermo Guillermo = 10 Print Guillermo Print Paliza End Sub L. GONZALEZ RENDON ODILON PREFECO: “QUETZALCAOTL” . Sitúate de nuevo en el código del Form_Load. para ejecutar el programa.. escribe después de la línea del Print. hay un 5 debajo. y verás que se escribe el 35.. en una línea en blanco después del Private. para ello cierra el Form.I. ya tienes una forma de mostrar datos. pulsando en el botón que tiene una X. El valor de la variable Guillermo. Bien. quedaría así: Private Sub Form_Load() Show Guillermo = 5 Paliza = Guillermo * 7 Print Paliza End Sub Pulsa F5.Sitúate en medio.

tendremos que indicárselo de nuevo al Basic. pon en medio de los dos últimos prints la siguiente asignación: Paliza = Guillermo * 7 Esta vez.) Private Sub Form_Load() Show Nombre = "Guillermo" Print Nombre End Sub Pulsa F5 y verás que se muestra el contenido de la variable Nombre. Una vez almacenado el resultado.I.Después de pulsar F5. para que vuelva a evaluar la expresión y hacer la correspondiente asignación. Bien. Prueba ahora con esto otro (es un clásico): Print "Hola Mundo" Y para rematar. mostrará un 70..C.. para que los ejemplos que se dieron en la entrega anterior. escribe en lugar del Print Nombre: Print "Hola " . 5. sino no se verá nada. por tanto el Basic evaluó la expresión 5 * 7 y almacenó el resultado (el 35).. NOTA Antes de nada una pequeña aclaración. borra todo lo anterior y escribe: (por supuesto debes detener el programa. Nombre El punto y coma. al ejecutar el programa. deberás poner un Show en el form Load antes de los Prints. el Basic se olvidó de dónde había sacado ese 5. 35.. para que se muestre algo. GONZALEZ RENDON ODILON PREFECO: “QUETZALCAOTL” . 10. es decir Guillermo. creo que con esto es suficiente por hoy. 35 ¿Esperabas que el último fuese 70? Fíjate que cuando asignamos a Paliza el contenido de Guillermo. o por ahora. éste era 5. OK CHAVOS L.S. se usa para indicarle al Basic que se deben mostrar las cosas una a continuación de la otra. fíjate que después de hola y antes de cerrar las comillas hay un espacio. Si queremos que se 'actualice' el valor de Paliza. y de camino ver otra posibilidad del Print.. Para ello. te mostrará los siguientes valores (cada número en una línea).. Ya para terminar. que será el nuevo contenido de Paliza. Ahora te habrá mostrado: Hola Guillermo.

La razón es que el Visual Basic nos permite controlar un poco mejor el tema de las variables que queremos usar. teníamos una variable llamada Nombre. Estas capacidades puedes encontrarlas en el manual del basic o en la ayuda. Ya te he dicho que el espacio que ocupa en memoria es diferente para cada uno de estos tipos. Según como tengas configurado el entorno de desarrollo. en la cual almacenamos un nombre. habrás tenido problemas con los ejemplos de la entrega anterior. En VB por supuesto esto también es posible y recomendable. sabrán que cada variable debe ser del tipo de datos que queramos asignarle. Ya lo vimos en la entrega anterior. lo más importante es que los números enteros y entero largo sólo admiten números enteros (de ahí sus nombres). GONZALEZ RENDON ODILON PREFECO: “QUETZALCAOTL” . Desde un número hasta una cadena de caracteres. Los que hayan tenido experiencias anteriores. y para hacerlo usamos la instrucción DIM. Cada uno de ellos tienen unas capacidades determinadas. Pero dentro de los numéricos. Ese control lo da la instrucción: Option Explicit. Si ponemos esto en la parte destinada a las declaraciones de cualquier módulo. Ya vimos que los tipos de datos podían ser numéricos o de caracteres. La longitud máxima de una variable del tipo String será de aproximadamente 32. además de ocupar más memoria o menos. Con este tipo podemos asignar a una variable cualquier tipo de dato. con Basic u otro lenguaje. 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.S. por tanto podríamos haberle avisado a Visual Basic que reservara espacio para una variable. pasando por cualquier tipo de objeto que Visual Basic pueda manejar (más o menos). tenemos cuatro tipos básicos: enteros. es decir que no admiten decimales. precisamente. Sin embargo los otros dos si admiten decimales. veamos en la siguiente tabla cómo declararlos y cuanto ocupa: Tipo Entero Entero Largo Simple Doble Espacio ocupado 2 bytes 4 bytes 4 bytes 8 bytes Tipo de declaración Integer Long Single Double Ejemplo Dim Numero As Integer Dim Numero As Long Dim Numero As Single Dim Numero As Double En el caso de las variables que van a guardar nombres (cadenas de caracteres).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.Antes vamos a dejar un par de cosillas claras. con ésta le indicamos que nos guarde un "cachillo" de la memoria para nuestro uso: Dim Nombre También nos ofrece una variante con respecto al "basic clásico" y es. el tipo de datos variant. en el caso de VB de 32 bits realmente ocupará 2 bytes por cada caracter que tenga. se deben declarar como String y el espacio que ocupa será 4 bytes más un byte por cada caracter que tenga. En el último ejemplo de la entrega anterior.I. simples y dobles. enteros largos. nos obligará a declarar las variables que vamos a usar en dicho módulo. (ahora lo veremos). pero vamos a refrescarlo un poco: L.C.

Ya que cuando el Basic calcula la expresión de la derecha del signo igual. primero se calcula la expresión y una vez obtenido el resultado. pues se queda el último valor. una vez obtenido el resultado del cálculo lo asigna a la variable de la izquierda del signo de asignación. perdiéndose el que originalmente estaba "guardado". para así incrementar el valor de una variable. Pero. Realmente una suma en una cadena de caracteres es "pegar" dos cadenas en una sola. L. al asignar a una variable una expresión. Esto es útil cuando necesitamos "contar" de forma secuencial. N vale 10.Dim Número As Integer Número = 5 Print Número Número = 12 Print Número En este ejemplo.I. es decir las variables de tipo String. que es lo que resulta de multiplicar 10 por 3. pero usando otros nombres menos "cachondos" Dim N As Integer Dim M As Integer N = 10 M = N * 3 Print M El resultado de este programa sería 30. asigna ese valor. ¿Recuerdas lo que ocurría con la variable Paliza? Vamos a verlo de nuevo. El valor obtenido es 5 y eso es lo que se guarda en N. Ya veremos alguna "utilidad" para estos casos. el VB toma el contenido de N y lo multiplica por 3.S. ¿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. el último valor almacenado en Número es el 12. Con estas variables ocurre lo mismo que con las numéricas.C. Una vez que sabe la solución. sin importarle lo más mínimo de que variables es y como en este caso hemos usado la misma. GONZALEZ RENDON ODILON PREFECO: “QUETZALCAOTL” . en este caso 30) a la variable que hay a la izquierda del signo igual. Ahora vamos a ver cómo podemos manejar las cadenas de caracteres. pero la única operación que podemos realizar es la suma. ¿qué tengo que hacer para sumarle una cantidad al valor almacenado en una variable? Es decir. Como ya vimos anteriormente. Cuando se asigna a la variable M el valor de N (que es 10) multiplicado por 3. podríamos simplificar la cosa y hacer los siguiente: N = N * 3 Print N También obtendríamos 30. Por ejemplo si hacemos esto: N = 3 + 2. Sabiendo esto. El 5 que tenía en un principio se perdió. se asigna a la variable.

imprimirá un 8. etc. se guardará "AB". Ahora veamos este otro ejemplo: 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. Como te he comentado al principio el tipo de datos Variant acepta de todo. GONZALEZ RENDON ODILON PREFECO: “QUETZALCAOTL” . en estos casos: (al no indicarle de que tipo son las variables. El resultado en este caso es 53.Sin embargo con los strings hacer esto: Cadena = "A" + "B". Aunque "teóricamente" no se pueden sumar cadenas. al final se convierte en un pequeño caos para nuestras pobres mentes. Ahora quita las comillas del 5. nombres. Para este tipo de operación se recomienda usar mejor el signo &. Si no le indicamos de forma correcta al VB cuál es nuestra intención. para dejarlo así: Dim Num1 Dim Num2 Num1 = 5 Num2 = "3" Num1 = Num1 + Num2 Print Num1 Ojo! ¿Qué ha pasado? Pues que ha impreso un 8.I. es decir ha "pasado" de que el tres sea una cadena de caracteres y lo ha tomado por un número. Que entre otras cosas le indica al Visual Basic que lo que pretendemos hacer es unir dos cadenas... sólo con-catenarlas. sólo vamos a cambiar la línea de la asignación para dejarla de esta forma: Num1 = Num1 & Num2 L.S. Vamos a verlo con un par de ejemplos. el Basic entiende que nuestra intención es usar el tipo Variant) Dim Num1 Dim Num2 Num1 = 5 Num2 = 3 Num1 = Num1 + Num2 Print Num1 ¿Qué imprimirá? Pruébalo y saldrás de duda. veremos cómo podemos llegar a producir "problemillas" de entendimiento entre el VB y nuestras "mentes poderosas". no sumarlas. Bueno. En esta ocasión. números.C. podemos confundirle y hacer que el resultado de algo que nosotros dábamos "por hecho". es decir se unirán las dos cadenas en una sola. es decir ha unido las dos cadenas.

el signo & tiene unos poderes enormes. usaremos el & Para rematar esta segunda entrega. ya que un Integer no es una cadena.I..S. aunque en este caso debería producir un error. que aunque cambiemos el tipo de las variables. en caso de que queramos unir cadenas de caracteres. Esto no debería ocurrir así. vamos a usar un textbox para que se puedan introducir datos y empecemos a manejar los eventos. Añade al form dos Label. Dim Num1 As Integer Dim Num2 As Integer Num1 = 5 Num2 = 3 Num1 = Num1 & Num2 Print Num1 Sigue mostrando 53.El resultado será 53. GONZALEZ RENDON ODILON PREFECO: “QUETZALCAOTL” . El aspecto será algo parecido al de la siguiente figura: L. Porque le hemos indicado que una las dos cadenas. y a pesar de ser dos números la única operación que puede realizar es la concatenación de cadenas. por tanto al encontrase con esta "operación" ha considerado al número 5 como una cadena. Pero fíjate si es "fuerte" el poder de convicción que tiene este operador. en lugar de un número. Así que "cuidadín" con las operaciones que realizamos. sigue "convenciendo" al basic que tipo de operación debe hacer. para que sea: Num2 = 3 Vuelve a mostrar 53.C. un TextBox y un botón de comandos. empleemos el signo +. por tanto el tipo Variant se convierte por arte de magia en cadena. mejor dicho empecemos a "habituarnos" a los eventos.. Y si nuestra intención es sumar números. Cambia ahora la asignación del Num2. pero ocurre. Ya que si añades esta línea: Print Num1 * 2 Verás que realmente Num1 tiene guardado un número y el resultado será: 106 ¿A dónde nos lleva todo esto? A que debemos usar los signos (operadores) de forma adecuada.

se produce el evento Form_Load. se produce el evento Click del Command1 y se hace lo que se indica en su interior. en este caso el evento que se produce cada vez que se modifica el contenido del textbox: Change. Lo único que tendrías que hacer es lo siguiente: Private Sub Command1_Click() Label2 = "Hola " & UCase(Text1) End Sub Lo que se ha hecho es decirle al VB que convierta en mayúsculas lo que ya está en Text1. Private Sub Form_Load() Label2 = "" Text1 = "" End Sub Private Sub Command1_Click() Label2 = "Hola " & Text1 End Sub Cuando pulsas F5. para asignarla al Label2. Esa es la "utilidad" del UCase. GONZALEZ RENDON ODILON PREFECO: “QUETZALCAOTL” . con lo cual borramos el contenido anterior. que es tomar lo que hay en la caja de texto y unirla a la palabra Hola. que es el que se muestra en la Figura. escribe lo siguiente: Private Sub Text1_Change() Text1 = UCase(Text1) End Sub L. ya sabes F5.S. Escribe algo en el cuadro de texto y pulsa en el botón. Ahora.Añade el siguiente código y después ejecuta el programa. Hasta que no pulsemos el botón mostrar. imagínate que quieres mostrar el nombre en mayúsculas. por tanto se asigna al Label2 y al Text1 una cadena vacía. así como otro de los eventos que pone a nuestra disposición. Una vez pulsado el botón.C. no ocurrirá nada y el programa estará esperando a que ocurra algo. Pero y ¿si quisiéramos que conforme se va escribiendo se vayan convirtiendo los caracteres a mayúsculas? Aquí entrarían más instrucciones/funciones del Visual Basic.I.

se produce un evento Change. realmente convierte un código ASCII en la letra que representa (busca en la ayuda ASCII y léete lo que dice en las opciones que te muestra). Por tanto obliga a poner el cursor. en una cadena. representado por la variable KeyAscii. GONZALEZ RENDON ODILON PREFECO: “QUETZALCAOTL” . (el palico ese que intermite y que nos indica que podemos escribir). le indica la posición en la que se insertará el siguiente caracter que se escriba o bien nos puede indicar la posición actual del cursor..S. (Len cuenta los caracteres de una cadena y lo devuelve como número).SelStart = Len(Text1) End Sub La línea que se ha añadido (realmente la habrás tecleado tú). la cual convierte un número en una cadena. Vamos a intentar remediarlo y de camino vemos nuevas instrucciones/propiedades. Por otra parte Asc hace lo contrario. Private Sub Text1_Change() Text1 = UCase(Text1) Text1. L.I.C. la pasamos a mayúsculas y después la volvemos a asignar a la variable. lo que le indica al Visual Basic es que haga lo siguiente: Calcula la longitud del contenido del Text1. Queda "guay" ¿verdad? Pero no es lo que nosotros pretendíamos. Y lo que nosotros hacemos es: convertir el código de la tecla pulsada. Esto lo podemos "controlar" en el evento KeyPress. el cual se produce cada vez que se pulsa una tecla..Pruébalo y verás lo que ocurre. Borra el procedimiento anterior y escribe este otro: Private Sub Text1_KeyPress(KeyAscii As Integer) Dim s As String s = UCase(Chr(KeyAscii)) KeyAscii = Asc(s) End Sub Ahora han entrado dos nuevas funciones en acción: Chr. Pero hay otra forma de hacer esto mismo y es controlando cada tecla que se pulsa. SelStart es una propiedad del TextBox que entre otras cosas. es decir convierte una letra en el código ASCII. Ahora ya sabes que cada vez que "cambie" el Text1. al final de la última letra que contiene el Text1. para "engañar" al Visual Basic y así hacerle pensar que realmente hemos tecleado una letra en mayúsculas. en este caso del TextBox.

Sign up to vote on this title
UsefulNot useful