Home MundoTec Software Código fuente Tutorial / pdf Minijuegos
Cerrar

Tutorial Aprender Visual Basic

Tutorial APREDER VISUAL BASIC.







VARIABLES CON VISUAL BASIC

Si has estudiado pseudocódigo y tipos de variables con pseudocódigo previamente los conocimientos adquiridos serán válidos y útiles con Visual Basic, pero con matices. Vamos a tratar los aspectos más básicos de la declaración de variables con Visual Basic y a dar algunas orientaciones a través de las que profundizar en el manejo de variables.

NOMBRES Y TIPOS DE VARIABLES. DECLARACIÓN. Option Explicit.

Para establecer nombres de variables puedes ver las indicaciones que se dan en el curso “Bases de la programación Nivel I” de aprenderaprogramarcom, apartado “Nombres de variables”. Visual Basic permite no declarar una variable antes de ser usada. Por tanto, en cualquier punto de un programa podríamos escribir algo similar a “Mostrar velocidad01”, sin necesidad de haber declarado la variable velocidad01. ¿Qué nos mostrará si no hemos asignado contenido a la variable velocidad01? Visual Basic es de los lenguajes que asignan automáticamente contenido cero, vacío o falso a una variable, dependiendo de qué tipo sea. Por tanto, se nos mostraría cero, “ ”, o falso. Conocido que no es estrictamente obligatorio, nosotros vamos a trabajar con Visual Basic realizando declaración de variables siempre. Los motivos para ello ya han sido expuestos, pero podemos resumirlos en:

- Generar buenos programas.
- Evitar errores y confusiones.

El propio Visual Basic dispone de una instrucción que obliga a tener que declarar todas las variables, denominada Option Explicit. La obligación de declaración de variables puede establecerse de dos maneras.
a) En la ventana de código escribir Option Explicit (en las versiones más modernas debe escribirse Option Explicit On).
b) En el menú Herramientas, selecciona Opciones... y en la pestaña Editor (en otras versiones Herramientas, Opciones, Proyectos y Soluciones, Valores predeterminados de VB) establece (o comprueba que está establecida) la opción Requerir declaración de variables como activa ó Option Explicit On.
Ten en cuenta que la opción a) es manual, y tendríamos que escribir Option Explicit cada vez que fuéramos a programar, mientras que la opción b) es automática y va a hacer que cada vez que arranquemos Visual Basic nos obligue a declarar variables sin tener que estar escribiendo código. Por tanto, activa la opción automática (o comprueba que esté activada) y así evitaremos olvidos. No vamos a volver a incidir en esto, pero siempre vamos a considerar que trabajamos con Option Explicit activado. ¿Qué ocurrirá si utilizamos en el código una variable que no ha sido declarada? En este caso Visual Basic impedirá la ejecución del programa mostrando el mensaje de error: “Error de compilación. Variable no definida / no declarada” así como la línea de programa donde ha aparecido la variable no declarada.
Siempre que exista al menos una variable no declarada ocurrirá esto, lo cual nos obliga a declarar todas y cada una de las variables.
En cuanto a los tipos de variables, Visual Basic las clasifica en función del tipo de dato que contienen. Veamos las más usuales.

Visual Basic

NOTA: Existen otros tipos de variables. Algunos tipos son comunes a todas las versiones de Visual Basic mientras que otros tipos sólo están disponibles en algunas versiones. Otros tipos que pueden aparecer en Visual Basic son el tipo Byte, Char, Date, Decimal, Object,Sbyte, Short, UInteger, Ulong, Ushort Currency, String de longitud fija o las variables definidas por el Usuario a través de Type ó User-Defined. Ahora no te preocupes por conocer todos los tipos de Visual Basic, te irás familiarizando con ellos poco a poco a lo largo del curso. Puedes acceder a información sobre los tipos de variables a través de la ayuda, buscando “Tipos de datos”, “Resumen de tipos de datos” y “Type (instrucción)” o “Tipo de datos definido por el usuario”.
Los tipos definidos por el usuario, también llamados variables UDT (User Definided Type) o variables Structure (estructuras) son variables especiales que tienen un nombre “general” y luego n variables internas o campos. Su interés e importancia son notables. Por ello te recomendamos que más adelante profundices en ellas por tu cuenta. Por el momento solo es necesario que atiendas a los contenidos del curso.

Conociendo ya el significado de Option Explicit, los tipos de variables y cómo nombrarlas, veamos ahora cómo declararlas. Hay distintas formas y sitios para declarar variables con Visual Basic. Veremos ahora una forma básica que nos permita empezar a trabajar y, de paso, crear nuestro primer programa.
Usaremos para ello la instrucción Dim. Su sintaxis será:

Dim [Nombre de variable] As [Tipo de variable]

El lugar donde realizaremos la declaración de variables será la cabecera del código asociado al formulario. Así pues, crea un nuevo proyecto (Menú archivo --> Nuevo Proyecto --> Exe estándar ó Menú Archivo --> Nuevo proyecto --> Aplicación de Windows Forms). Vete a la ventana de código (Ver - --> Código) donde quizás te aparezca una línea que ponga Option Explicit ó Public Class Form1 End Class. Escribe una nueva línea de código (debajo de Option Explicit o debajo de Public Class Form1) con este contenido:

