Monday, April 14, 2014

Pencarian (Searching)

0 comments
PENCARIAN (SEARCHING)
Pencarian(searhing) merupakan proses yang sangat penting dalam pengolahan data. Proses pencarian adalah menemukan nilai(data) tertentu didalam sekumpulan data yang bertipe sama.Sebuah algoritma pencarian dijelaskan secara luas adalah sebuah algoritma yang menerima masukan berupa sebuah masalah dan menghasilkan sebuah solusi untuk masalah tersebut, yang biasanya didapat dari evaluasi beberapa kemungkinan solusi. Algoritma pencarian (searching algorithm) adalah algoritma yang menerima sebuah Kata kunci dan dengan  langkah-langkah tertentu akan mencari rekaman dengan kata kunci tersebut.  Setelah proses pencarian dilaksanakan, akan diperoleh salah satu dari dua kemungkinan, yaitu data yang dicari ditemukan atau tidak ditemukan.
Macam-macam Algoritma (Searching)
1.       Pencarian sekuensial (Sequential searching)
Pengertian :
Pencarian Sekuensial (sequential searching) atau pencarian berurutan sering disebut pencarian linear merupakan metode pencarian yang paling sederhana. Pencarian beruntun adalah proses yang membandingkan setiap elemen larik satu per satu secara beruntun, mulai dari elemen pertama sampai elemen yang dicari ditemukan atau seluruh elemen sudah diperiksa.

2.       Pencarian Biner (binary search)
Pengertian :

Terdapat metode pencarian pada data terurut yang paling efficient, yaitu metode pencarian bagi dua atau pencarian biner (binary search). Metode ini digunakan untuk kebutuhan pencarian dengan waktu yang cepat. Prinsip pencarian dengan membagi data atas dua bagian mendasari metode ini. Data yang disimpan di dalam larik harus sudah terurut. data terurut yang paling efficient, yaitu metode pencarian bagidua atau pencarian biner (binary search).

Berikut contoh program pencarian (search)  dengan metode Pencarian Sekuensial atau berurutan.
Berikut hasilnya : 

Continue reading →
Thursday, April 10, 2014

Rekursif

0 comments
REKURSIF
Rekursi adalah suatu proses dari fungsi yang memanggil dirinya sendiri. Fungsi yang seperti ini disebut fungsi rekursif ( recursive function ). Dalam sebuah fungsi rekursif pemanggilan dapat terjadi berulang kali. Karena ada proses yang berulang-ulang maka harus ada suatu kondisi yang mengakhiri prosesnya. Jika tidak, maka proses tidak akan pernah berhenti sampai memori yang digunakan tidak dapat menampung lagi. Pemecahan masalah dengan pendekatan rekursif dapat dilakukan jika masalah tersebut dapat didefinisikan secara rekursif, yaitu masalah dapat diuraikan menjadi masalah sejenis yang lebih sederhana.

Kelebihan Dan Kelemahan Rekursif
Kelebihan Perulangan Rekursif :
·       Sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar.
·         Dapat melakukan perulangan dengan batasan fungsi.
Kekurangan Perulangan Rekursif:
·         Tidak bisa melakukan nested loop atau looping bersarang.
·         Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu saja.
·         Trace error sulit.
·     Memerlukan stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal dan parameter formal akan ditempatkan ke stack dan ada kalanya akan menyebabkan stack tak cukup lagi (Stack Overrun).
·         Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk.

CONTOH REKURSIF
Contoh dari persoalan yang biasanya kita tidak terpikir mengunakan metode rekursif yaitu Faktorial. Menghitung 4! dengan menerapkan konsep rekursi dua fase dasar dari sebuah proses rekursi: fase awal dan fase balik. Dalam fase awal, masing-masing proses  memanggil dirinya sendiri. Fase awal ini berhenti ketika pemanggilan telah mencapai kondisi terminal. Sebuah kondisi teminate adalah kondisi dimana sebuah fungsi rekursi kembali dari pemanggilan, artinya fungsi tersebut sudah tidak memanggil dirinya sendiri dan kembali pada sebuah nilai. Sebagai contoh, dalam penghitungan faktorial dari n, kondisi terminal adalah n = 1, n = 0. Untuk setiap fungsi rekursi, minimal harus ada satu kondisi terminal. Setelah fase awal selesai, kemudian proses melanjutkan pada fase balik, dimana fungsi sebelumnya akan dikunjungi lagi dalam fase balik ini. Fase ini berlanjut sampai pemanggilan awal, hingga secara lengkap proses telah berjalan.

