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
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)
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 <iostream> dan #include<string> kedalam file tersebut.
Copy file header #include <iostream> dan #include<string> 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 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 << key [0] dikarenakan menggunakan (string key) jadi membaca karakter saja.
Fungsi ini juga dimodifikasi untuk membaca nilai ASCII dari setiap karakter
yang di masukkan contohnya “syukur” maka hasil output program akan menampilkan s = 115, y = 121, u = 117, k = 107, u = 117, r = 114 (berdasarkan nilai ASCII yang telah ditentukan). Dengan menambahkan cout << (int) key [0] yaitu penambahan integer pada belakang key.
3. Video Part 3
Menambahkan nilai hash = hash + (int) key [1] yaitu hasil nilai ASCII pertama
akan ditambahkan dengan hasil nilai ASCII berikutnya dan seterusnya.
4. Video Part 4
Membuat struktur dasar pada tabel hash
Mendefenisikan class hash yang masuk dalam kelompok Private, pada file
hash.h.
5. Video Part 5
Mendefenisikan konstruktor di dalam file hash.h.
6. Video Part 6
Membuat fungsi untuk menambahkan item yaitu menggunakan fungsi void pada
file hash.h.
Kemudian fungsi void tersebut di deklarasikan pada file hash.cpp.
7. Video Part 7
Mendefenisikan Nomor item dengan menambahkan fungsi baru.
Fungsi ini di buat di dalam file hash.h pada class hash kelompok public.
8. Video Part 8
Membuat fungsi baru untuk menampilkan isi dari hash tabel yaitu fungsi
voidPrintTable di dalam class hash kelompok public pada file hash.h.
Kemudian fungsi ini dideklarasikan pada file hash.cpp.
9. Video Part 9
Memangil class hash yaitu dengan menambahkan hash Hashy; lalu
Hashy.PrintTable untuk menampilkan.
Mengisi Hashy yaitu dengan menambahkan Hashy.AddItem (kemudian isi dari
Hashy tersebut).
10. Video Part 10
Menambahkan Fungsi baru yaitu Void PrintItemInIndex (int index); di dalam
file hash.h.
Kemudian fungsi tesebut di deklarasikan ke dalam file hash.cpp.
Selanjutnya fungsi tersebut dibuat di dalam fungsi utama pada file main_1.cpp
untuk pemangilan.
11. Video Part 11
Memodifikasi beberapa nilai yang ada pada tabel hash
12. Video Part 12
Mencari dengan menggunakan kata kunci.
Menambahkan fungsi baru yaitu void FindDrink (string name); di dalam class
hash kelompok public pada file hash.h.
Kemudian fungsi tesebut di deklarasikan ke dalam file hash.cpp.
Mencari minuman favorit dengan menggunakan kata kunci yaitu nama-nama
yang telah dibuat di dalam program hash tabel tersebut.
13. Video Part 13
Menambahkan Fungsi baru yaitu Void RemoveItem (string name); di dalam file
Kemudian fungsi tadi dideklarasikan di dalam file hash.cpp.
14. Video Part 15
Masih pendeklarasian fungsi Void RemoveItem (string name); di dalam file
hash.cpp.
15. Video Part 16
Masih pendeklarasian fungsi Void RemoveItem (string name); di dalam file
hash.cpp.
16. Video Part 17
Masih pendeklarasian fungsi Void RemoveItem (string name); di dalam file
hash.cpp.
17. Video Part 18
Mencoba menghapus item yang sudah ada yang telah dibuat di dalam program
Listing Program :
void hash::AddItem(string name, string drink) {
int index = Hash(name);
n->next = NULL;
cout<<"---\n"; cout<<"index = "<<i<<endl; cout<<hashTable[i]->name<<endl; cout<<hashTable[i]->drink<<endl; cout<<"% of items = "<< number<<endl;
cout<<"index ="<<index<<" is empty"; }
else {
cout<<"index "<<index<<" contains the following item\n";
int index;
if(hashTable[index]->name == "empty" && hashTable[index]->drink == "empty") {
cout<<name<<" was not found in the hash Table\n"; }
//case 1 - only 1 item contained in bucket and that item has matching names else if(hashTable[index]->name == name && hashTable[index]->next == NULL) {
hashTable[index]->name = "empty"; hashTable[index]->drink = "empty";
cout<<name<<" was removed from the hash Table\n"; }
//case 2 - match is located in the first item in the bucket // but there are more items in the bucket
else if (hashTable[index]->name == name) {
delptr = hashTable[index];
File main_1.cpp