Como hemos visto cuando se define un vector indicamos entre paréntesis un valor entero que nos indica cuantos elementos podemos almacenar, a dicho valor hay que sumarle uno ya que las componentes se enumeran a partir de cero:
Private sueldos(4) As Integer
En la línea anterior estamos definiendo un vector con 5 componentes de tipo entera.
Luego cuando tenemos que recorrer dicho vector disponemos una estructura repetitiva For:
Public Sub Cargar()
Dim f As Integer
For f = 0 To 4
Console.Write("Ingrese importe del sueldo:")
sueldos(f) = Console.ReadLine()
Next
End Sub
Como vemos el For se repite mientras el contador f vale menos o igual a cuatro. Este estructura repetitiva es idéntica cada vez que recorremos el vector.
Que pasa ahora si cambiamos el tamaño del vector cuando lo definimos:
Private sueldos(7) As Integer
Con esto tenemos que cambiar todos los For que recorren dicho vector. Ahora veremos que un vector al ser un objeto tiene un método llamada GetUpperBound que retorna el valor del último índice del vector. Luego podemos modificar todos los For con la siguiente sintaxis:
Public Sub Cargar()
Dim f As Integer
For f = 0 To sueldos.GetUpperBound(0)
Console.Write("Ingrese sueldo:")
sueldos(f) = Console.ReadLine()
Next
End Sub
Cuando llamamos a GetUpperBound debemos pasar el valor cero (ya veremos más adelante con matrices y arreglos multidimensionales porque es este valor cero)
El problema completo utilizando el método GetUpperBound:
Module Module1
Public Class PruebaVector8
Private sueldos(4) As Integer
Public Sub Cargar()
Dim f As Integer
For f = 0 To sueldos.GetUpperBound(0)
Console.Write("Ingrese sueldo:")
sueldos(f) = Console.ReadLine()
Next
End Sub
Public Sub Imprimir()
Dim f As Integer
For f = 0 To sueldos.GetUpperBound(0)
Console.WriteLine(sueldos(f))
Next
Console.ReadKey()
End Sub
End Class
Sub Main()
Dim pv As New PruebaVector8()
pv.Cargar()
pv.Imprimir()
End Sub
End Module
También podemos pedir al usuario que indique el tamaño del vector en tiempo de ejecución, en estos casos se hace imprescindible el empleo del método GetUpperBound.
Se desea almacenar los sueldos de operarios. Cuando se ejecuta el programa se debe pedir la cantidad de sueldos a ingresar. Luego crear un vector con dicho tamaño.
Module Module1
Public Class PruebaVector8
Private sueldos() As Integer
Public Sub Cargar()
Dim tam As Integer
Console.Write("Cuantos empleados hay?")
tam = Console.ReadLine()
ReDim sueldos(tam - 1)
Dim f as Ingeger
For f = 0 To sueldos.GetUpperBound(0)
Console.Write("Ingrese sueldo:")
sueldos(f) = Console.ReadLine()
Next
End Sub
Public Sub Imprimir()
Dim f as Integer
For f = 0 To sueldos.GetUpperBound(0)
Console.WriteLine(sueldos(f))
Next
Console.ReadKey()
End Sub
End Class
Sub Main()
Dim pv As New PruebaVector8()
pv.Cargar()
pv.Imprimir()
End Sub
End Module
Cuando declaramos el vector no indicamos tamaño:
Private sueldos() As Integer
Luego para la creación del mismo ingresamos una variable entera y la utilizamos el comando Redim seguido del nombre del vector y entre paréntesis el índice final del vector a crear:
Dim tam As Integer
Console.Write("Cuantos empleados hay?")
tam = Console.ReadLine()
ReDim sueldos(tam - 1)
Disponemos tam-1 ya que si el operador ingresa que la empresa tiene 5 empleados luego debemos crear el vector con 5 componentes.
Luego las estructuras repetitivas las acotamos accediendo al método GetUpperBound del vector:
For f = 0 To sueldos.GetUpperBound(0)
Console.Write("Ingrese sueldo:")
sueldos(f) = Console.ReadLine()
Next
Module Module1
Public Class PruebaVector9
Private vec() As Integer
Public Sub Cargar()
Dim n As Integer
Console.Write("Cuantos elementos tiene el vector:")
n = Console.ReadLine()
ReDim vec(n - 1)
For f = 0 To vec.GetUpperBound(0)
Console.Write("Ingrese elemento:")
vec(f) = Console.ReadLine()
Next
End Sub
Public Sub AcumularElementos()
Dim suma As Integer = 0
Dim f As Integer
For f = 0 To vec.GetUpperBound(0)
suma = suma + vec(f)
Next
Console.WriteLine("La suma de los elementos es:" & suma)
Console.ReadKey()
End Sub
End Class
Sub Main()
Dim pv As New PruebaVector9()
pv.Cargar()
pv.AcumularElementos()
End Sub
End Module