Proses Komputasi Secara Rekursif dari 4!
F(4)=4x F(3) fase awal
F(3)=3x F(2) .
F(2)=2x F(1) .
F(1)=1 kondisi terminal
F(2)=(2)x(1) fase balik
F(3)=(3)x(2) .
F(4)=(4)x (6) 24 Rekursi lengkap.

Contoh lain pada program pengulangan berikut :
hasilnya adalah :
Kesimpulan :
Rekursif adalah suatu proses bisa memanggil dirinya sendiri, sehingga dengan cirinya tersebut rekursif salah satu konsep yang penting untuk dikuasai. Hal ini dikarenakan fungsi ini memiliki sangat banyak implementasi, yang dalam hal ini adalah implementasi dalam algoritma. Fungsi rekursif memiliki kelebihan dan kelemahan. Secara umum fungsi rekursif memiliki algoritma yang lebih mudah dipahami dan dibuat tetapi membutuhkan penggunaan memoriyang besar.
Continue reading →
Saturday, March 8, 2014

Pengertian dan contoh program Selection sort

0 comments
Selection sort
Selection merupakan cara mengurutkan data, Bedanya pada Selection Sort tentukan dahulu elemen dengan data terbesar/terkecil kemudian tukarkan/pindahkan data ke elemen pertama array, untuk elemen kedua tentukan lagi data terbesar/terkecil tanpa mengikutkan elemen pertama, begitu seterusnya hingga elemen terakhir.

Algoritma Selection Sort beroperasi sebagai berikut :
·      Temukan nilai yang paling minimum (atau sesuai keinginan) di dalam struktur data. Jika ascending, maka yang harus ditemukan adalah nilai yang paling minimum. Jika descending, maka yang harus ditemukan adalah nilai yang paling maksimum.
·       Tukar nilai tersebut dengan nilai pada posisi pertama di bagian struktur data yang belum diurutkan.
·       Ulangi langkah di atas untuk bagian struktur data yang tersisa.

Berikut contoh programnya.. .
Ini dia hasilnya. ..
Demikian pengertian serta contoh dari Selection Sort.
Semoga Bermanfaat. ..
Continue reading →
Sunday, February 23, 2014

Penjelasan serta contoh dari Bubble Sort

0 comments
Buble Sort dengan mengunakan C++


Bubble sort (metode gelembung) adalah metode/algoritma pengurutan dengan dengan cara melakukan penukaran data dengan tepat disebelahnya secara terus menerus sampai bisa dipastikan dalam satu iterasi tertentu tidak ada lagi perubahan. Jika tidak ada perubahan berarti data sudah terurut. Disebut pengurutan gelembung karena masing-masing kunci akan dengan lambat menggelembung ke posisinya yang tepat. Artinya Algoritma ini akan menggeser  nilai yang terkecil atau terbesar (sesuai dengan jenis pengurutan, ascending atau descending) ke posisi ujung dari daftar. Demikian seterusnya hingga semua daftar dalam keadaan terurut. Proses dasar yang terjadi dalam algoritma ini adalah proses pertukaran nilai (swapping). 

Di setiap mata kuliah algoritma atau struktur data, pasti ketemu sama algoritma sederhana yang satu ini. Algoritma Bubble Sort adalah algoritma sorting paling sederhana. Kelebihan dari algoritma ini adalah mudah dipahami dan yang paling simpel. Kekurangannya juga ada, salah satunya ialah proses akan berhenti jika tidak adanya pertukaran dalam satu iterasi. Sesuai dengan namanya, proses pengurutannya mirip seperti gelembung.


Langkah demi Langkah Contoh

Mari mengurutkan data berikut "6 1 5 3 9",  mengurutkan array dari angka terendah ke nomor terbesar menggunakan bubble sort. Dalam setiap langkah, unsur-unsur yang ditulis dalam huruf tebal sedang dibandingkan.

Pertama :
(6 1 5 3 9)     
(1 6 5 39), Di sini, algoritma membandingkan dua elemen pertama, dan swap karena > 1.
(1 6 5 3 9)    
(1 5 6 3 9),Swap Karena 6 > 5
(1 5 6 3 9)    
(1 5 3 6 9), Swap Karena 6 > 3
(1 5 3 6 9)     
(1 5 3 6 9), Sekarang,  elemen ini sudah dalam urutan (9 > 6), algoritma tidak swap.