Dim Numerodeplantas As Integer

Has declarado la variable Numerodeplantas como tipo entero. También puedes usar la abreviatura correspondiente al tipo Integer de esta forma:

Dim Numerodeplantas%

Usar el símbolo % unido al nombre de la variable declarada equivale a escribir “As Integer”, lo cual nos supone ahorrar unas cuantas pulsaciones de teclas.
En algunas versiones se permite declarar una variable para la que no se especifica tipo de forma extendida o abreviada. Si esto se hiciera y fuera permitido, la variable es automáticamente asignada por Visual Basic al tipo Variant. Así si escribimos:

Dim Numerodeplantas

Hay dos opciones: bien obtenemos un error de compilación (si la versión de Visual Basic que estemos usando no admite esta declaración), bien la variable Numerodeplantas es considerada por Visual Basic como tipo Variant. Todavía no está definido si es de tipo numérico (números) o alfanumérico (texto). En este caso la definición se producirá a posteriori cuando asignemos contenido a la variable. Otra forma de declarar la variable como tipo genérico (Variant u Object, según la versión) es usar la expresión:

Dim Numerodeplantas As Variant (ó Dim Numerodeplantas As Object)

Esta expresión no tiene abreviatura. Siempre será preferible especificar “As Variant” o “As Object” antes que declarar la variable sin especificación alguna. ¿Por qué? Simplemente porque al especificar As Variant ó As Object dejamos constancia de que nosotros, como programadores, hemos decidido crear esa variable como tipo Variant u Object. Si no se especifica puede dar la impresión de que se nos ha olvidado indicar el tipo de variable.
Las variables Variant u Object son un “caso especial”. Las podríamos calificar de potentes y peligrosas. Potentes porque a diferencia de otro tipo de variables, pueden contener distinto tipo de información como texto, números enteros o decimales, etc. y con pocas limitaciones. Peligrosas porque es fácil incurrir en un mal uso de ellas dando lugar a programas difíciles de leer o depurar y más ineficientes.
Supón que declaras: Dim edad As Variant ó Dim edad As Object, como variable destinada a contener la edad de una persona. Sabemos que la edad de una persona puede oscilar entre cero y 150 años (siendo groseros), y que sus valores no son decimales. Por tanto puede declararse como tipo Integer sin ningún problema. ¿Qué supone el declararla sin especificación de tipo (tipo Variant)?
a) Vamos a ocupar mayor cantidad de memoria al sistema cuando podríamos haber ocupado una menor cantidad. Es una falta de eficiencia y economía.
b) A la hora de liberar de errores al programa (depurarlo) no sabremos a ciencia cierta qué tipo de datos contiene la variable edad, ya que puede contener tanto el valor numérico 56 como el valor alfanumérico “cincuenta y seis”. Hacemos al programa más difícil de entender.
A la hora de declarar variables conviene seguir las pautas indicadas en el curso “Bases de la programación nivel I” y, resumidamente:

- Elegir siempre el tipo de variable más sencillo posible. Consideraremos que el grado de sencillez viene definido por la memoria requerida (a menor memoria requerida mayor es la sencillez). Esto redunda en un menor consumo de recursos del sistema y en una mayor rapidez de las operaciones que realiza el ordenador.
- Realizar declaraciones ordenadas y claras.
- Evitar el uso del tipo Variant u Object en la medida de lo posible, es decir, sólo usar estos tipos cuando realmente sean necesarios.

Hasta ahora estamos viendo las bases que nos van a permitir construir programas. A medida que vayamos avanzando, empezaremos a construir pequeños programas para aprender practicando.

DECLARACIÓN DE VARIABLES EN VISUAL BASIC

A la hora de declarar variables conviene seguir las pautas indicadas en el curso “Bases de la programación nivel I” de aprenderaprogramar.com y, resumidamente:

- Elegir siempre el tipo de variable más sencillo posible. Consideraremos que el grado de sencillez viene definido por la memoria requerida (a menor memoria requerida mayor es la sencillez). Esto redunda en un menor consumo de recursos del sistema y en una mayor rapidez de las operaciones que realiza el ordenador.
- Realizar declaraciones ordenadas y claras.
- Evitar el uso de los tipos Variant u Object en la medida de lo posible.

Visual Basic permite declarar variables en múltiples líneas una por línea pero también varias variables en una línea. Veamos ejemplos:

Visual Basic

Las opciones a), b), c), d), e) dan lugar a un mismo resultado. Se declaran tres variables tipo Integer denominadas i, j, k. Las opciones a ́- e ́), escritas de forma extendida, también son válidas y con el mismo resultado. Nosotros nos decantamos por usar opciones como la c), donde en una misma línea aparezcan variables de un tipo de forma abreviada, excepto la última que se pone extendida de forma aclaratoria, y en las que las variables de una misma línea tienen algún tipo de relación. Por ejemplo tratarse de contadores para bucles.
Ten en cuenta que la declaración Dim i, j, k As Integer no declara tres variables de tipo entero de forma correcta. Esta sintaxis es imprecisa y por tanto no debemos utilizarla. Según la versión de Visual Basic que estemos usando esto puede generar errores o problemas. Conviene tener cuidado a la hora de realizar declaraciones de variables para evitar prácticas de este tipo.
Una expresión como Dim i!, j%, k& equivale a Dim i As Single, j As Integer, k As Long. Esta expresión es válida, aunque como hemos dicho preferimos no declarar distintos tipos de variables en una misma línea.

