You are on page 1of 9

Arreglos Unidimensionales

(Vectores)
Un arreglo es una estructura de datos conformada por una sucesión de celdas, que permite
almacenar en la memoria principal del computador un conjunto finito de elementos que tienen el
mismo tipo de dato.

Declaración General:

Dim nombre (tamaño) As Tipo_de_dato

Adicionalmente, Visual Basic .NET nos permite hacer la declaración de un array haciendo uso
de un par de paréntesis en el nombre de la variable o del tipo, en el siguiente ejemplo se declara
un array de tipo String llamado nombres:

Dim nombres() As String

Dim nombres As String()

Estas dos formas son equivalentes.

También se puede indicar el número de elementos que contendrá el array:

Dim nombres (10) As String

Pero solo se puede hace en el nombre, si esa cantidad de elementos se indica en el tipo, se
emitirá un error indicando que "los límites dela matriz no pueden aparecer en los
especificadores del tipo".

Al declarar un array indicando el número de elementos, como es el caso anterior, se define un


array de 11 elementos: desde cerohasta 10, ya que en Visual Basic .NET, al igual que en el resto
de lenguajesde .NET, todos los arrays deben tener como índice inferior el valor cero.

Para que quede claro que el límite inferior debe ser cero, en Visual Basicse puede utilizarla
instrucción 0 To para indicar el valor máximo del índicesuperior, ya que, tal como se puede
comprobar si se define 0 To 10, se declara un array con 11 elementos:

Dim nombres (0 To10) As String

1
Declarar e inicializar un array

En Visual Basic también se inicializa un array al declararlo, para ello se pone los valores a
asignar dentro de un par de llaves,tal como se aprecia en el siguiente ejemplo:

Dim nombres() As String= {“Pepe”, “Juan”, “Luisa”}

Con el código anterior se crea un array de tipo String con tres valores cuyos índices van de cero
a dos. En este caso, cuando se inicia el array al declararlo, no se debe indicar el número de
elementos que tendrá ese array, ya que ese valor lo averiguará elcompilador cuando haga la
asignación. Tampoco es válido indicar el númerode elementos que se desea que tenga y solo
asignarle unos cuantos menos(o más), ya que se producirá un error en tiempo de compilación.

Eliminar el contenido de un array

Una vez declarado un array y se le ha asignado valores, es posibleque sea de interés eliminar
esos valores de la memoria, para lograrlo,se puede hacer de tres formas:

1. Redimensionando el array indicando que tiene cero elementos, aunque en el mejor de los
casos, si no se estatrabajando con arrays de más de una dimensión, se tendría un array de un
elemento, ya que, los arrays de .NET el índice inferior es cero.

2. Usar la instrucción Erase. La instrucción Erase elimina totalmente el array de la memoria.

Llenado.

Para llenar el vector podemos usar cualquiera de los dos sistemas siguientes, llenado
manualmente

Module Ejemplo
Sub Main()
' Declaración del vector con un tamaño máximo de 100 posiciones
Dim VectorA(100) As Integer
' Declaramos la variable para poder recorrer el vector
Dim i,n As Integer
Console.WriteLine("Ingrese el tamaño del vector")
n = Console.ReadLine()
' Llenamos el vector
For i=0 To N
Console.WriteLine("Ingrese un valor en la posición {0}: ",i+1)
VectorA(i) = Console.ReadLine()
Next
Console.Readkey()
End Sub
End Module

2
Pero también se puede llenar con valores aleatorios,

Module Ejemplo
Sub Main()
' Declaración del vector con un tamaño máximo de 100 posiciones
Dim VectorA(100) As Integer
' Declaramos la variable para poder recorrer el vector
Dim i,n As Integer
Console.WriteLine("Ingrese el tamaño del vector")
n = Console.ReadLine()
' Funcion para el Random
Randomize()
' Llenamos el vector
For i=0 To N
Console.WriteLine("Ingrese un valor en la posición {0}: ",i+1)
VectorA(i) = Rnd() * 100 ' Se multiplica por el valor al cual
'queremos los números aleatorios, en este ejemplo van a salir números entre
'0 y 100
Next
Console.Readkey()
End Sub
End Module