Kedua :
(1 5 3 6 9)     
(1 5 3 6 9)
(1 5 3 6 9)     
(1 3 5 6 9), Swap Karena 5 >3
(1 3 9)     
(1 39)
(1 3 5 6 9)     
(1 3 5 6 9)
Sekarang, array sudah diurutkan, tapi algoritma  tidak tahu apakah sudah selesai. Algoritma memeriksa satu-satu secara seluruh  tanpa swap.

Ketiga :
(1 3 5 6 9)     (1 3 6 9)
(1 3 5 6 9)     (1 3 5 6 9) 
(1 3 59)     (1 3 59) 
(1 3 5 6 9)     (1 3 5 6 9) 

Semua data sudah terurut…

Simaklah pembuatan program Bubble sort
berikut ini....



Hasilnya...

Demikian pengertian dan penjelasan serta contoh dari penerapan Bubble sort
Semoga Bermanfaat trimakasih...





Continue reading →
Wednesday, January 29, 2014

Perbedaan Prosedur,fungsi,dan array

0 comments
ALGORITMA



Perbedaan Prosedur dan fungsi

Procedure yaitu sub program yang digunakan untuk melakukan proses tertentu dan tidak mengembalikan nilai, bisa disimpan dalam database sebagai object skema, sehingga suatu procedure bisa digunakan berulangkali tanpa harus melakukan parsing dan compile ulang.

contoh : Menghitung harga barang

#include <iostream.h>
#include <conio.h>

void penjualan(float a,float b,float c)
{
float total,temp;
temp =b*c ;
total =temp - (a*temp);
cout<<"harga kotor barang :" <<temp<<endl;
cout<<"hara bersih barang :" <<total<<endl;
}
void main()
{
float diskon,harga,jumlah;
float total,temp;
cout<<"         ++++++++++++++++++++++++++++++"<<endl;
cout<<"          Program Hitungan Harga Barang"<<endl;
cout<<"         =============================="<<endl<<endl;
cout<<"masukan harag barang Rp";
cin>>harga;
cout<<"masukan jumlah barang:";
cin>>jumlah;
cout<<"masukan diskon barang:";
cin>>diskon;
cout<<"\n";
penjualan(diskon,harga,jumlah);
getch();
}

Function yaitu Sebuah kumpulan Statement yang akan mengembalikan sebuah nilai balik pada pemanggilnya. Nilai yang dihasilkan Function harus ditampung kedalam sebuah variabel.
Perbedaan function dan procedure, yaitu :
Perbedaan antara function dan procedure adalah : kalau function dia akan mengembalikan suatu nilai pada pemanggilnya, sedangkan kalau procedure dia tidak akan mengembalikan nilai apapun pada fungsi pemanggilnya.

contoh : Membagi dan Mengalikan nilai

#include <conio.h>
#include <iostream.h>

void kali(){
int a,b,hasil;
cout<<"masukan nilai 1 :";
cin>>a;
cout<<"masukan nilai 2 :";
cin>>b;
hasil=a*b;
cout<<"hasil kali :"<<hasil<<endl;}

 bagi(){
int a,b; float result;
cout<<"masukan nilai 1 : ";
cin>>a;
cout<<"masukan nilai 2 : ";
cin>>b;
result=a/b;
cout<<"hasil bagi = ";
return result;}

main()
{
cout<<bagi()<<endl;
kali();
cout<<endl;

getch();

}

Array adalah kumpulan data bertipe sama yang menggunakan nama sama. Dengan menggunakan array, sejumlah variabel dapat memakai nama yang sama. Antara satu variabel dengan variabel lain di dalam array dibedakan berdasarkan subscript. Sebuah subscript berupa bilangan di dalam kurung siku.

Array dapat dibedakan menjadi :
1. Array berdimensi satu
2. Array berdimensi dua
3. Array berdimensi tiga

Array Berdimensi Satu

      Contoh array berdimensi satu, misalnya menginputkan 5 buah data temperatur. Dan kelima data tersebut disimpan pada array bernama suhu.

Contoh 1 :
#include
#include

