Anda di halaman 1dari 7

LANDASAN TEORI

Tempalte Class
Cetakan (template) adalah metode yang memberitahukan kepada kompiler tentang
algoritma mana yang digunakan untuk membentuk suatu fungsi. Dengan cetakan kita dapat
membuat suatu fungsi tertentu tetapi bisa untuk tipe data berbeda. Kompiler menanganni detil
fungsi untuk suatu tipe data yang sedang digunakan. Baik fungsi global maupun kelas dapat
diprogram sebagai cetakan.
Kemudahan template adalah penyesuaian tipe data yang kita input, dengan adanya
penyesuaian tipe data. Dengan satu fungsi bisa diinput dengan beberapa jenis data, sehingga
menghemat code program. Dalam penggunaanya template ada 2 macam yaitu fungsi template
dan class template.
Fungsi template adalah template yang diterapkan untuk fungsi, dimana kode kode
fungsi digunkan untuk beberapa tipe data yang berbeda. Template fungsi menggambarkan
sebuah kumpulan fungsi sejenis yang hanya dibedakan oleh tiap argument dan nilai balik.
Definisi fungsi template mirip dengan definisi fungsi biasa, hanya saja tipe parameter diberi
nama secara simbolik. Berikut implementasi pada praktikum.
Sedangkan Class template adalah template yang diterapkan pada kelas dimana
kumpulan class yang hanya dibedakan oleh tipenya seperti tipe numeris dan char, pointer dan
kombinasinya

Exception Handling
Dalam pembuatan sebuah program sering muncul error (kesalahan) dan bug, yang
sering disebut dengan istilah eksepsi (exception). Prioritas utama bagi seorang programmer
yang berpengalaman adalah membuat program yang terbebas dari kesalahan pada saat
runtime (waktu program dijalankan).

Hal ini bukanlah merupakan hal yang mudah karena disini kita harus pandai dalam
menentukan kemungkinan-kemungkinan yang akan menyebabkan terjadinya error pada
program kita. dengan begini kita sebagai programmer harus dapat mencegah terjadinya error
pada program, sehingga meskipun hal itu terjadi, maka error tersebut tidak akan menghambat
jalannya program. Proses seperti inilah yang disebut dengan penjebakan error atau yang lebih
dikenal dengan istilah "exception handling".

Pada bagian ini kita akan mempelajari bagaimana C++ dapat mencegah eksepsi-eksepsi
yang terjadi.dan perlu diperhatikan bahwa Exception Handling hanya terdapat pada compiler
C++ yang bahasanya telah memenuhi C++ standar atau versi C++ baru contohnya seperti
Dev-C ++ atau CodeBlock dll. Dan jika anda menggunakan compiler C++ lama (klasik)
contohnya seperti : Borland C++ dan Turbo C++, maka anda tidak dapat melakukan
kompilasi program ini.
Untuk melakukan penjebakan error di dalam C++, terdapat tiga buah kata kunci yang
akan digunakan yaitu try, catch, dan throw. Berikut bentuk umum dari penulisan sebuah
block yang dapat mencegah terjadinya error dalam C++.
Sintaknya : "try{
statemen_yang_mungkin_menyebabkan_error;}