EJERCICIO

Realizar una declaración de variables para las siguientes propuestas de programas.

a) Un programa que muestra un mensaje de bienvenida.
b) Un programa que nos pide nuestra edad y nos muestra el año en que nacimos.
c) Un programa que nos muestra el valor medio de tres magnitudes.
d) Un programa que trabaja con: tres contadores para bucles, tres valores de tensión en una viga (de magnitud no conocida), valores de longitud de la viga, canto y ancho y un valor interruptor que permite o impide que se muestren resultados.

SOLUCIÓN

a) Dim mensaje As String. También es válida la expresión abreviada Dim mensaje$.
b) Dim edad As Integer. También podemos usar la expresión abreviada Dim edad%.
Se podría definir otra variable llamada añonacimiento según el programador lo estime oportuno o no.
c) Dim magnitud1!, magnitud2!, magnitud3 As Single
Dim media As Single

Hemos utilizado el tipo Single para cubrirnos las espaldas. No sabemos con qué tipo de valores vamos a trabajar y por ello cogemos un tipo de variables bastante amplio como es el Single. Si se considera necesario también puede usarse Double.
Hemos utilizado dos líneas pero sólo un tipo de variable ¿Por qué? El programador ordena la declaración de variables como estime más conveniente. En este caso ordenamos “valores para el cálculo” en una línea y “resultados” en otra. Resulta más fácil de leer y analizar que estando todo en una sola línea.

d)
Dim i%, j%, k As Integer
Dim tension1!, tension2!, tension3 As Single
Dim largo!, canto!, ancho As Single
Dim Muestraresultados As Boolean.

Siempre será preferible usar las expresiones tension1, tension2 y tension3 antes que t1, t2 y t3 que resultan más confusas. Sin embargo, este tipo de decisiones siempre quedan a criterio del programador.

CONTENIDO Y ASIGNACIÓN DE CONTENIDO A VARIABLES

Las normas para asignar contenido a variables serán las indicadas en el curso “Bases de la programación nivel I” de aprenderaprogramar.com, teniendo en cuenta que de forma general usaremos estas equivalencias.

Visual Basic

Ejemplos de asignación de contenidos son estos:

Visual Basic
Visual Basic

Nota: la separación decimal normalmente es un punto, pero tendrás que comprobarlo en tu computador porque puede variar en función de las configuraciones aplicadas. Es decir, normalmente se escribirá un decimal como 3.33 en lugar de cómo 3,33.

Un programa que conste de:

Dim A As Integer
A = 7 * B

dará lugar a un error debido a que B no está declarada.

En cambio:

Dim A%, B%
A = 7 * B

Supone que A valga cero, ya que si no se asigna un valor a B ésta tiene por contenido el valor por defecto, es decir, cero. 7 * B equivale en este caso a 7 * 0, que vale cero.

CREAR UN PROGRAMA BÁSICO

Vamos a crear un programa que declare una variable tipo String llamada mensaje y nos muestre un texto en pantalla.
Para ello como primer paso abrimos un proyecto de Visual Basic. Recordar que esto se hace de la siguiente manera. En el menú Archivo seleccionamos la opción “Nuevo proyecto”. A continuación elegimos:

a) Para las versiones que nos dan la opción “Aplicación de Windows Forms” elegimos esta opción.
b) Para las versiones que nos dan la opción “Exe estándar” elegimos esta opción.

Una vez abierto el proyecto debe aparecernos el formulario vacío sobre la pantalla. Hacemos doble click sobre el formulario y se nos debe abrir la ventana de código conteniendo algunas líneas. En caso de que no se te abra la ventana de código, vete al menú “Ver” y elige la opción “Código”.
Escribiremos el siguiente código que corresponde al programa que vamos a ejecutar:

Para las versiones menos recientes:
Visual Basic

Ten en cuenta que según la versión de Visual Basic que estés utilizando pueden existir pequeñas diferencias en el código que debe usarse. Nosotros pretendemos centrarnos en la lógica de la programación más que en los detalles de la sintaxis de una versión concreta. Si es necesario, consulta la ayuda para conocer la sintaxis exacta que debes emplear.
Analicemos las líneas que lo componen.

1. Option Explicit (Option Explicit On). Ya hemos definido su significado.
2. Dim mensaje as String, declara una variable denominada mensaje como tipo alfanumérico de longitud variable.
3. Private Sub Form Load() ó Private Sub Form1_Load (...). Esta parte de código corresponde a la apertura de un módulo de código de Visual Basic, que en la terminología del lenguaje se denomina Procedimiento. La cuestión se puede hacer un poco complicada en lo que se refiere a terminología, pero no vamos a preocuparnos por esta cuestión ahora.