void main()
{
float suhu[5];
// array dengan 5 elemen bertipe float
// Membaca data dari keyboard dan meletakkan ke array
cout << "Masukkan 5 buah data suhu" << endl;
for (int i=0; i<5; i++)
{
cout << i + 1 << " : "; cin >> suhu[i];
}

// Menampilkan isi array ke layar
cout << "Data suhu yang dimasukkan : " << endl;
for (i=0; i<5; i++)
cout << suhu[i] << endl;
}
Mendefinisikan array
Float suhu[5]; float : Tipe elemen array suhu : Nama array [5] : Jumlah elemen array Maka array suhu dapat menyimpan data sebanyak 5 buah.  Subscript dari array selalu dimulai dari nol. Misal, jika jumlah elemen array [5], maka index dari array tersebut yaitu 0, 1, 2, 3, 4.  Mengakses elemen array Setelah suatu array didefinisikan, elemen array dapat diakses dengan bentuk : suhu[i] menyatakan “elemen suhu dengan subscript sama dengan i” Perintah seperti cin >> suhu[i]; berarti “membaca data dari keyboard dan meletakkan ke elemen nomor i pada array suhu”. 
Perintah seperti cout >> suhu[i]; berarti “menampilkan elemen bernomor i pada array suhu”.


Contoh 2 :
#include
#include