Recorrido.
Para recorrer el vector podemos usar cualquiera de los dos sistemas, el de recorrerlo como una
colección.

Module Ejemplo
Sub Main()
' Declaración e inicialización del vector con los
' nombres de los meses, de tipo string
Dim Meses() As String = {"Enero", "Febrero", "Marzo", "Abril", "Mayo",
"Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre",
"Diciembre"}
' Declaramos la variable del mismo tipo para poder recorrer el 'vector

Dim Valor As String


Console.WriteLine("Visualizamos el contenido")
' Visualizamos el vector
For Each Valor In Meses
Console.WriteLine(Valor)
Next
Console.Readkey()
End Sub
End Module

3
Pero también se puede seguir haciendo lo clásico,

Module Ejemplo
Sub Main()
' Declaración e inicialización del vector con los
' nombres de los meses, de tipo string
Dim Meses() As String = {"Enero", "Febrero", "Marzo", "Abril", "Mayo",
"Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre",
"Diciembre"}
' Declaramos la variable del mismo tipo para poder recorrer el 'vector

Dim x As Integer
Console.WriteLine("Visualizamos el contenido")
' Visualizamos el vector
For x = 0 To UBound(Meses)
Console.WriteLine(Meses(x))
Next
Console.Readkey()
End Sub
End Module

Métodos.

Vamos a ver la utilidad de cada uno de los métodos existentes en cada una de las dos clases.

Clear:

Siguiendo con el ejemplo anterior, el método Clear realiza el vaciado del contenido del vector,
pero no del número de elementos, que seguirá siendo el mismo

Module Ejemplo
Sub Main()
Dim Meses() As String = {"Enero", "Febrero", "Marzo", "Abril", "Mayo",
"Junio", "Julio", "Agosto","Septiembre", "Octubre", "Noviembre",
"Diciembre"}
Dim Valor As String

Console.WriteLine("Visualizamos el contenido antes ")

' Visualizamos el vector


For Each Valor In Meses
Console.WriteLine(Valor)
Next

Console.WriteLine("Elementos del vector {0} ", Meses.Length)

4
' Vaciado del vector
Meses.Clear(Meses, 0, Meses.Length)

Console.WriteLine("Visualizamos el contenido después ")


Console.WriteLine("Elementos del vector {0} ", Meses.length)

' Visualizamos el vector


For Each Valor In Meses
Console.WriteLine(" [{0}]", Valor)
Next
Console.ReadLine()
End Sub
End Module

Clone

Este método lo que hace es generar una copia de un array ya existente.

Module Ejemplo
Sub Main()
Dim Meses() As String = {"Enero", "Febrero", "Marzo", "Abril", "Mayo",
"Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre",
"Diciembre"}
Dim OtrosMeses() As String
Dim Valor As String

Console.WriteLine("Visualizamos el contenido ")


' Visualizamos el vector
For Each Valor In Meses
Console.WriteLine(Valor)
Next

' Clonamos el vector


OtrosMeses = Meses.Clone()

Console.WriteLine("Visualizamos el contenido ")


' Visualizamos el vector
For Each Valor In OtrosMeses
Console.WriteLine(Valor)
Next
Console.ReadLine()
End Sub
End Module

5
Copy

A diferencia de Clone, Copy hace un duplicado del vector, solo del número de elementos que se
indica en el argumento.

' Copia solo el número de elementos indicado,


