Buscador

Asignación y obtención de valores

Para asignar y obtener valores de los elementos de un array, actuaremos igual que para una variable normal, pero empleando además el índice entre paréntesis junto al nombre de la variable, para indicar qué posición queremos manipular. Ver Código fuente 44.

Sub Main()
' array con 4 elementos: de 0 a 3
Dim Nombres(3) As String
' asignar valores al array
Nombres(0) = "Ana"
Nombres(1) = "Pedro"
Nombres(2) = "Antonio"
Nombres(3) = "Laura"
' obtener valores de un array
Dim ValorA As String
Dim ValorB As String
ValorA = Nombres(1) ' Pedro
ValorB = Nombres(3) ' Laura
' mostrar los valores obtenidos del array
Console.WriteLine("Variables: ValorA --> {0}, ValorB --> {1}", ValorA, ValorB)
Console.ReadLine()
End Sub
Código fuente 44

Declaración - II

Al declarar un array, todos sus valores son del mismo tipo de dato. Si necesitamos que dichos valores sean de tipos diferentes, debemos declarar el array como tipo Object, ya que al ser este el tipo de dato genérico en el entorno de .NET, nos permitirá asignar valores de distintos tipos al array.
Figura 63. Declaración de un array.

Declaración - I

Para declarar un array actuaremos prácticamente igual que para declarar una variable normal, con la diferencia de que utilizaremos los paréntesis junto al nombre de la variable, para indicar que se trata de un array, y opcionalmente, dentro de los paréntesis, indicaremos el número de elementos de que inicialmente va a constar el array. 
También es posible, asignar valores a los elementos en el mismo momento de su declaración. Debemos tener en cuenta a la hora de establecer el número de elementos, que el primer índice de un array es el cero, por lo que al ser creado, el número real de elementos en un array será el especificado en la declaración más uno. La Figura 63 muestra un esquema de la declaración de un array. A continuación vemos unos ejemplos de creación de arrays en el Código fuente 43.

Sub Main()
' array sin elementos
Dim Colores() As String
' array con 4 elementos vacíos: de 0 a 3
Dim Nombres(3) As String
' array con 3 elementos, cuyos valores asignamos
' en el momento de la declaración del array
Dim Frutas() As String = {"Manzana", "Naranja", "Pera"}

End Sub
Código fuente 43

Arrays

Como se indicó en la descripción general de los componentes del lenguaje, un array es un tipo de dato compuesto, formado por un conjunto de elementos del mismo tipo de dato, al que se le asigna un identificador para poder reconocerlo en el código del programa. También se les denomina matriz o vector, aunque en este texto emplearemos el término array de forma genérica.
A cada elemento del array se accede mediante un índice, que indica el número de posición que ocupa dicho elemento dentro del array. Si tuviéramos que representar un array gráficamente, podríamos hacerlo mediante un conjunto de casillas, en cada una de las cuales se encontraría un elemento del array. Cada casilla tendría un número (índice) que identificaría de forma única su posición. Ver Figura 62.
Figura 62. Representación gráfica de un array.
En este apartado vamos a realizar una introducción a los arrays y su uso de forma básica. Puesto que los tipos de datos pueden ser tratados al mismo tiempo como objetos en el lenguaje VB.NET, cubriremos algunos aspectos avanzados sobre arrays al llegar a la programación con objetos.

Depuración del código en ejecución II

Para ejecutar el programa en modo de depuración pulsaremos [F8], o seleccionaremos el menú Depurar + Ir a instrucciones. Cualquiera de estas acciones iniciarán el programa dentro del contexto del depurador, deteniendo la ejecución en la primera línea de código ejecutable, destacada en color amarillo. La línea marcada en amarillo es la que está a punto de ejecutarse; para ejecutarla y pasar a la siguiente línea pulsaremos de nuevo [F8], y así sucesivamente hasta llegar a la última línea del programa, donde el depurador finalizará la ejecución. Podemos ver de forma inmediata el valor de una variable simplemente situando el cursor del ratón sobre ella, lo que mostrará el contenido en una viñeta informativa. Ver Figura 60
Figura 60. Visualizando el contenido de una variable durante la depuración.
Podemos también ver con detalle el valor que van adquiriendo las variables a lo largo de la ejecución, abriendo la ventana Locales del depurador, mediante el menú Depurar + Ventanas + Locales, o pulsando [CTRL + ALT + V, L]. Ver Figura 61.
Figura 61. Ventana Locales del depurador.
Si en cualquier momento queremos continuar la ejecución normal del programa sin seguir usando el depurador pulsaremos [F5].

Depuración del código en ejecución I