En el curso “Bases de la programación I” de aprenderaprogramar.com se trabaja con programas que constan de un algoritmo principal y distintos módulos o subprogramas. La estructura y terminología de un programa en Visual Basic es algo más compleja, al trabajarse con distintos elementos dentro de un programa. Estos elementos varían según la versión, pero podrían ser por ejemplo módulos de formulario (.frm), módulos estándar (.bas), módulos de clases (.cls), etc.. Nosotros vamos a centrarnos en lo que es un módulo de formulario: un fichero en el que almacenamos información relacionada con el formulario donde hemos colocado objetos y para el que hemos escrito un código. Así pues, de momento para nosotros el programa va a constar de:

- Un formulario donde hemos colocado objetos (trabajo de diseño de tipo gráfico). Excepcionalmente un formulario puede carecer de objetos y encontrarse vacío.
- Un código que consta normalmente de: Option Explicit (Option Explicit On), Declaración de variables y Procedimientos. Un procedimiento es un conjunto de código que se ejecutará en un momento dado, algo equivalente a lo que habíamos definido con el pseudocódigo como módulo o subprograma.

Un procedimiento puede ejecutarse por varios motivos como:

a) Ser llamado desde alguna parte del programa.
b) Se produce un evento que da lugar a que se ejecute el código.

En este ejemplo que estamos viendo, el procedimiento se ejecuta cuando tiene lugar un evento que es la carga del formulario (form load), que vamos a considerar la ejecución del programa. Así pues, el código comprendido entre el fragmento de código de tipo “Private Sub Form_Load()” y “End Sub” se va a ejecutar cada vez que mandemos correr el programa, es decir, cada vez que ordenemos su ejecución.

4. mensaje = "Bienvenido a este programa", asigna a la variable mensaje el contenido de tipo alfanumérico indicado.
5. MsgBox (mensaje), indica al ordenador que proceda a mostrar el contenido de la variable mensaje dentro de una caja de mensajes.
6. End Sub, define el final del módulo de código (procedimiento).

Ejecuta el programa pulsando la tecla F5. También puedes hacerlo a través del menú <> ó <> según la versión que estés utilizando. En algunas versiones existe la opción <>, que permite que la ejecución del programa se haga realizando una revisión de errores más exhaustiva que si se ejecuta el programa pulsando simplemente F5.
Tras ejecutar el programa te aparecerá en pantalla el mensaje Bienvenido a este programa. Para cerrar el programa pulsa aceptar y haz click sobre el aspa de cierre de la ventana. Vamos a hacer una pequeña mejora estética. Vete a Ver-Diseñador (Ver-Objeto) y cambia el valor de la propiedad Caption ó Text (según la versión que estés usando) del form a "Bienvenida" y modifica el código de la siguiente manera.

Visual Basic

Fíjate que cuando aparezca la ventana del formulario, debido a que hemos modificado sus propiedades, ahora nos aparecerá el texto “Bienvenida” en la parte superior.

Visual Basic

También hemos usado otros elementos que iremos explicando poco a poco a lo largo del curso. El objetivo ahora es simplemente irnos familiarizando con Visual Basic.
La constante vbTab nos ha servido para introducir un tabulador. Ello da lugar a que el texto aparezca con un pequeño margen por el lado izquierdo y derecho sobre la ventanita del mensaje. Prueba a introducir variables de tipo numérico y a dar lugar a que se muestren sus contenidos sobre la ventana del mensaje. Juega con los nombres de las variables, sus contenidos y la asignación de contenidos.
También puede resultar de interés que compruebes qué ocurre si declaras una variable de un tipo y le asignas contenido de otro tipo.Por ejemplo declara Dim salario As Integer, asígnale el contenido salario = “Son 3000 euros” y prueba a mostrarlo en pantalla.

¿Qué ocurre cuando incumplimos las previsiones de Visual Basic para asignar contenidos a variables (por ejemplo, para una variable A tipo Integer definir A = 53200000000000000000000, que está fuera del rango previsto)? No vamos a analizar los distintos casos que se pueden presentar, sino a tratar de dar una respuesta genérica. Cuando hacemos algo no esperado, como asignar un valor fuera de rango, asignar un valor que no concuerda con el tipo de la variable, sumar variables numéricas con alfanuméricas, asignar decimales a un número entero..., etc. pueden suceder varias cosas:

a) Salta un error. Un mensaje impide que el programa comience a ejecutarse, o bien el programa se detiene mientras se está ejecutando.
b) El programa se ejecuta pero los resultados no son los deseados.
c) El programa se ejecuta y los resultados son los deseados.

En resumen, es difícil prever lo que va a suceder, aunque se pueden estudiar y manejar las circunstancias. Por ejemplo una variable que se declare como tipo Long pero a la que se asigna un contenido numérico real con dos decimales no da lugar a un error, pero sí a una pérdida de información derivada de que el número decimal se va a redondear a un entero. Las consecuencias de esta circunstancia habría que valorarlas para cada programa y circunstancias concretas.
Como programadores hemos de buscar programas 100% predecibles, en los que no se pueda producir que "sea difícil prever lo que va a suceder". Por tanto intentaremos que la declaración y asignación de contenidos a variables se ajuste a las normas de Visual Basic. En última instancia, podremos prever una rutina de gestión de errores para casos imprevistos.

