Publicado el 8 de Octubre del 2019
601 visualizaciones desde el 8 de Octubre del 2019
137,8 KB
28 paginas
Creado hace 20a (01/01/2005)
1.1 Introducción.
Los arrays, siguen siendo lo que eran, estructuras de datos en memoria, y de un tipo de dato intrínseco
1. Arrays.
o de usuario.
Existe la clase Array que nos proporciona una serie de métodos para el trabajo con los mismos.
Como existe como novedad los tipos enumerados, o conjuntos de datos, podemos declarar vectores con
el contenido de esos tipos enumerados, usando los elementos como índice dentro del vector.
Pero la declaración no contempla el Option Base 1
El número de elementos siempre va de cero a dimensión, por lo que un
Dim Meses(11), es un array de doce elementos de 0 a 11.
Se puede declarar un array sin ningún elemento, declarando como dimensión –1.
Dim Vector(-1), es un array vacío.
No se puede usar ReDim, si previamente no se ha usado Dim para declarar el array.
1.2 Declaración
Hay varias formas de declarar un vector en VB.
Podemos declararlo de forma estática.
Podemos declarar e inicializar.
Podemos declarar de forma dinámica.
1.2.1 Declaración estática.
La declaración estática es la de siempre.
Dim Meses(11) as String
Meses(0) = "Enero"
Meses(1) = "Febrero"
Meses(2) = "Marzo" .. / ..
Pero si se ha de cargar dentro del programa con datos, no tiene sentido.
Si se carga después desde un archivo o por teclado, si.
1.2.2 Declaración estática inicializada.
En la nueva versión de VB podemos escribir lo siguiente:
' 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"}
1.2.3 Declaración dinámica.
Para cuando la dimensión del array depende de la ejecución del programa.
Module Ejemplo
Sub Main()
Dim Valor As String
‘ Declaración e inicialización
Dim Meses() As String = {"Enero", "Febrero", "Marzo", _
"Abril", "Mayo", "Junio", _
"Julio", "Agosto", "Septiembre", _
"Octubre", "Noviembre", "Diciembre"}
‘ Declaración dinámica
Dim OtrosMeses() As String
‘ En esta línea nos dará Nothing, no hay asignación todavía
Console.WriteLine("Tipo del vector {0} ", TypeName(OtrosMeses))
‘ Asignación de dimensión
ReDim Otrosmeses(Meses.GetUpperBound(0))
‘ Aquí el resultado será String
Console.WriteLine("Tipo del vector {0} ", TypeName(OtrosMeses))
Console.WriteLine("Visualizamos el contenido ")
‘ Copia de meses sobre otros meses
Meses.CopyTo(OtrosMeses, 0)
‘ Visualización del vector
For Each Valor In OtrosMeses
Console.WriteLine(Valor)
Next
Console.WriteLine("Elementos del vector {0} ", OtrosMeses.GetLength(0))
Console.WriteLine("Primer índice {0} ", OtrosMeses.GetLowerBound(0))
Console.WriteLine("Ultimo índice {0} ", OtrosMeses.GetUpperBound(0))
Console.WriteLine("Visualizamos el contenido ")
Console.ReadLine()
End Sub
End Module
1.3 Recorrido del vector.
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")
2
' Visualizamos el vector
For Each Valor In Meses
Console.WriteLine(Valor)
Next
Console.ReadLine()
End Sub
End Module
Pero también se puede seguir haciendo lo clásico, con la función Ubound, aunque ahora también hay un
método del objeto Meses, que se llama GetUpperBound.
Y también podemos utilizar los siguientes métodos, en lugar del X=0 to 11, o to Ubound(meses)
For X=Meses.GetLowerBound(0) To Meses.GetUpperBound(0)
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"}
Dim X As Int16
Dim Valor As String
Console.WriteLine("Visualizamos el contenido")
' Mostramos lo valores
For X = 0 To UBound(Meses)
Console.WriteLine(Meses(X).ToString)
Next
' Mostramos lo valores
For X = Meses.GetLowerBound(0) To Meses.GetUpperBound(0)
Console.WriteLine(Meses(X).ToString)
Next
Console.ReadLine()
End Sub
End Module
1.4 Clase Array
Esta clase dispone de los siguientes métodos
BinarySearch
Clear
Copy
IndexOf
CreateInstance
LastIndexOf
Reverse
Cada uno de estos métodos a su vez están sobrecargados, OverLoad, de tal forma que se pueden
Sort
utilizar con varios tipos distintos de argumentos en la utilización.
3
1.5 Clase NuestroArray
Además a esto hemos de añadir que el Vector definido por nosotros, como tal dispone de los siguientes
métodos:
BinarySearch
Clone
CopyTo
Clear
Copy
CreateInstance
GetEnumerator GetLength
GetLongLength GetLowerBound
GetType
GetValue
Initialize
Rank
GetUpperBound
IndexOf
LastIndexOf
Reverse
Sort
SetValue
Y el Vector, o Array, con el que estamos trabajando dispone también de las siguientes propiedades:
IsFixedSize
IsReadOnly
IsSynchronized
Length
LongLength
Rank
SyncRoot
1.6 Métodos de arrays.
Vamos a ver la utilidad de cada uno de los métodos existentes en cada una de las dos clases.
1.6.1 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)
' Vaciado del vector
Meses.Clear(Meses, 0, Meses.Length)
Console.WriteLine("Visualizamos el contenido después ")
4
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
1.6.2 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 ")
Console.WriteLine("Elementos del vector {0} ", Meses.GetUpperBound(0))
' Visualizamos el vector
For Each Valor In Meses
Console.WriteLine(Valor)
Next
' Clonamos el vector
OtrosMeses = Meses.Clone()
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
1.6.3 ConstrainedCopy
Copia el número de elementos indicado de un array de origen a un array de destino, en la dimensión que
se indica, y del número de elementos que se indique.
Module Ejemplo
Sub Main()
Dim Meses() As String = {"Enero", "Febrero", "Marzo", _
"Abril", "Mayo", "Junio", _
"Julio", "Agosto", "Septiembre", _
"Octubre", "Noviembre", "Diciembre"}
Dim Mesesitos(3) As String
Dim Dato As String
Dim DimOrigen As Integer = 0
Dim DimDestino As Integer = 0
Dim Cuantos As Integer = 2 ' probar con 2 y 4
' Contenido vector origen
5
For Each Dato In Meses
Console.WriteLine(Dato)
Next
' Copia contenido de un vector en otro
Array.ConstrainedCopy(Meses, DimOrigen, Mesesitos, DimDestino, Cuantos)
' Contenido vector destino
Console.WriteLine("Visualizar el vector de destino")
For Each Dato In Mesesitos
Console.WriteLine("Mes de {0} ", Dato)
Next
Console.ReadLine()
End Sub
End Module
1.6.4 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", "Ago
Comentarios de: 1. Vb .Net 2005 - Arrays (0)
No hay comentarios