• Tidak ada hasil yang ditemukan

LAPORAN ALGORITMA DAN STRUKTUR DATA II (4)

N/A
N/A
Protected

Academic year: 2018

Membagikan "LAPORAN ALGORITMA DAN STRUKTUR DATA II (4)"

Copied!
15
0
0

Teks penuh

(1)

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

(2)

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)

(3)

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

(4)

 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.

(5)

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

(6)

 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

(7)

Listing Program :

void hash::AddItem(string name, string drink) {

int index = Hash(name);

(8)

n->next = NULL;

(9)

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";

(10)

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];

(11)
(12)

File main_1.cpp

(13)
(14)
(15)

Referensi

Dokumen terkait

Disebabkan oleh bakteri yang tumbuh berlainan pada daerah kolon yang Disebabkan oleh bakteri yang tumbuh berlainan pada daerah kolon yang iskemik distensi berlebihan.. iskemik

Ada perbedaan yang bermakna durasi menangis bayi pada bayi prematur yang dilakukan tindakan facilitated tucking dan musik saat dilakukan tindakan pengambilan

Hasil laporan dari studi utama yang dilakukan Joint Governmental Study Group dengan maksud memper-erat hubungan ekonomi Jepang dan Swiss akhirnya dipublikasikan pada Januari

Tidak adanya leukosit dalam sediaan hapus pulasan Gram sampel urine bersih yang dibuat seperti di atas merupakan bukti yang baik bahwa urine tidak terinfeksi.Spesimen urine

Salah satu cara untuk  mendapat ketebalan yang tepat adalah dengan membuat garis – garis plesteran/patok pada dinding dengan arah vertikal dari atas ke bawah dengan jarak 1 -

Berdasarkan hal ini, penelitian perlu dilakukan tentang Evaluasi Kualitas Pelayanan Kefarmasian di Puskesmas Kabupaten Wonosobo Periode Juli - Desember 2014 untuk

dalam melaksanakan putusan Pengadilan Tata Usaha Negara tersebut diperlukan terobosan hukum, persepsi, pola pikir dan mengubah perilaku yang dilakukan dengan

Tujuan penelitian ini adalah memetakan lokasi dan kapasitas dari informasi inventarisasi mata air di Kecamatan Cidahu, mengkaji variasi dari data deret waktu mata air yang