Anuncios

Bienvenidos sean a este post, hoy hablaremos sobre el diccionario aunque en realidad es lo que en otros lenguajes se conocen como colecciones, pero que es una coleccion?

Anuncios

Una coleccion es un array asociativo donde se pueden guardar referencias a objetos, numeros, cadenas o cualquier tipo de variable asociandoles una clave unica que identificara a cada uno de los elementos constituyentes, esto nos da la posibilidad de almacenar informacion y poder acceder a ella de manera mas sencilla, para obtener dichos elementos debemos hacerlo por medio de su indice ordinal o el nombre que utilizamos como clave, en el objeto diccionario la clave puede ser cualquier cosa (numeros, cadenas, etc) pero la unica excepcion es un array, veamos sus metodos:

  • Add, añade un nuevo elemento al diccionario
  • Remove, quita un elemento especificado a traves de la clave
  • RemoveAll, quita todos los elementos
  • Exists, devuelve un booleano si el elemento existe o no segun la clave informada
  • Items, devuelve un array ordinario con todos los elementos del diccionario, esto es util para obtener un array no indexado mediante las claves de estos datos
  • Keys, permite obtener un array con todas las claves del diccionario
Anuncios

Pasemos a ver las propiedades de este objeto:

  • Item, propiedad por defecto, permite leer, asignar o crear un nuevo elemento
  • Key, nos permite cambiar la clave de un elemento por otro distinto.
  • Count, nos devuelve la cantidad de elementos en el objeto
  • CompareMode, establece o devuelve el tipo de comparacion que usaremos a la hora de comparar con una clave dada, existen dos tipos de comparacion, una es binaria (no discrimina entre mayusculas y minusculas) y la otra es por caracteres.
Anuncios

Para entender mejor este concepto veamos el siguiente ejemplo:

diccionario.vbs

dim menu
dim miDic

texto = "Elige una accion: " & vbCrLf
texto = texto & "Si para Nuevo elemento" & vbCrLf
texto = texto & "No para Mostrar elementos" & vbCrLf
texto = texto & "Cancelar para borrar elementos"

Set miDic = CreateObject("Scripting.Dictionary")

sub nuevoElemento()

	dim valor
	dim clave
	clave = inputbox("Ingresa un nombre para la clave")
	if miDic.exists(clave) then
		msgbox "Ya existe esta clave"
		exit sub
	end if
	valor = inputbox("Ingresa el valor para la clave")
	miDic.add clave, valor

end sub

sub mostrarElementos()

	dim texto
	dim claves
	dim valores

	claves = miDic.keys
	valores = miDic.items

	for i = 0 to miDic.count-1
		texto = texto & claves(i) & ": " & valores(i) & vbCrLf
	next
	msgbox texto

end sub

do
	menu = msgbox(texto,3,"Diccionarios")	
	select case menu
		case 6
			nuevoElemento()
		case 7
			mostrarElementos()
		case else
			miDic.removeall()
			exit do
	end select
loop
Anuncios

Este es nuestro primer codigo mas complejo, para ello primero creamos dos variables globales, menu y texto, luego agregamos un dialogo en la variable texto, en este caso seran las opciones que tendremos disponibles para poder trabajar con nuestro programa, luego creamos nuestro objeto del diccionario llamado miDic, esto gracias a CreateObjetct y para ello usaremos a Scripting y el metodo Dictionary, veamos nuestro primer bloque sub:

sub nuevoElemento()

	dim valor
	dim clave
	clave = inputbox("Ingresa un nombre para la clave")
	if miDic.exists(clave) then
		msgbox "Ya existe esta clave"
		exit sub
	end if
	valor = inputbox("Ingresa el valor para la clave")
	miDic.add clave, valor

end sub
Anuncios

Con este sub podremos agregar nuevos elementos a nuestro diccionario, para ello primero crearemos dos variables, una para la clave y otro para el valor, en clave ingresaremos un valor como nombre identificador para nuestro diccionario, luego usaremos un condicional para verificar si esta clave existe en caso de ser verdad mostraremos un mensaje en pantalla y saldremos del sub, si no ocurrio nada nos pedira de ingresar un dato a valor que lo relacionaremos con la clave antes informada, por ultimo haremos esta accion por medio de add donde primero pasaremos a clave y luego valor, pasemos a nuestro siguiente bloque de sub:

sub mostrarElementos()

	dim texto
	dim claves
	dim valores

	claves = miDic.keys
	valores = miDic.items

	for i = 0 to miDic.count-1
		texto = texto & claves(i) & ": " & valores(i) & vbCrLf
	next
	msgbox texto

end sub
Anuncios

Este sub sera el encargado de mostrar todos los elementos del diccionario, en esta usaremos tres variables, una para el texto, otra para las claves y otra para los valores, nuestro siguiente paso sera asignar a claves todos los valores de las claves por medio de keys, en valores almacenaremos los elementos del diccionario, despues usaremos un bucle for donde usaremos a count para contar todos los elementos pero en este caso le restaremos uno para que no nos devuelva un error, esto es debido a que nos devuelve el total y nosotros al contar lo haremos desde el cero hasta el valor anterior al total de elementos, en el bucle usaremos a texto y agregaremos las claves y los valores de las respectivas variables, una vez terminado el bucle mostraremos el texto final en pantalla, por ultimo veamos el bucle do … loop:

do
	menu = msgbox(texto,3,"Diccionarios")	
	select case menu
		case 6
			nuevoElemento()
		case 7
			mostrarElementos()
		case else
			miDic.removeall()
			exit do
	end select
loop
Anuncios

En este caso usaremos un bucle infinito, primero mostraremos el texto que creamos al principio que servira de referencia, usamos el valor 3 para que muestre los botones Si, No y Cancelar, luego el titulo pasado ahi, nuestro siguiente paso sera usar un select case para seleccionar el valor del boton apropiado, para estos casos usaremos a 6 (que corresponde al Si) para llamar a nuevoElemento, en el segundo caso usaremos a 7 (Corresponde a No) para llamar a mostrarElementos y por ultimo case else (se entiende que es al oprimir Cancelar) procede a remover todos los elementos y salir del bucle por medio del exit do, en cualquiera de los casos anteriores siempre volveremos al cuadro de este bucle, probemos el codigo viendo el siguiente video

Anuncios

Como pueden ver pudimos agregar elementos a nuestro diccionario, mostrarlos, volver a agregar y ver los nuevos elementos cargados, por ultimo hemos salido de nuestro bucle, veamos una captura de una devolucion de error

Anuncios

En resumen, hoy hemos visto como trabaja el objeto diccionario, hemos hablado de su uso practico, hemos visto algunos metodos y algunas propiedades, hemos visto un ejemplo donde lo pusimos en practica, hemos visto como agregar, como recuperarlo y hemos puesto en practica conocimientos anteriores, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes comprar mi libro sobre VBscript en Amazon

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00