1.1. Declaracin de variables Antes de utilizar un dato en nuestros programas, es necesario declararlo. Este dato puede ser variable, con lo cual podr cambiar de valor a lo largo del programa, o constante, en cuyo caso su valor ser el mismo a lo largo de todo el programa y no podr modificarse. La forma de declarar las variables es la siguiente: Dim| Public| Static nombre_variable As tipo Dim: Al declarar una variable con esta palabra estamos diciendo que la variable ser local al mbito en que se declara. Puede ser dentro de un procedimiento o dentro de un formulario; de esta forma no ser accesible desde los dems procedimientos o formularios. Public: Las variables declaradas sern publicas y podrn estar accesibles desde todos los formularios de la aplicacin. Static: Con esta forma de declarar variables conseguiremos que las variables locales no se creen y se destruyan al entrar y salir de los procedimientos donde fueron declaradas sino que se mantenga su valor durante todo el periodo de ejecucin de la aplicacin. De esta forma al entrar en algn procedimiento las variables recuerdan el valor que tenan cuando se sali de l. Los tipos de variables que se pueden utilizar en Visual Basic se muestrean en la tabla siguiente. TIPOS DE VARIABLES TIPO COMENTARIO BOOLEAN Slo admite 2 valores: TRUE o FALSE BYTE admite valores enteros entre 0 y 255 INTEGER admite valores enteros entre -32768 y 32767 LONG valores enteros entre 2.147.483.648 y 2.147.483.647 SINGLE admite valores decimales con precisin simple DOUBLE admite valores decimales de doble precisin CURRENCY vlido para valores de tipo moneda STRING cadenas de caracteres DATE fechas, permite operar con ellas
Al declarar una variable lo que estamos haciendo es decir al procesador que reserve una posicin de memoria para guardar un dato. La cantidad de memoria reservada depender del tipo de variable que hayamos indicado. Es importante tener en cuenta que siempre debemos utilizar el tipo de variable ms pequea posible, pues de esta forma estaremos consumiendo la menor cantidad de memoria. Por ejemplo, si queremos crear una variable en la que se guardar la edad de una persona, bastar con que la variable creada al efecto sea de tipo byte. 1 1.2. Constantes Una constante es aquel dato que tendr el mismo valor a lo largo de todo el programa. Para declarar una constante, se procede de la forma siguiente: Const nombre_constante As tipo = valor donde nombre_constante es el nombre que queramos dar a la constante, tipo es uno de los tipos de la tabla anterior y valor es el valor que tendr la constante. El siguiente ejemplo declara una constante llamada PI a la que se asigna el valor 3,1416: Const PI as Single = 3,1416 2 1.3. Declaracin de matrices Una matriz es un conjunto de datos del mismo tipo. Supongamos que necesitamos almacenar 10 nmeros enteros; en lugar de crear 10 variables de tipo entero, podemos crear una matriz de 10 elementos. Para declarar matrices debemos colocar entre parntesis el nmero de elementos de los que constar a continuacin del nombre de la variable; tambin habr que indicar el tipo de elementos que va a almacenar la matriz. Todo ello se realiza con la siguiente expresin: Dim nombre_matriz(dimensin) As tipo Ejemplo: Dim medidas(9) as integer De esta forma tenemos una matriz de 10 elementos identificados del 0 al 9, en la cual se almacenarn nmeros enteros. Para referirnos al quinto elemento de nuestra matriz, habra que escribir medidas(4). (Recuerda que el primer elemento es el de ndice 0, el segundo el de ndice 1, ). As por ejemplo, la expresin medidas(7) = -5 almacenara el nmero 5 en el octavo elemento de la matriz. Aunque no es lo habitual, podemos obligar a que el primer elemento de una matriz tenga el ndice con valor 1. Esto lo haremos colocando la instruccin option base 1 en la seccin declarations de nuestro formulario. Tambin podemos indicar los lmites inferior y superior de la matriz: Dim medidas(5 to 14) as integer es una matriz de 10 elementos cuyos ndices van del 5 al 14. Las matrices pueden tener ms de una dimensin. Las matrices multidimensionales se declaran de la siguiente forma: Dim medidas(2, 9) as integer sera una matriz bidimensional de 30 elementos, agrupados en tres filas y diez columnas. El primer elemento sera el de ndice (0, 0) y el ltimo (2, 9). Imagina que queremos hacer el tpico juego de los barcos con un tablero de 8 x 8 casillas. Crearamos una matriz en la que se almacenara que casilla contiene un barco y cual no de la siguiente forma: Dim tablero_de_barcos(7, 7) as boolean Si te has fijado bien habrs podido observar que hemos separado con el smbolo _ las palabras tablero de barcos; ello es debido a que el nombre de una variable no puede estar formado por ms de una palabra, por lo que hay que unirlas de alguna forma para hacer creer al ordenador que se trata de una sola palabra. 3 1.4. Expresiones y operadores Una expresin es un conjunto de operandos y operadores que una vez evaluados devuelven un resultado. En Visual Basic hay cuatro tipos de operadores: aritmticos, relacionales, lgicos y de texto. Los operadores relacionales son aquellos que devuelven valores de tipo Bolean, es decir, su resultado ser Verdadero o Falso.
TIPOS DE OPERADORES Aritmticos Relacionales Lgicos De texto Potenciacin ^ Igual que = Not & Negacin - Distinto a <> And Suma y resta +, - Menor que < Or Multiplicacin y divisin *, / Menor o igual que <= Divisin entera \ Mayor que > Resto de la divisin Mod Mayor o igual que >=
Los operadores aritmticos y los relacionales no necesitan mayor aclaracin. La funcin de los operadores lgicos y de texto es la siguiente: Not (expresin) si el resultado de expresin es FALSO lo convierte en VERDADERO, y viceversa. (expresin_1) And (expresin_2) devuelve VERDADERO si el resultado de las dos expresiones es VERDADERO, y FALSO en caso contrario. (expresin_1) Or (expresin_2) devuelve VERDADERO si el resultado de alguna de las dos expresiones es VERDADERO, y FALSO en caso contrario. Unos ejemplos ayudarn a comprender mejor algunos de los distintos operadores: Expresin Resultado Expresin Resultado 4 ^ 3 64 2 + 7 <> 5 VERDADERO 7 / 3 2,33333333 2 + 7 > 9 FALSO 7 \ 3 2 2 + 7 >= 9 VERDADERO 7 mod 3 1 Not (3 < 5) FALSO (2 + 3 < 8) And (3 < 5) VERDADERO buen & da buenda (2 + 3 < 8) Or (3 < 5) VERDADERO
2. Estructuras de seleccin Hay ocasiones en las que un programa debe realizar distintas acciones dependiendo del valor de una condicin. En estos casos, disponemos de 2 tipos de sentencias para realizar selecciones dependiendo del valor de una expresin o de una variable: 2.1. Sentencia IF THEN ELSE La estructura general de esta sentencia es la siguiente: If condicin then bloque de sentencias a realizar si la condicin es cierta Else bloque de sentencias a realizar si la condicin es falsa End If Supongamos que queremos crear un programa que nos diga si somos mayores o menores de edad. El cdigo de dicho programa sera el siguiente: If edad < 18 Then print menor de edad Else print mayor de edad End If Se pueden colocar todas las sentencias de cdigo que queramos en cada uno de los bloques de sentencias, siempre que cada sentencia vaya en una lnea distinta. Si los bloques de sentencias estn formados por una sola instruccin podemos utilizar la versin reducida que ocupa una sola lnea: If condicin then sentencia else sentencia Ejemplo: If IsNumeric(nmero) then a = nmero else print Error En el ejemplo anterior, si la variable nmero contiene un valor numrico, este es almacenado en la variable a; en caso contrario el programa imprimir en pantalla el mensaje Error. Tambin podemos anidar varias sentencias If then Else cuando una de las 2 opciones iniciales contiene a su vez 2 bifurcaciones dependiendo del estado de otra condicin: If edad < 18 Then print menor de edad Else If edad < 65 Then print adulto Else print tercera edad End If End If Este ltimo ejemplo podra haberse escrito de otra forma utilizando la clusula ElseIf: If edad < 18 Then print menor de edad ElseIf edad < 65 Then print adulto Else print tercera edad End If Podemos introducir tantas lneas ElseIf como queramos siempre antes del ltimo Else, si es que lo necesitamos. Para mltiples decisiones, normalmente ms de 3, en las que dependiendo del valor de una variable queremos que se realice una accin distinta, no conviene utilizar la estructura If Then, sino que el cdigo queda ms claro y resulta ms fcil de modificar utilizando la sentencia Select
2.2. Estructura SELECT CASE Esta sentencia permite realizar operaciones diferentes dependiendo del valor de una variable. Su estructura general es la siguiente: Select Case dato Case valor1 bloque de sentencias case valor2 bloque de sentencias Case valor3 bloque de sentencias Case Else bloque de sentencias, se ejecutan si no se cumple ninguno de los valores anteriores End Select En esta construccin, dependiendo del valor de la variable dato se ejecutar un bloque de sentencias diferente. Los valores que podemos colocar en lugar de valor1, valor2, valor3 no slo se limitan a valores constantes como nmeros y cadenas de texto, sino que podemos comparar con un nmero como podemos ver en el siguiente ejemplo, en el que tenemos una variable de tipo single llamada NotaFinal en la que est guardada la nota de un alumno: Select Case NotaFinal Case Is < 5 print Suspenso Case Is < 6 print Suficiente Case Is < 7 print Bien Case Is < 9 print Notable Case Else print Sobresaliente End Select Como podemos observar si utilizamos los operadores lgicos como >, <, =, <=, >= debemos anteponer el operador Is. Si lo que hacemos es comparar con un intervalo de valores colocaremos el operador to entre los limites del intervalo. Case 5 to 5.99 print suficiente Tambin podemos realizar comparaciones con un conjunto de valores separados por comas: Case 1, 3, 5 print el numero es impar
4 3. Estructuras iterativas 5 3.1. Instruccin FOR TO NEXT Sirve para ejecutar un bloque de sentencias un nmero conocido de veces. La sintaxis de esta instruccin es For contador = inicio To fin [Step incremento] bloque de sentencias Next [contador] Contador es la variable numrica que se incrementa cada vez que se ejecuta el bucle. Este se realizar un nmero determinado de veces que vendr determinado por los valores de inicio y de fin. Los argumentos entre corchetes son opcionales. Si no se indica incremento, ste se presupone que vale 1. En cualquier momento podemos abandonar la ejecucin en mitad del bucle si dentro del bloque de sentencias colocamos la instruccin Exit For. Unos cuantos ejemplos ayudarn a comprender mejor esta instruccin: For i = 1 to 5 Print i Next i Imprime en pantalla los nmeros 1 a 5 For i = 0 to 10 step 2 Print i Next i Imprime en pantalla los nmeros 0, 2, 4, 6, 8 y 10 For i = 10 to 2 step -2 Print i Next i Imprime en pantalla los nmeros 10, 8, 6, 4 y 2 Hay que tener cuidado con no crear un bucle que no se acabe nunca. Por el ejemplo, el siguiente bucle For no se terminara nunca, pues si comenzamos en el nmero 10 y aumentamos una unidad cada vez que el bucle se repita, nunca llegaremos al nmero 5.
For i = 10 to 5 Print i Next i 6 3.2. Instruccin DO LOOP En las estructuras anteriores, conocamos de antemano el nmero de veces que iba a repetirse el bucle; en algunas ocasiones no podemos conocer cuantas veces debemos repetir una determinada instruccin (por ejemplo al pedir una clave secreta; habr que repetir la peticin de la misma hasta que la clave introducida sea correcta). En estos casos utilizaremos la instruccin Do Loop. Se ejecutar un bloque de cdigo mientras o hasta que la condicin evaluada sea verdadera. Depender de la forma en la que escribamos la instruccin. Por lo tanto la sintaxis de esta estructura puede adoptar alguna de las siguientes formas:
Estructura Explicacin Do While condicin bloque de sentencias Loop El bloque de sentencias se ejecuta mientras se cumpla la condicin. Puede ocurrir que dicho bloque no se ejecute ninguna vez. Do bloque de sentencias Loop While condicin El bloque de sentencias se ejecuta mientras se cumpla la condicin. Dicho bloque se ejecutar al menos una vez. Do Until condicin bloque de sentencias Loop El bloque de sentencias se ejecuta hasta que se cumpla la condicin. Puede ocurrir que dicho bloque no se ejecute ninguna vez. Do bloque de sentencias Loop Until condicin El bloque de sentencias se ejecuta hasta que se cumpla la condicin. Dicho bloque se ejecutar al menos una vez.
En cualquier momento podemos abandonar la ejecucin en mitad del bucle si dentro del bloque de sentencias colocamos la instruccin Exit Do. Veamos algunos ejemplos del uso de estas sentencias: i = 2 Do While i < 8 Print i i = 2 + i Loop Imprime en pantalla los nmeros 2, 4 y 6 i = 3 Do Print i i = 2 * i Loop While i <= 12 Imprime en pantalla los nmeros 3, 6 y 12 i = 2 Do Until i >= 16 Print i i = i ^ 2 Loop Imprime en pantalla los nmeros 2 y 4 i = 10 Do Print i i = i - 1 Loop Until i < 7 Imprime en pantalla los nmeros 10, 9, 8 y 7
Hay que tener cuidado con no crear un bucle infinito, es decir, un bucle que no termine nunca, como por ejemplo los siguientes: i = 2 Do While i > 0 Print i i = i + 2 Loop Como i siempre es mayor que 0, el bucle no terminar nunca y el programa imprimir en pantalla todos los nmeros pares, hasta el infinito. Tambin puede ocurrir lo contrario, es decir, que creemos un bucle que no se ejecute nunca: i = 2 Do While i < 0 Print i i = i + 2 Loop Como i no es menor que 0, el bucle nunca se ejecutar.
7 6. 8. Las f unci ones I nput Box y Ms gBox La funcin InputBox se utilizar cuando queramos que el usuario introduzca algn dato. Esta funcin presenta la siguiente sintaxis: variable = InputBox (mensaje, [titulo], [valor por defecto]) donde variable es una variable de tipo String en la que se almacenar el dato introducido por el usuario, y mensaje es el mensaje que se mostrar en la ventana de entrada de datos. Los valores que aparecen entre corchetes es porque su inclusin en la funcin InputBox es opcional, por lo que pueden omitirse. Ttulo representa el texto que aparecer como cabecera en la ventana, y Valor por defecto es el valor que tomar la variable si el usuario no introduce ningn valor en la casilla correspondiente. El siguiente ejemplo nombre = InputBox (escriba su nombre,AVISO) mostrara la ventana de entrada de datos de la figura, y almacenara el valor introducido por el usuario en la variable nombre (que debe ser de tipo String).
La funcin MsgBox permite mostrar un mensaje. La sintaxis de esta funcin es como en el siguiente ejemplo: MsgBox No se puede calcular el factorial de un nmero negativo, _ vbCritical + vbOKOnly, Error El resultado del ejemplo anterior sera una ventana como la que aparece a continuacin. Como puede verse la funcin MsgBox lleva tres argumentos separados por comas; el primero de ellos es el cuerpo del mensaje, en el segundo se hace referencia tanto al dibujo que se mostrar como al botn o botones que aparecern y en el ltimo se indica el ttulo de la ventana en la que aparece el mensaje. La funcin MsgBox nos permite conocer que botn ha pulsado el usuario como respuesta al mensaje. Por ejemplo, una funcin MsgBox en la que aparecieran un botn SI junto a un botn NO (vbYesNo), tendra el valor vbYes si pulsamos el botn SI o el valor vbNo si el botn pulsado es NO. Vemoslo ms claramente en el siguiente ejemplo If MsgBox ("Realmente desea salir?", vbYesNo + vbExclamation, _ "ATENCION") = vbYes Then End Esta lnea de cdigo hace que aparezca una ventana preguntndonos si deseamos salir del programa, en la que aparecern los botones <Si> o <No>. Si pulsamos el botn <Si>, el programa finalizar (comando End). Nota importante: conviene resaltar aqu que cuando una sentencia de Visual Basic es demasiado larga y no cabe en una lnea, antes de comenzar a escribir la continuacin de dicha sentencia en la lnea inferior es necesario escribir el carcter de subrayado ( _ ) al finalizar la lnea anterior como puede observarse en el ltimo ejemplo. Las distintas combinaciones de dibujos y botones que pueden mostrarse en un MsgBox se encuentran en el apartado 6.1. , aunque los repetiremos aqu: vbCritical seal de error vbExclamation seal de advertencia vbInformation seal de informacin vbQuestion seal de interrogacin vbOkOnly botn de aceptar vbOkCancel botones aceptar y cancelar vbYesNo botones S y No vbYesNoCancel botones S, No y Cancelar vbAbortRetryIgnore botones Anular, Reintentar y Omitir