Teknik Searching

Teknik Searching

Berikut adalah pembahasan mengenai teknik searching logika dan alghoritma, adapun dibawah ini merupakan slide dari power point yang UttyID sudah unggah ke Web, dan menampilkannya pada postingan blog UttyID.


A. Pendahuluan

Sebagian besar aplikasi tingkat pengguna, memerlukan setidaknya beberapa bentuk dasar dari teknik searching. Bahkan jika hanya sebagian kecil dari solusi secara keseluruhan, hal ini sering bisa sangat memakan waktu dan juga membuat frustrasi.

Teknik Searching adalah praktek umum untuk mengembangkan solusi pada setiap aplikasi penggunaan, guna untuk menghemat waktu, tapi menciptakan solusi generik akan selalu membantu lebih di masa depan. C ++ standar perpustakaan memiliki beberapa kelas yang sering dapat membantu dengan fungsi sederhana. Namun, tidak semua fungsi ini intuitif dan dapat menyebabkan ambiguitas untuk masalah sederhana.

B. Pengertian Teknik Searching

Merupakan suatu proses pencarian data pada sejumlah data yang ada. Setelah proses pencarian dilaksanakan, akan diperoleh salah satu dari dua kemungkinan, yaitu data yang dicari ditemukan (successful) dan tidak ditemukan (unsuccessful).