A continuación haremos clic en el elemento Mi perfil, situado en la parte izquierda de esta ventana. Esta opción nos permite configurar las características del tipo de programador que va a trabajar con el IDE, como las combinaciones de teclado, ayuda, etc. En nuestro caso particular, en la lista desplegable Combinación de teclado seleccionaremos Visual Basic 6, para que las combinaciones de teclas se adapten a las del programador de Visual Basic, el resto de opciones podemos dejar las que hay por defecto. Ver Figura 59.
Figura 59. Configuración del perfil del programador en el IDE.
Una vez configurado nuestro perfil de trabajo, sigamos con las cuestiones referentes al depurador. Un depurador nos permite introducirnos dentro del código de nuestro programa durante la ejecución del mismo, para observar qué es lo que está ocurriendo: ejecutar línea a línea el programa, observar el valor de las variables, etc., aspectos todos ellos fundamentales para el seguimiento de errores y fallos en la lógica de la aplicación. VS.NET dispone de un excelente depurador; del que describiremos a continuación sus elementos más básicos, para que el lector pueda realizar un seguimiento más preciso de lo que sucede durante la ejecución de su aplicación.

Introducción a los arrays. Operadores

Depuración del código en ejecución 
Para comprobar el resultado de los ejemplos realizados hasta el momento hemos utilizado la salida a consola. Sin embargo esto no es suficiente información para el programador a la hora de desarrollar una aplicación. 
Un lenguaje o entorno de programación ha de proporcionar al programador utilidades que le permitan comprobar cómo se ejecuta el código de la aplicación línea por línea, información sobre el contenido de las variables, expresiones, puntos de interrupción en la ejecución, etc. Al conjunto de todas estas técnicas o utilidades que debe aportar el lenguaje se le denomina depurador. 
El entorno de Visual Studio .NET aporta un depurador muy completo, del que vamos a mostrar en este apartado algunas de sus funcionalidades básicas, dejando para un tema posterior un estudio más completo de esta herramienta. 
Ya que algunas características del depurador y de otros elementos se realizan mediante combinaciones de teclado, es recomendable configurar el IDE al perfil de programador más adecuado, o con el que nos encontremos más cómodos.
Para configurar el perfil del usuario de VS.NET debemos situarnos en la pestaña correspondiente a la página de inicio del IDE (Start). Si hemos cerrado esta ventana o pestaña podemos abrirla de nuevo muy fácilmente mediante la opción de menú del IDE Ayuda + Mostrar página de inicio. Ver Figura 58.
Figura 58. Pestaña Página de inicio en la ventana principal del IDE.

Constantes - III

En el anterior ejemplo, realizamos el descuento utilizando directamente el valor a descontar. Si en un momento dado, necesitamos cambiar dicho valor de descuento, tendremos que recorrer todo el código e ir cambiando en aquellos lugares donde se realice esta operación. Empleando una constante para el descuento, y utilizando dicha constante en todos aquellos puntos del código en donde necesitemos aplicar un descuento, cuando debamos modificar el descuento, sólo necesitaremos hacerlo en la línea en la que declaramos la constante. Ver Código fuente 42.

Sub Main()
' crear constante para calcular descuento
Const DESCUENTO As Integer = 100
' venta de productos
Dim Importe As Double
Dim TotalVenta As Double
Console.WriteLine("Introducir importe de la venta")
Importe = Console.ReadLine()
' aplicar descuento sobre la venta, atención al uso de la constante
TotalVenta = Importe - DESCUENTO
Console.WriteLine("El importe de la venta es: {0}", TotalVenta)
Console.WriteLine()
' .............
' .............
' .............
' factura de mercancías
Dim PrecioArt As Double
Dim TotalFactura As Double
Console.WriteLine("Introducir precio del artículo")

PrecioArt = Console.ReadLine()
' aplicar descuento a la factura, atención al uso de la constante
TotalFactura = PrecioArt - DESCUENTO
Console.WriteLine("El total de la factura es: {0}", TotalFactura)
Console.WriteLine()
' .............
' .............
' .............
Console.ReadLine()
End Sub
Código fuente 42

Constantes - II

Supongamos como ejemplo, que hemos escrito un programa en el que se realiza una venta de productos y se confeccionan facturas. En ambas situaciones debemos aplicar un descuento sobre el total resultante. Ver Código fuente 41.

Sub Main()
' venta de productos

