Kamis, 16 Januari 2014

ALGORITMA PENCARIAN




    A.            DEFINISI
Pencarian merupakan proses yang fundamental dalam pengolahan data. Proses pencarian adalah menemukan nilai (Data) tertentu di dalam sekumpulan data yang bertipe sama (baik bertipe dasar atau bertipe bentukan).
Sebagai contoh untuk mengubah (update) data tertentu, langkah pertam ayang harus dilakukan adalah mencari keberadaan data tersebut di dalam kumpulannya. Jika data yang dicari ditemukan, maka data tersebut dapat diubah dinilainya dengan data yang baru.. Aktivitas awal yang sama juga dilakukan pada proses penambahan (insert) data baru.

     B.            SPESIFIKASI MASALAH



     C.            METODE PENCARIAN
                              1.            Algoritma Pencarian Beruntun
Algoritma pencarian Beruntun adalah metode algoritma pencarian yang paling sederhana. Nama lain metode ini adalah linear search.
Algoritma pencarian beruntun adalah proses membandingkan setiap elemen larik satu per satu secara beruntun, mulai dari elemen pertama, sampai elemen yang dicari ditemukan, atau seluruh elemen sudah diperiksa.

Contoh :

·         Misalkan Elemen yang akan dicari adalah : 51

§  Contoh coding program misalkan elemen yang di cari adalah 51
#include<stdio.h>
int main ()
{
            int i;
            int nilai[9];
            nilai[0]=10;
            nilai[1]=31;
            nilai[2]=47;
            nilai[3]=89;
            nilai[4]=1;
            nilai[5]=51;
            nilai[6]=87;
            nilai[7]=90;
            nilai[8]=12;
            for(i=0;i<=8;i++)
            {
            if(nilai[i]==51)
            {
                        printf("nilai 51 ditemukan");
                       
            }else
            {
                        printf("nilai tidak ditemukan");
            }
            printf("\n");
}
return 0;
}




§  Contoh program lain

#include<stdio.h>
int main ()
{
            int nilai[5];nilai[0]=12;nilai[1]=51;nilai[2]=2;nilai[3]=34;nilai[4]=90;
            int nilai_yang_dicari=45;
            int i;
            int hasil=0;
            for (int i=0;i<=4;i++)
            {
                        if (nilai[i]==nilai_yang_dicari)
                        {
                                    hasil=i;
                        }
            }
                        printf("Nilai %d ditemukan di index ke %d",nilai_yang_dicari,hasil);
           
            return 0;
}




                              2.            Algoritma pencarian bagi dua
Terdapat metode pencarian pada data terurut yang paling efficient, yaitu metode pencarian bagidua atau pencarian biner (binary search). Metode ini digunakan untuk kebutuhan pencarian dengan waktu yang cepat. Prinsip pencarian dengan membagi data atas dua bagian mengilhami metode ini. Data yang disimpan di dalam larik harus sudah terurut.
Prinsip dari pencarian biner dapat dijelaskan sebagai berikut :
                                                      1.            Mula-mula diambil posisi awal 0 dan posisi akhir = N - 1, kemudian dicari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2.
                                                      2.            Kemudian data yang dicari dibandingkan dengan data tengah.
                                                      3.            Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah –1.
                                                      4.            Jika lebih besar, porses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah + 1.
                                                      5.            Demikian seterusnya sampai data tengah sama dengan yang dicari.


Misalkan yang dicari adalah 31
i+j/2 =1 + 7/2 = 4
 Apakah index yang ketujuh adalah 31 (!=)

Putuskan apakah mencari dari kiri atau kanan
Misal dari kanan

§  Contoh :
i=1;
J=4;
i+j/2
(1+4)/2=2


Putuskan Mencari dari kiri atau kanan
i=1;
J=2
1+2/2=1



SEQUENTIAL VS BINARY
SEQUENTIAL
BINARY
Algoritma Beruntun dapat digunakan baik untuk data yang belum teruru maupun untuk data yang sudah terurut.
Algoritma bagi dua hanya cocok digunakan untuk mencari data yang sudah terurut saja.

FUNGSI