Terdapat 2 bagian dalam Teknik Searching, Yaitu :
  • Pencarian Sekuensial (Sequential Search
  • Pencarian Biner (Binary Search). 
  • Pencarian Interpolasi (Interpolasi Search)
Perbedaan dari ketiga teknik ini terletak pada keadaan data :
  • Pencarian sekuensial digunakan apabila data dalam keadaan acak atau tidak terurut. 
  • Pencarian biner digunakan pada data yang sudah dalam keadaan urut. 
  • Pencarian biner digunakan dengan perkiraan letak data.
1. Pencarian Berurutan (Sequential Searching)

Merupakan metode pencarian yang paling sederhana. Pencarian berurutan menggunakan prinsip sebagai berikut :
  • Data yang ada dibandingkan satu per satu secara berurutan dengan yang dicari sampai data tersebut ditemukan atau tidak ditemukan.
  • Kemungkinan terbaik (best case) adalah jika data yang dicari terletak di indeks array terdepan (elemen array pertama) sehingga waktu yang dibutuhkan untuk pencarian data sangat sebentar (minimal). 
  • Kemungkinan terburuk (worst case) adalah jika data yang dicari terletak di indeks array terakhir (elemen array terakhir) sehingga waktu yang dibutuhkan untuk pencarian data sangat lama (maksimal).
Contoh Sequential Searching sebagai berikut :

Mencari posisi data dengan nilai 3, key =3

Sequential Searching

Data[4]=3 sama dengan key=3 maka data ditemukan dan diberikan nilai pengembalian i (posisi) dan proses dihentikan.
Contoh Kasus Ilustrasi Sequential Searching dalam bahasa pemograman Pascal :

Sequential Searching Pascal

2. Pencarian Biner (Binary Search)

Salah satu syarat agar pencarian biner dapat dilakukan adalah data sudah dalam keadaan urut. Dengan kata lain, apabila data belum dalam keadaan urut, pencarian biner tidak dapat dilakukan. 
Contoh : saat ingin mencari suatu kata dalam kamus 
Prinsip dari pencarian biner dapat dijelaskan sebagai berikut : 
  • Data diambil dari posisi 1 sampai posisi akhir N 
  • Kemudian cari posisi data tengah dengan rumus: (posisi awal + posisi akhir) / 2 
  • Kemudian data yang dicari dibandingkan dengan data yang di tengah, apakah sama atau lebih kecil, atau lebih besar? 
  • Jika lebih besar, maka proses pencarian dicari dengan posisi awal adalah posisi tengah + 1 
  • Jika lebih kecil, maka proses pencarian dicari dengan posisi akhir adalah posisi tengah – 1 Jika data sama, berarti ketemu. 
  • Demikian seterusnya sampai data tengah sama dengan yang dicari. 
Contoh Kasus Ilustrasi Binary Searching :

Misalnya data yang dicari 17

Karena 17 > 15 (data tengah), maka: awal = tengah + 1

Binary Searching

Karena 17 < 23 (data tengah), maka: akhir = tengah – 1

Binary Searching

Karena 17 = 17 (data tengah), maka KETEMU! 

Binary Searching

Contoh Kasus Ilustrasi Binary Searching dalam bahasa pemograman Pascal :

Binary Searching Pascal

3. Pencarian Interpolasi (Interpolasi Search)

Teknik ini dilakukan pada data yang sudah terurut berdasarkan kunci tertentu Teknik ini dilakukan pada data yang sudah terurut berdasarkan kunci tertentu Teknik searching ini dilakukan dengan perkiraan letak data.

Contoh Interplasi Search :
jika kita hendak mencari suatu nama di dalam buku telepon, misal yang berawalan dengan huruf T, maka kita tidak akan mencarinya dari awal buku, tapi kita langsung membukanya pada 2/3 atau 3/4 dari tebal buku.

Jadi kita mencari data secara relatif terhadap jumlah data. Rumus posisi relatif kunci pencarian dihitung dengan rumus:

Rumus Interplasi Search

Contoh Kasus :

Misalkan terdapat data sebagai berikut :

Contoh Kasus Interplasi Search

Penjelasan :

Kasus #1 :
  • Kunci Pencarian? 088 
  • Low? 0 
  • High? 8 
  • Posisi = int(( ) / ( ) * (8 - 0) + 0) = [7]  
  • Kode[7] = kunci pencarian, data ditemukan: Visual Basic 2005 Express 
Kasus #2: 
  • Kunci Pencarian? 060 
  • Low?
  • High?
  • Posisi = int((060 – 025) / (096 – 025) * (8 – 0) + 0) = [3] 
  • Kunci[3] < kunci pencarian, maka teruskan 
  • Low = 3 + 1 = 4 
  • High =
  • Posisi = int((060 – 025) / (096 – 025) * (8 – 4) + 4) = [5] 
  • Ternyata Kunci[5] adalah 063 yang lebih besar daripada 060

Source Kode C++ Pembelian Tiket Bioskop

Hallo semua, selamat malam.. Kali ini UttyID ingin membagikan kode program tentang pembelian tiket bioskop dengan menggunakan bahasa pemograman C++.

Kode program pembelian tiket bioskop dalam pembuatannya menggunakan beberapa unsur, unsur yang dimaksud ini adalah meliputi dari struktur, array dan fungsi. Berikut source kode pembelian tiket bioskop:

#include <stdio.h>
#include "conio.h"
#include "iostream.h"
#include "iomanip.h"
int input; //Format Function [input]
main()
//-- Start Format Struktur --
{
int i,jml=0;
float tk=0;
struct
{
char nm[15], kt[5],jdl[5][25],tgl[25];
int jt[5];
float hrg[5],total[5];
}bioskop;//-- End Format Struktur --
clrscr();
cout<<"==============================="<<endl;
cout<<" Data Penjualan Tiket Bioskop "<<endl;
cout<<"=============================="<<endl;
cout<<" Nama Kasir :";gets(bioskop.nm);
cout<<" Tanggal :";gets(bioskop.tgl);
cout<<"=============================="<<endl;
cout<<" Masukkan Jumlah Inputan :";cin>>input;
cout<<endl;
//-- Start Format Array + Call Function Input --
for(i=1;i<=input;i++)
{
cout<<" Data Ke -  :"<<i<<endl;
cout<<" Kode Tiket :";cin>>bioskop.kt[i];
cout<<" jumlah tiket :";cin>>bioskop.jt[i];
if(bioskop.kt[i]=='1')
{
strcpy(bioskop.jdl[i],"My Girl");
bioskop.hrg[i]=20000;
}
else if(bioskop.kt[i]=='2')
{
strcpy(bioskop.jdl[i],"Boys Before Flower");
bioskop.hrg[i]=18000;
}
else if(bioskop.kt[i]=='3')
{
strcpy(bioskop.jdl[i],"Full House");
bioskop.hrg[i]=15000;
}
else if(bioskop.kt[i]=='4')
{
strcpy(bioskop.jdl[i],"Itazurana Kiss");
bioskop.hrg[i]=10000;
}
else
{
strcpy(bioskop.jdl[i],"zong");
bioskop.hrg[i]=0;
}
bioskop.total[i]=bioskop.hrg[i]*bioskop.jt[i];
//-- end Format Array + Call Function Input --
} clrscr();
cout<<"======================================================"<<endl;
cout<<" Bioskop XYZ "<<endl;
cout<<" Kasir :"<<bioskop.nm<<endl;
cout<<"======================================================"<<endl;
cout<<" No | Judul Film | Harga | Jumlah | Total "<<endl;
cout<<"======================================================"<<endl;
//-- Start Format Array + Call Function Input--
for(i=1;i<=input;i++)
{
cout<<setiosflags(ios::left)<<setw(2)<<i;
cout<<setiosflags(ios::left)<<setw(20)<<bioskop.jdl[i];
cout<<setprecision(8)<<" "<<bioskop.hrg[i];
cout<<setprecision(8)<<" "<<bioskop.jt[i];
cout<<setprecision(8)<<" "<<bioskop.total[i]<<endl;
tk=tk+bioskop.total[i];
jml=jml+bioskop.jt[i];
//-- end Format Array + Call Function Input --
//printf("%4d %20s %2.0f %4d %5.0f \n",i,jdl[i],hrg[i],jt[i],total[i]);
}
cout<<"======================================================"<<endl;
printf(" total Keselruhan  :%0.0f ",tk);
cout<<endl;
printf(" Jumlah Keselruhan    :%d ",jml);
getch();
}

Berikut hasil program yang di buat dan di jalankan atau running:

Hasil Input Program

Hasil Input Program Pembelian Tiket Pesawat

Hasil Output Program

Hasil Output Program Pembelian Tiket Pesawat


Setelah kode di atas sudah di copy paste, jalankan program tersebut dan apakah sudah berjalan dengan baik. Jika ada pertanyaan yang belum mengerti, silakan berikan komentar.

Demikianlah postingan kali ini tentang kode program C++ dalam pembelian tiket bioskop. Terima Kasih Semoga Bermanfaat.