catch(tipe_data parameter{
statement_yang_digunakan_untuk_mengatasi_error;}
Konsep kerjannya exception handling ini sederhana, mula-mula program akan
melakukan eksekusi terhadap statemen-statemen yang terdapat pada blok try. Jika eksekusi
berjalan baik (tidak terdapat error), maka statemen yang terdapat pada bagian catch akan
diabaikan. Namun jika terjadinya error, maka error tersebut akan dilempar dengan statemen
throw dan ditangkap dengan menggunakan statemen catch.

ANTRIAN / (QUEUE)

1. Pengertian Queue
Kaidah utama dalam konsep queue adalah FIFO yang merupakan singkatan dari First
In First Out, artinya adalah data yang pertama kali dimasukkan atau disimpan, maka data
tersebut adalah yang pertama kali akan diakses atau dikeluarkan. Analoginya sama dengan
antrian di sebuah loket pembelian tiket kereta, orang yang datang lebih dahulu, maka akan
dilayani terlbih dahulu, dan akan selesai lebih dulu dari orang-orang yang datang setelahnya.
Gambar di bawah ini mengilustrasikan kerja sebuah queue
2. Deklarasi queue dalam program

Sebuah queue di dalam program komputer dideklarasikan sebagai sebuah tipe bentukan baru,
di dalam Bahasa C, biasa disebut struct. Sebuah struktur data dari sebuah queue setidaknya
harus mengandung dua tiga variabel, yakni variabel HEAD yang akan berguna sebagai
penanda bagian depan antrian, variabel TAIL yang akan berguna sebagai penanda bagian
belakang antrian dan ARRAY DATA dari yang akan menyimpan data-data yang dimasukkan
ke dalam queue tersebut. Berikut adalah syntax untuk mendeklarasikan struktur data dari
sebuah queue menggunakan Bahasa C:

typedef struct
{
int HEAD, TAIL;
int data[max+1];
}Queue;

dimana, nilai MAX didefinisikan sebagai jumlah tumpukan maksimum yang dapat disimpan
dalam queue. Setelah struktur data dari queue didefinisikan dengan syntax di atas, maka
setelah itu dapat dibuat variabel-variabel baru yang mengacu pada tipe data Queue di atas,
misalkan membuat sebuah variabel bernama antrian yang bertipe Queue:
Queue antrian; 8
Dalam tulisan ini, sebuah queue didefinisikan dengan array berukuran MAX + 1, maksudnya
adalah agar elemen array ke-0 tidak digunakan untuk menyimpan data, melainkan hanya
sebagai tempat „singgah‟ sementara untuk variabel HEAD dan TAIL. Sehingga, jika HEAD
dan TAIL berada pada elemen array ke-0, berarti queue tersebut dalam kondisi kosong (tidak
ada data yang disimpan). Berikut adalah ilustrasi dari sebuah queue kosong dengan ukuran
nilai MAX = 8:

3. Operasi-operasi dasar dalam queue


Pada dasarnya, operasi-operasi dasar pada queue mirip dengan operasi-operasi dasar
pada stack. Perbedaannya hanya pada prosedur push dan pop saja. Pada queue, prosedur yang
berfungsi untuk memasukkan data/ nilai ke dalam antrian adalah enqueue, sedangkan
prosedur untuk mengeluarkan data/ nilai dari antrian adalah dequeue.

a. Prosedur createEmpty

Sama pada stack, prosedur ini berfungsi untuk mengosongkan queue dengan cara meletakkan
HEAD dan TAIL pada indeks array ke-0. Berikut deklarasi prosedur createEmpty pada
queue dalam Bahasa C:

void createEmpty()
{
antrian.HEAD = 0;
antrian.TAIL = 0;
}

b. Prosedur enqueue

Prosedur ini digunakan untuk memasukkan sebuah data/ nilai ke dalam queue. Sebelum
sebuah data/ nilai dimasukkan ke dalam queue, maka prosedur ini terlebih dahulu melakukan
pengecekan terhadap posisi HEAD dan TAIL. Jika posisi HEAD dan TAIL masih berada
pada indeks ke-0 (artinya queue masih kosong), maka prosedur ini akan menempatkan
HEAD dan TAIL pada indeks ke-1 terlebih dahulu, baru setelah itu memasukkan data/ nilai
ke dalam array data queue. Namun, jika posisi HEAD dan TAIL tidak berada pada posisi ke-
0, maka posisi TAIL yang akan dinaikkan satu level. Jadi, pada proses enqueue, TAIL-lah
yang berjalan seiring masuknya data baru ke dalam antrian, sedangkan HEAD akan tetap
pada posisi ke-1. Berikut deklarasi prosedur enqueue dalam Bahasa C:

void enqueue(int x)
{
if ((antrian.HEAD == 0) && (antrian.TAIL == 0))
{
antrian.HEAD = 1;
antrian.TAIL = 1;
}
else
{
antrian.TAIL = antrian.TAIL + 1;
}
antrian.data[antrian.TAIL] = x;
}

Pada deklarasi prosedur enqueue di atas, prosedur memiliki sebuah parameter formal yang
bernama „x‟ yang bertipe integer. Parameter formal „x‟ ini berguna untuk menerima kiriman
nilai dari program utama (void main()) yakni berupa sebuah bilangan integer yang akan
dimasukkan ke dalam queue.

c. Prosedur dequeue
Prosedur ini digunakan untuk mengeluarkan atau membuang sebuah data/ nilai yang paling
awal masuk (yang berada pada posisi HEAD, yakni yang paling depan dari antrian) ke dalam
queue. Pekerjaan yang dilakukan oleh prosedur ini adalah menaikkan nilai HEAD satu level.
Jadi, setiap satu kali data dikeluarkan, maka posisi HEAD naik bertambah satu level.
Misalkan HEAD berada pada indeks ke-1, maka ketika akan mengeluarkan/ menghapus data
pada posisi paling depan (pada posisi HEAD), prosedur ini akan menaikkan posisi HEAD ke
indeks array ke-2.
Berikut deklarasi prosedur pop dalam Bahasa C:

void Dequeue(){
if (q.head > q.tail) {
q.head = 0;
q.tail = 0;
}
q.head = q.head + 1;
}
Ketika posisi HEAD sudah melewati posisi TAIL (HEAD > TAIL), berarti sudah tidak ada
lagi data/ nilai di dalam queue tersebut, maka saat itu terjadi, HEAD dan TAIL dikembalikan
ke posisi ke-0.

d. Fungsi IsEmpty
Sama seperti fungsinya pada stack, fungsi ini berfungsi untuk melakukan pengecekan
terhadap queue, apakah queue tersebut kosong atau tidak. Jika queue tersebut kosong
(artinya, HEAD dan TAIL berada pada posisi 0, atau bisa juga ketika HEAD > TAIL), maka
fungsi akan mengembalikan nilai 1 (true), tetapi jika queue tersebut tidak kosong/ berisi
(artinya, HEAD dan TAIL tidak berada pada posisi 0), maka fungsi akan mengembalikan
nilai 0 (false). Berikut deklarasi fungsi IsEmpty dalam Bahasa C:

int IsEmpty()
{
if ((antrian.HEAD> antrian.TAIL) || (antrian.HEAD == 0) &&
(antrian.TAIL == 0))
return 1;
else
return 0;
}

e. Fungsi IsFull

Fungsi ini berfungsi untuk melakukan pengecekan terhadap queue, apakah queue tersebut
penuh atau tidak. Jika queue tersebut penuh (artinya, TAIL berada pada posisi MAX), maka
fungsi akan mengembalikan nilai 1 (true), tetapi jika queue tersebut tidak penuh (artinya,
TAIL tidak berada pada posisi MAX), maka fungsi akan mengembalikan nilai 0 (false).
Berikut deklarasi fungsi IsFull dalam Bahasa C:

int IsFull()
{
if (antrian.TAIL == max)
return 1;
else
return 0;
}

SEARCHING / (PENCARIAN)

Pengertian Searching

Searching adalah mencari data yang dibutuhkan. Searching dalam pemrograman bisa
dilakukan untuk mencari data yang ada di dalam memory komputer.Dalam kehidupan sehari-
hari kita juga sering melakukan kegiatan searching seperti mencari data/informasi yang ada
dalam internet. Ada beberapa metode yang dapat digunakan untuk searching, ada yang
dinamakan:

 Sequential Search

 Binary Search

Sequential Search

Sequential Search merupakan metode pencarian data dalam array dengan cara
membandingkan data yang dicari dengan data yang ada di dalam array secara berurutan.
Pencarian data dengan Metode Sequential Search efektif untuk mencari data yang dalam posisi
yang tidak terurut atau acak.

Prosesnya bisa dijelaskan seperti berikut:

1. Menentukan data yang dicari


2. Membaca data array satu per satu secara sekuensial
3. Mulai dari data pertama sampai dengan data terakhir, kemudian data yang dicari tadi
dibandingkan dengan masing-masing data yang ada di dalam array.
a. Jika data yang dicari ditemukan maka kita dapat membuat statement bahwa data
telah temukan.
b. Jika data yang dicari tidak ditemukan maka kita dapat membuat statement bahwa
data telah temukan.

Ilustrasi:
Ilustrasi Sequential Search

data yang dicari yaitu 7 disimpan di variabel x, kemudian akan dibanding satu per satu secara
sekuensial terhadap data yang ada dalam array. Jika ditemukan data di dalam array yang sama
dengan data yang dicari artinya data ditemukan.

Sequential Searching memiliki Kelebihan dan Kekurangan yaitu:

 Kelebihan Sequential Searching bisa dikatakan lebih mudah dalam implementasinya


dalam pemrograman.
 Kekurangannya jika data yang terdapat dalam suatu array itu sangat banyak, maka akan
diperlukan waktu yang lebih lama untuk membandingkan data yang dicari dengan
jumlah data yang sangat banyak dalam suatu array.

Contoh Studi Kasus: Menemukan data yang dicari dalam sebuah array 1 dimensi yang
terdapat data di dalamnya dengan menggunakan Metode Sequential Searching. Jika data yang
dicari ditemukan di dalam array kemudian ditampilkan letak dari indexnya.

Binary Search

Metode pencarian Binary yaitu mencari data dengan melakukan mengelompokkan


array menjadi bagian-bagian. Binary Search ini hanya dapat diimplementasikan pada data yang
telah terurut baik ascending maupun descending dalam suatu array.
Proses Binary Search yang urutan datanya ascending:

1. Pertama buat perulangan lalu menentukan posisi low yaitu posisi yang menandakan
index paling rendah kemudian menentukan posisi high. Kemudian mencari posisi mid
= (high + low)/2
2. Lalu membandingkan data yang dicari dengan nilai yang ada di posisi mid.
3. Jika data yang dicari sama dengan nilai yang ada di posisi mid berarti data ditemukan.
4. Jika data yang dicari lebih kecil dari nilai yang ada di posisi mid maka pencarian data
akan dilakukan dibagian kiri mid dengan melakukan pembandingan. dengan kondisi
posisi high berubah yaitu (mid - 1) dan posisi low tetap.
5. Jika data yang dicari lebih besar dari nilai yang ada mid maka pencarian data akan
dilakukan di bagian kanan dari mid dengan posisi low yang berubah yaitu (mid + 1)
dan posisi high tetap.
Contoh Ilustrasi:

setelah menentukan low dan high kemudian menentukan mid. perhitungan


mid=(low+high)/2 jadi mid=(0+4)/2, artinya mid berada di data[2]. Kemudian data yang dicari
yang ditampung di variabel x dibandingkan dengan data/nilai yang berada di mid. data yang
dicari ialah 7<10 kemudian pencarian data dilakukan di bagian kiri mid.

Pencarian di bagian kiri mid masih dalam perulangan yang sama, namun indeksnya
yang dipersempit. Karena data yang dicari lebih kecil dari data mid yang sebelumnya maka
posisi high yang berubah yaitu (mid - 1) yang sebelumnya dan low tetap pada posisi yang sama.
Kemudian menentukan mid =(0+1)/2 = 0
artinya mid sekarang terletak di data[0]. lalu data yang dicari dibandingkan dengan mid. 7=7
artinya data telah ditemukan

Kelebihan dan Kekurangan Binary Search:

1. Kelebihannya yaitu tidak perlu membandingkan data yang dicari dengan seluruh data
array yang ada, cukup melalui titik tengah kemudian kita bisa menentukan ke mana
selanjutnya mencari data yang ingin dicari.
2. Kekurangan implementasi agak sedikit lebih rumit karena tidak bisa digunakan pada
data array yang masih acak. Jadi harus melakukan sorting terlebih dahulu dalam
implementasinya.

Anda mungkin juga menyukai