A.    DEFINISI FUNGSI
Blok kode program yang memberikan / mengembalikan sebuah nilai dari tipe tertentu.
Contoh fungsi, seperti di matematika .

B.     PENDEFINISIAN FUNGSI
Function NamaFungsi (input deklarasi parameter)
{
Deklarasi
{
Deklarasi tipe data dan variabel
}
Algoritma
{
Badan fungsi
return ekspresi (pengembalian nilai yang dihasilkan fungsi
}

C.    CONTOH NOTASI ALGORITMIK
function F(input x: real) -> real
{
Mengembalikan nilai F(X)=2x2  + 5X -8
}
Deklarasi
{
}
Algoritma
{
Return 2*X*X+5*X-8
}

D.    PEMANGGILAN FUNGSI
Fungsi diakses dengan cara memanggil nama fungsi dengan parameter nya (jika ada)
Setiap fungsi menghasilkan nilai.
Ada 2 cara untuk menangani nilai tersebut yaitu :
1. Ditampung di dalam variabel yang bertipe data sama
2. Nilai yang dihasilkan oleh fungsi langsung dimanipulasi di program

E.     CONTOH FUNGSI

a.       Contoh pertama
#include <stdio.h>
int fungsi_f(int x);
main()
{
            int x;
            x=3;
            printf("Hasil dari fungsi f adalah %d",fungsi_f(x));
            return 0;
}
int fungsi_f(int x)
{
            return 2*x*x+5*x-8;
}



b.      Contoh kedua
#include <stdio.h>
float fungsi_luas_segitiga(int alas,int tinggi);
main()
{
     float luas;
     int alas;
     int tinggi;
     alas=3;
     tinggi=2;
     luas=fungsi_luas_segitiga(alas,tinggi);
     printf("Luas Segitiga adalah %f\n",luas);
     return 0;
}
float fungsi_luas_segitiga(int alas,int tinggi)
{
     return alas*tinggi/2;
}



c.       Contoh ketiga
#include <stdio.h>
bool Genap(int n);
main()
{
            Genap(3);       
            return 0;
}
bool Genap(int n)
{
            if (n%2==0)
            {
                        return printf("Genap");
            }
            else
            {
                        return printf("Ganjil");
            }                      
}



d.      Contoh keempat
#include <stdio.h>
int bulan (int x);
main ()
{
            int angka;
            printf ("masukkan angka :"); scanf ("%d",&angka);
            bulan (angka);
}
int bulan (int x)
{
switch (x)
{
case 1:
            return printf("januari");
            break;
case 2:
            return printf("februari");
            break;
case 3:
            return printf("maret");
            break;
case 4:
            return printf("april");
            break;
case 5:
            return printf("mei");
            break;
case 6:
            return printf("juni");
            break;
case 7:
            return printf("juli");
            break;
case 8:
            return printf("agustus");
            break;
case 9:
            return printf("september");
            break;
case 10:
            return printf("oktober");
            break;
case 11:
            return printf("november");
            break;
case 12:
            return printf("desember");
            break; 
default :
            return printf ("error");
            break;
}
return 0;
}


e.       Contoh kelima
#include<stdio.h>
float fungsi_KelilingLingkaran(float phi,float r);
main()
{
            float kelilinglingkaran;
            float phi;
            float r;
            printf("Masukkan phi :"); scanf("%f",&phi);
            printf("Masukkan r : "); scanf("%f",&r);
            kelilinglingkaran=fungsi_KelilingLingkaran(phi,r);
            printf("Keliling Lingkaran adalah %.2f\n",kelilinglingkaran);
            return 0;
}
float fungsi_KelilingLingkaran(float phi,float r)
{
            return 2*phi*r;
}



f.       Contoh keenam
#include<stdio.h>
float fungsi_luas_lingkaran(float phi,float r);
main()
{
   float luas;
   float phi,r;
   phi=3,14;
   r=8;
   luas=fungsi_luas_lingkaran(phi,r);
   printf("Luas Lingkaran adalah %.2f\n",luas);
   return 0;
}
float fungsi_luas_lingkaran(float phi,float r)
{
   return (phi*r*(r));
}