laporan praktikum resmi

Upload: mendem7

Post on 17-Oct-2015

89 views

Category:

Documents


1 download

TRANSCRIPT

  • LAPORAN PRAKTIKUM RESMI

    BAB V SEARCHING

    Disusun oleh :

    Iqbal Dwi Rusmadi

    201301056

    Dosenpengampu :

    Yosef Murya Kusuma Ardhana.S.T., M.Kom

    JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO

    PURWOKERTO 2014

  • 2

    BAB I

    TEORI DASAR

    1. PENGANTAR

    Pencarian (Searching) adalah tindakan untuk mendapatkan sesuatu data dalam kumpulan

    data.

    Menurut Tenenbaum dan Augentein , algoritma pencarian yaitu algoritma yang menerima

    sebuah argument X dan mencoba untuk menemukan sebuah rekaman yang memiliki kunci X.

    Sebagai contoh pencarian data keuangan perusahaan di dengan hari , bulan maupun tahunan,

    maka hasilnya adalah record yang berisi data keuangan perusahaan tersebut yang didalamnya

    kemungkinan berisi pendapatan , sisa kas , piutang , utang dan lain lain.

    2. PENCARIAN SEKUENSIAL(SEQUENTIAL SEARCH)

    Pencarian sekuensia(sequential search) adalah model pencarian yang paling sederhana

    yang dilakukan terhadap suatu kumpulan data.Nama lain dari metode pencarian

    sekuensial adalah pencarian lurus(linear search).

    Terdapat L yang merupakan larik (array) yang berisi n buah data

    (L[0],L[1],.,L[n-1]) dan k adalah data yang dicari.

    Rumus:L[i]=k

    I adalah bilangan index terkecil yang memenuhi kondisi 0 < k < n-1

    Contoh kasus:

    L [10 , 9 , 6 , 4 , 7 , 5 , 4 ,1]

    0 1 2 3 4 5 6 7 index

    Misalkan elemen data yang dicari adalah 4(untuk posisi pertama).

    Dalam hal ini k=4 dan k ditemukan diposisi index ke 3.

  • 3

    Subrutin (perintah) tersebut merupakan implementasi algoritma secara sekuensial , dalam

    hal ini menghasilkan nilai berupa:

    a. -1 jika data yang dicari tidak temukan.

    b. Bilangan antara 0 s/d n-1 (dengan n adalah jumlah elemen larik) jika data yang dicari

    telah ditemukan.

    3. PENCARIAN BINER(BINARY SEARCH)

    Pencarian biner merupakan algoritma yang digunakan untuk digunakan kebutuhan

    pencarian data dengan waktu yang cepat. Contoh pencarian data dengan algoritma biner

    dalam kehidupan sehari-hari yaitu ketika melakukan pencarian arti kata tertentu didalam

    kamus bahasa inggris. Kita tidak akan membuka kamus dari halaman awal sampai akhir

    satu persatu saat mencari arti kata tertentu, namun kita akan mencarinya dengan cara

    membelah atau membagi halaman kamus tersebut. Jika kata yang dicari tidak terletak di

    halaman pertengahan itu, maka kita dapat mencari dibagian belahan sebelah kiri atau

    belahan sebelah kanan dengan cara membagi dua belahan yang dimaksud.Begitu

    seterusnya sampai arti kata yang dicari ditemukan.

    Prinsip pencarian dengan menggunakan metode biner atau membagi menjadi dua bagian

    mengilhami algoritma pencarian bagi dua.Data yang tersimpan di dalam larik harus sudah

    dalam keadaan terurut.

    Misalkan index kiri adalah I dan index kanan adalah j.Pada mulanya diinisialisasi I

    dengan 1 dan j dengan n.

    Misalkan diberikan larik L dengan delapan buah elemen yang sudah terurut:

    L [10 , 9 , 7 , 6 , 5 , 4 , 3 ,1]

    i=1 2 3 4 5 6 7 j=8

    4. PENCARIAN PADA STRING

  • 4

    Pencarian pada string yaitu pencarian suatu huruf pada sebuah kalimat.Sebagai contoh

    terdapat kalimat hallo stikom yos sudarso, didalam kalimat tersebut yang dicari adalah

    huruf y.Maka yang akan ditampilkan posisi dari huruf y tersebut yaitu diposisi 13.

    BAB II

  • 5

    PENJELASAN PROGRAM

    1. LatihanPraktikum

    Pada bab ini akan membahas tentang listing program pada bagian modul yang telah digunakan

    untuk latihan pada pertemuan ketiga. Latihan yang dilakukan mencakup pada Listing Program

    Praktikum 5.1.cpp, Listing Program 5.2.cpp,Listing Program 5.3.cpp

    Listing Program 5.1

    /*

    * program praktikum 5.1.cpp

    *

    * Created on: 4 Apr 2014

    * Author: BLACK

    */

    #include

    using namespace std;

    int cari(int data[], int n , int k)

    {

    int posisi,i,ketemu;

    if (n

  • 6

    int dicari=4;

    cout

  • 7

    Hasil output dari Program 5.1 adalah sebagai berikut :

    Penjelasan listing program

    #include adalah baris preprocessor yang digunakan untuk melampirkan file

    header iostream ketika di compile dan merupakan salah satu file header yang salah satu

    fungsinya untuk menjalankan perintah cout.

    ; untuk mengakhiri suatu pernyataan.

    using namespace std; merupakan baris preprocessor dan salah satu file header yang

    berfungsi untuk menahan tampilan layar.

    int cari(int data[], int n, int k) ini merupakan tipe data integer cari yang

    mencakup tipe data integer baru yaitu integer data, n dan k.

    { untuk menunjukkan fungsi dari tipe data diatas dimulai.

    int posisi, i, ketemu; ini merupakan tipe data integer posisi, i dan ketemu.

    if(n

  • 8

    { untuk menunjukkan fungsi dari tipe data diatas dimulai.

    ketemu=0; ketemu sama dengan nol.

    i=1; i sama dengan 1.

    while((i

  • 9

    /*

    * program praktikum 5.2.cpp

    *

    * Created on: 4 Apr 2014

    * Author: BLACK

    */

    #include

    using namespace std;

    int caribiner(int data[],int n,int k)

    {

    int ada, atas, bawah, tengah, posisi;

    ada=0;

    bawah=0;

    atas=n-1;

    while (atas>=bawah)

    {

    tengah=(atas+bawah)/2;

    if(k>data[tengah])

    bawah=tengah+1;

    else

    if(k

  • 10

    Hasil output dari Program 5.2 adalah sebagai berikut :

  • 11

    Penjelasan listing program

    #include adalah baris preprocessor yang digunakan untuk melampirkan file

    header iostream ketika di compile dan merupakan salah satu file header yang salah satu

    fungsinya untuk menjalankan perintah cout.

    ; untuk mengakhiri suatu pernyataan.

    using namespace std; merupakan baris preprocessor dan salah satu file header yang

    berfungsi untuk menahan tampilan layar.

    int caribiner(int data[], int n, int k) ini merupakan tipe data integer cari yang

    mencakup tipe data integer baru yaitu integer data, n dan k.

    { untuk menunjukkan fungsi dari tipe data diatas dimulai.

    int ada, atas, bawah, tengah, posisi; ini merupakan tipe data integer ada, atas,

    bawah, tengah, dan posisi.

    ada=0; ada sama dengan 0.

    bawah=0; bawah sama dengan 0.

    atas=n-1; atas sama dengan n-1.

    while (atas>=bawah) ketika atas lebih dari sama dengan bawah.

  • 12

    { untuk menunjukkan fungsi dari tipe data diatas dimulai.

    tengah=(atas+bawah)/2; tengah sama dengan atas+bawah dibagi 2.

    if(k>data[tengah]) jika k lebih dari data tengah.

    bawah=tengah+1; bawah sama dengan tengah+1.

    Else merupakan perintah jika tidak.

    if(k

  • 13

    } untuk menunjukkan fungsi main berakhir.

    Listing 5.3.cpp

    /*

    * program praktikum 5.3.cpp

    *

    * Created on: 4 Apr 2014

    * Author: BLACK

    */

    #include

    #include "cstring"

    using namespace std;

    int string_kar(char st[], char k)

    {

    int i, posisi, panjang;

    i=0;

    posisi=-1;

    panjang=strlen(st);

    while ((i

  • 14

    Output Program 5.3.cpp

    Hasil output dari Program 5.3.cpp adalah sebagai berikut :

  • 15

    #include adalah baris preprocessor yang digunakan untuk melampirkan file

    header iostream ketika di compile dan merupakan salah satu file header yang salah satu

    fungsinya untuk menjalankan perintah cout.

    ; untuk mengakhiri suatu pernyataan.

    using namespace std; merupakan baris preprocessor dan salah satu file header yang

    berfungsi untuk menahan tampilan layar.

    int string_kar(char st[], char k) ini merupakan tipe data integer string_kar yang

    mencakup tipe data karakter st dan karakter k.

    { untuk menunjukkan fungsi dari tipe data diatas dimulai.

    int i, posisi, panjang; ini merupakan tipe data integer i, posisi, dan panjang.

    i=0; i sama dengan 0.

    posisi = -1; posisi sama dengan -1.

    panjang = strlen(st); maksudnya adalah panjang sama dengan strlen ( gabungan dari

    karakter yang panjang ).

    while((i

  • 16

    cout

  • 17

    }

    ul main()

    {

    ul data[8]={10, 9, 6, 4, 7, 5, 4, 1};

    ul dicari;

    cout

  • 18

    { untuk menunjukkan fungsi dari tipe data diatas dimulai.

    ketemu=0; ketemu sama dengan nol.

    i=1; i sama dengan 1.

    while((i

  • 19

    kembali ke layar dan menginputkan cari(data,8,angka.dicari) lalu \n untuk mengganti

    baris.

    return 0; digunakan untuk menampilkan hasil ke layar dan mengembalikan kepertintah

    awal.

    } untuk menunjukkan fungsi main berakhir.

    Menggunakan tipe data struct

    //=====================================================================

    =======

    // Name : searching.cpp

    // Author : searching

    // Version :

    // Copyright : 2014

    // Description : Hello World in C++, Ansi-style

    //=====================================================================

    =======

    #include

    using namespace std;

    int cari(int data[], int n , int k)

    {

    int posisi,i,ketemu;

    if (n

  • 20

    int main()

    {

    int data[8]={10,9,6,4,7,5,4,1};

    lol.dicari;

    cout

  • 21

    i=1; i sama dengan 1.

    while((i

  • 22

    Menggunakan tipe data abstrak typedef dan struct

    //===========================================================================

    =

    // Name : searching.cpp

    // Author : searching

    // Version :

    // Copyright : 2014

    // Description : Hello World in C++, Ansi-style

    //===========================================================================

    =

    #include

    using namespace std;

    int cari(int data[], int n , int k)

    {

    int posisi,i,ketemu;

    if (n

  • 23

    cout

  • 24

    if(data[i] == k) jika data i sama dengan k.

    { untuk menunjukkan fungsi dari tipe data diatas dimulai.

    posisi = i; posisi sama dengan i.

    ketemu = i; ketemu sama dengan i.

    } untuk menunjukkan fungsi dari tipe data diatas diakhiri.

    Else merupakan perintah jika tidak.

    i++; ini merupakan rumus.

    if(!ketemu) jika tidak ketemu.

    posisi=-1; posisi sama dengan -1.

    } untuk menunjukkan fungsi dari tipe data diatas diakhiri.

    return posisi; digunakan untuk menampilkan hasil ke layar dan mengembalikan

    kepertintah awal.

    } untuk menunjukkan fungsi dari tipe data diatas diakhiri.

    typedef struct spirit ini merupakan gabungan dari tipe data typedef dan tipe data struct

    dengan variable spirit.

    { untuk menunjukkan fungsi dari tipe data diatas dimulai.

    int yakin; merupakan tipe data integer dengan variable yakin.

    }; untuk menunjukkan fungsi dari tipe data diatas diakhiri.

    int main (){ adalah fungsi atau method pokok yang akan memulai menjalankan sebuah

    program. { untuk menunjukkan dimana fungsi main di mulai.

    spirit selalu; spirit merupakan variable lama dan selanjutnya akan digantikan dengan

    variable baru yaitu selalu.

    int data[8]={10,9,6,4,7,5,4,1}; ini merupakan tipe data integer data berjumlah 8

    sama dengan 10, 9, 6, 4, 7, 5, 4, 1.

    selalu.yakin=5; ini merupakan sebuah typedef dan struct untuk mencari 5.

    cout

  • 25

    return 0; digunakan untuk menampilkan hasil ke layar dan mengembalikan kepertintah

    awal.

    } untuk menunjukkan fungsi main berakhir.

    Program Praktikum 5.1

    Menggunakan tipe data abstrak struct

    /*

    * loo.cpp

    *

    * Created on: Apr 21, 2014

    * Author: STIKOM19

    */

    //=====================================================================

    =======

    // Name : searching.cpp

    // Author : searching

    // Version :

    // Copyright : 2014

    // Description : Hello World in C++, Ansi-style

    //=====================================================================

    =======

    #include

    using namespace std;

    int cari(int data[],int n,int k)

    {

    int ada, atas, bawah, tengah, posisi;

    ada=0;

    bawah=0;

    atas=n-1;

    while(atas>=bawah)

    {

    tengah=(atas+bawah)/2;

  • 26

    if(k>data[tengah])

    bawah=tengah+1;

    else

    if(k

  • 27

    #include adalah baris preprocessor yang digunakan untuk melampirkan file

    header iostream ketika di compile dan merupakan salah satu file header yang salah satu

    fungsinya untuk menjalankan perintah cout.

    ; untuk mengakhiri suatu pernyataan.

    using namespace std; merupakan baris preprocessor dan salah satu file header yang

    berfungsi untuk menahan tampilan layar.

    int caribiner(int data[], int n, int k) ini merupakan tipe data integer cari yang

    mencakup tipe data integer baru yaitu integer data, n dan k.

    { untuk menunjukkan fungsi dari tipe data diatas dimulai.

    int ada, atas, bawah, tengah, posisi; ini merupakan tipe data integer ada, atas,

    bawah, tengah, dan posisi.

    ada=0; ada sama dengan 0.

    bawah=0; bawah sama dengan 0.

    atas=n-1; atas sama dengan n-1.

    while (atas>=bawah) ketika atas lebih dari sama dengan bawah.

    { untuk menunjukkan fungsi dari tipe data diatas dimulai.

    tengah=(atas+bawah)/2; tengah sama dengan atas+bawah dibagi 2.

    if(k>data[tengah]) jika k lebih dari data tengah.

    bawah=tengah+1; bawah sama dengan tengah+1.

    Else merupakan perintah jika tidak.

    if(k

  • 28

    posisi=-1; posisi sama dengan -1.

    return posisi; digunakan untuk menampilkan hasil ke layar dan mengembalikan

    kepertintah awal.

    } untuk menunjukkan fungsi dari tipe data diatas diakhiri.

    int main() { adalah fungsi atau method pokok yang akan memulai menjalankan sebuah

    program. { untuk menunjukkan dimana fungsi main di mulai.

    struct ayoo digunakan untuk wadah dari elemen ayoo.

    { untuk menunjukkan fungsi dari tipe data diatas dimulai.

    int fokus; merupakan tipe data integer dengan variable focus.

    }; untuk menunjukkan fungsi dari tipe data diatas diakhiri.

    ayoo ayo; ayoo merupakan variable lama dan digantikan oleh ayo sebagai variable baru.

    int data[]={10,9,7,6,5,4,3,1}; ini merupakan tipe data integer data sama dengan 10,

    9, 7, 6, 5, 4, 3, 1.

    ayo.fokus=6; ini merupakan sebuah struct untuk fokus sama dengan 6.

    cout

  • 29

    // Description : Hello World in C++, Ansi-style

    //=====================================================================

    =======

    #include

    using namespace std;

    typedef int lol;

    lol caribiner(lol data[],lol n,lol k)

    {

    lol ada, atas, bawah, tengah, posisi;

    ada=0;

    bawah=0;

    atas=n-1;

    while(atas>=bawah)

    {

    tengah=(atas+bawah)/2;

    if(k>data[tengah])

    bawah=tengah+1;

    else

    if(k

  • 30

    Output

    Penjelasan listing program

    #include adalah baris preprocessor yang digunakan untuk melampirkan file

    header iostream ketika di compile dan merupakan salah satu file header yang salah satu

    fungsinya untuk menjalankan perintah cout.

    ; untuk mengakhiri suatu pernyataan.

    using namespace std; merupakan baris preprocessor dan salah satu file header yang

    berfungsi untuk menahan tampilan layar.

    typedef int biner; sebagai nama alias bertipe data integer dan variable biner.

    biner caribiner (biner data[],biner n, biner k) ini merupakan variable dari

    integer tadi dan caribiner merupakan variable baru yang mencakup tipe data coba yang baru

    yaitu biner data[],biner n, biner k.

    { untuk menunjukkan fungsi dari tipe data diatas dimulai.

    biner ada, atas, bawah, tengah, posisi; ini merupakan variable biner bertipe data

    integer ada, atas, bawah, tengah, posisi.

    ada=0; ada sama dengan 0.

    bawah=0; bawah sama dengan 0.

    atas=n-1; atas sama dengan n-1.

    while (atas>=bawah) ketika atas lebih dari sama dengan bawah.

    { untuk menunjukkan fungsi dari tipe data diatas dimulai.

    tengah=(atas+bawah)/2; tengah sama dengan atas+bawah dibagi 2.

    if(k>data[tengah]) jika k lebih dari data tengah.

  • 31

    bawah=tengah+1; bawah sama dengan tengah+1.

    Else merupakan perintah jika tidak.

    if(k

  • 32

    return 0; digunakan untuk menampilkan hasil ke layar dan mengembalikan kepertintah

    awal.

    } untuk menunjukkan fungsi main berakhir.

    Menggunakan tipe data abstrak typedef dan struct

    /*

    * loo.cpp

    *

    * Created on: Apr 21, 2014

    * Author: STIKOM19

    */

    //=====================================================================

    =======

    // Name : searching.cpp

    // Author : searching

    // Version :

    // Copyright : 2014

    // Description : Hello World in C++, Ansi-style

    //=====================================================================

    =======

    #include

    using namespace std;

    int cari(int data[],int n,int k)

    {

    int ada, atas, bawah, tengah, posisi;

    ada=0;

    bawah=0;

    atas=n-1;

    while(atas>=bawah)

    {

    tengah=(atas+bawah)/2;

    if(k>data[tengah])

    bawah=tengah+1;

    else

    if(k

  • 33

    typedef struct dicari

    {

    int dicari;

    };

    int main()

    {

    struct dicari aja;

    int data[]={10, 9, 7, 6, 5 ,4, 3, 1};

    aja.dicari;

    cout

  • 34

    int ada, atas, bawah, tengah, posisi; ini merupakan tipe data integer ada, atas,

    bawah, tengah, dan posisi.

    ada=0; ada sama dengan 0.

    bawah=0; bawah sama dengan 0.

    atas=n-1; atas sama dengan n-1.

    while (atas>=bawah) ketika atas lebih dari sama dengan bawah.

    { untuk menunjukkan fungsi dari tipe data diatas dimulai.

    tengah=(atas+bawah)/2; tengah sama dengan atas+bawah dibagi 2.

    if(k>data[tengah]) jika k lebih dari data tengah.

    bawah=tengah+1; bawah sama dengan tengah+1.

    Else merupakan perintah jika tidak.

    if(k

  • 35

    int main()adalah fungsi atau method pokok yang akan memulai menjalankan sebuah

    program.

    { untuk menunjukkan dimana fungsi main di mulai.

    gabung cari; gabung merupakan variable yang lama dan selanjutnya akan digantikan oleh

    variable yang baru yaitu cari.

    int data[]={10,9,7,6,5,4,3,1}; ini merupakan integer data sama dengan

    10,9,7,6,5,4,3,1.

    cari.pasti=6; cari.pasti (yang dicari) sama dengan 6.

    cout

  • 36

    if(st[i]==k)

    posisi=i;

    i++;

    }

    return posisi;

    }

    struct zoo

    {

    char dicari;

    };

    int main()

    {

    struct zoo aja;

    char kalimat[]="Hallo stikom yos sudarso";

    aja.dicari;

    cout

  • 37

    int string_kar(char st[], char k) ini merupakan tipe data integer string_kar yang

    mencakup tipe data karakter st dan karakter k.

    { untuk menunjukkan fungsi dari tipe data diatas dimulai.

    int i, posisi, panjang; ini merupakan tipe data integer i, posisi, dan panjang.

    i=0; i sama dengan 0.

    posisi = -1; posisi sama dengan -1.

    panjang = strlen(st); maksudnya adalah panjang sama dengan strlen ( gabungan dari

    karakter yang panjang ).

    while((i

  • 38

    cout

  • 39

    cout

  • 40

    while((i

  • 41

    *

    * Created on: Apr 21, 2014

    * Author: STIKOM20

    */

    #include

    #include

    using namespace std;

    int string_kar(char st[], char k)

    {

    int i, posisi,panjang;

    i=0;

    posisi=-1;

    panjang=strlen(st);

    while((i

  • 42

    struct zoo aja;

    char kalimat[]="Hallo stikom yos sudarso";

    aja.dicari;

    cout

  • 43

    { untuk menunjukkan fungsi dari tipe data diatas dimulai.

    typedef struct ini ini merupakan gabungan dari tipe data typedef dan tipe data struct

    dengan variable ini.

    { untuk menunjukkan fungsi dari tipe data diatas dimulai.

    int i, posisi, panjang; ini merupakan tipe data integer i, posisi dan panjang.

    }; untuk menunjukkan fungsi dari tipe data diatas diakhiri.

    ini dia; ini merupakan variable lama dan dia merupakan variable baru.

    dia.i=0; dia.i sama dengan 0.

    dia.posisi = -1; dia.posisi sama dengan -1.

    dia.panjang = strlen(st); maksudnya adalah dia.panjang sama dengan strlen (

    gabungan dari karakter yang panjang ).

    while((dia.i

  • 44

    kalimat dan memunculkan : kembali ke layar dan menginputkan

    string_k(kalimat,dicari) lalu \n untuk mengganti baris.

    return 0; digunakan untuk menampilkan hasil ke layar dan mengembalikan kepertintah

    awal.

    } untuk menunjukkan fungsi main berakhir.

    BAB III

    KESIMPULAN

    Pencarian (Searching) adalah tindakan untuk mendapatkan sesuatu data dalam kumpulan

    data. Untuk keperluan pencarian data,terdapat beraga, algoritma pencarian(search

    algorithm).

    Metode Pencarian Data:

    a.Pencarian Sekuensial(sequential search)

    b.Pencarian biner(binary search)

    DAFTAR PUSTAKA

    Ardhana.YM Kusuma.2013.Struktur Data dalam ilustrasi Eclipse Indigo C++.Yogyakarta:CAPS.