const int jum_data = 5;
void main()
{
float suhu[jum_data]; // array suhu
float total; // untuk menampung total suhu

// Membaca data dari keyboard dan meletakkan ke array
cout << "Masukkan 5 buah data suhu" << endl; for (int i=0; i<5; i++) { cout << i + 1 << " : "; cin >> suhu[i];
}
// Menghitung nilai rata-rata
total = 0; // Mula-mula diisi dengan nol
for(i=0; i<< "Suhu rata-rata= " << total/jum_data << endl; }  Memberikan nilai awal terhadap array Seperti halnya variabel biasa, array juga dapat diberi nilai awal (diinisialisasikan) pada saat didefinisikan. Misalnya: int jum_hari[12]={ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; Catatan: C++ secara otomatis akan memberikan nilai awal nol terhadap array yang bersifat global. Jika bersifat lokal, maka harus diatur terlebih dahulu. Contoh 3 : #include
#include
#include

void main()
{
// Pendefinisian array jum_hari dan pemberian nilai awal
int jum_hari[12]={ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
// Tampilkan isi jum_hari
cout << "Masukkan 5 buah data suhu" << endl; for (int i=0; i<12; i++) { cout << "jum_hari[" << i << "] =" << jum_hari[i] << endl; } } Array Berdimensi Dua Sebagai gambaran, data kelulusan dari jurusan Teknik Informatika, Manajemen Informatika, dan Teknik Komputer dari tahun 1992 hingga 1995. Nama 1992 1993 1994 1995 Teknik Informatika 35 45 80 120 Manajemen Informatika 100 110 70 101 Teknik Komputer 10 15 20 17  Mendefinisikan array berdimensi dua Bentuk diatas dapat dibentuk dalam array berdimensi dua, pendefinisiannya : int nilai[3][4]; Pada pendefinisian di atas :  3 menyatakan jumlah baris (mewakili nama)  4 menyatakan jumlah kolom (mewakili nilai)  Mengakses array berdimensi dua Masing-masing elemen di dalam array berdimensi dua dapat diakses dengan bentuk : Baris dan kolom dimulai dari 0. Contoh pengaksesan elemen array berdimensi dua : 1. data_lulus[1][2] = 5; Merupakan instruksi untuk memberikan nilai 5 ke baris 1 kolom 2. 2. cout << data_lulus[1][2]; Merupakan perintah untuk menampilkan elemen data_lulus dengan subscript pertama (baris) berupa 1 dan subscript kedua (kolom) bernilai 2. Contoh 4 : #include
#include

void main()
{
int data_lulus[3][4]; // Array berdimensi dua
int tahun, jurusan;

// Memberikan data ke elemen array data_lulus
data_lulus[0][0] = 35; // TI - 1992
data_lulus[0][1] = 45; // TI - 1993
data_lulus[0][2] = 90; // TI - 1994
data_lulus[0][3] = 120; // TI - 1995
data_lulus[1][0] = 100; // MI - 1992
data_lulus[1][1] = 110; // MI - 1993
data_lulus[1][2] = 70; // MI - 1994
data_lulus[1][3] = 101; // MI - 1995
data_lulus[2][0] = 10; // TK - 1992
data_lulus[2][1] = 15; // TK - 1993
data_lulus[2][2] = 20; // TK - 1994
data_lulus[2][3] = 17; // TK - 1995

// Proses untuk memperoleh informasi kelulusan
while(1)
{
cout << "Jurusan (0 = TI, 1 = MI, 2 = TK): "; cin >> jurusan;
if ((jurusan==0) || (jurusan==1) || (jurusan==2))
break; // keluar dari while
}
while(1)
{
cout << "Tahun (1992 - 1995): "; cin >> tahun;

if ((tahun >= 1992) && (tahun <= 1995)) { tahun -= 1992; // konversi ke 0, 1, 2 atau 3 break; // keluar dari while } } cout << "Jumlah yang lulus = " << data_lulus[jurusan][tahun] << endl; } Melewatkan Array Sebagai Argumen Fungsi  Array juga dapat berkedudukan sebagai parameter di dalam fungsi. Misalnya : const int MAKS = 5 int data[MAKS]; Dari data di atas, fungsi yang menerima array di atas dapat dibuat prototipe-nya sebagai berikut : void inisialisasi_data(data[MAKS]); Dan deklarasi fungsi sebagai berikut : void inisialisasi_data(data[], int & jumlah); Pada contoh kedua, tanda di dalam tanda [ ] tidak terdapat apa-apa dan parameter kedua digunakan untuk menyatakan jumlah elemen array serta berkedudukan sebagai referensi (bisa diubah dari dalam fungsi inisialisasi_data()). Contoh 5 : #include
#include
#include
#include

const int MAKS = 100;
void inisialisasi_data(int data[], int &jumlah);
void main()
{
int data_acak[MAKS]; // array berdimensi satu
int jumlah;
inisialisasi_data(data_acak, jumlah);

// Tampilkan elemen-elemen array
cout << "Isi array : " << endl; for(int i=0; i<< data_acak[i] << endl; } // Definisi fungsi void inisialisasi_data(int data[], int &jumlah) { while(1) { cout << "Berapa jumlah data yang ingin" << endl; cout << "dibangkitkan secara acak (5 - 100) ? "; cin >> jumlah;

if ((jumlah >= 5) && (jumlah<=100)) break; } randomize(); // Menyetel pembangkit bilangan acak for(int i=0; i
#include
#include

const int BARIS = 5;
const int KOLOM = 5;
void isi_matriks(float mat[][KOLOM], int &brs, int &kol);

void main()
{
float matriks[BARIS][KOLOM];
int jum_baris, jum_kolom;
int i,j;

isi_matriks(matriks, jum_baris, jum_kolom);
cout << "\nMatriks yang terbentuk: " << endl; cout << setiosflags(ios::fixed); // ios::fixed --> mengatur angka yg dimasukkan dalam bentuk angka biasa
// bukan dalam bentuk eksponen
for (i=0; i<< setw(12) << setprecision(5) << matriks[i][j]; // setprecision(5) --> mengatur banyak angka dibelakang koma
cout << endl; } } // Definisi Fungsi void isi_matriks(float mat[][KOLOM], int &brs, int &kol) { int i,j; cout << "Pastikan jumlah baris dan kolom" << endl; cout << "tidak melebihi 5" << endl; cout << "Jumlah baris = "; cin >> brs;
cout << "Jumlah kolom = "; cin >> kol;
for (i=0; i< brs; i++) for (j=0; j<< "Elemen " << i << ", " << j << " = "; cin >> mat[i][j];
}
}

 Mengurutkan Data
Salah satu mengurutkan data adalah dengan menggunakan bubble sort. Pengurutan dilakukan dengan membandingkan setiap elemen dengan seluruh elemen yang terletak sesudah posisinya. 

Contoh 7 :
#include
#include
#include

void main()
{
int i, j, tmp, jumdata;
int data[] = {5, 100, 20, 31, 77, 88, 99, 20, 55, 1};
jumdata = sizeof(data)/sizeof(int);

// Menampilkan data
cout << "Data semula: " << endl; for(i=0; i<< setw(4) << data[i]; cout << endl; // Pindah baris // Mengurutkan data for(i=0; i data[j])
{
tmp = data[i];
data[i] = data[j];
data[j] = tmp;
}

// Menampilkan data
cout << "Data setelah diurutkan: " << endl;
for (i=0; i
cout << setw(4) << data[i];
cout << endl; // Pindah baris
}
Continue reading →