COLECCIONES

martes, 13 de julio de 2010
Una colección es un objeto que internamente gestiona un array, pero que está preparado, dependiendo del tipo de colección, para manejar el array que contiene de una manera especial; podríamos definirlo como un array optimizado o especializado en ciertas tareas.

Entre las clases más significativas de System.Collections, podemos destacar las siguientes:

• ArrayList. Proporciona una colección, cuyo array es redimensionado dinámicamente.

• Hashtable. Las colecciones de este tipo, contienen un array cuyos elementos se basan en una combinación de clave y valor, de manera que el acceso a los valores se facilita, al realizarse mediante la clave.

• SortedList. Consiste en una colección ordenada de claves y valores.

• Queue. Representa una lista de valores, en el que el primer valor que entra, es el primero que sale.

• Stack. Representa una lista de valores, en el que el último valor que entra, es el primero que sale.


Para hacer uso de colecciones en una aplicación VB.NET creada desde VS.NET, no es necesario importar este espacio de nombres, ya que como habrá observado el lector en ejemplos anteriores, el propio IDE incluye por defecto la importación del espacio System al proyecto.


Por ahora solo veremos la clase ARRAYLIST mas adelante el resto.


ArrayList

Los objetos de tipo colección creados con esta clase, implementan un array cuyo número de elementos puede modificarse dinámicamente.

Para instanciar un ArrayList veamos el  siguiente codigo:

Sub Main()

' crear una lista sin elementos
Dim alEstaciones As New ArrayList()

' crear una lista indicando el número de elementos
' pero sin darles valor

Dim alDatos As New ArrayList(3)

' crear una lista utilizando una colección dinámica
Dim alLetras As New ArrayList(New String() {"a", "b", "c"})

End Sub
 
 
 
Agregar valores a un ArrayList

Una vez creado un ArrayList, podemos utilizar algunos de los métodos indicados a continuación para añadir valores a la colección.

• Add(Valor). Añade el valor representado por Valor.

• AddRange(Colección). Añade un conjunto de valores mediante un objeto del interfaz ICollection, es decir, una colección dinámica creada en tiempo de ejecución.

• Insert(Posición, Valor). Inserta el valor Valor en la posición Posición del array, desplazando el resto de valores una posición adelante.

• InsertRange(Posición, Colección). Inserta un conjunto de valores mediante una colección dinámica, a partir de una posición determinada dentro del array.

• SetRange(Posición, Colección). Sobrescribe elementos en un array con los valores de la colección Colección, comenzando en la posición Posición.

Ejemplo:


Sub Main()

Dim alDatos As New ArrayList(10)

alDatos.Add("a")

alDatos.AddRange(New String() {"b", "c", "d"})

Console.WriteLine("ArrayList después de usar Add() y AddRange()")

RecorrerAList(alDatos)

alDatos.Insert(2, "hola")

Console.WriteLine("ArrayList después de usar Insert()")

RecorrerAList(alDatos)

alDatos.InsertRange(1, New Integer() {55, 77, 88})

Console.WriteLine("ArrayList después de usar InsertRange()")

RecorrerAList(alDatos)

alDatos.SetRange(3, New String() {"zzz", "yyy"})

Console.WriteLine("ArrayList después de usar SetRange()")

RecorrerAList(alDatos)

Console.ReadLine()

End Sub



Private Sub RecorrerAList(ByVal alValores As ArrayList)

Dim oEnumerador As IEnumerator = alValores.GetEnumerator()

While oEnumerador.MoveNext()

Console.WriteLine("Valor: {0}", oEnumerador.Current)

End While

Console.WriteLine()

End Sub
 
 
Recorrer y obtener valores de un ArrayList

Para recorrer un array podemos emplear la técnica habitual del bucle For...Next y la propiedad Count del objeto ArrayList, que devuelve el número de elementos que tiene el objeto; o bien podemos usar un objeto del interfaz IEnumerator, proporcionado por el método GetEnumerator( ), mucho más simple de recorrer.

Ejemplo:


Sub Main()


' crear ArrayList y añadir valores

Dim alLetras As New ArrayList(6)

alLetras.Add("a")

alLetras.AddRange(New String() {"b", "c", "d"})

' recorrer con un bucle For y usando la propiedad Count,

' tener en cuenta que al ser cero el primer índice del array,

' tenemos que restar uno a la propiedad Count

Console.WriteLine("Recorrer objeto ArrayList con bucle For")

Dim iContador As Integer

For iContador = 0 To (alLetras.Count - 1)

Console.WriteLine("Elemento actual {0}, valor: {1}", _

iContador, alLetras(iContador))

Next
Console.WriteLine()

' recorrer el array con un enumerador

Console.WriteLine("Recorrer objeto ArrayList con un enumerador")

Dim oEnumerador As IEnumerator

oEnumerador = alLetras.GetEnumerator()

While oEnumerador.MoveNext()

Console.WriteLine("Elemento de la lista: {0}", oEnumerador.Current())

End While

Console.ReadLine()

End Sub

Arrays

