LAPORAN ALGORITMA DAN STRUKTUR DATA II (4)

LAPORAN PRAKTIKUM
ALGORITMA DAN STRUKTUR DATA II
TUGAS ANALISA VIDEO
HASH TABLE

Disusun Oleh :
Syukur Jaya Mendrofa
201501072
Kelas: C

Dosen Pengampu :
Oskar Ika Adi Nugroho, ST., MT

JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI ILMU KOMPUTER “YOS SUDARSO”
PURWOKERTO
2017

BAB I
DASAR TEORI
1.


Pengertian Hash Table

Hashing adalah transformasi aritmatik sebuah string dari karakter menjadi nilai yang
merepresentasikan string aslinya. Menurut bahasanya, hash berarti memenggal dan
kemudian menggabungkan. Hashing digunakan sebagai metode untuk menyimpan data
dalam sebuah array agar penyimpanan data, pencarian data, penambahan data, dan
penghapusan data dapat dilakukan dengan cepat. Ide dasarnya adalah menghitung posisi
record yang dicari dalam array, bukan membandingkan record dengan isi pada array.
Fungsi yang mengembalikan nilai atau kunci disebut fungsi hash (hash function) dan array
yang digunakan disebut tabel hash (hash table). Hash table menggunakan struktur data
array asosiatif yang mengasosiasikan record dengan sebuah field kunci unik berupa
bilangan (hash) yang merupakan representasi dari record tersebut.
2.

Macam-macam Fungsi Hash
Metode Pembagian Bersisa (division-remainder method)
Jumlah lokasi memori yang tersedi dihitung, kemudian jumlah tersebut digunakan
sebagai pembagi untuk membagi nilai yang asli dan menghasilkan sisa. Sisa tersebut
adalah nilai hashnya. Secara umum, rumusnya h(k)= k mod m. Dalam hal ini m adalah

jumlah lokasi memori yang tersedia pada array. Fungsi hash tersebut menempatkan
record dengan kunci K pada suatu lokasi memori yang beralamat h(k). Metode ini
sering menghasilkan nilai hash yang sama dari dua atau lebih nilai aslinya atau disebut
dengan bentrokan.


Melipat (folding)
Metode ini membagi nilai asli ke dalam beberapa bagian, kemudian
menambahkan nilai-nilai tersebut, dan mengambil beberapa angka terakhir sebagai
nilai hashnya.


Transformasi Radiks (radix transformation)
Karena nilai dalam bentuk digital, basis angka atau radiks dapat diganti sehingga
menghasilkan urutan angka-angka yang berbeda. Contohnya nilai desimal (basis 10)
bisa ditransformasikan kedalam heksadesimal (basis 16). Digit atas hasilnya bisa
dibuang agar panjang nilai hash dapat seragam.


Pengaturan ulang digit (digit rearrangement)

Metode ini mengubah urutan digit dengan pola tertentu. Contohnya mengambil
digit ke tiga sampai ke enam dari nilai aslinya, kemudian membalikan urutannya dan
menggunakan digit yang terurut terbalik itu sebagai nilai hash. Fungsi hash yang
bekerja dengan baik untuk penyimpanan pada database belum tentu bekerja dengan
baik untuk keperluan kriptografi atau pengecekan kesalahan. Ada beberapa fungsi
hash terkenal yang digunakan untuk keperluan kriptografi. Diantaranya adalah fungsi
hash message-diggest, contohnya MD2, MD4, dan MD5, digunakan untuk
menghasilkan nilai hash dari tanda tangan digital yang disebut messagediggest.


BAB II
TUGAS ANALISA VIDEO
1.

Video Part 1


Membuat project C++ “Hash Table Video”.




Kemudian di dalam project “Hash Table Video” dibuat lagi file baru C++
dengan mengklik source file > new > C++ source file dengan membuat nama
file tersebut hash.cpp.



Lalu kembali lagi ke dalam project “Hash Table Video”, dibuat lagi file baru .h
dengan mengklik header file > New C++ header file dengan membuat nama file
tersebut hash.h.



Selanjutnya kembali lagi ke dalam project “Hash Table Video”, membuat file
bernama main_1.cpp yaitu dengan mengklik main_1.cpp masukkan file header
#include dan #include kedalam file tersebut.



Copy file header #include dan #include yang ada di dalam

file main_1.cpp lalu Paste ke dalam file hash.cpp dan paste juga kedalam file
hash.h.



Di dalam file hash.cpp dan file main_1.cpp tambahkan file header #include
“hash.h”.



Di dalam file hash.h dibuat sebuah class yang bernama Hash



Di dalam class Hash dibuat sebuah fungsi pada kelompok public yaitu int Hash
(string key): kemudian fungsi tersebut di deklarasikan kedalam file hash.cpp.
dengan menggunakan tanda :: dan mengikutsertakan nama class Hash.

2.


Video Part 2


Mendeklarasikan fungsi hash di dalam file hash.cpp.



Kemudian di dalam file main_1.cpp dibuat sebuah variable yang bertipe nama
class yaitu Hash.



Di dalam fungsi utama/int main ( ) pada file header main_1.cpp didefenisikan
fungsi hash.



Fungsi ini membaca berapa karakter yang dimasukkan ke dalam index. Dengan
menggunakan index = hashObj.Hash (tempat karakter yang akan dibaca isinya).




Fungsi ini juga dimodifikasi untuk membaca dimana posisi setiap karakter pada
index dengan menggunakan index = key.lenght( ). Dan cout drink = "empty";
hashTable[i]->next = NULL;
}
}
void hash::AddItem(string name, string drink)
{
int index = Hash(name);
if(hashTable[index]->name == "empty")
{
hashTable[index]->name = name;
hashTable[index]->drink = drink;
}
else
{
item* ptr = hashTable[index];
item* n = new item;
n->name = name;

n->drink = drink;

n->next = NULL;
while(ptr->next != NULL)
{
ptr = ptr->next;
}
ptr->next = n;
}
}
int hash::NumberOfItemsInIndex(int index)
{
int count = 0;
if(hashTable[index]->name == "empty")
{
return count;
}
else
{
count++;

item* ptr = hashTable[index];
while(ptr->next != NULL)
{
count++;
ptr = ptr->next;
}
}
return count;
}
void hash::printTable()
{
int number;
for(int i = 0; i < tableSize; i++)
{
number = NumberOfItemsInIndex(i);

cout