P. 1
Que es una variable

Que es una variable

|Views: 187|Likes:
Publicado porkalesther

More info:

Published by: kalesther on Feb 01, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

10/06/2015

pdf

text

original

¿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”

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

Mostrará la parte de las declaraciones Generales del Formulario.S. Es decir vamos a probar que todo esto es cierto. y nos mostraría 35. en lugar de guardarlo en una variable.. más adelante veremos dónde). 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.. guárdalo en una variable. ya que el valor de Paliza sería 35. Si tiene escrito Option Explicit. Ahora sitúate en Form (selecciónalo de la lista desplegable que está a la izquierda). para poder hacer el cálculo. pero si no le indicamos que debe hacer con ese resultado. 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. Te creará un Form nuevo. más adelante te explicaré para que sirve. haciendo esto: Print 5 * 2. efectuará el cálculo y almacenará el resultado en. (estará en la parte superior). y aquí llega nuestra primera instrucción: Print..I. 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. 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” . Así que lo más juicioso sería decirle: ok.. si no le decimos dónde. Por ejemplo cuando el Basic se encuentra con 5 * 2 tiene que 'evaluar' lo que significa. de esta forma sabrá que tenemos una operación en la cual queremos multiplicar dos números.. Haciendo Print Guillermo. así que: Resultado = 5 * 2 guardaría un 10 en la variable Resultado. incluso a veces ni eso. una vez que ha evaluado nuestra intención de multiplicar esos dos números. que estará vacío. volvamos al Paliza del Guillermo. el Basic diría que muy bien y mostraría un 10 Pero.C. te mostrará: Private Sub Form_Load() End Sub L. Antes de seguir 'imaginando' las cosas. tendríamos que hacer algo como esto: Print Paliza. Ciérralo y muestra la ventana de código. según lo dicho. vamos a verla en funcionamiento. es decir al ejemplo de Paliza = Guillermo * 7 Si quisiéramos mostrar el valor de Paliza. mostrará un 5. lo hará en una memoria que tiene para esas cosas. bórralo. nos dará un error. ok. 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. Con ella le decimos al Basic que lo imprima (o sea que los muestre.

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

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

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

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

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

por tanto el tipo Variant se convierte por arte de magia en cadena. 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. Y si nuestra intención es sumar números. por tanto al encontrase con esta "operación" ha considerado al número 5 como una cadena. un TextBox y un botón de comandos.El resultado será 53. el signo & tiene unos poderes enormes. 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. sigue "convenciendo" al basic que tipo de operación debe hacer. usaremos el & Para rematar esta segunda entrega. ya que un Integer no es una cadena. empleemos el signo +. que aunque cambiemos el tipo de las variables. y a pesar de ser dos números la única operación que puede realizar es la concatenación de cadenas. Cambia ahora la asignación del Num2. en caso de que queramos unir cadenas de caracteres. mejor dicho empecemos a "habituarnos" a los eventos. El aspecto será algo parecido al de la siguiente figura: L. para que sea: Num2 = 3 Vuelve a mostrar 53.C. GONZALEZ RENDON ODILON PREFECO: “QUETZALCAOTL” . Porque le hemos indicado que una las dos cadenas. Pero fíjate si es "fuerte" el poder de convicción que tiene este operador..S. Esto no debería ocurrir así. Así que "cuidadín" con las operaciones que realizamos.I. pero ocurre. en lugar de un número. vamos a usar un textbox para que se puedan introducir datos y empecemos a manejar los eventos. aunque en este caso debería producir un error.

así como otro de los eventos que pone a nuestra disposición. Una vez pulsado el botón.I. se produce el evento Click del Command1 y se hace lo que se indica en su interior.S. Private Sub Form_Load() Label2 = "" Text1 = "" End Sub Private Sub Command1_Click() Label2 = "Hola " & Text1 End Sub Cuando pulsas F5. Hasta que no pulsemos el botón mostrar. ya sabes F5. no ocurrirá nada y el programa estará esperando a que ocurra algo. Ahora. 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. 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. GONZALEZ RENDON ODILON PREFECO: “QUETZALCAOTL” .Añade el siguiente código y después ejecuta el programa. en este caso el evento que se produce cada vez que se modifica el contenido del textbox: Change. que es el que se muestra en la Figura.C. Esa es la "utilidad" del UCase. imagínate que quieres mostrar el nombre en mayúsculas. por tanto se asigna al Label2 y al Text1 una cadena vacía. Escribe algo en el cuadro de texto y pulsa en el botón. escribe lo siguiente: Private Sub Text1_Change() Text1 = UCase(Text1) End Sub L. se produce el evento Form_Load. que es tomar lo que hay en la caja de texto y unirla a la palabra Hola. para asignarla al Label2. con lo cual borramos el contenido anterior.

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

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->