jueves, 8 de julio de 2010
También conocido con las denominaciones de matriz y vector, un array es aquel elemento del lenguaje que nos permite agrupar un conjunto de valores del mismo tipo, y acceder a ellos a través de una misma variable o identificador, especificando la posición o índice en donde se encuentra el dato a recuperar.

ejemplo:

Sub Main()


' declarar un array de tipo String,

' el número de elementos es el indicado

' en la declaración más uno, porque la primera

' posición de un array es cero

Dim sNombres(3) As String

' asignar valores al array

sNombres(0) = "Ana"

sNombres(1) = "Pedro"

sNombres(2) = "Antonio"

sNombres(3) = "Laura"

' pasar un valor del array a una variable

Dim sValor As String

sValor = sNombres(2)

' mostrar en la consola el valor pasado a una variable

' y un valor directamente desde el array

Console.WriteLine("Valor de la variable sValor: {0}", sValor)


Console.WriteLine("Valor del array, posición 1: {0}", sNombres(1))

Console.ReadLine()

End Sub
 
 
Declaración


Declararemos un array de igual forma que hacemos con una variable normal, con la excepción de que junto al nombre de la variable, situaremos unos paréntesis. Esto indica que dicha variable contiene un array. Opcionalmente, podemos especificar entre los paréntesis las dimensiones del array, o número de elementos que va a contener. Es posible también, realizar una asignación de valores al array en el mismo momento de su declaración.

ejemplo:

Sub Main()


' formas de declaración de arrays

' ===============================

' 1)

' estableciendo el número de elementos

Dim sNombres(2) As String

' 2)

' asignando valores al array al mismo tiempo que se declara,

' la lista de valores debe ir encerrada entre llaves

Dim sEstaciones() As String = {"Ana", "Pedro", "Luis"}

' 3)

' indicando el tipo de dato pero no el número de elementos,

' de este modo la variable todavía no es considerada un array

' ya que contiene una referencia a Nothing

Dim iValores() As Integer

' 4)

' indicando el tipo de dato y estableciendo una

' lista vacía de elementos,

' a diferencia del caso anterior, la variable ahora sí

' es considerada un array aunque de longitud cero

Dim iDatos() As Integer = {}

' 5)

' instanciando el tipo de dato, estableciendo el número

' de elementos al instanciar, e indicando que se trata de un array

' al situar las llaves

Dim iCantidades() As Integer = New Integer(20) {}

' 6)

' declarar primero la variable que contendrá el array,

' asignar valores al array al mismo tiempo que se instancia

' la lista de valores debe ir encerrada entre llaves

Dim iNumeros() As Integer

iNumeros = New Integer() {10, 20, 30, 10, 50, 60, 10, 70, 80}

End Sub
 
 
 
Uso del método CreateInstance( ) para establecer el número de elementos en un array
 

Ya hemos comprobado que al crear un array en VB.NET, el primer índice es siempre cero, y además, el número de elementos del array es el indicado en la declaración más uno.

Sin embargo, la clase Array dispone del método compartido CreateInstance( ), que como su nombre indica, permite crear una nueva instancia de la clase, es decir un objeto array, con la particularidad de que en este caso, el número de elementos del array será realmente el que establezcamos al llamar a este método.

Ejemplo:

Sub Main()


' declarar un array del modo habitual:

' este array tiene cuatro elementos,

' desde el índice 0 al 3

Dim sEstaciones(3) As String

sEstaciones(0) = "Primavera"

sEstaciones(1) = "Verano"

sEstaciones(2) = "Otoño"

sEstaciones(3) = "Invierno"

Console.WriteLine("Array sEstaciones")

MostrarArray(sEstaciones)

' crear un array instanciándolo

' con el método CreateInstance()

' de la clase Array

Dim sColores As Array

' este array tendrá tres elementos reales

' que van desde el índice 0 hasta el 2

sColores = Array.CreateInstance(GetType(String), 3)

sColores(0) = "Azul"

sColores(1) = "Rojo"

sColores(2) = "Verde"

Console.WriteLine("Array sColores")

MostrarArray(sColores)

Console.ReadLine()

End Sub

Private Sub MostrarArray(ByVal sMiLista() As String)

' muestra el array pasado como parámetro

Dim iContador As Integer

For iContador = 0 To sMiLista.Length - 1

Console.WriteLine("Elemento: {0} - Valor: {1}", _

iContador, sMiLista(iContador))

Next

Console.WriteLine()

End Sub



Aqui les dejo un ejemplo practico de lo que es un array. Es un ejercisio bien complejo


Hacer un algoritmo que realice la multiplicación entre matrices. En la multiplicación entre matrices el número de columnas de la primera matriz operando debe ser igual al número de filas de la segunda matriz operando, de lo contrario no está definida esta operación y en la matriz resultante el número de filas es igual al número de filas de la primera matriz y el número de columnas es igual al número de columnas de la segunda matriz. En el algoritmo valide la anterior condición.

link de descarga:

http://hotfile.com/dl/53914777/6cacad4/ARRAYS.rar.html

Necesitas:

visual studio 2005 o 2008
Tu dedicacion

Mucha suerte en tu estudio