VARIABLES CON ÍNDICE O LOCALIZADOR. ARRAYS.

El concepto de array con Visual Basic coincide con el que se expone en el curso “Bases de la programación nivel I” de aprenderaprogramar.com en pseudocódigo. Veremos ahora cómo declarar arrays estáticos de una dimensión. La gestión de arrays multidimensionales y dinámicos la veremos más adelante.

ARRAYS UNIDIMENSIONALES

La sintaxis a emplear será:

Dim [Nombre del array]([dimensión]) As [Tipo de variable]

Si no se declara el tipo de variable el array será tipo Variant ó tipo Object (según la versión de Visual Basic que estemos empleando) por defecto. Conviene tener cuidado con esto y seguir las mismas pautas que hemos indicado para las variables. Ejemplos de declaración de arrays serían:

− Dim Vez(10) As Integer
− Dim Amigo(1000) As String
− Dim Value(25) As Single
− Dim NúmerodeCoches(24) As Integer
− Dim Jugador(8) As Long
− Dim TCP(3) As Boolean

Cuando creamos un array del tipo A(n) podríamos pensar que estamos creando n variables que son A(1), A(2), A(3), ..., A(n). Pero en realidad estamos creando n+1 variables porque Visual Basic crea también A(0). Esto conviene tenerlo en cuenta porque puede dar lugar a alguna confusión. Disponer de un valor con índice cero puede ser de utilidad en situaciones como considerar cada variable asociada a una hora del día, empezando a contar desde la hora cero hasta la 23 (total de 24 horas), cosa que es habitual en algunos países. En lugar de 1, 2, 3, ..., 24 estaríamos usando 0, 1, 2, ..., 23.
En la mayoría de lenguajes de programación se usa el índice cero como primer índice de un array. No obstante, en las versiones menos recientes de Visual Basic se permitía establecer como primer índice de un array el 1 mediante la instrucción Option Base. A través de ella se puede establecer como primer índice del array el uno en vez de el cero en aquellas versiones que lo admiten. Para ello se escribe en la cabecera del programa:

Option Base 1

Option Base afecta a todos los arrays que se declaren. También podemos indicar que el primer índice de los arrays es cero escribiendo Option Base 0 en las versiones de Visual Basic que admiten esta instrucción. Esto equivale a no poner nada (por defecto el primer índice será cero). Vamos a trabajarlo sobre el ordenador. En la ventana de código escribe lo siguiente:

Visual Basic

Al ejecutar el código (Ctrl+F5), te aparecerá el mensaje "El número de coches en la hora cero fue 14". Modifica el programa indicando Numerodecoches(29) = 14 en lugar de Numerodecoches(0) = 14. Prueba a ejecutarlo y te aparecerá un mensaje del tipo: "Error en tiempo de ejecución. El subíndice está fuera del intervalo". Efectivamente, se debe a haber puesto un índice fuera del rango y ser los valores que puedes usar en el código como localizador de una variable del array los comprendidos entre 0 y 24. Al estar usando la variable Numerodecoches(29), Visual Basic detecta la incoherencia y genera un error.
Otra opción que nos dan algunas versiones menos recientes de Visual Basic es tener un array de variables cuyos localizadores no comienzan en cero ni en uno, sino en un número específico. La sintaxis para ello en las versiones que lo permiten es:

Dim [Nombre de variable]([Valor inicial] To [Valor final]) As [Tipo de variable]

Supongamos que queremos definir una serie de variables asociadas a las horas comprendidas entre las 10 y las 18 horas. En las versiones que lo permiten podríamos crear un array del tipo:

Dim Magnitud (10 To 18) As Integer

En este caso si la versión admite esta sintaxis los valores válidos como índices del array serían 10, 11, 12, 13, 14, 15, 16, 17 y 18. Cualquier número que no sea de esta serie usado como localizador del array daría lugar a un error por subíndice fuera del intervalo. En las versiones más recientes de Visual Basic no es posible definir índices en un rango, de modo que hemos de declarar el array como un array normal cuyo primer índice es cero, pudiendo dejar vacíos o sin usar aquellos índices que no nos resulten útiles.
El contenido de una matriz estática puede ser borrado utilizando la instrucción Erase. La sintaxis será la siguiente:

Erase [Nombre de array1], [Nombre de array2], ..., [Nombre de array n]

Ejemplos de uso de Erase pueden ser:

- Erase Númerodecoches
- Erase Númerodecoches, Usuarios, Calles

Al invocar a Erase sobre una variable de tipo array el resultado depende de la versión de Visual Basic que estemos utilizando:

a) En las versiones menos recientes el contenido de las variables que constituyen el array estático se transforma en cero si son de tipo numérico o cadena vacía si son de tipo texto (String), pero el array sigue existiendo y teniendo un contenido válido.
b) En las versiones más recientes el contenido de las variables que constituyen el array estático queda eliminado y no es posible invocar un elemento del array. La variable del array pasa a tener valor Nothing y para volver a usarla tendríamos que establecer una redefinición del array con la instrucción ReDim, que estudiaremos más adelante.

