Visual Basic .Net

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.

vector

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

  1. 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.
  2. 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.
  3. 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.
  4. Cargar un vector de 10 elementos y verificar posteriormente si el mismo está ordenado de menor a mayor.

Solución