Apúntate...


Consultas, desarrollo de programas y petición de presupuestos:

jueves, 30 de agosto de 2012

Colecciones

Las colecciones son parecidas a los arrays, pero en vez de usar un número como indice, usa una cadena de texto  para acceder al valor guardado (tipo variant), creando internamente una tabla hash en la cual se pueden buscar rápidamente pares clave-valor.



 Para definirla se usa:

[Dim | Public | Private ] nombre As New  Collection

Y con el operador punto (.) podemos acceder a las propiedades y sus métodos asociados para usarlas:

Propiedades
Count Devuelve el número de elementos que tiene
Key Devuelve la clave del último elemento leido o enumerado
Length Igual que count
Métodos

Add Añade un elemento
nombre.Add(value as Variant, key as string)
Clear Elimina todos los elementos.
nombre.clear()
Copy Retorna una copia de la colección:
nombre2=nombre.copy()
Exist Devuelve "true" si hay algun elemento que use esa clave:
nombre.exist("clave") -> devuelve "false" o "true"
Remove Elimina un elemento de la coleccion indicando la clave
nombre.remove("clave")



Para más información:
http://gambaswiki.org/wiki/comp/gb/collection


Ejemplo:
Programa que nos proporcionas datos de los planetas Mercurio,Venus y Tierra, mediante el uso de colecciones.

' Gambas module file

'Ejemplo de uso de colecciones
'Planetas:
'datos obtenidos de la wikipedia: http://es.wikipedia.org/wiki/Anexo:Datos_de_los_planetas_del_Sistema_Solar
'
'Estructura que uso para guardar información
Public Struct informacion
DistanciaAlSol As Float
radio As Float
PeriodoDeRotacion As Float
TemperaturaMedia As Float
ComposicionAtmosfero As String
End Struct

Public planeta As New Collection 'creo e instancio el objeto "planeta", de la clase Collection

Public Sub Main()
Dim opcion As String 'variable que uso para que el usuario introduzca la opcion
datos 'subrutina que carga en la coleccion los datos de los planetas
'-------------
'incio el menu
'-------------
opcion = "1"
While (opcion <> "0")
'{
Print "Menu de Planetas"
Print "----------------"
Print "0- Salir "
Print "1- Mercurio"
Print "2- Venus"
Print "3- Tierra"
Print "Escribe el numero del planteta para decirte sus datos:"
Input opcion
Select opcion
'{
Case "1"
escribe(planeta["Mercurio"]) 'uso la funcion escribe para escribir los datos de la coleccion
Case "2"
escribe(planeta["Venus"])
Case "3"
escribe(planeta["Tierra"])
'}
End Select
'}
Wend
Print "--------------------"
Print "- fin del programa -"
Print "--------------------"
End


Public Sub datos()
Dim info As Informacion

info = New Informacion'instancio el objeto info
'--------------------------------
'Planeta: Mercurio
info.ComposicionAtmosfero = "He Na P"
info.DistanciaAlSol = 57909175
info.PeriodoDeRotacion = 58
info.radio = 2439.64
info.TemperaturaMedia = 166.85
planeta.Add(info, "Mercurio") 'info, lo añado a la coleccion, con la clave "Mercurio"

info = New Informacion 'instancio otra vez el objeto info, para poderlo usar vacio de datos anteriores
'--------------------------------
'Planeta: Venus
info.ComposicionAtmosfero = "96% CO2, 3 % N2, 0,1% H2O"
info.DistanciaAlSol = 108208930
info.PeriodoDeRotacion = -243
info.radio = 6051.59
info.TemperaturaMedia = 456.84
planeta.Add(info, "Venus") 'info, lo añado a la coleccion, con la clave "Venus"
 
info = New Informacion'instancio otra vez el objeto info, para poderlo usar vacio de datos anteriores
'--------------------------------
'Planeta:
info.ComposicionAtmosfero = "78% N2, 21% O2, 1% Ar"
info.DistanciaAlSol = 149597880
info.PeriodoDeRotacion = 0.9972
info.radio = 6378.15
info.TemperaturaMedia = 14.85
planeta.Add(info, "Tierra") 'info, lo añado a la coleccion, con la clave "Tierra"

End


Public Sub escribe(informa As Informacion)

Print "Composicion Atmosferica: "; informa.ComposicionAtmosfero
Print "Distancia al sol: "; Format(informa.DistanciaAlSol, "#,.##")
Print "Periodo de rotación: "; Format(informa.PeriodoDeRotacion, "#,.##")
Print "radio: "; Format(informa.radio, "#,.##")
Print "temperatura media: "; informa.TemperaturaMedia

End


Descarga del ejemplo completo: Enlace


Ejemplo de Ciudades y Temperaturas: Blog de Shell: Gambas-basico - las colecciones


Ejemplo Completo de Listin Telefonico usando colecciones: Enlace Pdf y Enlace Código Fuente

No hay comentarios:

Publicar un comentario

A falta de donativos... un poco de publicidad