El comportamiento de Erase lo volveremos a estudiar pues tiene distintas aplicaciones. Ejecuta el siguiente programa para comprobar el funcionamiento de Erase.

Visual Basic

El resultado será:

a) Para las versiones menos recientes será: El número de coches en la hora cero fue 0. A pesar de haber definido Numerodecoches para la hora cero como 14, este valor no se llega a mostrar porque se ejecuta un Erase, que da lugar a que todos los valores del array se establezcan a cero por ser el array de tipo Integer.
b) Para las versiones más recientes: Error. No se controló NullReferenceException. Referencia a objeto no establecida como instancia de un objeto. Este error se genera porque se considera que el array no tiene índices establecidos y tendríamos que volver a establecerlos usando la instrucción ReDim que estudiaremos más adelante.

Si eliminas el Erase, te deberá aparecer en pantalla "El número de coches en la hora cero fue 14".

EJERCICIO:

Crea el código de dos programas que cumplan las siguientes premisas:

a) Programa 1.
Declara un array tipo Integer denominado Numerodecoches cuyo número de elementos sea 24. Declara una variable tipo Integer que se llame R. En el procedimiento de carga del formulario establece el valor de R en 2 y el valor de Numerodecoches para un localizador de valor R en 233. Procede a mostrar en pantalla un mensaje que indique cuál es la hora R y el número de coches para la hora R. Finalmente, modifica únicamente la asignación de valor a R de modo que en vez de 2 sea 21 y ejecuta de nuevo el programa.
b) Programa 2.
Sobre el programa anterior realiza los siguientes cambios. Mantén el número de elementos de Numerodecoches en 24. Declara dos variables A y B de tipo Integer. Establece A con valor 8, B con valor 4 y R con valor A dividido entre B. Ejecuta el programa.

SOLUCIÓN:
El programa 1 será el siguiente. Si lo ejecutamos obtendremos "El número de coches en la hora 2 fue 233". Si cambiamos R = 2 por R=21 obtendremos "El número de coches en la hora 21 fue 233".

Visual Basic

Nota: usamos Numerodecoches(23) en lugar de Numerodecoches(24) porque el número de elementos es uno más que el declarado debido a que se cuenta el cero. Así, si declaráramos Numerodecoches(24) tendríamos 25 elementos (correspondientes a los elementos del 1 al 24 más el elemento cero).
El programa 2 será el siguiente. Recuerda también que usar una declaración tipo Dim A, B As Integer no sería válida porque supondría que A queda declarada como tipo Variant o tipo Object. Para que no haya duda usaremos Dim A%, B% ó Dim A As Integer, B As Integer

Visual Basic

ARRAYS MULTIDIMENSIONALES EN VISUAL BASIC

Tal y como explicamos en su momento, será posible crear arrays con más de una dimensión, pasando de la idea de lista, vector o matriz de una sola fila a la idea de matriz de m x n elementos, estructuras tridimensionales, tetradimensionales, etc. La sintaxis será:

Dim [Nombre del array]([dimensión1, dimensión2, ...]) As [Tipo de variable]

Si no se declara el tipo de variable el array será tipo Variant u Object (según la versión de Visual Basic que utilicemos) por defecto. Conviene tener cuidado con esto y seguir las mismas pautas que hemos indicado para las variables. La declaración de una matriz tradicional de m x n elementos podría ser:

Dim A(3, 2) As Integer

El número de elementos declarados se calcula teniendo en cuenta que la numeración de los índices empieza en cero, aunque ya hemos comentado que en algunas versiones existe una cláusula denominada Option Base que permite fijar como primer índice de los arrays el uno. En las versiones más recientes de Visual Basic (o con Option Base fijado en cero) tendremos una fila cero y una columna cero para la matriz declarada, con lo que el número de elementos será de 4 x 3 = 12. Decimos que hay 4 filas que son 0, 1, 2, 3 y tres columnas que son 0, 1, y 2. Si la versión de Visual Basic lo permite y fijamos Option Base en uno, la matriz será de 3 filas (1, 2 y 3) y dos columnas (1 y 2) siendo por tanto el número de elementos 3 x 2 = 6
Vamos a definir una matriz, array o arreglo de dos dimensiones a modo de ejemplo: queremos almacenar en una matriz el número de alumnos con que cuenta una academia ordenados en función del nivel y del idioma que se estudia. Tendremos 3 filas que representarán Nivel básico, medio o de perfeccionamiento y 4 columnas que representarán los idiomas (1 = Inglés, 2 = Francés, 3 = Alemán y 4 = Ruso). La declaración de dicha matriz sería:

Dim Alumnosfxniveleidioma(3, 4)

Podríamos asignar contenidos de la siguiente manera:

