
Visual Basic .Net
Un curso de: Tutoriales Programación
Hemos empleado variables de distinto tipo para el almacenamiento de datos (variables Integer, Single, String) En esta sección veremos otros tipos de variables que permiten almacenar un conjunto de datos en una única variable.
Un vector es una estructura de datos que permite almacenar un CONJUNTO de datos del MISMO tipo.
Con un único nombre se define un vector y por medio de un subíndice hacemos referencia a cada elemento del mismo (componente)
Problema 1:
Se desea guardar los sueldos de 5 operarios.
Según lo conocido deberíamos definir 5 variables si queremos tener en un cierto momento los 5 sueldos almacenados en memoria.
Empleando un vector solo se requiere definir un único nombre y accedemos a cada elemento por medio del subíndice.

Para definir una propiedad de una clase de tipo vector utilizamos la siguiente sintaxis:
Private sueldos(4) As Integer
Estamos definiendo un vector llamado sueldos que puede almacenar 5 componentes (esto debido a que las componentes comienzan a numerarse en cero).
Los elementos o componentes del vector sueldos solo pueden almacenar valores enteros. No podemos tener componentes de distinto tipo.
Programa:
Module Module1
Public Class PruebaVector1
Private sueldos(4) As Integer
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
Public Sub Imprimir()
Dim f As Integer
For f = 0 To 4
Console.WriteLine(sueldos(f))
Next
Console.ReadKey()
End Sub
End Class
Sub Main()
Dim pv As New PruebaVector1()
pv.Cargar()
pv.Imprimir()
End Sub
End Module
Como atributo de la clase declaramos el vector:
Private sueldos(4) As Integer
Lo definimos como atributo de la clase ya que lo utilizaremos en los dos métodos.
Para cargar cada componente debemos indicar entre paréntesis que elemento del vector estamos accediendo, es común utilizar un ciclo For para indicar el índice de la componente:
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
Cuando f vale cero estamos accediendo a la primer componente del vector (en nuestro caso sería):
sueldos(f) = Console.ReadLine()
Lo mas común es utilizar una estructura repetitiva For para recorrer cada componente del vector.
Utilizar el For nos reduce la cantidad de código, si no utilizo un For debería en forma secuencial implementar el siguiente código:
Console.Write("Ingrese importe del sueldo:")
sueldos(0) = Console.ReadLine()
Console.Write("Ingrese importe del sueldo:")
sueldos(1) = Console.ReadLine()
Console.Write("Ingrese importe del sueldo:")
sueldos(2) = Console.ReadLine()
Console.Write("Ingrese importe del sueldo:")
sueldos(3) = Console.ReadLine()
Console.Write("Ingrese importe del sueldo:")
sueldos(4) = Console.ReadLine()
La impresión de las componentes del vector lo hacemos en el otro método y también utilizamos un For para reducir el código a programar:
Public Sub Imprimir()
Dim f As Integer
For f = 0 To 4
Console.WriteLine(sueldos(f))
Next
Console.ReadKey()
End Sub
Siempre que queremos acceder a una componente del vector debemos indicar entre paréntesis la componente, dicho valor comienza a numerarse en cero y continua hasta el valor que indicamos al definir el vector, en nuestro caso creamos el vector indicando un 4, es decir tiene 5 elementos:
Private sueldos(4) As Integer
Por último en este programa creamos un objeto en la Main y llamamos a lo métodos de Cargar e Imprimir el vector:
Sub Main()
Dim pv As New PruebaVector1()
pv.Cargar()
pv.Imprimir()
End Sub
Problema 2:
Definir un vector de 5 componentes de tipo Single que representen las alturas de 5 personas.
Obtener el promedio de las mismas. Contar cuántas personas son más altas que el promedio y cuántas más bajas.
Programa:
Module Module1
Public Class PruebaVector2
Private alturas(4) As Single
Private promedio As Single
Public Sub Cargar()
Dim f As Integer
For f = 0 To 4
Console.Write("Ingrese la altura de la persona:")
alturas(f) = Console.ReadLine()
Next
End Sub
Public Sub CalcularPromedio()
Dim suma As Single
suma = 0
Dim f As Integer
For f = 0 To 4
suma = suma + alturas(f)
Next
promedio = suma / 5
Console.WriteLine("Promedio de alturas:" & promedio)
End Sub
Public Sub MayoresMenores()
Dim may, men As Integer
may = 0
men = 0
Dim f As Integer
For f = 0 To 4
If alturas(f) > promedio Then
may = may + 1
Else
If alturas(f) < promedio Then
men = men + 1
End If
End If
Next
Console.WriteLine("Cantidad de personas mayores al promedio:" & may)
Console.WriteLine("Cantidad de personas menores al promedio:" & men)
Console.ReadKey()
End Sub
End Class
Sub Main()
Dim pv2 As New PruebaVector2()
pv2.Cargar()
pv2.CalcularPromedio()
pv2.MayoresMenores()
End Sub
End Module
Definimos como atributo un vector donde almacenaremos las alturas. También definimos un atributo «promedio» ya que se lo calculará en un método y lo consultará en otro:
Private alturas(4) As Single
Private promedio As Single
Procedemos seguidamente a cargar todos sus elementos en el método Cargar:
Public Sub Cargar()
Dim f As Integer
For f = 0 To 4
Console.Write("Ingrese la altura de la persona:")
alturas(f) = Console.ReadLine()
Next
End Sub
En otro método procedemos a sumar todas sus componentes y obtener el promedio. El promedio lo almacenamos en un atributo de la clase ya que lo necesitamos en otro método:
Public Sub CalcularPromedio()
Dim suma As Single
suma = 0
Dim f As Integer
For f = 0 To 4
suma = suma + alturas(f)
Next
promedio = suma / 5
Console.WriteLine("Promedio de alturas:" & promedio)
End Sub
Por último en un tercer método comparamos cada componente del vector con el atributo promedio, si el valor almacenado supera al promedio incrementamos un contador en caso que sea menor al promedio incrementamos otro contador:
Public Sub MayoresMenores()
Dim may, men As Integer
may = 0
men = 0
Dim f As Integer
For f = 0 To 4
If alturas(f) > promedio Then
may = may + 1
Else
If alturas(f) < promedio Then
men = men + 1
End If
End If
Next
Console.WriteLine("Cantidad de personas mayores al promedio:" & may)
Console.WriteLine("Cantidad de personas menores al promedio:" & men)
Console.ReadKey()
End Sub
Importante:
En este problema podemos observar una ventaja de tener almacenadas todas las alturas de las personas. Si no conociéramos los vectores tenemos que cargar otra vez las alturas por teclado para compararlas con el promedio.
Mientras el programa está en ejecución tenemos el vector alturas a nuestra disposición. Es importante tener en cuenta que cuando finaliza la ejecución del programa se pierde el contenido de todas las variables (simples y vectores)
Problema 3:
Una empresa tiene dos turnos (mañana y tarde) en los que trabajan 8 empleados (4 por la mañana y 4 por la tarde)
Confeccionar un programa que permita almacenar los sueldos de los empleados agrupados por turno.
Imprimir los gastos en sueldos de cada turno.
Programa:
Module Module1
Public Class PruebaVector3
Private turnoMan(3) As Single
Private turnoTar(3) As Single
Public Sub Cargar()
Console.WriteLine("Sueldos de empleados del turno de la mañana.")
Dim f As Integer
For f = 0 To 3
Console.Write("Ingrese sueldo:")
turnoMan(f) = Console.ReadLine()
Next
Console.WriteLine("Sueldos de empleados del turno de la tarde.")
For f = 0 To 3
Console.Write("Ingrese sueldo:")
turnoTar(f) = Console.ReadLine()
Next
End Sub
Public Sub CalcularGastos()
Dim man As Single = 0
Dim tar As Single = 0
Dim f As Integer
For f = 0 To 3
man = man + turnoMan(f)
tar = tar + turnoTar(f)
Next
Console.WriteLine("Total de gastos del turno de la mañana:" & man)
Console.WriteLine("Total de gastos del turno de la tarde:" & tar)
Console.ReadKey()
End Sub
End Class
Sub Main()
Dim pv3 As New PruebaVector3()
pv3.Cargar()
pv3.CalcularGastos()
End Sub
End Module
Definimos dos atributos de tipo vector donde almacenaremos los sueldos de los empleados de cada turno:
Private turnoMan(3) As Single
Private turnoTar(3) As Single
Mediante dos estructuras repetitivas procedemos a cargar cada vector:
Public Sub Cargar()
Console.WriteLine("Sueldos de empleados del turno de la mañana.")
Dim f As Integer
For f = 0 To 3
Console.Write("Ingrese sueldo:")
turnoMan(f) = Console.ReadLine()
Next
Console.WriteLine("Sueldos de empleados del turno de la tarde.")
For f = 0 To 3
Console.Write("Ingrese sueldo:")
turnoTar(f) = Console.ReadLine()
Next
End Sub
En otro método procedemos a sumar las componentes de cada vector y mostrar dichos acumuladores:
Public Sub CalcularGastos()
Dim man As Single = 0
Dim tar As Single = 0
Dim f As Integer
For f = 0 To 3
man = man + turnoMan(f)
tar = tar + turnoTar(f)
Next
Console.WriteLine("Total de gastos del turno de la mañana:" & man)
Console.WriteLine("Total de gastos del turno de la tarde:" & tar)
Console.ReadKey()
End Sub
En la Main creamos un objeto de la clase PruebaVector3 y llamamos a sus dos métodos:
Sub Main()
Dim pv3 As New PruebaVector3()
pv3.Cargar()
pv3.CalcularGastos()
End Sub
Problemas propuestos
- Desarrollar un programa que permita ingresar un vector de 8 elementos, e informe:
El valor acumulado de todos los elementos del vector.
El valor acumulado de los elementos del vector que sean mayores a 36.
Cantidad de valores mayores a 50. - Realizar un programa que pida la carga de dos vectores numéricos enteros de 4 elementos. Obtener la suma de los dos vectores, dicho resultado guardarlo en un tercer vector del mismo tamaño. Sumar componente a componente.
- Se tienen las notas del primer parcial de los alumnos de dos cursos, el curso A y el curso B, cada curso cuenta con 5 alumnos.
Realizar un programa que muestre el curso que obtuvo el mayor promedio general. - Cargar un vector de 10 elementos y verificar posteriormente si el mismo está ordenado de menor a mayor.