Dim Importe As Double
Dim TotalVenta As Double
Console.WriteLine("Introducir importe de la venta")
Importe = Console.ReadLine()
' aplicar descuento sobre la venta
TotalVenta = Importe - 100
Console.WriteLine("El importe de la venta es: {0}", TotalVenta)
Console.WriteLine()
' .............
' .............
' .............
' factura de mercancías
Dim PrecioArt As Double
Dim TotalFactura As Double
Console.WriteLine("Introducir precio del artículo")
PrecioArt = Console.ReadLine()
' aplicar descuento a la factura
TotalFactura = PrecioArt - 100
Console.WriteLine("El total de la factura es: {0}", TotalFactura)
Console.WriteLine()
' .............
' .............
' .............
Console.ReadLine()
End Sub
Código fuente 41

Constantes - I

Al igual que las variables, una constante es un elemento del lenguaje que guarda un valor, pero que en este caso y como su propio nombre indica, dicho valor será permanente a lo largo de la ejecución del programa, no pudiendo ser modificado. Para declarar una constante, debemos utilizar la palabra clave Const, debiendo al mismo tiempo establecer el tipo de dato y asignarle valor. Ver Código fuente 40.

Sub Main()
Const Color As String = "Azul"
Const ValorMoneda As Double = 120.48
End Sub
Código fuente 40
La tipificación de una constante se rige, al igual que las variables, por la configuración que tengamos establecida para la instrucción Option Strict. Si intentamos asignar un valor a una constante después de su asignación inicial, el IDE nos subrayará la línea con un aviso de error de escritura, y se producirá igualmente un error si intentamos ejecutar el programa. Ver Figura 57
Figura 57. No es posible asignar valores a constantes después de su creación.
La ventaja del uso de constantes reside en que podemos tener un valor asociado a una constante a lo largo de nuestro código para efectuar diversas operaciones. Si por cualquier circunstancia, dicho valor debe cambiarse, sólo tendremos que hacerlo en el lugar donde declaramos la constante.

Grabación del código modificado

Cuando editamos el código fuente de nuestro programa, es conveniente cada cierto tiempo, cuanto más frecuente, mejor, grabar a disco el archivo o archivos de código modificados. 
Para ello podemos elegir la opción de menú del IDE Archivo + Guardar NombreFichero o la combinación de teclas [CONTROL + S]. Esta costumbre nos puede ahorrar serios disgustos en el caso de un apagón imprevisto del equipo cuando estamos en plena modificación de un programa y no hemos guardado los cambios realizados. 
De forma automática, el IDE graba los archivos del programa a disco cada vez que ejecutamos el proyecto, lo cual también supone una gran ayuda.

Avisos del IDE sobre errores en el código

Al declarar una variable con un nombre incorrecto, o si se produce otro tipo de error en la escritura del código, el propio IDE se encarga de avisarnos que existe un problema subrayando el fragmento de código conflictivo y mostrando una viñeta informativa al situar sobre dicho código el cursor. Ver Figura 56.
Figura 56. Código con errores subrayado por el IDE.

Estos avisos constituyen una gran ayuda, ya que permiten al programador observar problemas en la escritura del código, antes incluso de ejecutar el programa. 
Existen multitud de avisos de muy diversa naturaleza, teniendo en cuenta que la tónica general consiste en que el código problemático quedará subrayado por el IDE hasta que no modifiquemos la línea en cuestión y la escribamos correctamente.

Tipificación obligatoria - III

Si queremos que no se produzcan errores de conversión en el anterior código fuente, tendremos que emplear las funciones de conversión de tipo, o el objeto Convert, que proporciona el lenguaje. En este caso utilizaremos CInt( ), a la que pasamos un valor numérico como parámetro, y devuelve un tipo numérico Integer; y CStr( ), que convierte a String el valor que pasemos como parámetro. Consulte el lector el conjunto de funciones de conversión en la documentación de .NET Framework para una descripción detallada. Veamos el resultado en el Código fuente 39.

Sub Main()
' ahora es obligatorio establecer
' el tipo de dato a todas las variables
Dim Valor As Integer
Dim TotalGeneral As Double
Dim Dato As String
TotalGeneral = 500
Valor = CInt(TotalGeneral) ' conversión de tipos
Dato = CStr(TotalGeneral) ' conversión de tipos
End Sub
Código fuente 39

Establecer Option Strict On requiere un mayor trabajo por parte del programador, ya que ha de ser más cuidadoso y escribir un código más correcto y preciso, lo cual es muy conveniente. Sin embargo, ya que la opción por defecto en este sentido es Option Strict Off, los ejemplos realizados a lo largo de este texto se ajustarán en este particular a dicha configuración, con ello ganamos en comodidad, ya que evitaremos la obligación de realizar conversiones de tipos en muy diversas situaciones.