Alumnosfxniveleidioma(1, 1) = 7
Alumnosfxniveleidioma(1, 2) = 14
Alumnosfxniveleidioma(1, 3) = 8
Alumnosfxniveleidioma(1, 4) = 3
Alumnosfxniveleidioma(2, 1) = 6
Alumnosfxniveleidioma(2, 2) = 19
Alumnosfxniveleidioma(2, 3) = 7
Alumnosfxniveleidioma(2, 4) = 2
Alumnosfxniveleidioma(3, 1) = 3
Alumnosfxniveleidioma(3, 2) = 13
Alumnosfxniveleidioma(3, 3) = 4
Alumnosfxniveleidioma(3, 4) = 1

Los elementos de índice cero no los estamos utilizando, aunque podríamos hacerlo si quisiéramos. La representación gráfica que podríamos asociar a esta asignación de datos sería esta matriz:

Visual Basic

La organización de la información en matrices nos generará importantes ventajas a la hora del tratamiento de datos en nuestros programas.
Para terminar en cuanto a multidimensionalidad, veamos casos de declaraciones con más de dos dimensiones. Para ello tomaremos como ejemplo el conteo del número de coches que pasan por una vía en un periodo de tiempo. La forma de declarar esos array sería la siguiente (hemos considerado que usamos el tipo de datos Integer para almacenar la información):

Visual Basic

Nota: en este ejemplo estamos considerando que no vamos a usar los índices cero de los arrays, pero podríamos hacerlo, de hecho es habitual.
Veamos lo que sería un ejemplo de programa con array multidimensional, en este caso usando un tipo String.

Visual Basic

El resultado del programa es que se muestra el mensaje “El alumno número 24 del curso tercero se llama Pedro Hernández González”.

ASISTENCIA DE VISUAL BASIC PARA ESCRITURA DE CÓDIGO

Ya hemos visto dónde debemos escribir el código asociado a un formulario. Hay que destacar que Visual Basic facilita el que podamos escribir código con rapidez a través de:

- Propuestas para elección de tipos de variable, propiedades de un objeto, etc.
- Corrección o indicación automática de errores que podamos cometer.
- Adelanto de la terminación del nombre de instrucciones o variables que hemos empezado a escribir.

Para que esta asistencia en la escritura esté disponible deberás comprobar:

En las versiones menos recientes, en el menú Herramientas ‐ Opciones..., ventana Editor ‐ Opciones del código), que tienes activadas las opciones correspondientes, siendo las principales: Comprobación automática de sintaxis (Habilitar sugerencias de corrección de errores), Lista de miembros automática, Información rápida automática y Sugerencias de datos automáticas.
En las versiones más recientes en el menú Herramientas, Opciones, activa la casilla “Mostrar todas las configuraciones”. A continuación elige Editor de texto, Basic, y comprueba que tienes activadas las opciones correspondientes, siendo las principales: General‐Lista de miembros automática, General‐ Información de parámetros, Opciones Específicas – Inserción automática de construcciones End, Lista descriptiva (nuevo formato) de código, Habilitar sugerencias de corrección de errores y Habilitar resaltado de referencias y palabras clave.
Una vez verificado esto, vamos a comprobar cómo nos ayuda Visual Basic a escribir código. Dirígete a la ventana de código y escribe: Dim seleccionado As. Comprobarás cómo aparece una ventana donde existen diferentes posibilidades:

Visual Basic

A través del cursor o del ratón, selecciona Boolean, con lo cual verás que se escribe automáticamente Boolean sin necesidad de teclearlo. Por tanto Visual Basic ha interpretado que ibas a definir el tipo de dato para la variable seleccionado y te ha mostrado las distintas posibilidades que tenías, facilitando la elección. Borra ahora la declaración de la variable y escribe lo siguiente:

Dim seleccionado as boolean

Pulsa enter y comprobarás que el texto automáticamente se convierte en:

Dim seleccionado As Boolean

Es decir, después de haber cometido un error al no poner correctamente las mayúsculas en as boolean, Visual Basic ha corregido automáticamente la escritura adaptándola a la sintaxis correcta. Esto es muy útil, ya que nos basta con tener las ideas claras respecto a lo que queremos escribir y saber su sintaxis aproximada. De los "detalles de sintaxis" se encargará Visual Basic, permitiendo que centremos nuestra atención en los aspectos principales de la programación.
Las correcciones no son (no pueden serlo) siempre automáticas. En algunos casos nos aparecerá un mensaje de error indicativo de que Visual Basic no entiende esa sintaxis y en otros no detectaremos que hemos cometido un error hasta tratar de ejecutar el programa.

Escribe por ejemplo: Dik seleccionado As Boolean

