VB - guia basica del estudiante.

Iniciado por alexander1712, Enero 26, 2013, 03:11:02 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Madrid, Julio de 1998
FUENTE (www.monografias.com)

Visual Basic - Guía del Estudiante Cap. 1

INTRODUCCION Antecedentes históricos.

El lenguaje de programación BASIC (Beginner's All purpose Symbolic Instruction Code ) nació en el año 1964 como una herramienta destinado a principiantes, buscando una forma sencilla de realizar programas, empleando un lenguaje casi igual al usado en la vida ordinaria ( en inglés), y con instrucciones muy sencillas y escasas. Teniendo en cuenta el año de su nacimiento, este lenguaje cubría casi todas las necesidades para la ejecución de programas. Téngase en cuenta que las máquinas existentes en aquella época estaban estrenando los transistores como elementos de conmutación, los ciclos de trabajo llegaban a la impensable cifra de 10.000 por segundo y la memoria no pasaba de unos pocos k´s en toroides de ferrita.

La evolución del BASIC por los años 70 fue escasa, dado el auge que tomaron en aquella época lenguajes de alto nivel como el FORTRAN y el COBOL. En 1978 se definió una norma para unificar los Basics existentes creándose la normativa BASIC STANDARD

Características Generales de Visual-Basic

Visual-Basic es una herramienta de diseño de aplicaciones para Windows, en la que estas se desarrollan en una gran parte a partir del diseño de una interface gráfica. En una aplicación Visual - Basic, el programa está formado por una parte de código puro, y otras partes asociadas a los objetos que forman la interface gráfica.

Es por tanto un termino medio entre la programación tradicional, formada por una sucesión lineal de código estructurado, y la programación orientada a objetos. Combina ambas tendencias. Ya que no podemos decir que VB pertenezca por completo a uno de esos dos tipos de programación, debemos inventar una palabra que la defina : PROGRAMACION VISUAL.

La creación de un programa bajo Visual Basic lleva los siguientes pasos:

- Creación de un interface de usuario. Este interface será la principal vía de comunicación hombre máquina, tanto para salida de datos como para entrada. Será necesario partir de una ventana - Formulario - a la que le iremos añadiendo los controles necesarios.

- Definición de las propiedades de los controles - Objetos - que hayamos colocado en ese formulario. Estas propiedades determinarán la forma estática de los controles, es decir, como son los controles y para qué sirven.

- Generación del código asociado a los eventos que ocurran a estos objetos. A la respuesta a estos eventos (click, doble click, una tecla pulsada, etc.) le llamamos Procedimiento, y deberá generarse de acuerdo a las necesidades del programa.

- Generación del código del programa. Un programa puede hacerse solamente con la programación de los distintos procedimientos que acompañan a cada objeto. Sin embargo, VB ofrece la posibilidad de establecer un código de programa separado de estos eventos. Este código puede introducirse en unos bloques llamados Módulos, en otros bloques llamados Funciones, y otros llamados Procedimientos. Estos Procedimientos no responden a un evento acaecido a un objeto, sino que responden a un evento producido durante la ejecución del programa.

No es necesario entender de momento lo anterior. Visual Basic introduce un concepto nuevo de programación, y es necesario cambiar hasta el argot del programador. Posiblemente se le habrán acumulado demasiados términos de una sola vez. Es normal. A poco que siga leyendo verá las cosas mas claras cuando se explique una por una.

--------------------------------------------------------------------------

VARIABLES. DEFINICION Y ENTORNO

Basic, desde siempre, al contrario de otros sistemas de programación, no exigió la definición previa de una variable. Una variable, como Vd. seguro que conoce, es un nombre que en el programa le asignamos a un dato. Ese dato podrá cambiar. Piense por ejemplo, en un programa consistente en la toma de datos de los alumnos de un centro escolar. Existirán varias variables para poder introducir los datos de los alumnos. Estas variables pueden tener nombre tales como:

Código: text
Nombre

Apellido1

Apellido2

Dirección

Teléfono

DNI


La variable Nombre tomará valores distintos según vayamos introduciendo los datos de los distintos alumnos. Es posible, que a lo largo de la ejecución del programa, esta variable Nombre valga:

Código: text
José

Pedro

María

Luis


Espero que su intuición o conocimiento anterior le lleve a conocer el concepto de variable. Mas adelante lo verá mas claro.

Decíamos que Basic no exige la definición previa de las variables. Otras herramientas exigen que se haga así. Por lo tanto es normal encontrar, en otros sistemas de programación, que un programa comienza de la siguiente forma:

Código: text
Declare Nombre As String Le dice que Nombre es una sucesión de letras

Declare Apellido1 As String

Declare Apellido2 As String

Declare Dirección As String


Declare Teléfono As String Le dice que Teléfono es una sucesión de letras

Código: text
Declare DNI As Número Le dice que DNI es un número


Mediante estas declaraciones, el programa sabe de que tipo de dato se trata y por tanto cómo debe trabajar con él. En otros sistemas de programación distintos de Basic, es necesario realizar esta declaración antes de introducir una variable.

Basic permite que no se declaren. Cuando a lo largo del programa le introducimos una variable nueva, asume que es una variable y que el tipo es el adecuado para el valor que le estamos introduciendo en ese momento.

Por ejemplo, si Basic encuentra estas instrucciones

Código: text
DNI=50000000

Nombre ="Pedro"

Teléfono = "1234567"


entiende que DNI, Nombre y Teléfono son variables, que DNI es un número (No hemos metido su valor entre comillas), y que Nombre y Teléfono son sucesiones de caracteres alfanuméricos (su valor está entre comillas)

Esta particularidad de no necesitar declarar las variables hace que sea sencillo introducir una variable nueva. Sin embargo entraña un gran peligro. Imagínese que en un paso posterior del programa, le mandamos escribir esos tres datos anteriores con la instrucción PRINT

Código: text
Print DNI

Print Nombre

Print Telefono


Habrá observado en tercer lugar la palabra Telwfono, que por error ha introducido el programador. Basic interpreta que Telwfono es una variable e irá a leer en memoria el valor que tiene. No tendrá ningún valor. Por lo tanto no escribirá nada y encima no dará ningún aviso de que se ha cometido un error. Nada es gratis en esta vida, y la facilidad para introducir variables se paga con la posibilidad de un error.

Basic ha pensado en ese problema, y se puede solucionar con esta que será la primera instrucción BASIC que vamos a estudiar:

OPTION EXPLICIT

Obliga a declarar previamente las variables que se vayan a usar. De no haberla declarado antes de usarla, el programa dará una comunicación de error.

TIPOS DE VARIABLES

Las variables pueden ser de los siguientes tipos: (El número indicado en segundo lugar indica el número de Bytes que ocupa en memoria.)

Código: text
Boolean (2) Admite los valores 0 y 1, o True (verdadero) y False (falso)

Byte (1) Números enteros, en el rango de 0 a 255

Integer (2) Números enteros en el rango de -32768 a 32767

Long (4) Números enteros en el rango de -2147483648 a 2147483647

Single (4) Punto flotante, simple precisión

Doble (8) Punto flotante, doble precisión.

Currency (8) Entero, con punto decimal fijo (Típico de monedas)

String (*) Cadenas alfanuméricas de longitud variable o fija

Date (8) Fechas

Objet (4) Referencia a objetos

Variant (**) Otros tipos de datos


(*) Una variable tipo String ocupa el mismo número de bytes que caracteres tenga la cadena.

(**) Una variable tipo Variant ocupa 16 bytes si se trata de un número y 22 bytes + longitud de la cadena si se trata de un dato tipo cadena de caracteres.

Existen también variables definidas por el usuario (Ya verá la sentencia Type). En este tipo de variables se pueden introducir muchos datos de distinto tipo. Los bytes necesarios para almacenar esa variable dependerá de los datos que se hayan definido.

Dentro de las variables Objet (variables que se refieren a objetos) existe una gran variedad que a estas alturas del curso no debemos complicarnos con ellas. Pero para adelantar algo, veremos que una variable puede ser del tipo Form - Formulario - , tipo Picture, etc. etc.

Cada tipo de variable ocupa unos determinados bytes. Si no se define una variable, VB toma como tipo por defecto para la variable el tipo Variant. Este tipo ocupa mas bytes que, por ejemplo, un integer. Si el tipo de dato que vamos a introducir en una variable es un integer, y no la hemos declarado como tal, VB asumirá para esa variable que es del tipo Variant, lo que le llevará a gastar mas bytes de memoria (16) que los que necesitaría (2) si la hubiésemos declarado previamente. Si esa variable va a estar en el rango de 0 a 255, y no declaramos previamente que la variable va a se del tipo Byte, o la declaramos como integer, p. e., estamos desperdiciando memoria RAM y posiblemente, retardando la ejecución del programa. Lo mismo podemos decir del resto de las variables, y lo importante que es definirlas y definirlas bien.

NOTA. Observe en la lista anterior que un dato Booleano ocupa 2 Bytes, mientras que un dato tipo Byte ocupa un byte. En muchas ocasiones declaramos variables tipo Boolean con la intención de que ocupen menos espacio. Paradoja del VB. Si la declaramos como Byte ocupamos menos espacio en memoria. Declarar una variable como Boolean tiene también sus ventajas (escribirá menos código por lo general cuando necesite leer o escribir una variable tipo Boolean), pero tenga presente esta observación respecto a los datos Boolean.

Puede declarar el tipo de la variable mediante un carácter después del nombre de la variable. Esta técnica, obligatoria en Quick-Basic, está en desuso en VB. No es recomendable definir el tipo de esta forma, pues existe un serio peligro de error. De cualquier forma, eso es potestativo del programador y de sus costumbres.

Los caracteres que definen cada tipo de variable son:


Código: text
% Integer & Long ! Single

# Double @ Currency $ String


Ejemplos Prácticos de declaración de variables

En Visual Basic, cuando declaramos una variable como String (Cadena de caracteres), no es necesario declarar su longitud. VB aceptará cualquier número de caracteres. Si desea evitar que se puedan introducir más de un determinado número de caracteres, debe declarar su número. Por ejemplo :

Código: text
Dim Var1 as String Var1 puede tener cualquier número de caracteres

Dim Var2 as String * 15 Var2 puede tener un máximo de 15 caracteres.

En este segundo caso, si se introduce como Var2 una cadena de caracteres con mas de 15 caracteres, Var2 tomará solamente los 15 primeros. Visual basic no presenta ningún aviso de que esa variable ha omitido los caracteres que han sobrepasado la cifra de 15. Si desea que el usuario conozca esa circunstancia, debe introducir el código oportuno para producir el aviso.

La declaración de variables tipo String con número de caracteres predefinido presenta también inconvenientes a la hora de tratar esa cadena de caracteres con sentencias tales como Mid, Left y Right, o a la hora de añadir una cadena a otra. La experiencia nos indica que NO merece la pena declarar variables tipo String con el número de caracteres prefijado.

En una gran parte de los casos una variable que se compone de números debe declararse como una variable de cadena de caracteres (String), y no como numérica. Cuando pensamos por ejemplo en un número de DNI, compuesto por 7 u 8 cifras, un código postal, el número de una calle, el piso de un edificio, parecen invitar a que la variable que los contenga sea una variable de tipo numérico (Byte, Integer, Long, ...). Estas variables, aunque su contenido sean números, siempre se deben declarar como String, ya que se tratan en realidad de cadenas de caracteres, aunque estos sean números. Para aclarar mas estas ideas, piense en el número del DNI con la letra del NIF incluido, o que el lugar del DNI se deba rellenar con el número del permiso de residencia, (lleva letras). Piense en el código postal de una provincia que comienza por 0 ( 08XXX = Barcelona ) . Si la variable que va a contener ese código postal se declara como numérica, el cero de la izquierda lo desprecia, por lo que ese código postal quedaría reducido al 8XXX, número de 4 cifras que el cartero nunca reconocería como un código postal, que necesariamente ha de tener 5 cifras. Para terminar, piense la forma de introducir en una variable numérica el número 32Bis de una calle o el piso S2 de un edificio. O piense en una variable que va a contener un código de un producto. Ese código siempre va a ser un número, por ejemplo de 9 cifras. ¿Ha pensado como trataría el ordenador una variable numérica que contiene el código 000100123 ?. El resultado sería que convertiría ese código en la cifra 100123, y Vd. deberá buscarse la vida para añadir los ceros iniciales a la hora de sacarlo a una impresora, por ejemplo.

En todos los casos anteriores, el número no representa una cantidad numérica, sino un nombre. Lo que ocurre es que ese nombre contiene solamente números.

¿Qué variables debemos declarar entonces como numéricas ? La respuesta es bien sencilla : Aquellas que van a contener datos con lo que vamos a realizar operaciones matemáticas.

Las variables booleanas (True/False) pueden en muchos casos sustituirse por una variable del tipo Byte. Si ese datos True / False se va a introducir en una base de datos o en fichero en el disco, puede ser mas prudente poner 0 en vez de False y 1 en vez de True.

Una variable byte ocupa muy poco, simplemente 1 byte como su nombre indica. Pero no puede contener números mayores de 255 ni números negativos.

Cada vez que declare una variable numérica piense en los valores que puede tener, sobre todo cuando esa variable va a ser el resultado de una operación matemática. Recuerde el escaso margen de una variable tipo Integer ( de -32768 a 32767)

Si la aplicación va a tratar moneda, piense en la forma de expresar los números decimales y el número de ellos permitidos, así como el redondeo. La variable correcta para este caso es Currency, pero Currency le añade automáticamente el tipo de moneda de cada país (Pts. Para España) lo que con frecuencia es un engorro. Los datos del tipo de moneda los toma del sistema operativo del ordenador, por lo que no se extrañe si le expresa el número de pesetas en dólares. Cambie el país en su S. O.

Ambito de las variables.

Denominamos ámbito de una variable a las partes del programa donde esa variable está declarada. Para entenderlo mejor, veamos someramente la forma de un programa desarrollado en VB.

Un programa VB tiene uno o varios formularios. Cada formulario tiene varios controles. Tanto el formulario como cada uno de sus controles tienen una parte del programa, justamente la parte relacionada con cada uno de los eventos que pueden suceder bien al formulario o a los controles. A estas partes las habíamos llamado Procedimientos. Podemos tener procedimientos que no estén relacionados con ningún evento ocurrido al formulario o a sus controles. (Los Procedimientos que iremos insertando a lo largo de la aplicación)

Aparte de formularios y controles, un programa puede tener Módulos, y en cada uno de los módulos podemos insertar cuantos Procedimientos y Funciones queramos. La estructura de un programa VB puede ser de la siguiente forma:

Código: text
Formulario1 Formulario2 Formulario3 Módulo1 Modulo2

Declaraciones Declaraciones Declaraciones Declaraciones Declaraciones

Proc. A1 Proc.B1 Proc.C1 Proc.D1 Proc.E1

Proc. A2 Proc.B2 Proc.C2 Proc.D2 Proc.E2

Proc. A3 Proc.B3 Proc.C3 Proc.D3 FunciónE1

Proc. A4 Proc.B4 Proc.C4 Proc.D4 FunciónE2

Proc. A5 Proc.BB1 Proc.CC1 FunciónE3

Proc. AA1 Proc.BB2 Proc.CC2 FunciónE4

Proc. AA2 Proc.B33 Proc.CC3 FunciónE5

Proc. AA3 Proc.CC4 FunciónE6


Si se declara una variable dentro de un procedimiento o Función, esa variable "NO SALE" del Procedimiento o Función donde se declaró. El procedimiento puede estar en un Formulario (Cualquier procedimiento de un control o un procedimiento creado por nosotros) o en un Módulo (En este caso, el procedimiento solo puede ser creado por nosotros)

En un Formulario, una variable puede declararse de dos formas : Privada o Pública. Para declarar una variable a nivel de formulario debe hacerse en la sección de declaraciones, que está la ventana de código Objeto = General, Proc. = Declaraciones. Si se declara Privada, esa variable se puede mover por todo el formulario, (es decir, por todos los procedimientos de todos los controles del formulario y por los Procedimientos que pudiésemos insertar en ese formulario), pero no sale de dicho formulario. Si se declara como Pública, esa variable puede moverse por todo el formulario, de la misma forma que lo haría declarada como Privada, y además puede ser usada desde otro Formulario o Módulo, citándola con el nombre del Formulario, seguido del nombre de la variable ( Formulario.Variable)

En un Módulo una variable puede declararse como Privada, con lo que no saldrá de ese Módulo, o Pública, pudiendo en este caso usarse en todo el programa. Cuando se declara una variable como pública en un Módulo, basta referirse a ella por su nombre, sin citar el nombre del Módulo donde se declaró.

En VB es posible declarar varias veces las variables, es decir, pueden declararse a nivel de formulario, en su apartado de declaraciones, y esa variable conservará su valor en todas las partes de ese formulario. Sin embargo, si se declara una variable con el mismo nombre a un nivel inferior, por ejemplo al principio de un procedimiento, esa variable será una variable distinta a la anterior, aunque tenga el mismo nombre, a al declararla en un Procedimiento, solamente será válida en ese Procedimiento. Una vez que hayamos salido de ese procedimiento, la variable con ese nombre volverá a ser la declarada en el Formulario. En realidad, lo que tenemos son dos variables distintas, pero con el mismo nombre, una declarada para todo el formulario excepto para el procedimiento donde se volvió a declarar, y otra para ese procedimiento concreto.

NOTA.- No es recomendable declarar una variable a dos niveles. Es mucho mejor utilizar otro nombre para esa variable dentro del procedimiento donde se le declararía por segunda vez. A esta nota cabe exceptuar cuando declaramos variables para una operación tipo contador

Código: text
For I = 1 To N


Esa variable I es práctico declararla con el mismo nombre en cada Procedimiento donde se use.

Tipos de declaración de variables.

Sentencia DIM Es la forma mas común de declarar una variable como

Privada. Puede emplearse en un Procedimiento, Función, Formulario o Módulo. La sintaxis es de la siguiente forma:

Código: text
Dim nombrevariable As Integer (o el tipo que sea)


Declarando una variable con la sentencia DIM, en un formulario, Función, procedimiento o módulo, el entorno de la variable será el explicado anteriormente para una variable declarada como Privada. Es decir, esa variable no sale del formulario, procedimiento ó módulo donde se declaró. Cada vez que entremos al formulario, procedimiento o módulo, esa variable tomará el valor cero (si es numérica) o nulo (si es string).

Sentencia PRIVATE Es la forma de declarar una variable como Privada. Puede

emplearse solamente en la sección de declaraciones de un Formulario o Módulo. La sintaxis es de la siguiente forma:

Código: text
Private nombrevariable As Tipovariable


Declarando una variable mediante la sentencia PRIVATE en un Formulario o Módulo, esa variable puede usarse en todo ese Formulario o Módulo (En todos sus Procedimientos y Funciones), pero NO fuera del Formulario o Módulo donde se declaró.

La sentencia Private no puede usarse en un procedimiento o función.

Sentencia PUBLIC Es la forma de declarar una variable como Pública. Puede

emplearse solamente en la sección de declaraciones de un Formulario o Módulo. La sintaxis es de la siguiente forma:

Public nombrevariable As Tipovariable

Declarando una variable de esta forma en la sección de declaraciones de un Módulo, esa variable puede usarse en cualquier parte del programa citándola simplemente por su nombre.

Si se declara de esta forma en la sección de declaraciones de un Formulario, esa variable puede usarse en toda el programa. Para nombrarla, si estamos en el Formulario donde se declaró basta con citarla por su nombre. Si no estamos en ese Formulario, habrá que citarla por el nombre del Formulario, seguido del nombre de la variable, separados por un punto :

NombreFormulario.Nombrevariable

En un Módulo puede usarse también la sentencia Global en vez de Public :

Sentencia GLOBAL Declara una variable que es válida en todo el programa. La sintaxis es:

Global nombrevariable As tipovariable

La sentencia Global sólo puede usarse en el apartado de declaraciones de un Módulo.

Mediante la sentencia Global la variable puede usarse en todo el espacio del programa.

Sentencia STATIC

Como se dijo anteriormente, una variable declarada en un procedimiento pierde su valor al salir de él. Lo peor es que una vez que el programa vuelva a entrar en ese procedimiento, la variable estará puesta a cero. Afortunadamente, esto último tiene solución. Si declarásemos una variable en un procedimiento o función, como estática, esa variable, aunque no la podremos utilizar fuera de ese procedimiento o función, cuando volvamos a él conservará el valor que tenía cuando lo abandonamos. Esta declaración como estática se realiza mediante la intrucción Static

Static nombrevariable As tipovariable

El nombre de una variable puede ser tan largo como queramos. hasta un máximo de 40 caracteres. En la versión VB para España se pueden usar incluso la í' y vocales acentuadas. Es indiferente usar mayúscula ó minúsculas. No se sorprenda, si por ejemplo, la ha declarado con mayúsculas y luego la cita con minúsculas al escribir el código, que automáticamente se cambie a mayúsculas. El nombre de una variable siempre debe comenzar por una letra.

No hay problema por utilizar variables largas. Al compilar el programa no se lleva el nombre, es decir, no le va a ocupar mas espacio. Utilice siempre nombres que le definan la variable con algún sentido. Es muy útil a la hora de acordarse como se llaman, y sobre todo, a la hora de rehacer un programa que realizó hace seis meses.

Pese a que Visual Basic no obliga a declarar variables, es muy útil hacerlo. De esta forma se tiene control sobre el programa. La experiencia se lo irá demostrando.

Resumimos la forma de declarar una variable :

En un Procedimiento (La variable no puede usarse fuera de esta Procedimiento)

Código: text
Dim Variable As Tipovariable


En un Procedimiento, como permanente (La variable no puede usarse fuera de este procedimiento, y dentro de él conserva el valor aunque se salga y se vuelva a entrar)

Static Variable As Tipovariable

En un Formulario (En su sección de declaraciones)

Como Privada (Solamente se puede usar en ese Formulario)

Código: text
Dim Variable As Tipovariable ó


Código: text
Private Variable As Tipovariable


Como Pública (Puede usarse en toda la aplicación)

Código: text
Public Variable As Tipovariable


En un Módulo

Como Privada (Solamente puede usarse en ese Módulo)

Código: text
Dim Variable As Tipovariable


Código: text
Private Variable As Tipovariable


Como Pública (Puede usarse en toda la aplicación)

Código: text
Public Variable As Tipovariable


Código: text
Global Variable As Tipovariable


Error típico de un programador novel de Visual Basic

Creo que esta costumbre viene del lenguaje C. Pero no vale en VB. Se trata de declarar varias variables juntas en una misma línea :

Código: text
Dim Variable1, Variable2, Variable3, Variable4 As String


Esta declaración está MAL hecha. Visual Basic interpretará que Variable1, Variable2 y Variable3 son del tipo Variant, y solamente Variable4 la supone como tipo String

La forma correcta de hacerlo, si queremos declarar esas variables un una sola línea, es la siguiente :

Código: text
Dim Variable1 As String, Variable2 As String, Variable3 As String, Variable4 As String.

Lenguaje Basic del Visual Basic.

No ha sido un juego de palabras. VB emplea unas instrucciones casi iguales a las que emplea Quick Basic. Sin embargo ha añadido otras nuevas instrucciones, inherentes con la programación visual. Vamos a estudiar aquí las instrucciones y definiciones mas sencillas, comunes a QB y VB.

Sentencias condicionales.

Llamamos sentencias condicionales a aquellas que se realizan si se cumple una determinada condición. Son las sentencias por las que empieza cualquier texto de Basic, y este no va ser menos.

La sentencia condicional mas usada es:

Si se cumple una condición Entonces

Realiza estas instrucciones

Si no se cumple

Realiza estas otras instrucciones

Fin de la sentencia.

Así de fácil es programar en Basic. Lo que ocurre es que esta herramienta habla inglés, y lo descrito anteriormente toma la forma:

Código: text
If condición Then

Instrucciones

Else

Otras instrucciones

End If


En este ejemplo, la condición era que, o se cumple una condición y ejecuta unas determinadas instrucciones, o no se cumple, y ejecuta otras condiciones distintas. Puede ocurrir que, caso de no cumplirse la condicione primera, se abra un abanico de dos o tres posibilidades. La sentencia condicional tendría entonces la forma:

Código: text
If condición 1 Then

Instrucciones

ElseIf Condición 2

Otras instrucciones

ElseIf Condición 3

Otro juego de instrucciones

Else


Instrucciones que debe realizar caso de no cumplir las condiciones 1, 2 y 3.

Código: text
End If


Como decíamos anteriormente, este es el tipo de sentencia condicional mas usada. Existe otra:

Código: text
Select Case


Su nombre casi nos define lo que es: Selecciona, dependiendo del caso, un determinado juego de instrucciones:

Código: text
Select Case variable ' variable es una variable que puede tomar los valores (p.e.) de 1 a 4


Código: text
Case 1


Instrucciones a ejecutar en caso de que variable = 1

Código: text
Case 2


Instrucciones a ejecutar en caso de que variable = 2

Código: text
Case 3


Instrucciones a ejecutar en caso de que variable = 3

Código: text
Case 4


Instrucciones a ejecutar en caso de que variable = 4

Código: text
End Select


Este procedimiento resulta mucho mas sencillo y rápido que las sentencias If Then Else

vistas anteriormente, cuando el margen de elección es mayor que 2.

Cuando lo que queremos es elegir un valor, no ejecutar instrucciones como hacíamos anteriormente, disponemos de otras dos funciones: Choose y Switch.

Switch toma una serie de parámetros, todos por parejas. El primer término de cada pareja es la expresión a evaluar. El segundo es el valor que tiene que devolver. En realidad Switch es una función (las funciones las veremos muy pronto)

Código: text
A = Switch (B=1, 5, B=2, 7, B=3, 11)


Esta instrucción obtiene un valor para A que dependerá del valor que tome B entre los valores posibles (1, 2 ó 3)

La sentencia Choose es casi igual, cambia solamente la forma. La misma intrucción anterior puede realizarse con Choose de la siguiente forma:

Código: text
A = Choose ( B, 5, 7, 11 )


En estas sentencias, Switch y Choose, si el valor de B no coincide con ninguno de los valores que se le habían establecido (1, 2 ó 3 en nuestro caso), la sentencia devuelve el valor Nulo ( Null ). Esto puede producir algún error si no se contempla esa posibilidad.

Con estas sentencias condicionales es posible realizar bifurcaciones del programa, cambiar las propiedades de un objeto, obtener resultados de operaciones, ....

Sentencias de bucle.

Es muy común utilizar bucles a lo largo de un programa. Un bucle es una sucesión repetitiva de instrucciones, que se estarán realizando mientras se cumpla una condición o mientras no se cumpla otra condición. Es tan sencillo como esto:

Mientras condición

Instrucciones

Fin del bucle

Existen dos formas de bucle: Una, que realiza un número determinado de recorridos por el bucle. Es el denominado bucle por contador. Otra, realiza el bucle hasta que se cumpla (o deje de cumplirse) una condición. Es el llamado bucle por condición.

Bucle por contador

Realiza el bucle tantas veces como le indiquemos. Por ejemplo, en este bucle nos va a presentar las 26 letras mayúsculas del alfabeto inglés

Código: text
For N=65 To 90

Label1.caption = Chr ( N )

Next N


Este "programa" nos presentará en una caja (Label) los caracteres cuyo número ASCII vaya desde el 65 (A) al 90 (Z) Comenzará presentando el correspondiente al número 65, e irá presentando sucesivamente el 66, el 67, etc., hasta llegar al 90, donde se parará.

Bucles por condición

Ejecuta las instrucciones del bucle mientras se cumple una condición

Código: text
X = 0

Do While X < 1000

X = X + 1

Loop


El programa toma una variable ( X ) que previamente tuvimos la curiosidad de ponerla a cero, e incrementa su valor una unidad. Analiza si el valor de X es menor que 1000, y si es cierto, vuelve a realizar el bucle. Así hasta que X ya no sea menor que 1000. Al dejar de cumplirse que X sea menor que 1000, sale del bucle. Acabamos de realizar un temporizador, y también de exponer las sentencias condicionales y los bucles, inicio de cualquier curso de Basic. Como final de lección, se propone un problema. Con el primer bucle, donde visualizábamos los caracteres A a la Z, posiblemente no nos diese tiempo de ver cada una de las letras que iban apareciendo en la pantalla, en la etiqueta Label1, dado que cambiaría con mucha velocidad, y solamente veríamos la Z, que es donde se detuvo el programa. Podemos poner un temporizador cada vez que presente una letra, y así nos dará tiempo a verla. Con los dos bucles vistos anteriormente ya podemos hacerlo.

Si lo que queremos es que el programa se ejecute mientras no se cumpla una determinada condición, la sentencia será:

Código: text
X = 0

Do Until X > 1000

X = X + 1

Loop


Observe que la diferencia entre una y otra es la condición, While para indicar Mientras se cumpla que ... y Until para indicar Mientras no se cumpla que ....

Para terminar bien el programa anterior utilizaremos la condición de While (Mientras se cumpla la condición)

Código: text
For N=65 To 90

Label1.caption = Chr ( N )

Label1.RefreshN ' Refresca la etiqueta

X = 0

Do While X < 1000

X = X + 1

Loop

Next N


Este es nuestro primer programa en BASIC. En VISUAL BASIC es idéntico, pero nos falta la interface gráfica. Para realizarla basta con abrir el VB y sobre el formulario que aparece al abrirlo, introducir una etiqueta, (Label) que llevará el nombre por defecto de Label1. Solo nos queda pensar donde introducimos el código anterior. Podemos introducir un botón de comando (Command Button) que saldrá con el nombre por defecto de Command1. Haga doble click sobre el botón. Aparecerá el procedimiento Click. Este procedimiento es el que se realiza cuando hacemos click sobre ese botón. Escriba en ese procedimiento este código.

Código: text
Private Sub Command1_Click() ' Esta línea sale automáticamente

For N=65 To 90

Label1.caption = Chr ( N )

Label1.RefreshN ' Refresca la etiqueta

X = 0

Do While X < 1000 ' Bucle de temporización

X = X + 1

Loop

Next N ' Termina el bucle de temporización

End Sub ' Esta línea sale automáticamente


Hemos puesto nuestra primera piedra en Visual Basic. Este ejemplo es muy sencillo. Visual Basic es tan sencillo como este ejemplo.


BASIC DE VISUAL BASIC CAP. 2

___________________________

Funciones de cadenas

Se denomina CADENA a una sucesión de caracteres. Una cadena puede tener uno o varios caracteres alfanuméricos. Una cadena es también una sucesión de números.

Ejemplo de cadenas:

Curso de Visual Basic

abcdefghijklmnopqrstuvwxyz1234567890

123456789

Hagamos una distinción entre una cadena que contenga números y un número. Un número tiene un valor, pero también tiene una presentación escrita. El valor es algo que estará en el ordenador como una sucesión de bits. Dependiendo de como lo hayamos declarado, tendrá mas o menos bits. Pero esa información no es un número legible por el usuario. Lo que sí es legible por el usuario es la representación en numeración decimal (u octal, o hexadecimal, o incluso en binario) de ese número. Esa representación del número en un determinado sistema de numeración es una cadena.

Así, el número nueve, que en la memoria del ordenador será una sucesión de bits, el ordenador puede presentárnoslo como:

9 En numeración decimal

9 En numeración hexadecimal

11 En numeración octal

1001 En numeración binaria

Esas formas de presentarnos el número son CADENAS de caracteres. El valor del número dentro del ordenador es un NUMERO.

Para presentar un número en la pantalla, el ordenador debe convertirlo previamente a una cadena.

Cuando introducimos un valor numérico por teclado o pantalla, el ordenador para hacer operaciones con él, debe transformarlo a un número.

Estas consideraciones nos llevan a las dos primeras funciones con cadenas:

Str (número) Convierte un número a una cadena en numeración decimal.

Val (cadena numérica) Obtiene el valor (el número) correspondiente a esa cadena.

Ejemplos

Código: text
Variablenumerica = Val (TextBox1.Text)


Este ejemplo convierte la cadena de caracteres (numéricos) que hubiese en la caja de texto TextBox1 en un número, y asocia este número a la variable Variablenumerica.

Si el contenido de la caja de textos no fuesen caracteres numérico (abcd, por ejemplo), Variablenumerica tomaría el valor 0.

Código: text
Label1.Caption = Str (Variablenumerica)


Este ejemplo pondría en la etiqueta Label1 los caracteres correspondientes al valor que tuviese la variable Variablenumerica .

Nota para recordar: Siempre habrá que convertir un número a una cadena cuando queramos presentarlo en la pantalla. Siempre habrá que convertir a número la cadena de caracteres numéricos que hayamos introducido por teclado o por pantalla, cuando queramos operar con ese número. Un Label, cuando tiene que presentar un único número, no le pedirá que se lo convierta a cadena, pues VB hace automáticamente esa conversión. Sin embargo, cuando tiene que presentar un número, y además un texto en el mismo Label, VB no realizará automáticamente ese cambio, por lo que le dará un error. Le recomiendo que convierta los números a variables de cadena siempre que los quiera presentar en un Label o TextBox.

Existe una función mas amplia que Str. Se trata de Cstr. Esta función no solamente transforma un número a una cadena, como hace Str, sino que convierte cualquier tipo de variable a una variable tipo String (cadena).

Esta función transforma, por ejemplo, una variable tipo Booleana en una variable de cadena, devolviendo la cadena "Verdadero" si el valor de la variable booleana es True, y "Falso" si es False.

Puede también transformar a una cadena de caracteres el valor de un CheckBox o de un OptionButton. En estos casos devuelve 0 y 1 para el CheckBox (Desactivado / Activado) y Verdadero ó Falso para el OptionButton (Activado / Desactivado)

Código: text
label1.Caption = CStr(booleana) Label1.Caption = Verdadero si booleana es true

Label1.Caption = Falso si booleana es False

Label2 = CStr(Check1.Value) Label2.Caption = 1 si Check1 está activado

Label2.Caption = 0 si Check1 está desactivado

Label3 = CStr(Option1.Value) Label3.Caption = Verdadero si Check1 está activado

Label3.Caption = Falso si Check1 está desactivado


Si se aplica Cstr a una variable tipo Fecha/Hora devuelve la fecha / Hora en formato corto.

Mas funciones de cadena:

Left (cadena, n)
Extrae los n primeros caracteres de una cadena, comenzando por la izquierda.

Si cadena = Curso de Visual Basic (Para todos los ejemplos)

Resultado = Left (cadena, 10) ----> Resultado = Curso de V

Right (cadena, n) Extrae lo n últimos caracteres de la cadena

Resultado = Right (cadena, 10) ----> Resultado = sual Basic

Mid (cadena, m, n) Extrae n caracteres de la cadena, siendo el primer carácter extraído el que ocupa el lugar m.
(Vea Instrucción Mid mas abajo)

Resultado = Mid (cadena, 3, 10) ----> Resultado = rso de Vis
L

Case (cadena) Devuelve otra cadena igual, pero con todos los

caracteres en minúsculas. (LCase = Lower Case)

Resultado = Lcase (cadena) ----> Resultado = curso de visual basic

UCase (cadena) Devuelve otra cadena igual, pero con todos los

caracteres en mayúsculas. (UCase = Upper Case)

Resultado = UCase (cadena) ----> Resultado = CURSO DE VISUAL BASIC

Len (cadena) Devuelve la longitud de la cadena

Resultado = Len (cadena) ----> Resultado = 21

LenB (Cadena) Devuelve el número de Bytes empleados para almacenar la

cadena. Sorpréndase, es el doble que Len (Cadena)

String (n, carácter) Devuelve una cadena de n caracteres como el indicado

Resultado = String (8, "a") ----> Resultado = aaaaaaaa

Resultado = String (8, Chr(65)) ----> Resultado = AAAAAAAA

Resultado = String (8, 65) ----> Resultado = AAAAAAAA

Space (n) Devuelve una cadena formada por n espacios.

Resultado = "A" + Space (6)+ "B" ----> Resultado = A B

LTrim Elimina los posibles espacios que tenga una cadena por su izquierda.

Rtrim Elimina los posibles espacios que tenga una cadena por su derecha.

Trim Elimina los espacios que tenga una cadena, tanto por su izquierda como por su derecha. (No elimina los espacios

centrales de la cadena)

Estas tres funciones se emplean para quitar los posibles espacios que pueden resultar de una entrada de datos. Tienen especial importancia cuando se toman los datos de un archivo o base de datos, donde fueron introducidos por otro programa.

No se pone ningún ejemplo de estas funciones, pues sería difícil verlo impreso.

InStr (cadena, cadena1) Busca la cadena1 dentro de cadena y devuelve el número de orden dentro de cadena donde se encuentra la primera letra de cadena1

Código: text
Resultado = InStr (cadena, "sua") ----> Resultado = 12


StrConv Convierte una cadena de caracteres en otra, según las instrucciones

que le sigan. Puede sustituir a UCase o LCase si la instrucción es

UpperCase o LowerCase respectivamente, o poner la primera letra de todas las palabras de la cadena en mayúsculas, si la instrucción es ProperCase.

Código: text
Resultado = StrConv (cadena, UpperCase) ----> Resultado = CURSO DE VISUAL BASIC

Resultado = StrConv (cadena, LowerCase) ----> Resultado = curso de visual basic

Resultado = StrConv (cadena, ProperCase) ----> Resultado = Curso De Visual Basic


Instrucción Mid

Mid puede usarse también para cambiar el contenido de una cadena. Observe la sutileza entre Mid como Función de cadena y Mid como Instrucción.

La Instrucción Mid reemplaza un número especificado de caracteres en una variable de cadena con caracteres de otra cadena.

Código: text
Sintaxis Mid(cadena1, inicio[, longitud]) = cadena2


Código: text
Resultado Mid (cadena, 7,2)="Sobre" ---- > Resultado = Curso sobre Visual

Basic FUNCIONES CON NUMEROS CAP. 3
_________________________

Visual Basic puede operar con números tal como lo haría cualquier persona. Conoce las 4 reglas, y puede utilizar paréntesis de la misma forma que los escribimos sobre el papel.

Los operadores que utiliza para las operaciones básicas son:

+ Suma

- Resta

* Multiplicación

/ División

\ División sin decimales

Mod Resto de una división

^ Eleva a un exponente

Ejemplos

Resultado = 12 + 15 ----> Resultado = 27

Resultado = 15 - 12 ----> Resultado = 3

Resultado = 15 * 12 ----> Resultado = 180

Resultado = 15 / 12 ----> Resultado = 1.25

Resultado = 15 \ 12 ----> Resultado = 1

Resultado = 15 Mod 12 ----> resultado = 3

Resultado = 12 ^ 2 ----> Resultado = 144

resultado = ( ( 4 * 3 ) / 2 ) ^ 2 ----> Resultado = 36

Estos operadores se denominan Operadores aritméticos.

Existen otras operaciones que se pueden realizar con números: comparaciones. Los operadores que realizan comparaciones se denominan Operadores relacionales. El resultado de las operaciones realizadas con estos operadores solamente admiten dos resultados: True (Cierto) o False (Falso) Estos operadores son:

= Igual que

<> No igual que

< Mayor que

<= Mayor o igual que

> Menor que

=> Igual o menor que

Estos operadores se suelen utilizar en estructuras de programa donde se tome una decisión.

El operador = puede usarse también para comparar cadenas o fechas.

Operadores Lógicos

Estos operadores sólo tienen sentido cuando hablemos de variables Booleanas, es decir, aquellas que solamente pueden tomar los valores cero y uno.

Operador Función Devuelve True si Devuelve False si

And Función AND A=True y B=True Cualquier otro caso

Or Función OR A=True o B=True A=False y B=False

Xor Función XOR A=True y B=False A=True y B=True

A=False y B=True A=False y B=False

Eqv F. Equivalente A=True y B=True A=True y B=False

A=False y B=False A=False y B=True

Imp Implicación A=True y B=True A=True y B=False

A=False y B=True

A=False y B=False

Not Negación A=False A=True

Like Igualdad A=True A=False

Otras Funciones con números

CInt Parte entera Devuelve la parte entera de un número con decimales

Abs Valor Absoluto Devuelve el valor absoluto de un número

Sgn Signo Devuelve el signo de un número

Sqr Raíz cuadrada Devuelve la raíz cuadrada de un número

Exp Exponenciación Devuelve el número elevado al exponente indicado

Log Logaritmo Devuelve el logaritmo natural de ese número

Trigonométricas

Sin Seno Devuelve el valor del seno de un ángulo (Expresado

en radianes)

Cos Coseno Devuelve el coseno de un ángulo (En radianes)

Tan Tangente Devuelve la tangente de un ángulo

Atn Arco Tang. Devuelve un arco cuya tangente sea el número

(Angulo en radianes)

Una función curiosa

Timer Tiempo acumulado Devuelve el tiempo (en segundos) que ha pasado desde las 12 de la noche.

Generación de números aleatorios

Randomize (Numero) Inicia el generador aleatorio tomando como dato de partida el Numero. Devuelve el resultado en una variable llamada Rnd.

NOTA MUY IMPORTANTE.- Los números aleatorios generados de esta forma son siempre iguales, eso sí, dependiendo del número que se le introduzca como parámetro. Esta generación de números no produce números aleatorios pues como se dijo, dependen del numero que se meta como parámetro, y si este se repite, se repite la sucesión de números que nos crea el generador aleatorio.

La forma de obtener números realmente aleatorios es introducir como parámetro un número que sea variable con el tiempo.

Option Base 1

que debe colocarse al comienzo del módulo o formulario donde declaremos la matriz.

Para declarar la matriz se hace como con todas las variables, especificando entre paréntesis el número de elementos que componen la matriz:

Código: text
Dim Alumno (25) as String


Hemos declarado que la variable alumno es una cadena, y que hay 25 elementos en esa matriz.

Una matriz también se puede declarar de la siguiente forma :

Código: text
Dim Alumno(1 To 25) as String


Donde le decimos que la variable Alumno tiene 25 elementos, que el primero tiene el índice 1 y el último tiene el índice 25.

Pero imaginemos que queremos meter en la misma matriz el nombre, primer apellido y segundo apellido del alumno. Necesitaremos declarar una matriz de 25 por 3. Como todos los elementos serán cadenas de caracteres, podemos declararla de la siguiente forma:

Código: text
Dim Alumno (1 To 25, 1 To 3) As String


De esta forma, el primer apellido del alumno que ocupa el puesto número 15 de la clase, será el elemento:

Alumno (15, 2)

Podemos definir matrices de dimensión superior a dos. Podemos llegar a un máximo de 60 dimensiones. Una matriz de 5 dimensiones se declararía:

Código: text
Dim Variable ( 1 To N, 1 To M, 1 To P, 1 To Q, 1 To R)


entendiendo que hay N, M, P, Q y R elementos en cada una de las dimensiones respectivamente.

Una variable ya declarada como una matriz puede redimensionarse a lo largo del programa mediante la instrucción ReDim

Código: text
ReDim Alumno (1To 25)


Mediante esta instrucción, estamos ReDimensionando una matriz ya declarada. No se puede redimensionar una matriz inexistente.

Mediante la declaración 1 To 25 le estamos diciendo que el primer elemento de la matriz es el 1, independientemente de lo que hayamos puesto en OPTION BASE. Si se redimensiona simplemente con el número de elementos :

Código: text
ReDim (25)


le estamos diciendo que tiene 25 elementos, pero que el primero sea el 0 ó el 1 depende de haber puesto OPTION BASE 0 u OPTION BASE 1.

Una matriz puede redimensionarse cuantas veces se quiera a lo largo de la aplicación, pero esa redimensión no puede afectar al número de dimensiones de la matriz. Si redimensionamos la matriz perderá la información existente. Para evitar perder la información presente en la matriz, debe utilizar la sentencia ReDim Preserve.

Si usa la palabra clave Preserve en matrices de dimensión superior a 1, va a encontrarse con comportamientos no esperados. Como podrá ver en la Ayuda de VB, usando ReDim Preserve sólo puede cambiar el tamaño de la última dimensión de matriz y no puede modificar en ningún momento el número de dimensiones. NO es cierto del todo. Sí lo podrá hacer una sola vez.

Respecto a cambiar el número de dimensiones, si ha declarado la matriz con unas dimensiones determinadas, ya no podrá cambiar las dimensiones ni con ReDim ni con ReDim Preserve. Le saldrá un error que dice que las dimensiones de la matriz ya han sido declaradas.

Pero si ha declarado la matriz sin dimensiones :

Código: text
Dim MiMatriz()


puede cambiar las dimensiones Dim MiMatriz (1 To 5, 1 To 9)

y volver a cambiarlas Dim MiMatriz (1 To 8, 1 To 15, 1 To 6)

Observe que no solamente la hemos cambiado dos veces de dimensiones (la primera a 2 y la segunda a 3), sino que también hemos cambiado el número de elementos en cada dimensión.

Si hubiésemos utilizado ReDim Preserve solamente podríamos haber usado la primera de las dos líneas anteriores :

Código: text
ReDim Preserve MiMatriz (1 To 5, 1 To 9)


pero ya no podríamos volver a cambiar el número de dimensiones con la segunda línea. Nos daría un error.

Con ReDim podemos cambiar el número de elementos de cada dimensión cuantas veces queramos. Por ejemplo, podemos redimensionar MiMatriz de las siguiente forma :

Código: text
ReDim MiMatriz (1 To 5, 1 To 9)

ReDim MiMatriz (1 To 15, 1 To 20)

ReDim MiMatriz (1 To 25, 1 To 30)

. . . . . . . . . . . . . . . . . . . . . . . . . . .

Si hubiésemos empleado ReDim Preserve, podríamos cambiar los elementos de todas las dimensiones de la matriz una vez :

Código: text
ReDim Preserve (1 To 5, 1 To 9)


a partir de ahora, solamente podemos cambiar los elementos de la última dimensión :

Código: text
ReDim Preserve (1 To 5, 1 To 20)

ReDim Preserve (1 To 5, 1 To 30)


es decir, no podremos hacer esto :

ReDim Preserve (1 To 10, 1 To 30) donde se señala en negrita el error.

Esto no causa ningún error en una matriz de una dimensión, ya que si la matriz tiene sólo una dimensión, puede cambiar el tamaño de esa dimensión porque es la única y la última.

Cuando a lo largo de la aplicación se va redimensionando una matriz, podemos llegar la circunstancia de que, en un momento determinado, no sepamos las dimensiones de esa matriz.

Para conocer el índice máximo y mínimo de una matriz se usan las funciones UBound y LBound.

UBound devuelve el mayor subíndice disponible para la dimensión indicada de una matriz.

Código: text
Sintaxis UBound(nombredelamatriz[, dimensión])


LBound devuelve el mayor subíndice disponible para la dimensión indicada de una matriz.

Código: text
Sintaxis LBound(nombredelamatriz[, dimensión])


Ejemplo Tengamos una matriz llamada Mimatriz, de tres dimensiones. En un momento de la aplicación se ejecutó la siguiente instrucción válida :

Código: text
ReDim Mimatriz (1 To 100, 0 To 3, 5 To 20)


En otro momento queremos tener el control de los índices de esa matriz, y queremos averiguar el índice menor y mayor de cada una de sus dimensiones :

Código: text
(IID1= Indice Inferior Dimensión 1, ISD 1 = Indice Superior Dimensión 1, etc. )

IID 1= LBound (Mimatriz, 1) IID1 = 1

ISD1 = UBound (Mimatriz, 1) ISD1 = 100

IID 2= LBound (Mimatriz, 2) IID1 = 0

ISD2 = UBound (Mimatriz, 2) ISD1 = 3

IID 1= LBound (Mimatriz, 3) IID1 = 5

ISD1 = UBound (Mimatriz, 3) ISD1 = 20

Muy buena la guia... interesante para quienes inician
Analista Programador FullStack con VB6, .NET, PHP, Sql Server, MySql y especialista en Scriptcase, Joomla y ERP para empresas.