Академический Документы
Профессиональный Документы
Культура Документы
Facultad : Ingeniera
Escuela : Computacin
Asignatura: Programacin III
Objetivo
Introduccin
Una tabla hash o mapa hash es una estructura de datos que asocia llaves o claves con
valores. La operacin principal que soporta de manera eficiente es la bsqueda: permite el
acceso a los elementos (telfono y direccin, por ejemplo) almacenados a partir de una
clave generada usando el nombre, nmero de cuenta o id. Funciona transformando la
clave con una funcin hash en un hash, un nmero que la tabla hash utiliza para localizar
el valor deseado.
Insercin:
1. Para almacenar un elemento en la tabla hash se ha de convertir su clave a un
nmero. Esto se consigue aplicando la funcin resumen a la clave del elemento.
2. El resultado de la funcin resumen ha de mapearse al espacio de direcciones del
arreglo que se emplea como soporte, lo cual se consigue con la funcin mdulo.
Tras este paso se obtiene un ndice vlido para la tabla.
3. El elemento se almacena en la posicin de la tabla obtenido en el paso anterior.
a. Si en la posicin de la tabla ya haba otro elemento, se ha producido una
colisin. Este problema se puede solucionar asociando una lista a cada
posicin de la tabla, aplicando otra funcin o buscando el siguiente
elemento libre. Estas posibilidades han de considerarse a la hora de
recuperar los datos.
Bsqueda:
1. Para recuperar los datos, es necesario nicamente conocer la clave del elemento, a
la cual se le aplica la funcin resumen.
2. El valor obtenido se mapea al espacio de direcciones de la tabla.
3. Si el elemento existente en la posicin indicada en el paso anterior tiene la misma
clave que la empleada, entonces es el deseado. Si la clave es distinta, se ha de
buscar el elemento segn la tcnica empleada para resolver el problema de las
colisiones al almacenar el elemento.
Saber si la coleccin contiene un par cuya clave sea la que se le pasa como
parmetro. o Nombretable.ContainsKey(clave)
Materiales y equipo
Gua de Laboratorio N 9.
Computadora con programa: Visual Studio C# 2012
Dispositivo de Almacenamiento (USB).
Procedimiento
1. Abrir un proyecto en modo consola en Visual Studio C#
2. Agregar la libera using System.Collections;
3. Dentro del main digitar lo siguiente
// Crear una tabla hash
//
Hashtable thash1 = new Hashtable();
// Agregando elementos a la tabla hash
//los valores pueden duplicarse pero no las claves
thash1.Add("txt", "notepad.exe");
thash1.Add("bmp", "paint.exe");
thash1.Add("dib", "paint.exe");
thash1.Add("rtf", "wordpad.exe");
try
{
thash1.Add("txt", "winword.exe");
}
catch
{
Console.WriteLine("Un elemento con la clave = \"txt\" Ya existe.");
}
//podemos obtener el valor utilizando la clave
Console.WriteLine("Para la Clave = \"rtf\", valor = {0}.",
thash1["rtf"]);
// Tambien podemo cambiar el valor utilizando la clave
thash1["rtf"] = "winword.exe";
Console.WriteLine("para la clave= \"rtf\", valor = {0}.",
thash1["rtf"]);
//si la clave no existe, al utilizar esta sintaxis tambien se
//puede agregar igual que add
thash1["doc"] = "winword.exe";
// ContainsKey puede ser usada para probar
// si una clave ya existe
if (!thash1.ContainsKey("ht"))
{
thash1.Add("ht", "hypertrm.exe");
Console.WriteLine("Valor Agregado para = \"ht\": {0}",
thash1["ht"]);
}
// Cuando quiera utilizar foreach para enumerar los elementos de una tabla hash
// los elementos son devueltos como objetos
Console.WriteLine();
foreach( DictionaryEntry de in thash1 )
{
Console.WriteLine("Clave = {0}, Valor = {1}", de.Key,
de.Value);
}
// pra obtener solo valores, utilice la propiedad values
//utilizamos ICollection para formar una nueva coleccion
//a partir de los valores de la tabla hash
ICollection valueColl = thash1.Values;
//imprimiendo solo valores
Console.WriteLine();
foreach( string s in valueColl )
{
Console.WriteLine("Value = {0}", s);
}
// para obtener solo las claves utilice la propiedad Keys
//utilizamos ICollection para formar una nueva coleccion
//a partir de las claves de la tabla hash
ICollection keyColl = thash1.Keys;
Console.WriteLine();
foreach( string s in keyColl )
{
Console.WriteLine("Clave = {0}", s);
}
// Removiendo elementos
Console.WriteLine("\nRemover (\"doc\")");
thash1.Remove("doc");
if (!thash1.ContainsKey("doc"))
{
Console.WriteLine("Clave \"doc\" no encontrada.");
}
Console.ReadLine();
Anlisis de resultados
1.
2.
3.
4.
Agregar Definicin
Buscar Definicin
Eliminar Definicin
Mostrar definiciones existentes
Explicacin men:
1. Agregar Definicin
Se debe agregar una palabra y su significado utilizando tablas hash, utilice la palabra a
definir como clave y el significado como el valor.
Ejemplo
Jabn: es un producto que sirve para la higiene personal y para lavar determinados objetos.
Jabn tendra que ser la clave y el significado seria el valor.
Tomar en cuenta que debe validar si una definicin ya existe, en caso de existir enviar un
mensaje.
Investigacin complementaria.
Crear un proyecto en Visual C# que contenga el siguiente men
1.
2.
3.
4.
5.
Agregar Datos
Actualizar Datos
Eliminar Datos
Mostrar Todos los datos
Consultar Datos
Los datos a utilizar sern DUI (clave) y nombre completo, al momento de actualizar los
datos se deber pedir el DUI para realizar la bsqueda y se modificara el nombre, se
deben tener en cuenta todas las validaciones posibles
Fuentes de Referencia.
1. DEITEL, HARVEY M. / DEITEL, PAUL J. Cmo programar en C#. Editorial Pearson
Prentice Hall, Mxico 2004.
2. http://ingsistemas.ufps.edu.co/SEED/tablahash.html Sitio Web de la Universidad
Francisco de Paula Santander. Consultado el 18 de septiembre 2015.
3. http://es.wikipedia.org/wiki/Tabla_hash. Enciclopedia libre Wikipedia, consultada el 20 de
septiembre 2015.
Hoja de cotejo:
Mquina No:
Docente:
GL:
10
1
Fecha:
EVALUACION
%
CONOCIMIENTO
40
APLICACIN
DEL
CONOCIMIENTO
40
ACTITUD
20
TOTAL
100%
1-4
5-7
8-10
Nota