No habrá corrección automática pero al pulsar enter te aparecerá el texto remarcado o subrayado indicando que Visual Basic detecta que “hay algo extraño” en el código. Esto te servirá para prestar atención y darte cuenta de que en lugar de Dim has escrito Dik.
Si escribes Dim seleccionado As Voolean no hay corrección automática. Quizás aparezca un subrayado o remarcado indicando que se detecta algo extraño (o quizás no), ya que Visual Basic no sabe si tú has creado un tipo de variable al que has llamado Voolean. El error en este caso te saltará, si no lo corriges antes, al tratar de ejecutar el programa.
El editor de Visual Basic también nos puede ayudar a completar fragmentos de código obligatorios. Por ejemplo, en las versiones menos recientes cuando escribimos Private Sub form_load() y pulsamos enter nos aparece automáticamente una nueva línea End Sub, que debe acompañar obligatoriamente a la línea Private Sub form_load(). En las versiones más recientes si escribimos if seleccionado = True y pulsamos enter automáticamente nos aparecerá If seleccionado = True Then y en otra línea End If. Ya que son fragmentos de código que obligatoriamente tenemos que escribir, Visual Basic nos ahorra este trabajo. Aunque si lo preferimos, podemos desactivar ese autocompletado automático.
Si definimos seleccionado como una variable tipo Boolean y escribimos en el editor: seleccionado =
Comprobarás que aparece una ventanita con dos opciones: false y true.

Visual Basic

Esto es así por estar la variable definida como tipo Boolean. Son los dos valores que se le podrían asignar y Visual Basic nos lo recuerda. Cuando estamos trabajando con decenas de variables es muy útil. Podemos seleccionar False o True haciendo uso del cursor o del ratón, sin necesidad de escribirlo. Estas sugerencias automáticas podemos activarlas o desactivarlas según deseemos.

ORDENACIÓN DE LÍNEAS. NUMERACIÓN DE LÍNEAS. ETIQUETAS DE LÍNEAS.

Visual Basic
Visual Basic

Los cuatro casos presentados son distintas posibilidades para numerar o etiquetar las líneas. Escribe el código en tu editor y compruébalo tú mismo.
El caso 1 corresponde a un programa en el que no existe identificación de las líneas, que para nosotros será lo habitual (en general es infrecuente identificar las líneas).
El caso 2 corresponde a un programa con las líneas numeradas (en las versiones más recientes después del número de línea se incluyen dos puntos). Recuerda a lo que era el Basic tradicional, para el que la numeración de líneas tenía una importancia notable al ser un tipo de programación altamente dependiente de la instrucción Go To (IrA), circunstancia que ya no se da con Visual Basic. Por tanto, en general no usaremos este tipo de numeración aunque Visual Basic la permite.
El caso 3 corresponde a un programa con las líneas identificadas por etiquetas. Cada línea tiene un nombre descriptivo que le precede, separado del contenido del código en sí por un signo de dos puntos. En circunstancias puntuales puede ser de interés, pero tampoco tiene sentido usarlo de forma constante para programar.
El caso 4 corresponde a un programa donde algunas líneas están numeradas, otras identificadas por una etiqueta y otras carecen de identificación.
Las posibilidades que se nos abren son amplias. Nosotros prescindiremos de la identificación de líneas, excepto para cuestiones puntuales como podría ser direccionar la gestión de errores. Sobre gestión de errores hablaremos más adelante.

INSERCIÓN DE COMENTARIOS EN EL CÓDIGO

Existen distintas posibilidades para insertar comentarios en el código de Visual Basic como son:

La palabra clave Rem: la presencia de la palabra clave Rem (REM en mayúsculas algunas versiones) transforma en comentario todo lo que se encuentre a continuación de ella en una línea. Rem puede encontrarse al principio de una línea, con lo cual nada de lo que aparezca en dicha línea será ejecutado, o bien después de una o varias instrucciones que se encuentren en una línea. En algunas versiones no es necesario separador, mientras que en otras Rem debe estar separado de las instrucciones anteriores en la línea mediante dos puntos.
El signo apóstrofe ': la presencia del signo apóstrofe convierte en comentario todo lo que se encuentre detrás de él en una línea dada. Puede situarse al principio de una línea, con lo cual nada de lo que aparezca en dicha línea será ejecutado, o bien después de una o varias instrucciones sin necesidad de que existan dos puntos ni ningún otro signo de separación.

La parte del código que son comentarios es marcada por el editor de Visual Basic con un color verde que lo diferencia de las instrucciones que van a ser ejecutadas. En un mismo programa pueden aparecer indistintamente instrucciones Rem y apóstrofes. Veamos ejemplos equivalentes:

Visual Basic
Visual Basic

El ejemplo 1 corresponde a un programa con comentarios insertados a través de Rem situados previos a la línea que comentan. El ejemplo 2 es igual con los Rem sustituidos por apóstrofes. En el ejemplo 3 los comentarios con apóstrofes se sitúan a continuación de las instrucciones, en la misma línea. Por último, el ejemplo 4 combina el uso de apóstrofes con Rem en la misma línea de instrucciones a ejecutar.
Los criterios para insertar comentarios pueden consultarse en el curso “Bases de la programación nivel I” de aprenderaprogramar.com. Los comentarios son una parte importante de los programas, por lo que es conveniente cuidar su estructuración y contenidos. Dado que con el pseudocódigo trabajamos con corchetes, podemos usar los corchetes detrás de los apóstrofes para "recordar" el carácter de comentario de dicho texto.

'[Esto es un comentario detrás de un apóstrofe. El corchete no es estrictamente necesario pero podemos ponerlo si queremos]

En las empresas de programación suele existir un manual de estilo donde se definen distintas reglas que deben cumplir los programadores, y la forma de comentar los programas suele ser una de ellas.