' OtrosMeses.GetUpperBound(0) vale 5, que es el número de elementos que
tiene
' Meses es el origen,
' OtrosMeses es el destino
' Meses.Copy(Meses, OtrosMeses, OtrosMeses.GetUpperBound(0))
Module Ejemplo
Sub Main()
Dim Meses() As String = {"Enero", "Febrero", "Marzo", "Abril",
"Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre",
"Diciembre"}
' Le damos cinco elementos
Dim OtrosMeses(5) As String
Dim Valor As String
Console.WriteLine("Visualizamos el contenido ")
Console.WriteLine("Elementos del vector {0} ", Meses.GetUpperBound(0))
' Visualizamos el vector
For Each Valor In Meses
Console.WriteLine(Valor)
Next
' Copia solo el número de elementos indicado,
' OtrosMeses.GetUpperBound(0) vale 5, que es el número de elementos
' que tiene Meses es el origen, OtrosMeses es el destino
Meses.Copy(Meses, OtrosMeses, OtrosMeses.GetUpperBound(0))
Console.WriteLine("Elementos vector {0} ",
OtrosMeses.GetUpperBound(0))

Console.WriteLine("Visualizamos el contenido ")


' Visualizamos el vector
For Each Valor In OtrosMeses
Console.WriteLine(Valor)
Next
Console.ReadLine()
End Sub
End Module

GetLength, GetLowerBound, GetUpperBound

Estos métodos devuelven el número de elementos del vector, el primer índice y el último.

6
Module Ejemplo
Sub Main()
Dim Meses() As String = {"Enero", "Febrero", "Marzo", "Abril", "Mayo",
"Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre",
"Diciembre"}
Console.WriteLine("Visualizamos el contenido ")
Console.WriteLine("Elementos del vector {0} ", Meses.GetLength(0))

' Visualizamos el vector


For Each Valor In Meses
Console.WriteLine(Valor)
Next
Console.WriteLine("Elementos del vector {0} ", Meses.GetLength(0))' 12
Console.WriteLine("Primer índice {0} ", Meses.GetLowerBound(0)) ' 0
Console.WriteLine("Ultimo índice {0} ", Meses.GetUpperBound(0)) ' 11
Console.ReadLine()
End Sub
End Module

GetValue

Devuelve el contenido de la posición que indicamos en el argumento.

En el ejemplo el valor devuelto es Abril.

Console.WritelLine(Meses(3))

Pero también es válido utilizar GetValue y da también Abril.

Module Ejemplo
Sub Main()
Dim X As Int16
DimMeses() As String = {"Enero", "Febrero", "Marzo", "Abril", "Mayo",
"Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre",
"Diciembre"}
Dim Valor As String
Console.WriteLine("Visualizamos el contenido ")
Console.WriteLine(Meses.GetValue(3))

For Each Valor In Meses


Console.WriteLine(Valor)
Next
Console.ReadLine()
End Sub
End Module

7
Búsqueda, IndexOf, LastIndexOf

Devuelve la posición de la primera, IndexOf, o de la última, LastIndexOf, vez que aparece el


elemento indicado en el argumento.

En el ejemplo el resultado es 1 y 7.

Module Ejemplo
Sub Main()
Dim X As Int16
Dim Meses() As String = {"Enero", "Febrero", "Marzo", "Abril", "Mayo",
"Junio", "Julio", "Febrero", "Septiembre", "Octubre", "Noviembre",
"Diciembre"}
Dim Valor As String

Console.WriteLine(Meses.IndexOf(Meses, "Febrero")) ' 1


Console.WriteLine(Meses.LastIndexOf(Meses, "Febrero")) ' 7

Console.WriteLine("Visualizamos el contenido ")


For Each Valor In Meses
Console.WriteLine(Valor)
Next
Console.ReadLine()
End Sub
End Module

Rank

Devuelve el número de dimensiones de un array.

Console.WriteLine("Meses tiene {0} dimensiones ", Meses.Rank)

Reverse

Invierte el contenido actual del vector.

Module Ejemplo
Sub Main()
Dim X As Int16

8
Dim Meses() As String = {"Enero", "Febrero", "Marzo", "Abril", "Mayo",
"Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre",
"Diciembre"}

Dim Valor As String

Console.WriteLine("Visualizamos el contenido ")

Meses.Reverse(Meses)
[Array].Reverse(Meses) ' se queda como estaba

For Each Valor In Meses


Console.WriteLine(Valor)
Next
Console.ReadLine()
End Sub
End Module

You might also like