Algoritma Dan Pemrograman 2 Pertemuan Ke

Embed Size (px)

Citation preview

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    1/120

    Algoritma dan Pemrograman 2

    Pertemuan Ke-1

    Array (Larik)

    Disusun Oleh :

    M u k i d i n, S.Kom.

    Jurusan Teknik Informatika

    STIKOM POLTEK CIREBON

    2009 

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    2/120

    Algoritma dan Pemrograman 2

    Judul Materi  : Array (Larik)

    Deskripsi Materi  : Materi ini mencakup subpokok bahasan arraydimensi satu, dimensi dua, perhitungan matriks, dan pengenalan dimensi n dengan

    menggunakan tipe data array

    Tujuan Instruksional Khusus  :

    1.  Mendefinisikan dan membuat matriks dengan menggunakan tipe data array

    2.  Mengimplementasikan tipe data array untuk matrik3.  Menggunakan definisi matriks untuk perhitungan matriks

    Referensi  :

    •  Buku Teks

    Munir, Rinaldi (2005),  Algoritma dan Pemrograman dalam Bahasa Pascal danC , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.

    Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,Yogyakarta

    •  Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.

    Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.

    Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    3/120

    ARRAY (LARIK)

    PENDAHULUAN

    Array atau biasa disebut larik adalah koleksi data dimana setiap elemen memakai

    nama yang sama dan bertipe sama dan setiap elemen diakses dengan membedakan indeks

    arraynya.

    ISI

    A.  Deklarasi Array

    Variabel array dideklarasikan dengan mencantumkan tipe dan nama variable yang

    diikuti dengan banyaknya lokasi memori yang ingin dibuat.

    Contoh :

    int c[5];

    C++ secara otomatis akan menyediakan lokasi memori sesuai dengan yang

    dideklarasikan, dimana nomor indeks selalu dimulai dari 0.

    int c[5] = {-12, 0, 20, 85, 1551};

     Nilai suatu variabel array dapat juga diinisialisasi secara langsung seperti yang

    terdapat di dalam tanda kurung kurawal pada saat deklarasi di atas.

    int x[5] = [0];

    Deklarasi variable array sekaligus mengisi setiap lokasi memorinya dengan

    nilai 0.

    B.  Array Dimensi Satu

    Bentuknya (Pseudocode) :

    Bentuknya (C++):

    nnaammaa _  _ vvaar r  :: aar r r r aayy [[r r aannggeeiinnddeek k ss]] oof f  ttii p pee 

    tt ii ppee  nnaammaa _  _ vvaarr [[ uukkuurr aann]] ;;  

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    4/120

     

    Dengan :tipe : menyatakan jenis elemen array (int, char dan lain-lain)

    rangeindeks : menyatakan indeks awal sampai demgan indeks akhir dari var

    array yang dibuat

    ukuran : menyatakan jumlah maksimal elemen array

    Contoh :Algoritma :

    Algoritma PangkatDua

    Deklarasi

    square : array [1..100] of integer 

      i,k : integer

    Deskripsifor i  1 to 10 do

      k i + 1

    square[i] k * k

    output(”Pangkat dari ”,k,” adalah ”, square[i])

    endfor

    Program C++ :

    #i ncl ude

    mai n( ){

    i nt squar e[ 100] ;i nt i , k;

    f or ( i =0; i

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    5/120

    Pangkat dari 7 adalah 49

    Pangkat dari 8 adalah 64Pangkat dari 9 adalah 81

    Pangkat dari 10 adalah 100

    C.  Array Dimensi Dua

    Array dua dimensi merupakan array yang terdiri dari m buah baris dan n buah kolom.Bentuknya dapat berupa matriks atau tabel.

    Deklarasi array (Pseudocode) :

    nnaammaa _  _ vvaar r  :: aar r r r aayy [[r r aannggeeiinnddeek k ss11,,r r aannggeeiinnddeek k ss22]] oof f  ttii p pee 

    Deklarasi array (C++):

    tt ii ppee  nnaammaa _  _ vvaarr [[ uukkuurr aann11]] [[ uukkuurr aann22]] ;;  

    Contoh :

    Sebuah matrik A berukuran 2x3 dapat dideklarasikan sebagai berikut :

    Algoritma :

    a : array [1..2,1..3] of integer

    a1  11

    a2  7

    a3  4

    a4  12

    a5  3

    a6  9

    C++ :

    i nt a[ 2] [ 3] = {{11, 7, 4}, {12, 3, 9}};

    yang akan menempati lokasi memori dengan susunan berikut :

    0 1 2

    0 11 7 4

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    6/120

    1 12 3 9

    Dan definisi variabel untuk setiap elemen tersebut adalah :

    0 1 2

    0 a[0][0] a[0][1] a[0][2]

    1 a[1][0] a[1][1] a[1][2]

    Contoh Program 1 :

    #i ncl udemai n( ){

    i nt A[ 3] [ 3] ={{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};i nt i , j ;

    f or ( i =0; i

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    7/120

    { i nt i , j ;

    f or ( i =0; i

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    8/120

      f or ( i =0; i

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    9/120

    Algoritma dan Pemrograman 2

    Pertemuan Ke-2

    Record/Struct dan Array Of Record

    Disusun Oleh :

    M u k i d i n, S.Kom.

    Jurusan Teknik Informatika

    STIKOM POLTEK CIREBON

    2009 

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    10/120

    Algoritma dan Pemrograman 2

    Judul Materi  : Record/Struct dan Array Of Record

    Deskripsi Materi  : Materi ini membahas tipe data terstrukturrecord/struct dan penggunaannya dengan tipe data terstruktur array

    Tujuan Instruksional Khusus  :

    1.  Mendefinisikan dan menggunakan tipe data record/struktur

    2.  Mendeskripsikan tipe data record

    Referensi  :

    •  Buku TeksMunir, Rinaldi (2005),  Algoritma dan Pemrograman dalam Bahasa Pascal dan

    C , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.

    Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,Yogyakarta

    •  Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.

    Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.

    Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.

    Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    11/120

    RECORD/STRUCT DAN ARRAY OF RECORD

    PENDAHULUAN

    Seperti halnya Array, Record/Struct mempunyai sejumlah elemen yang disebut

    field. Kalau semua elemen array harus mempunyai tipe data yang sama, maka tiap-tiap

    elemen pada Record/Struct dapat memiliki tipe data yang berbeda.

    ISI

    A. RECORD/STRUCT

    Bentuk umum deklarasi Record/Struct

    Algoritma :

    namaVar : record

    < namaField1 : tipeField1 ,

    namaField2 : tipeField2 ,

    … …

    namaFieldn : tipeFieldn ,

    >

    Atau namavar dapat dipisah dari deklarasi tiperecordnya, sehingga menjadi

    Type namaTipeRecord : record

    < namaField1 : tipeField1 ,

    namaField2 : tipeField2 ,

    … …

    namaFieldn : tipeFieldn ,

    >

    namaVar : namaTipeRecord

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    12/120

     

    Bahasa C++ :

    st r uct namaTi peSt r uct

    {

    t i peFi el d1 namaFi el d1;

    t i peFi el d2 namaFi el d2;

    … …

      t i peFi el dn  namaFi el dn;

    } namaVar ;

    Atau namavar dapat dipisah dari deklarasi tiperecordnya, sehingga menjadi :

    t ypedef st r uct

    {

    t i pef i el d1 namaf i el d1;

    t i pef i el d2 namaf i el d2;

    … …

      t i pef i el dn namaf i el dn;

    } namat i pest r uct ;

    namat i pest r uct namavar ;

    Catatan : namaVar bisa lebih dari satu

    Contoh record/struct :

    Algoritma :

    Deklarasi

    Type Mahasiswa : Record < NIM : integer,

     Nama : string,

    KodeMK : string,

     NilaiHuruf : char >

    Mhs1,Mhs2 : Mahasiswa

    Bahasa C++ :

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    13/120

      / / dekl ar as i

    t ypedef st r uct { i nt NI M;

    char Nama[ 20] ;

    char KodeMK[ 10] ;

    char Ni l ai Hur uf ;} Mahasi swa;

    Mahasi swa Mhs1, Mhs2;  

    Cara mengakses elemen record/structur :

    namavar.namafield

    Contoh Program :

    #i ncl ude

    #i ncl ude

    t ypedef st r uct

    { i nt t anggal , bul an, t ahun;

    } dat a_t anggal ;

    t ypedef st r uct

    { char nama[ 30] ;

    dat a_t anggal t gl _ l ahi r ;

    } dat a_r ekan;

    dat a_r ekan i nf o_r ekan;

    mai n( )

    {

    st r cpy( i nf o_r ekan. nama, "Hani f ") ;

    i nf o_r ekan. t gl _l ahi r . t anggal = 30;

    i nf o_r ekan. t gl _l ahi r . bul an = 4;

    i nf o_r ekan. t gl _l ahi r . t ahun = 2002;

    cout

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    14/120

    Contoh Variasi program Cara Mendeklarasikan Structur :

    #i ncl ude

    #i ncl ude

    mai n( )

    {

    st r uct dat a_t anggal

    { i nt t anggal , bul an, t ahun; };

    st r uct dat a_r ekan

    { char nama[ 30] ;

    str uct dat a_t anggal t gl _ l ahi r ;

    };

    st r uct dat a_r ekan i nf o_r ekan;

    st r cpy( i nf o_r ekan. nama, "Hani f ") ;

    i nf o_r ekan. t gl _l ahi r . t anggal = 30;

    i nf o_r ekan. t gl _l ahi r . bul an = 4;

    i nf o_r ekan. t gl _l ahi r . t ahun = 2002;

    cout

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    15/120

      Bahasa C++ :

    st r uct namaTi peSt r uct

    {

    t i peFi el d1 namaFi el d1;

    t i peFi el d2 namaFi el d2;

    … …

      t i peFi el dn namaFi el dn;

    } namaVar ;

    namaTi peSt r uct namaVar [ ukur an] ;  

    PENUTUP

    Record merupakan suatu tipe data terstruktur yang dapat menampung data field

     bertipe berbeda. Tipe ini dapat dipadukan dengan tipe data terstruktur lainnya seperti

    array. 

    SOAL-SOAL

    Buat program untuk menginput dan menampilkan 5 data mahasiswa matakuliah

    Algoritma dan Pemrograman 2 dengan field-field NoMhs, Nama, Kelas, NilaiAngka dan

     NilaiHuruf, dengan ketentuan NilaiHuruf tidak diinputkan tetapi berasal dari NilaiAngka.

    Range NilaiHuruf : 0

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    16/120

    Algoritma dan Pemrograman 2

    Pertemuan Ke-3

     Reccurence Relation (Relasi Berulang)

    Disusun Oleh :

    M u k i d i n, S.Kom.

    Jurusan Teknik Informatika

    STIKOM POLTEK CIREBON

    2009 

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    17/120

    Algoritma dan Pemrograman 2

    Judul Materi  : Reccurence Relation (Relasi Berulang)

    Deskripsi Materi  : Materi ini membahas pemakaian skema iterasiuntuk Persoalan Deret yang rumusnya dapat dinyatakan dalam hubungan/relasi

     berulang

    Tujuan Instruksional Khusus  :

    1. Memahami algoritma hubungan berulang

    2. Menjelaskan hubungan berulang dalam algoritma menggunakan sintak perulangan3. Mengimplementasikan algoritma berulang

    Referensi  :

    •  Buku Teks

    Munir, Rinaldi (2005),  Algoritma dan Pemrograman dalam Bahasa Pascal danC , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.

    Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,Yogyakarta

    •  Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.

    Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.

    Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    18/120

     RECCURENCE RELATION (RELASI BERULANG)

    PENDAHULUAN

    Pemakaian skema iterasi untuk Persoalan Deret dapat dinyatakan dalam rumus

    hubungan/relasi berulang, yaitu menyangkut masalah ketelitian penyajian bilangan pada

    komputer.

    ISI

    Contoh :

    Barisan : 1,2,3,4,...,n3,5,7,9,...,n

    Deret : 1 + 2 + 3 + 4 + ... + n

    3 + 5 + 7 + 9 + ... + n

    Contoh1 :

    1,2,3,4,5,...,n

    Algoritma Contoh1

    Deklarasi

    i,n : integerDeskripsi

    Input(n)

    i1s0

    while (i

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    19/120

      i1

    s0while (i

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    20/120

      s +=xpr i nt f ( “%d+”, x) ;i ++;

    }pr i nt f ( “j uml ah der et s = %d “, s) ;

    }

    Contoh4 :

    S=3+5+7+9+...+15

    i 1 2 3 4 5 … n

    f(i) 3 5 7 9 11 2n+1

     

     f(i) = 2*i +1

    x = 2*i +1s = s + (2*i +1)

    s = s + x

    Contoh5 :

    S=2+5+10+17+26+...+101

    i 1 2 3 4 5 … n

    f(i) 2 5 10 17 26 (n*n)+1

      f(i) = i*i +1

    x = i2 +1

    s = s + (i2 +1)

    s = s + x

    Contoh6 :

    S=-3+6-9+12-15+18

    i 1 2 3 4 5 6 N

    f(i) -3 6 -9 12 -15 18 3*n*(-1)n

      f(i) = 3*i *(-1)

    i

     

    atau

    untuk ganjil  i mod 2 =1

    t = -1

    untuk genap i mod 2 = 0t = 1 

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    21/120

    Algoritma Contoh6a

    Deklarasii,s,x,t : integer

    Deskripsi

    i1

    x0s0

    t1

    while (i

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    22/120

    Contoh 8 :

    S = 1/2-1/4+1/8-1/16+...-...

    Algoritma HitungDeret7

    Deklarasi

    i,p,q,n : integerS : real

    Deskripsi

    i1 p1

    q2

    S0.0while (i

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    23/120

    Algoritma dan Pemrograman 2

    Pertemuan Ke-4

    Rekursif

    Disusun Oleh :

    M u k i d i n, S.Kom.

    Jurusan Teknik Informatika

    STIKOM POLTEK CIREBON

    2009 

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    24/120

    Algoritma dan Pemrograman 2

    Judul Materi  : Rekursif

    Deskripsi Materi  : Materi ini membahas bentuk algoritma rekursifdan penggunaan rekursif untuk menyelesaikan perosalan-persoalan iterasi

    Tujuan Instruksional Khusus  :

    1.  Memahami algoritma rekursif

    2.  Menjelaskan bentuk algoritma rekursif

    3.  Mendeskripsikan parameter-parameter pada algoritma rekursif4.  Membandingkan algoritma rekursif dengan algoritma non rekursif

    Referensi  :

    •  Buku Teks

    Munir, Rinaldi (2005),  Algoritma dan Pemrograman dalam Bahasa Pascal danC , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.

    Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,Yogyakarta

    •  Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.

    Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.

    Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    25/120

    REKURSIF

    PENDAHULUAN

    Rekursif merupakan alat untuk memecahkan masalah dalam suatu fungsi atau

     procedure yang memanggil dirinya sendiri. Definisi menurut Niclaus Wirth : “ An object

    is said be recursive if it partially consist or is defines in terms of itself”

    Mengapa kita memerlukan rekursif? Karena ada beberapa kasus yang akan jauh

    lebih mudah diselesaikan jika menggunakan rekursif.

    Secara teori semua masalah yang dapat dipecahkan dengan rekursif dapat dipecahkan

    dengan tanpa rekursif. Meskipun dalam kenyataa ini, rekursif sangat bermanfaat sebab

     beberapa masalah mempunyai solusi yang sulit tanpa menggunakan rekursif.

    Penggunaan rekursif kadang-kadang harus mengorbankan efisiensi dan kecepatan,

    disamping itu ada masalah yang sering muncul dalam rekursif, yaitu eksekusi yang tidak

     pernah berhenti, akibtanya memori tumpukan akan habis dan computer hank.

    Pada dasarnya rekursif sering digunakan dalam perhitungan matematika, sebagai

    contoh pertimbangan fungsi factorial dan juga bilangan Fibonacci

    ISI

    A. Faktorial

    Salah satu contoh yang sering digunakan untuk menjelaskan rekursif adalah

    fungsi fakorial. Fungsi factorial dari bilangan bulat positif n didefinisikan sebagai

     berikut:

    n!= n.(n-1)!, jika n>1

    n!= 1, jika n=0, 1

    contoh :

    3!= 3. 2!

    3!= 3. 2. 1!

    3!= 3. 2. 1

    3!= 6

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    26/120

    Cara lain untuk mendefiniskan fungsi tersebut sebagai berikut:

      Dalam definisi ini, nilai 3! dieksprsikan sebagai 3 x 2!, dengan kata lain untuk

    menghitung factorial 3, kita harus menghitung factorial lain yaitu factorial 2.

      Jika definisi nilai 2!=2 x 1!

      Factorial 1 didefinisikan dengan nilai 1.

      Jadi jika factorial 3!= 3 x 2 x 1, yang mana secara pasti mempunyai nilai sama

    yang diperoleh dari definisi tanpa rekursif.

    Kita dapat menuliskan fungsi penghitung factorial seperti dibawah ini,

    Algoritma :

    Function Faktorial (input n: integer)   integerDeklarasi{tidak ada}

    Deskripsi

    if (n = 0) or (n = 1) thenreturn (1)

    else

    return (n * Faktorial(n-1))

    endif

    Bahasa C++ :

    1.   i nt Fakt or i al ( i nt n)2.   {3.   i f ( ( n == 0) | | ( n == 1 ) )4.   r et ur n ( 1) ;5.   el se6.   r et ur n ( n * Fakt or i al ( n- 1) ) ;7.   }

    •  Pada baris 3 dari fungsi diatas,

    nilai n dicek sama dengan 0 atau 1,

     jika ya, maka fungsi mengembalikan nilai 1 {baris 4},

     jika tidak, fungsi mengembalikan nilai n * Faktorial (n -1)

    {baris 6 }

    •  disinilah letak proses rekursif itu, perhatikan fungsi factorial ini memanggil

    dirinya sendiri tetapi dengan parameter (n-1)

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    27/120

    B. Bilangan Fibonacci

    Fungsi lain yang dapat diubah kebentuk rekursif adalah perhitungan Fibonacci. Bilangan

    Fibonacci dapat didefinisikan sebagai berikut:

    f n = f n-1 + f n-2 untuk n>1

    f 0 = 0

    f 1 = 1

     berikut ini adalah barisan bilangan Fibonacci mulai dari n=1

    1 1 2 3 5 8 13 21 34

    Algoritma yang dipakai

    Function Fibonacci(input n:integer)  integer

    Deklarasi Lokal{tidak ada}

    Deskripsiif (n ==1 || n==2) then

    return (l)

    elsereturn (Fibonacci(n-1)+Fibonacci(n-2))

    endif

    Contoh,

    Untuk ukuran n= 4, proses perhitungan Fibonacci dapat dilakukan sebagai berikut:

    f 4 = f 3+f 2

      f 4 = (f 2+f 1) + f 2

      f 4 = (1+1) +1

    f 4 = 3

    C. Penerapan faktorial

    •  Kombinasi

    Function Kombinasi (input n, r : integer)   realDeklarasi

    If (n < r) Then

    return (0)Else

    return (Faktorial(n)/Faktorial(r)*Faktorial(n-r))Endif

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    28/120

    •  Permutasi

    Function Permutasi (input n, r : integer)   realDeklarasi

    {tidak ada}

    Deskripsi

    if (n< r) thenreturn (0)

    else

    return (Faktorial(n) / Faktorial(n-r))endif

    PENUTUP

    Persoalan yang diselesaikan dengan iterasi dapat juga diselesaikan dengan rekursif.

    Definisi rekursif harus tergantung kondisi, yang harus ada keadaan dimana kita dapat

    menghentikannya.

    SOAL-SOAL

    1.  Buat program untuk menghitung deret S = 1+2+3+4+5 menggunakan function

    rekursi

    2.  Buat program untuk menghitung deret S = 2+4+6+8+10 menggunakan function

    rekursi

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    29/120

    Algoritma dan Pemrograman 2

    Pertemuan Ke-5

    Pencarian (Searching) 1

    Disusun Oleh :

    M u k i d i n, S.Kom.

    Jurusan Teknik Informatika

    STIKOM POLTEK CIREBON

    2009 

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    30/120

    Algoritma dan Pemrograman 2

    Judul Materi  : Pencarian (Searching) 1

    Deskripsi Materi  : Materi ini membahas metode-metode searchingsequensial search menggunakan tipe data array untuk data urut maupun tidak urut

    Tujuan Instruksional Khusus  :

    1.  Memahami dan membandingkan metode searching menggunakan tipe data array

    2.  Mendeskripsikan berbagai metode searching

    3.  Mengilustrasikan berbagai metode searching menggunakan tipe data array

    Referensi  :

    •  Buku TeksMunir, Rinaldi (2005),  Algoritma dan Pemrograman dalam Bahasa Pascal dan

    C , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,

    Yogyakarta

    •  Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.

    Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.

    Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.

    Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    31/120

    PENCARIAN (SEARCHING) 1

    PENDAHULUAN

    Pencarian di perlukan untuk mencari informasi khusus dari tabel pada saat lokasi

    yang pasti dari informasi tersebut sebelumnya tidak diketahui. Pencarian selalu

    dinyatakan dengan referensi pada adanya sekolompok data yang tersimpan secara

    terorganisasi, kelompok data tersebut kita sebut tabel.

    Array memungkinkan untuk menyimpan nilai yang bertipe sama. Operasi yang umum

    dalam array adalah Sequential Search dan Binary search. Perbedaan dari kedua teknik ini

    terletak pada keadaan data.

    ISI

    Pencarian Sequential (Sequential Search)

    Pencarian Sequential digunakan apabila data dalam keadaan acak atau tidak terurut.

    Pencarian Sequential atau sering disebut Pencarian Linear menggunakan prinsip sebagai

     berikut data yang ada dibandingkan satu persatu secara berurutan dengan data yang

    dicari.

    Pencarian Sequential (Sequential Search) :1.  Sequential Search pada Array yang elemen datanya Belum Terurut

    a.  Metode tanpa Sentinel

     b.  Metode dengan sentinel

    2.  Sequential Search pada Array yang elemen datanya Sudah Terurut

    c.  Metode Sequential Tanpa Sentinel

    d.  Metode Sequential Search Dengan Sentinel

    A.  Proses pencarian sequential data belum terurut tanpa sentinel :

       pada dasarnya pencarian ini hanya melakukan pengulangan dari elemen ke-1

    sampai dengan jumlah data.

       pada setiap pengulangan, dibandingkan data ke-i dengan yang dicari,

      apabila sama berarti data telah ditemukan,

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    32/120

      sebaliknya apabila sampai akhir pengulangan tidak ada yang sama, berarti

    data tidak ada.

    Contoh Program SeqSearch_BelumUrut_nonSentinel 

    / * SeqSearch_BelumUrut_nonSentinel 

    di asumsi kan Ar r ay X sudah ada dan ber i si dat a yang bel umt er ur ut , ni l ai yang di car i adal ah y dan hanya ada sat u */

    #i ncl ude t ypedef enum bool ean {f al se=0, t r ue=1};mai n( ){

    i nt X[ 10] ={20, 50, 10, 30, 90, 60, 70, 80, 40, 100};bool ean f ound;i nt i , y;cout > y;

    f ound=f al se;i =0;whi l e ( ( i

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    33/120

       perbedaannya dengan yang tanpa sentinel adalah ketika data ditemukan tapi

    data tersebut adalah sentinel berarti data tidak ada.

    Contoh Program SeqSearch_BelumUrut_Sentinel {cara1} 

    / * SeqSearch_BelumUrut_Sentinel{cara1} 

    di asumsi kan Ar r ay X[ 0. . 10] sudah ada dan i ndeks ke 0. . 9 t el ahber i si dat a yang bel um ur ut , ni l ai yang di car i adal ah y danhanya ada satu, y di l et akkan di i ndex ke- 10 */

    #i ncl ude mai n( ){i nt X[ 11] ={20, 50, 10, 30, 90, 60, 70, 80, 40, 100};i nt i , y;cout > y;X[ 10]=y;

    i =0;whi l e ( X[ i ] ! =y)i =i +1;

    i f ( i >9)cout

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    34/120

      cout

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    35/120

    ada di Array sehingga data yang dicari sama dengan data sentinel maka dapat

    disimpulkan bahwa data tidak ditemukan.

    Contoh Program SeqSearch_Urut_Sentinel {cara1} 

    / * SeqSearch_SudahUrut_Sentinel {cara 1} 

    di asumsi kan Ar r ay X[ 1. . nmax] sudah ada dan i ndeks 1. . n t el ahber i si dat a yang sudah t er ur ut , ni l ai yang di car i adal ah y danhanya ada sat u */

    #i ncl ude t ypedef enum bool ean {f al se=0, t r ue=1};mai n( ){i nt X[ 11] ={10, 20, 30, 40, 50, 60, 70, 80, 90, 100};i nt i , y;bool ean f ound;cout > y;

    X[ 10]=y;f ound=f al se;i =0;whi l e ( ( ! f ound) & ( X[ i ] 9)

    cout

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    36/120

      { i f ( X[ i ] ==y)f ound=t r ue;

    el sei =i +1;

    }i f ( i ==10)

    cout

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    37/120

    Algoritma dan Pemrograman 2

    Pertemuan Ke-6

    Pencarian (Searching) 2

    Disusun Oleh :

    M u k i d i n, S.Kom.

    Jurusan Teknik Informatika

    STIKOM POLTEK CIREBON

    2009 

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    38/120

    Algoritma dan Pemrograman 2

    Judul Materi  : Pencarian (Searching) 2

    Deskripsi Materi  : Materi ini membahas metode searching binarysearch menggunakan tipe data array untuk data urut

    Tujuan Instruksional Khusus  :

    1.  Memahami dan membandingkan metode searching menggunakan tipe data array

    2.  Mendeskripsikan berbagai metode searching

    3.  Mengilustrasikan berbagai metode searching menggunakan tipe data array

    Referensi  :

    •  Buku TeksMunir, Rinaldi (2005),  Algoritma dan Pemrograman dalam Bahasa Pascal dan

    C , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,

    Yogyakarta

    •  Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.

    Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.

    Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.

    Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    39/120

    PENCARIAN (SEARCHING) 2

    PENDAHULUAN

    Pencarian dengan menggunakan tipe data Array dapat digunakan metode Sequential

    Search dan Binary search. Perbedaan dari kedua teknik ini terletak pada keadaan data.

    ISI

    Pencarian Biner (Binary Search)

    Salah satu syarat pencarian biner ( Binary Search) dapat dilakukan adalah data sudah

    dalam keadaan terurut. Dengan kata lain, apabila data belum dalam keadaan urut, pencarian biner tidak dapat dilakukan.

    Dalam kehidupan sehari-hari, sebenarnya kita sering menggunakan pencarian biner,

    misalnya pada saat ingin mencari suatu kata dalam kamus.

    Langkah dari pencarian biner adalah sebagai berikut:

    1.  mula-mula diambil posisi awal=1 dan posisi akhir=n

    2.  kemudian kita cari posisi data tengah dengan rumus posisi tengah = (posisi awal +

     posisi akhir) div 2

    3.  kemudian data yang dicari dibandingkan dengan data tengah

    a.   jika sama, data ditemukan, proses selesai.

     b.   jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap

    sama dengan posisi tengah - 1.

    c.   jika lebih besar, proses dilakukan kembali tetapi posisi awal dianggap

    sama dengan posisi tengah + 1.

    4.  ulangi langkah 2 sampai data ditemukan, atau tidak ditemukan.

    5.  Pencarian biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar

    dari pada posisi akhir. Jika posisi awal sudah lebih besar daripada posisi akhir

     berarti data tidak ditemukan.

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    40/120

    Contoh :

    Misalkan kita ingin mencari angka 14 pada sekumpulan data urut berikut :

    1 2 3 4 5 6 7 8 9

    3 7 10 12 13 14 20 24 29

    awal tengah akhir

    Jawab:

    1.  mula-mula dicari data tengah, dengan rumus tengah = (awal+akhir) div 2 = (1+9)

    div 2 = 5, berarti data tengah adalah data ke-5, dengan nilai 13

    2.  data yang kita cari adalah 14, bandingkan nilai 14 dengan data tengah.

    3.  karena 14 > 13, berarti proses dilanjutkan tetapi posisi awal dianggap sama

    dengan posisi tengah+1 atau 6

    1 2 3 4 5 6 7 8 9

    3 7 10 12 13 14 20 24 29

    awal tengah akhir

    4.  data tengah yang baru didapat dari rumus (6+9) div 2 = 7, berarti data tengah

    yang baru adalah data ke-7, yaitu 20.

    5.  data yang kita cari adalah 14, bandingkan nilai 14 dengan nilai tengah.

    6.  karena 14 < 20, berarti proses dilanjutkan, tetapi posisi akhir dianggap sama

    dengan posisi tengah-1 atau 6.

    1 2 3 4 5 6 7 8 9

    3 7 10 12 13 14 20 24 29

    awal

    akhir

    tengah

    7.  data tengah yang baru didapat dari rumus (6+6) div 2 = 6, berarti data tengah

    yang baru adalah data ke-6, yaitu 14

    8.  data yang kita cari adalah 14, bandingkan dengan data tengah, ternyata sama.

    9.   jadi data yang ditemukan pada indeks ke-6

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    41/120

    Bagaimana jika data yang dicari tidak ditemukan, misalnya data yang dicari 16?

    Pencarian biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar dari

     pada posisi akhir. Jika posisi awal sudah lebih besar daripada posisi akhir berarti data

    tidak ditemukan.

    Secara umum algoritma pencarian biner, adalah sebagai berikut :

    (Data diurutkan lebih dahulu, data disimpan di data array, x adalah nilai yang dicari)

    1.  awal  1

    2.  akhir   N

    3.  ketemu  false

    4.  selama (awal data [tengah] maka awal tengah+1.

    9. if (ketemu) maka tengah adalah indeks dari data yang dicari, jika tidak

    data tidak ditemukan.

    Contoh 1 pemakaian pencarian binary :

    / * BinSearch_SudahUrut di asumsi kan Ar r ay X sudah ada dan ber i si data yang sudah t erur ut ,ni l ai yang di car i adal ah y dan hanya ada sat u */

    #i ncl ude t ypedef enum bool ean {f al se=0, t r ue=1};mai n( ){i nt X[ 10] ={10, 20, 30, 40, 50, 60, 70, 80, 90, 100};i nt i , y, j , k;bool ean f ound;cout > y;

    f ound = f al se;i =0;

     j =10;whi l e ( ( ! f ound) & ( i

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    42/120

      el sei f ( y

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    43/120

    Program ini dimaksudkan untuk mengamati jumlah operasi searching yang harus

    dilakukan untuk menemukan masing-masing nilai.

    PENUTUP

    Metode Binary Search dapat dipakai hanya untuk data yang urut atau telah

    diurutkan.

    SOAL-SOAL

    1. Ilustrasikan pencarian nilai 25 pada kumpulan data dibawah. Gunakanlah metode

    Binary Search.

    12 15 4 25 45 10 19 9 32 33

     

    2. Ilustrasikan pencarian nilai 20 pada kumpulan data dibawah. Gunakanlah metode

    Binary Search.

    12 15 4 25 45 10 19 9 32 33

     

    3. Tulislah program untuk mengurutkan data bertipe rekaman menggunakan salah satu

    metode pengurutan. Tipe rekaman yang harus diurutkan mempunyai empat data, yaitu:

      nomorinduk, bertipe bilangan bulat

      nama, bertipe string

      alamat, bertipe string

      golongan, bertipe char (dapat bernilai ‘A’, …’Z’);

     procedure pengurutan menerima satu parameter, yaitu bilangan bulat yang dapat bernilai

    1, 2, atau 3. Apabila bernilai 1, maka data diurutkan menurut nomorinduk, apabila

     bernilai 2, maka data diurutkan menurut nama, dan apabila bernilai 3, maka data

    diurutkan menurut golongan.

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    44/120

    Algoritma dan Pemrograman 2

    Pertemuan Ke-7

    Pencarian (Sorting) 1

    Disusun Oleh :

    M u k i d i n, S.Kom.

    Jurusan Teknik Informatika

    STIKOM POLTEK CIREBON

    2009 

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    45/120

    Algoritma dan Pemrograman 2

    Judul Materi  : Pengurutan (Sorting) 1

    Deskripsi Materi  : Materi ini membahas metode sorting langsungMetode Penyisipan Langsung (Straight Insertion Sort ), Metode Seleksi (Straight

    Selection Sort ) dan Metode Penukaran ( Exchange selection)  / Gelembung ( Bubble

    Sort ) menggunakan tipe data array

    Tujuan Instruksional Khusus  :

    1.  Memahami dan membandingkan metode sorting menggunakan tipe data array danalgoritma rekursif

    2.  Mengimplemetasikan penggunaan tipe data array

    3.  Mendeskripsikan berbagai metode sorting4.  Mengilustrasikan berbagai metode sorting menggunakan tipe data array

    Referensi  :

    •  Buku TeksMunir, Rinaldi (2005),  Algoritma dan Pemrograman dalam Bahasa Pascal dan

    C , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.

    Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,Yogyakarta

    •  Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.

    Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    46/120

    PENGURUTAN (SORTING) 1

    PENDAHULUAN

    Sorting adalah suatu proses pengurutan data yang sebelumnya disusun secara acak

    atau tidak teratur menjadi urut dan teratur menurut suatu aturan tertentu.

    Biasanya pengurutan terbagi menjadi dua yaitu :

    •  ascending (pengurutan dari karakter/angka kecil ke karakter/angka besar).

    •  descending (pengurutan dari karakter/angka besar ke karakter/angka kecil).

    ISI

    Untuk melakukan proses pengurutan dapat menggunakan beberapa metode antara lain :

    A. Metode pengurutan langsung : 

    1.  Metode Penyisipan Langsung (Straight Insertion Sort )

    2.  Metode Seleksi (Straight Selection Sort )

    3.  Metode Penukaran ( Exchange selection) / Gelembung ( Bubble Sort )

    B. Metode pengurutan tidak langsung : 

    1. 

    Shell Sort2.  Quick Sort

    3.  Merge Sort

    A. Metode pengurutan langsung : 

    1.  Metode Penyisipan Langsung (Straight Insertion Sort)

    Dapat dibagi menjadi 2 bagian

    –  Bagian sebelah kiri data sudah terurut (tujuan)

    –  Bagian sebelah kanan data belum terurut (sumber)

    Langkah-langkah :

    1 : Baca array elemen yang akan diurutkan (n)

    2 : Kerjakan langkah 3 sampai langkah 6 untuk i : 1 s/d n-1

    3  : Tentukan elemen yang akan disisipkan (Temp = A [i] ;

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    47/120

      j = i-1;)

    4 : Kerjakan langkah 5 selama temp = 0;

    5 : A [j+1]= A[j] ; j =j-1;

    6 : Tempatkan elemen A [j+1] = Temp;

    7 : Selesai

    Algoritma Straight Insertion Sort

    Deklarasi

    I,J,K,N : Integer

    Temp : real

    A : array [1..20] of real

    Deskripsi

    Input(N) {maksimal N=20}

    K traversal [1..N]

    Input (Af) {masukkan data sebanyak N}

    I traversal [2..N]

    Temp A1

    J I-1

    While (temp =1) do

    Aj+1

     AjJJ-1

    Endwhile

    Aj+1 Temp

    Ilustrasi Insertion Sort 

    A [0] A [1] A [2] A [3] A [4] A [5]i j=i-1

    Temp =

    A[ i ] 4 7 9 5 8 6

    1 0 7 4 7  9 5 8 6

    2 1 9 4 7 9  5 8 6

    3 2 5 4 7 5  9 8 6

    1 5 4 5  7 9 8 6

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    48/120

    4 3 8 4 5 7 8  9 6

    5 4 6 4 5 7 8 6  9

    3 6 4 5 7 6  8 9

    2 6 4 5 6  7 8 9

    2.  Metode Seleksi (Straight Selection Sort)

    Selection sort dimulai dengan menyelesaikan elemen array (misalnya elemen

     pertama). Kemudian sorting mencari keseluruhan array hingga menemukan nilai yang

    terkecil. Sorting menempatkan nilai terkecil pada elemen tersebut, memilih elemen kedua

    dan mencari elemen terkecil kedua.

    Langkah-langkah Straight Selection Sort

    1 : Baca array elemen yang diurutkan (n)

    2 : Kerjakan langkah-langkah 3 sampai langkah 5

    untuk i=1 s/d n-1

    3 : Tentukan lokasi awal data terkecil Mindeks =1;

    kerjakan langkah 4 untuk j=i+1 s/d n

    4 : Cari data terkecil dan catat lokasinya. Test

    apakah AMindeks > Aj?

    Jika ya, catat Mindeks = j

    5 : Tukar nilai Amindeks dengan Aj

    6 : Selesai

    Ilustrasi Straight Selection Sort

    44 33 33 22

    33 44 44 44

    55 55 55 55

    22 22 22 33

    11 11 11 11

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    49/120

     

    11 11 11 11

    44 44 33 22

    55 55 55 55

    33 33 44 44

    22 22 22 33

    11 11 11

    22 22 22

    44 33 33

    55 55 44

    33 44 55

    3.  Metode Penukaran ( Exchange selection) / Gelembung ( Bubble Sort)

      metode pertama yang paling banyak dipelajari pemrogram.

      Sederhana 

    a.   bubble sort tidak efisien dan menyita banyak waktu prosessor lebih banyak

    daripada teknik sorting yang lain.

     b.  tidak lebih dari 30 atau kurang dari 30 elemen, penggunaan bubble sort masih

    sangat baik

      Metode gelembung / penukaran adalah metode yang mendasarkan penukaran 2

     buah elemen untuk mencapai keadaan urut yang diinginkan

    Langkah-langkah : 

    1 : Baca array elemen yang diurutkan (N)

    2 : Kerjakan langkah 3 untuk I=1 s/d N-1

    3 : Kerjakan langkah 4 untuk J=1 s/d N-1

    4 : Cek apakah A[J]>A[J+1}

    5 : Selesai

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    50/120

    Ilustrasi Bubble Sort 

    0 44 0 33 0 33 0 33

    1 33 1 44 1 44 1 44

    2 55 2 55 2 55 2 22

    3 22 3 22 3 22 3 55

    4 11 4 11 4 11 4 11

    0 33 0 33 0 33

    1 44 1 44 1 22

    2 22 2 22 2 44

    3 11 3 11 3 11

    4 55 4 55 4 55

    0 33 0 22 0 22 0 22

    1 22 1 33 1 11 1 11

    2 11 2 11 2 33 2 33

    3 44 3 44 3 44 3 44

    4 55 4 55 4 55 4 55

    Program berikut memakai bubble sort untuk mengurutkan data array berisi 30 nilai acak :

    / * Bubbl e Sor t */#i ncl ude #i ncl ude #i ncl ude

    voi d bubbl e_sor t ( i nt ar r ay[ ] , i nt s i ze){

    i nt t emp, i , j ;f or ( i =0; i

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    51/120

    PENUTUP

    Ketiga metode pengurutan langsung yang dibahas pada pertemuan ini hanya

     beberapa dari metode pengurutan langsung lainnya. Banyak metode lain untuk

    mengurutkan data. Metode-metode tersebut bertujuan sama yaitu mengurutkan data, yang berbeda hanya cara yang mempengaruhi kecepatan untuk jumlah data tertentu.

    SOAL-SOAL

    1. Pergunakan ketiga metode pengurutan langsung di atas untuk menampilan data dalam

     pengolahan data nilai suatu mata kuliah.

    Buatlah menu untuk memilih metode yang dipakai, dan pilihan field yang akan dipakai

    sebagai key juga harus bisa dipilih (misal berdasarkan NIM atau Nilai Akhir).

    Struktur Data yang dipakai sebagai berikut :

    Deklarasi

    TYPEDataMhs = Record

    < NIM : String

     Nama : StringUTS,UAS,Prakt,NA : real {0 s/d 100}

    >

    BykMhs, i, j : integer

    Mahasiswa : Array[1..100] of DataMhs

    Temp : DataMhs

     Nilai Akhir (NA) dihitung dengan rumus : NA = 25%*UTS+50%*UAS+25%*Prakt

    Proses yang dilakukan dalam program ini :

      memasukkan data,

      sorting, dan

      tampilkan data.

    2. Carilah metode pengurutan langsung lainnya selain ketiga metode yang dibahas pada

     pertemuan ini.

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    52/120

    Algoritma dan Pemrograman 2

    Pertemuan Ke-8

    Pencarian (Sorting) 2

    Disusun Oleh :

    M u k i d i n, S.Kom.

    Jurusan Teknik Informatika

    STIKOM POLTEK CIREBON

    2009 

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    53/120

    Algoritma dan Pemrograman 2

    Judul Materi  : Pengurutan (Sorting) 2

    Deskripsi Materi  : Materi ini membahas metode sorting tak langsungMetode Shell Sort, Metode Quick Sort dan Metode Merge Sort dengan menggunakan

    tipe data array dan algoritma rekursif

    Tujuan Instruksional Khusus  :

    1.  Memahami dan membandingkan metode sorting menggunakan tipe data array dan

    algoritma rekursif2.  Mengimplemetasikan penggunaan tipe data array

    3.  Mendeskripsikan berbagai metode sorting

    4.  Mengilustrasikan berbagai metode sorting menggunakan tipe data array

    Referensi  :•  Buku Teks

    Munir, Rinaldi (2005),  Algoritma dan Pemrograman dalam Bahasa Pascal dan

    C , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.

    Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,

    Yogyakarta

    •  Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.

    Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.

    Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    54/120

    PENGURUTAN (SORTING) 2

    PENDAHULUAN

    Untuk melakukan proses pengurutan tidak langsung dapat menggunakan beberapa

    metode : 

    4.  Shell Sort

    5.  Quick Sort

    6.  Merge Sort

    B. Metode pengurutan tidak langsung : 

    1.  Shell Sort

    Disebut juga dengan istilah metode “pertambahan menurun (dimishing increment)”

    dari Donald L.Shell. Metoda ini memanfaatkan penukaran sepasang elemen untuk

    mencapai keadaan urut. Dua buah elemen ditukarkan dengan jarak tertentu.

    Rumus : ■ Jarak pertama = N div 2

    ■ Jarak berikutnya = jarak sebelumnya div 2

    Contoh :

    24 46 11 26 57 38 27 20 17

    A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]

    Sehingga : ■ Jarak pertama = 9 div 2 = 4

    ■ Jarak kedua = 4 div 2 = 2

    ■ Jarak ketiga = 2 div 2 = 1

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    55/120

    Ilustrasi

    Jarak A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]

    Awal 24 46 11 26 57 38 27 20 17

    Jarak = 4 24 46 11 26 57 38 27 20 17

    24 38 11 26 57 46 27 20 17

    24 38 11 26 57 46 27 20 17

    24 38 11 20 57 46 27 26 17

    Jarak = 2 24 38 11 20 17 46 27 26 57

    11 38 24 20 17 46 27 26 57

    11 20 24 38 17 46 27 26 57

    11 20 17 38 24 46 27 26 57

    11 20 17 38 24 46 27 26 57

    11 20 17 38 24 46 27 26 57

    11 20 17 38 24 26 27 46 57

    Jarak = 1 11 20 17 38 24 26 27 46 57

    11 20 17 38 24 26 27 46 57

    11 17 20 38 24 26 27 46 57

    11 17 20 38 24 26 27 46 57

    11 17 20 24 38 26 27 46 57

    11 17 20 24 26 38 27 46 57

    11 17 20 24 26 27 38 46 57

    11 17 20 24 26 27 38 46 57

    11 17 20 24 26 27 38 46 57

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    56/120

    Program berikut, memakai shell sort untuk mengurutkan array yang berisi 50 nilai acak:

    Contoh Program Shell Sort :

    / * Shell Sort  */#i ncl ude

    #i ncl ude #i ncl ude voi d shel l _sort ( i nt arr ay[ ] , i nt s i ze){ i nt t emp, gap, i , exchange_occur r ed;

    gap= si ze/ 2;do {do {

    exchange_occur r ed= 0;f or ( i =0; i ar r ay[ i +gap] ){t emp= ar r ay[ i ] ;ar r ay[i ] = ar r ay[i +gap] ;

    ar r ay[ i +gap]= t emp;exchange_occurr ed= 1;

    }} whi l e ( exchange_occur r ed) ;

    } whi l e ( gap= gap/ 2) ;}

    mai n( ){i nt val ues[50] , i ;

    cl r scr ( ) ;/ / dat a yang bel um di ur ut kan di ambi l dar i hasi l r andom

      cout

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    57/120

    a.  Misal vektor A yang memiliki N elemen.

     b.  Dipilih sembarang elemen, biasanya elemen pertama, misal sebut saja X.

    c.  Kemudian, semua elemen tersebut dengan menempatkan X pada posisi J

    sedemikian rupa sehingga :

    i.  elemen 1 s/d J-1 memiliki nilai lebih kecil dari X dan

    ii.  elemen ke J+1 s/d N memiliki nilai lebih besar dari X.

    d.  Dengan demikian, terdapat dua buah subvektor.

    Contoh :

    1 N

    24 46 11 26 57 38 27 20 17

    Ilustrasi

    1 N

    24 46 11 26 57 38 27 20 17

    Subvektor Kiri X Subvektor Kanan

    1 J-1 J+1 N

    11 20 17 24 46 26 57 38 27

    11 20 17 24 46 26 57 38 27

    11 20 17

    11 17 20

    11 17 20

    24

    24

    24

    26 38 27 46 57

    26 46 57

    382726 46

    38 27

    57

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    58/120

    Contoh Program Quick Sort : 

    / * Qui ck Sor t */

    #i ncl ude #i ncl ude

    #i ncl ude

    voi d qui ck_sor t ( i nt ar r ay[ ] , i nt f i rs t , i nt l as t ){i nt t emp, l ow, hi gh, l i st _separ at or ;

    l ow= f i r st ;hi gh= l ast ;l i s t_separ at or= ar r ay[ ( f i r st+l ast) / 2] ;do {

    whi l e ( ar r ay[ l ow] l i st_separ at or ) hi gh- - ;

    i f ( l ow

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    59/120

    3.  Merge Sort

    Ide metode Merge Sort :

    1.  Pembagian array data menjadi dua bagian (bagian kiri dan bagian kanan)

    Ulangi langkah 1 secara rekursi terhadap kedu abagian tersebut, sampai tiap

    subarray hanya terdiri dari satu elemen.

    2.  Gabungkan masing-masing bagian itu sekaligus mengurutkannya, sesuai pohon

    yang terbentuk saat membagi array, sampai membentuk array pertama saat

    sebelum dibagi.

    Ulangi langkah 2 secara rekursi pula.

    Ilustrasi Merge Sort 

    I201528712625

    7654321

    tengah =1+7  div 2

      201528712625

    tengahtengah

    201528712625

    tengahtengahtengah

    201528712625

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    60/120

     

    Algoritma MergeSortRekursi 

    Deklarasi

    Type TipeData : Array[1..100] of integer

    Data : TipeData

    n,i : integerProcedure MergeSort(input/output Data : TipaData;

    input awal,akhir : integer )

    Deskripsi

    output(‘Banyaknya elemen array :’)

    input(n)

    i traversal[1..n]

    Datai  random(n)

    output(‘Data yang belum terurut : ‘)

    i traversal[1..n]

    output(Datai)

    II

    2  127162

      2212176

    2211726

    2221176

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    61/120

      MergeSort(Data,1,n)

    output(‘Data yang sudah terurut :’)

    i traversal[1..n]

    output(Datai)

    Procedure MergeSort(input/output Data : TipaData;

    input awal,akhir : integer )

    Deklarasi Lokal

    tengah : integer

    Procedure Merge(input/output Data : TipaData;

    input awalkiri,akhirkiri,

    awalkiri,akhirkiri : integer)

    Deskripsi

    if (awal

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    62/120

      while (kiriakhirkiri) then

    tempi Datakanan

      kanan kanan+1

    endif

    i i + 1

    endwhile

    i traversal[awalkiri..akhirkanan]

    Datai  tempi 

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    63/120

    MergeSort bila ditest dengan data dari ilustrasi

    MergeSort(Data,1,1) {tidak mengerjakan apa-

    apa}

    MergeSort (Data,1,2) MergeSort (Data,2,2) {tidak mengerjakan apa-

    apa}

    3 Merge(Data,1,1,2,2) {gabung & urutkan data}

    MergeSort(Data,1,

    4)

    MergeSort(Data,3,3) {tidak mengerjakan apa-

    apa}

    MergeSort (Data,3,4) MergeSort (Data,4,4) {tidak mengerjakan apa-apa}

    6 MergeSort(Data,3,3,4,4) {gabung & urutkan data}

    MergeSort(Data,1

    ,7) 7

    Merge(Data,1,2,3,4) {gabung & urutkan data}

    MergeSort(Data,5,5) {tidak mengerjakan apa-

    apa}

    MergeSort (Data,5,6) MergeSort (Data,6,6) {tidak mengerjakan apa-

    apa}

    MergeSort(Data,5,

    7)

    10 Merge(Data,5,5,6,6) {gabung & urutkan data}

    12

    MergeSort(Data,7,7)

    11

    {tidak mengerjakan apa-

    apa}

    Merge(Data,5,6,7,7) {gabung & urutkan data}

    Merge(Data,1,4,5,

    7)

    {gabung & urutkan

    data}

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    64/120

    Keterangan : = memanggil

    = alur logik

    PENUTUP

    Proses pengurutan tidak langsung  dapat menggunakan beberapa metode : Shell

    Sort, Quick Sort dan Merge Sort. Metode pengurutan tak langsung, implementasinya

    dapat menggunakan fungsi rekursi.

    SOAL-SOAL

    1.  Tambahkan ketiga metode pengurutan tak langsung di atas untuk menampilan data

    dalam pengolahan data nilai suatu mata kuliah pada soal latihan kuliah pertemuan ke-

    8.

    2.  Buat program menghitung nilai tengah (median) dari data-data integer yang diinput

    lewat keyboard, dan cari nilai Z dengan Z = (median)2.

    (Keterangan : cari dengan bantuan procedure pengurutan atau sorting. Perhatikan

    untuk data yang jumlahnya ganjil atau genap)

    Misal :

    Input : Data ke-1 = 3Data ke-2 = 2

    Data ke-3 = 6

    Data ke-4 = 5

    Output : Median = 4

    Z = 16

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    65/120

    Algoritma dan Pemrograman 2

    Pertemuan Ke-9

    Pointer 1

    Disusun Oleh :

    M u k i d i n, S.Kom.

    Jurusan Teknik Informatika

    STIKOM POLTEK CIREBON

    2009 

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    66/120

    Algoritma dan Pemrograman 2

    Judul Materi  : Pointer 1

    Deskripsi Materi  : Materi ini membahas tipe data pointer, pendeklarasian dan cara pengaksesannya

    Tujuan Instruksional Khusus  :

    1.  Mendefinisikan dan menggunakan tipe data pointer

    2.  Mendeskripsikan tipe data pointer

    3.  Memahami kegunaan pointer

    Referensi  :

    •  Buku TeksMunir, Rinaldi (2005),  Algoritma dan Pemrograman dalam Bahasa Pascal dan

    C , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,

    Yogyakarta

    •  Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.

    Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.

    Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.

    Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    67/120

    POINTER 1

    PENDAHULUAN 

    Variabel pointer sering disebut sebagai variabel yang menunjuk obyek lain,

    karena variabel pointer atau pointer adalah variabel yang berisi alamat di memori

    komputer dari suatu obyek lain, yaitu obyek yang ditunjuk oleh pointer yang mempunyai

    nilai tertentu.

    ISI

    A. Bentuk umum deklarasi variable pointer :

    Algoritma (Pseodocode) :

    nama_pointer : pointer to tipedata

    C++ :

    t i pedat a *nama_poi nt er ;

    (deklarasi pointer null)

    nama_poi nt er = ( t i pedat a *) mal l oc( si ze_t si ze) ;  

    (deklarasi pointer kosong) 

    Dengan :

    •  tipedata adalah tipe dasar nilai yang berada di memori yang ditunjuk oleh pointer. 

    •  nama_pointer  adalah nama variable pointer .

    •  (*) adalah operator memori yang fungsinya untuk mengembalikan nilai variable pada

    alamatnya yang ditentukan oleh operand .

    •  mal l oc(si ze_t si ze)   adalah deklarasi pengalokasian memori kosong dengan

    ukuran kapasitas sebesar si ze 

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    68/120

    Ilustrasi :

    nama_pointer•   pointer null

    •   pointer kosongnama_pointer

    (isi)null

    (alamat) 

    Contoh :

    Algoritma (Pseodocode) :

     p : pointer to integer

    nilai : pointer to real

    s : pointer to char

    C++ :

    i nt *p;

    f l oat * ni l ai ;char *s;

    Contoh lain dalam bahasa C++ dan dengan ilustrasi :

    i nt *p; i nt *q;

    q p  

    p=( i nt * ) mal l oc( s i zeof ( i nt ) ) ;

    p

    (isi)null

     

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    69/120

    q=( i nt * ) mal l oc( s i zeof ( i nt ) ) ;

    q

    (isi)null 

    B. Pengaksesan dengan Pointer

    Untuk mengakses nilai/isi pada memori yang ditunjuk oleh pointer dipakai simbol ‘*’

    Contoh :

    *p = 10;

    *q = 20;

    Pointer menunjuk memori yang ditunjuk pointer lain :

    Contoh :

    p = q;

     berarti p menunjuk ke alamat memori yang ditunjuk oleh q, dan dengan demikian p dan q

    menunjuk alamat memori yang sama.

    Ilustrasi : *p = 10  *q = 20

    Contoh program Pointer 1:

    #i ncl ude #i ncl ude #i ncl ude voi d mai n( )

    p q

     

    10 20

    p = q

    p

     10

    q

    20

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    70/120

    {i nt *p, *q;p=( i nt * )mal l oc( s i zeof ( i nt ) ) ;q=( i nt * )mal l oc( s i zeof ( i nt ) ) ;*p=10;*q=20;

    cout

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    71/120

    Operator ‘&’ digunakan untuk menyatakan alamat variabel statis yang akan ditunjuk.

    Contoh :

    px = &x;

    Ilustrasi :

    int *px;  int x=10;

    px x

    10

    px = &x 

    pxx

     10

    Jika suatu variabel statis sudah ditunjuk oleh pointer, isi variabel tersebut dapat diakses

    melalui variabel itu sendiri (pengaksesan langsung) atau melalui pointer (pengaksesan

    tidak langsung).

    •  Pengaksesan langsung dilakukan langsung oleh variabel statisnya (bukan pointernya).

    Contoh :

    x = 10

    •  Operator indirection (pengaksesan tidak langsung), berupa simbol ‘*’

    Contoh :

    *px = 10

    Ilustrasi :

    value1 = 5;

    5

    value1

    mypointer = &value1;

      value1 

    mypointer 

    5

    *mypointer = 10;

     

    mypointer v e1

    5 10

    alu

    x

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    72/120

     

    Contoh Program Pointer 2 :

    #i ncl udemai n( ){ i nt val ue1 = 5, val ue2 = 15;

    i nt * mypoi nt er ;mypoi nter = &val ue1;*mypoi nter = 10;cout

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    73/120

     

    Ilustrasi :

    1

    int

    x

     

    PENUTUP

    Penerapan pointer yang paling umum yaitu menciptakan variable dinamis, yang

    memungkinkan untuk memakai memori bebas (memori yang belum dipakai) selama

    eksekusi program.

    SOAL-SOAL

    1. Apa output dari program berikut :

    #i ncl udemai n( )

    y

    int

    px

    int

    2

    x=87;a

    x

    px = &x;b

    87

    87

    y

    y=*px;

    px

    c

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    74/120

    { i nt p = 5, q = 15;i nt *m;m = &q;q = 10;cout

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    75/120

    }

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    76/120

    Algoritma dan Pemrograman 2

    Pertemuan Ke-10

    Pointer 2

    Disusun Oleh :

    M u k i d i n, S.Kom.

    Jurusan Teknik Informatika

    STIKOM POLTEK CIREBON

    2009 

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    77/120

    Algoritma dan Pemrograman 2

    Judul Materi  : Pointer 2

    Deskripsi Materi  : Materi ini membahas tipe data pointer, operator-operator yang dapat dipakai dana penggunaannya bersama tipe data terstrutur yang

    lain

    Tujuan Instruksional Khusus  :

    4.  Mendefinisikan dan menggunakan tipe data pointer

    5.  Mendeskripsikan tipe data pointer6.  Memahami kegunaan pointer

    Referensi  :

    •  Buku Teks

    Munir, Rinaldi (2005),  Algoritma dan Pemrograman dalam Bahasa Pascal danC , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.

    Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,Yogyakarta

    •  Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.

    Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.

    Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    78/120

    POINTER 2

    PENDAHULUAN

    Pointer adalah vriabel yang berisi alamat memori sebagai nilainya dan berbeda

    dengan variable biasa yang berisi nilai tertentu. Dengan kata lain, pointer berisi alamat

    dari variable yang mempunyai nilai tertentu. 

    ISI

    A. Operator Pointer

    Ada beberapa operator yang bisa digunakan dalam pointer, yaitu :3.  Operator alamat (yang dilambangkan dengan symbol &)

    4.  Operator unary yang mengembalikan alamat dari unary yang mengembalikan alamat

    dari operandnya. 

    Contoh Program 1:

    #i ncl udemai n( ){

    i nt *pt r , num;pt r = &num;*pt r = 100;cout

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    79/120

     

    Perhatikan contoh berikut.

    int *p1 // assume; p1==2000

     p1++;

     p1--;

    Pointer Aritmatika

    Contoh program 2 pointer Aritmatika.#i ncl udemai n( ){ i nt i [ 10] , * i _pt r ;

    doubl e f [ 10] , * f _pt r ;i nt x;i _pt r = i ; / / i _pt r poi nt s t o f i r st el ement of if _pt r = f ; / / f _pt r poi nt s t o f i r st el ement of ff or ( x=0; x

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    80/120

    C. Pointer Dan Array

    Array dan pointer adalah dua struktur data yang saling berkaitan satu sama lain

    didalam C, dan dapat saling dipertukarkan penggunaannya. Hal ini karena suatu array

    dapat didefinisikan sebagai pointer ke elemen pertama dari array tersebut.

    Pointer dapat di-array seperti tipe data yang lain dalam C++. Sebagai contoh,

    untuk menyatakan sebuah array pi dari pointer sebanyak 10 buah data yang bertipe 10

    integer, dapat dituliskan sebagai berikut :

    int *pi[10];

    Untuk menentukan alamat dari variable integer disebut var ke elemen ketiga dari pointer

    array, dapat dituliskan sebagai berikut :

    int var;

    Pi[2] = &var

    Contoh program 4 array pointer

    #i ncl udemai n( ){

    i nt number s[ 5] ;i nt *p;

    p = number s; *p = 10;p++; *p = 20;p = &numbers[ 2] ; *p = 30;p = number s + 3; *p = 40;p = numbers; *( p+4) = 50;f or ( i nt n=0; n

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    81/120

     

    Pointer dalam Pointer

    Contoh :

    char a;

    char *b;

    char **c;

    a = ‘ z’ ;

    b = &a;

    c = &b;

    dan misalnya berisi data-data yang acak pada memori 7230, 8092, dan 10502, maka

    diagramnya adalah sebagai berikut :

    Dari diagram diatas dapat disimpulkan :

    •  c adalah sebuah variable dengan tipe (char **) yang berisi 8092.

    •  *c adalah sebuah variable dengan tipe (char *) yang berisi 7230.

    •  **c adalah sebuah variable dengan tipe (char) yang berisi ‘z’.

    Contoh program 5 pointer dalam pointer

    #i ncl udemai n( ){

    i nt x, *p, * *q;x = 10;p = &x;q = &p;cout

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    82/120

    Penjelasan Program :

    Proses pendeklarasian pointer dalam pointer dapat dilihat pada pernyataan :

    int x, *p, **q;

    x = 10;

     p = &x;

    q = &p;

    dan hasilnya adalah : 10

    E. Masalah yang kadang terjadi pada pointer.

    1.  Pointer yang tidak di inisialisasikan.

    2.   Null pointer.

    •  Sesudah pointer dinyatakan dan sebelum nilainya ditentukan, pointer akan

     berisi sebuah nilai yang berubah-ubah. Jika pointer berisi Null atau nilai

    (0), diasumsikan untuk tidak menunjuk apapun.

    •  Beberapa tipe pointer dapat dimulai ke Null ketika dinyatakan sehingga

    menghindari salah penggunaan atau pointer yang tidak di inisialisasikan.

    3.  Kesalahan dalam pointer perbandingan.

    Membuat perbandingan pointer antara dua obyek yang berbeda, mungkin

    menghasilkan hasil yang tidak diharapkan.

    4.  Pengembalian nilai pointer.

    Kadang setelah mendeklarasikan nilai pointer, kita lupa mengembalikan ke nilai

    semula.

    PENUTUP

    Pointer adalah tipe data dalam pemrograman yang dapat dikenai operator

    aritmatika tertentu dan operator perbandingan. Pointer dapat dipadukan dengan tipe data

    terstruktur array.

    SOAL-SOAL

    1.  Apa output dari contoh program 1 sampai dengan 4 di atas.

    2.  Apa output dari program berikut :

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    83/120

    #i ncl udemai n( ){

    i nt m, n, *x, **y;m = 10;x = &m;

    y = &x;n = **y + 5;x = &n;cout

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    84/120

    Algoritma dan Pemrograman 2

    Pertemuan Ke-11

    Pointer 2

    Disusun Oleh :

    M u k i d i n, S.Kom.

    Jurusan Teknik Informatika

    STIKOM POLTEK CIREBON

    2009 

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    85/120

    Algoritma dan Pemrograman 2

    Judul Materi  : Pointer 2

    Deskripsi Materi  : Materi ini membahas tipe data pointer, operator-operator yang dapat dipakai dana penggunaannya bersama tipe data terstrutur yang

    lain

    Tujuan Instruksional Khusus  :

    7.  Mendefinisikan dan menggunakan tipe data pointer

    8.  Mendeskripsikan tipe data pointer9.  Memahami kegunaan pointer

    Referensi  :

    •  Buku Teks

    Munir, Rinaldi (2005),  Algoritma dan Pemrograman dalam Bahasa Pascal danC , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.

    Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,Yogyakarta

    •  Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.

    Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.

    Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    86/120

    POINTER 2

    PENDAHULUAN

    Pointer adalah vriabel yang berisi alamat memori sebagai nilainya dan berbeda

    dengan variable biasa yang berisi nilai tertentu. Dengan kata lain, pointer berisi alamat

    dari variable yang mempunyai nilai tertentu. 

    ISI

    A. Operator Pointer

    Ada beberapa operator yang bisa digunakan dalam pointer, yaitu :5.  Operator alamat (yang dilambangkan dengan symbol &)

    6.  Operator unary yang mengembalikan alamat dari unary yang mengembalikan alamat

    dari operandnya. 

    Contoh Program 1:

    #i ncl udemai n( ){

    i nt *pt r , num;pt r = &num;*pt r = 100;cout

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    87/120

     

    Perhatikan contoh berikut.

    int *p1 // assume; p1==2000

     p1++;

     p1--;

    Pointer Aritmatika

    Contoh program 2 pointer Aritmatika.#i ncl udemai n( ){ i nt i [ 10] , * i _pt r ;

    doubl e f [ 10] , * f _pt r ;i nt x;i _pt r = i ; / / i _pt r poi nt s t o f i r st el ement of if _pt r = f ; / / f _pt r poi nt s t o f i r st el ement of ff or ( x=0; x

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    88/120

    C. Pointer Dan Array

    Array dan pointer adalah dua struktur data yang saling berkaitan satu sama lain

    didalam C, dan dapat saling dipertukarkan penggunaannya. Hal ini karena suatu array

    dapat didefinisikan sebagai pointer ke elemen pertama dari array tersebut.

    Pointer dapat di-array seperti tipe data yang lain dalam C++. Sebagai contoh,

    untuk menyatakan sebuah array pi dari pointer sebanyak 10 buah data yang bertipe 10

    integer, dapat dituliskan sebagai berikut :

    int *pi[10];

    Untuk menentukan alamat dari variable integer disebut var ke elemen ketiga dari pointer

    array, dapat dituliskan sebagai berikut :

    int var;

    Pi[2] = &var

    Contoh program 4 array pointer

    #i ncl udemai n( ){

    i nt number s[ 5] ;i nt *p;

    p = number s; *p = 10;p++; *p = 20;p = &numbers[ 2] ; *p = 30;p = number s + 3; *p = 40;p = numbers; *( p+4) = 50;f or ( i nt n=0; n

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    89/120

     

    Pointer dalam Pointer

    Contoh :

    char a;

    char *b;

    char **c;

    a = ‘ z’ ;

    b = &a;

    c = &b;

    dan misalnya berisi data-data yang acak pada memori 7230, 8092, dan 10502, maka

    diagramnya adalah sebagai berikut :

    Dari diagram diatas dapat disimpulkan :

    •  c adalah sebuah variable dengan tipe (char **) yang berisi 8092.

    •  *c adalah sebuah variable dengan tipe (char *) yang berisi 7230.

    •  **c adalah sebuah variable dengan tipe (char) yang berisi ‘z’.

    Contoh program 5 pointer dalam pointer

    #i ncl udemai n( ){

    i nt x, *p, * *q;x = 10;p = &x;q = &p;cout

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    90/120

    Penjelasan Program :

    Proses pendeklarasian pointer dalam pointer dapat dilihat pada pernyataan :

    int x, *p, **q;

    x = 10;

     p = &x;

    q = &p;

    dan hasilnya adalah : 10

    E. Masalah yang kadang terjadi pada pointer.

    5.  Pointer yang tidak di inisialisasikan.

    6.   Null pointer.

    •  Sesudah pointer dinyatakan dan sebelum nilainya ditentukan, pointer akan

     berisi sebuah nilai yang berubah-ubah. Jika pointer berisi Null atau nilai

    (0), diasumsikan untuk tidak menunjuk apapun.

    •  Beberapa tipe pointer dapat dimulai ke Null ketika dinyatakan sehingga

    menghindari salah penggunaan atau pointer yang tidak di inisialisasikan.

    7.  Kesalahan dalam pointer perbandingan.

    Membuat perbandingan pointer antara dua obyek yang berbeda, mungkin

    menghasilkan hasil yang tidak diharapkan.

    8.  Pengembalian nilai pointer.

    Kadang setelah mendeklarasikan nilai pointer, kita lupa mengembalikan ke nilai

    semula.

    PENUTUP

    Pointer adalah tipe data dalam pemrograman yang dapat dikenai operator

    aritmatika tertentu dan operator perbandingan. Pointer dapat dipadukan dengan tipe data

    terstruktur array.

    SOAL-SOAL

    3.  Apa output dari contoh program 1 sampai dengan 4 di atas.

    4.  Apa output dari program berikut :

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    91/120

    #i ncl udemai n( ){

    i nt m, n, *x, **y;m = 10;x = &m;

    y = &x;n = **y + 5;x = &n;cout

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    92/120

    Algoritma dan Pemrograman 2

    Pertemuan Ke-12

    Arsip (File) 1

    Disusun Oleh :

    M u k i d i n, S.Kom.

    Jurusan Teknik Informatika

    STIKOM POLTEK CIREBON

    2009 

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    93/120

    Algoritma dan Pemrograman 2

    Judul Materi  : Arsip (File) 1

    Deskripsi Materi  : Materi ini membahas tipe data file, pendeklarasiandan perintah-perintah baku untuk mengolah data pada file

    Tujuan Instruksional Khusus  :

    1.  Mendefinisikan dan menggunakan tipe data file

    2.  Mendeskripsikan tipe data file

    3.  Menggunakan tipe data file4.  Menjelaskan fungsi-fungsi pada tipe data file

    5.  Mengimplementasikan fungsi-fungsi file untuk memanipulasi file

    Referensi  :

    •  Buku TeksMunir, Rinaldi (2005),  Algoritma dan Pemrograman dalam Bahasa Pascal dan

    C , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,

    Yogyakarta

    •  Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.

    Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.

    Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.

    Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    94/120

    Arsip (File) 1

    PENDAHULUAN

    Media Penyimpan :

    •  Memori Utama (RAM) tidak menyimpan informasi secara permanen

    •  Memori Sekunder media penyimpanan permanen.

    Contoh : disk (floppy disk, hard disk, compact disk, flash disk dll.). Data yang

    disimpan di dalam penyimpanan sekunder dikelompokkan dalam bentuk arsip/file

    ISI

    Data yang disimpan di dalam penyimpanan sekunder dikelompokkan dalam

     bentuk arsip/file. File menyimpan data berkategori sama. Nama arsip/file harus unik.

    Struktur File :

    •  Suatu file merupakan organisasi dari sejumlah record dapat terdiri dari satu atau

     beberapa field dan setiap field terdiri dari satu atau beberapa byte.

    •  Adapun byte merupakan susunan dari 8 bit.

    File

    Record … Record

    Field Field Field

    Byte … Byte

    Struktur data dari file

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    95/120

     

    Gambaran record dan field

    Masing-masing

    adalah sebuah fieldnama alamat

    ALI JL. BEO 307

    SITI JL. WARU I/69

    MIRA JL. WARAS 99

    Sebuah record

    Pengorganisasian data di dalam file : 

    •  Sebuah informasi disebut datum atau record, sedangkan jamaknya disebut data.

    Semua record di dalam file diorganisasikan penyimpanannya, dan pengaksesan record

    di dalam file bergantung pada metode perorganisasiannya tsb.

    •  Ada dua cara : beruntun (sequential) dan acak (random).

    Arsip Beruntun

    Pengertian Arsip beruntun : Sekumpulan record-record terpadu, yang disimpan dalam

    media penyimanan sekunder, yang dapat diakses secara berurutan record per record

    searah mulai dari record pertama.

    File dapat dipandang dengan dua cara : 1. Secara Tabel

    Field1 Field2 Field3 … Fieldn

    Record1

    Record2

    Record3

    Recordn

    Mark

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    96/120

    2. Secara Blanko

    Recordn

    Mark

    Record2

    Record1

    Record terakhir adalah record fiktif yang menandai akhir dari file.

    Deklarasi File

    (notasi algoritma) 

    Type NamaRecord : TipeRecord

     NamaArsip : SeqFile of TipeRecord

    VarRecord : NamaRecord

    Contoh :

    Type DataMhs : Record

    ArsipMhs : SeqFile of DataMhs

    Mhs : DataMhs

    Type ArsipBil :SeqFile of Integer

    Bil : ArsipBil

    i : integer

    Type ArsipKar : SeqFile of Char

    Kar : ArsipKar

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    97/120

    c : Char

    (Bahasa C++) 

    t ypedef Ti peRecord NamaRecord;

    FI LE *NamaAr si p;

    NamaRecor d Var Recor d;

    Contoh :

     Typedef st r uct {l ong NI M;

    char Nama[ 25] ;

    f l oat I PK;

    } Dat aMhs;

    FI LE *Ar si pMhs;

    Dat aMhs Mhs;

    FI LE *Bi l ;

    i nt i ;

    FI LE *Kar ;char c;

    Perintah Baku

    (notasi algoritma) 

      Open(NamaArsip,kode)

    Contoh :

    Open(ArsipMhs,1)

    Open(Bil,2)

    Open(Kar,1)

      FRead(NamaArsip,VarRecord) 

    Contoh :

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    98/120

    FRead(ArsipMhs,Mhs)

    FRead(Bil,i)

    FRead(Kar,c)

      FWrite(NamaArsip,VarRecord) 

    Contoh :

    FWrite(ArsipMhs,

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    99/120

    f r ead( &i , si zeof ( i ) , 1, Bi l ) ;

    f r ead( &c, si zeof ( c) , 1, Kar ) ;

      f wr i t e( Var Recor d, si zeof ( Var Recor d) , j um_r ecor d, NamaAr si p) ;

    Contoh :

    f wr i t e( &Mhs, si zeof ( Mhs) , 1, Ar si pMhs) ;

    f wr i t e( &i , si zeof ( i ) , 1, Bi l ) ;

    f wr i t e( &c, s i zeof ( c) , 1, Kar ) ;

    f wr i t e( &Kar , ’ R’ )

      f cl ose( NamaAr si p) ;

    Contoh :

    f cl ose( Ar si pMhs) ;

    Contoh Program 1:

    / / menyi mpan data bi l angan i nteger

    #i ncl ude #i ncl ude #i ncl ude

    FI LE *Bi l ;t ypedef enum {t r ue=1, f al se=0} bool ean;bool ean Mar k(i nt i ) ;

    mai n( ){

    i nt i ;

    Bi l = f open( "Bi l . dat ", "w") ;cout > i ;whi l e ( Mar k( i ) ! = t r ue){

    f wr i t e( &i , si zeof ( i ) , 1, Bi l ) ;cout > i ;

    }i = 999;f wr i t e( &i , si zeof ( i ) , 1, Bi l ) ;

    f cl ose( Bi l ) ;

    }

    bool ean Mar k(i nt i ){

    r et ur n ( i == 999) ;}

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    100/120

    Contoh Program 2 :

    / / membaca data bi l angan i nt eger yang ada di/ / f i l e dar i cont oh pr ogr am 1#i ncl ude #i ncl ude #i ncl ude

    FI LE *Bi l ;t ypedef enum {t r ue=1, f al se=0} bool ean;bool ean Mar k(i nt i ) ;

    mai n( ){

    i nt i , j um; j um=0;Bi l = f open( "Bi l . dat " , "r ") ;f r ead( &i , si zeof ( i ) , 1, Bi l ) ;

    i f ( Mark( i ) )cout

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    101/120

    t ypedef st r uct { l ong NI M;char Nama[ 25] ;char KodeMK[ 5] ;i nt SKS;char I ndeks;

    } Dat aMhs;

    FI LE *Ar si pMhs;t ypedef enum {t r ue=1, f al se=0} bool ean;voi d RekamDat aMahasi swa( ) ;voi d Cet akDaf t ar Ni l ai ( l ong KodeNI M) ;bool ean Mark( Dat aMhs Mhs) ;

    mai n( ){

    l ong KodeNI M;

    RekamDat aMahasi swa( ) ;cl r scr ( ) ;

    cout > KodeNI M;cl r scr ( ) ;Cet akDaf t ar Ni l ai ( KodeNI M) ;r et ur n 0;

    }

    voi d RekamDat aMahasi swa( ){

    Dat aMhs Mhs;

    Ar si pMhs = f open( "Mhs. dat " , "w") ;cout > Mhs. NI M;

    whi l e ( Mar k( Mhs) ! = t r ue){cout > Mhs. Nama;cout > Mhs. KodeMK;cout > Mhs. SKS;cout > Mhs. I ndeks;f wr i t e( &Mhs, si zeof ( Mhs) , 1, Ar si pMhs) ;cout > Mhs. NI M;

    }Mhs. NI M = 9999;st r cpy( Mhs. Nama, "xxxxx") ;st r cpy( Mhs. KodeMK, "xxxxx") ;Mhs. SKS = 9;Mhs. I ndeks = ' x' ;f wr i t e( &Mhs, si zeof ( Mhs) , 1, Ar si pMhs) ;f cl ose( Ar si pMhs) ;

    }

    voi d Cet akDaf t ar Ni l ai ( l ong KodeNI M){

    i nt no;

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    102/120

      Dat aMhs Mhs;bool ean ket emu;bool ean st op;Ar si pMhs = f open( "Mhs. dat " , " r ") ;st op = f al se;f r ead( &Mhs, si zeof ( Mhs) , 1, Ar si pMhs) ;

    i f ( Mar k( Mhs) )cout

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    103/120

    PENUTUP

    File dengan memanfaatkan media penyimpan permanen, berfungsi untuk

    menyimpan data secara permanen juga. Data yang disimpan dapat bertipe apa saja.

    SOAL-SOAL

    Modifikasi contoh program 3 di atas agar program tersebut tidak hanya mencetak daftar

    nilai seorang mahasiswa tetapi mencetak semua data mahasiswa, dan juga mencetak

    daftar mhs berdasarkan nilai yang diperoleh.

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    104/120

    Algoritma dan Pemrograman 2

    Pertemuan Ke-12

    Arsip ( File) 2

    Disusun Oleh :

    M u k i d i n, S.Kom.

    Jurusan Teknik Informatika

    STIKOM POLTEK CIREBON

    2009 

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    105/120

    Algoritma dan Pemrograman 2

    Judul Materi  : Arsip (File) 2

    Deskripsi Materi  : Materi ini membahas tipe data file, operasi-operasifile mengolah data dengan bahasa C++

    Tujuan Instruksional Khusus  :

    6.  Mendefinisikan dan menggunakan tipe data file

    7.  Mendeskripsikan tipe data file

    8.  Menggunakan tipe data file9.  Menjelaskan fungsi-fungsi pada tipe data file

    10. Mengimplementasikan fungsi-fungsi file untuk memanipulasi file

    Referensi  :

    •  Buku TeksMunir, Rinaldi (2005),  Algoritma dan Pemrograman dalam Bahasa Pascal dan

    C , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,

    Yogyakarta

    •  Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.

    Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.

    Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.

    Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    106/120

    Arsip (File) 2 

    Operasi File

    1.  Membuka / Mengaktifkan File

    FI LE f open( char *namaf i l e, char *mode) ;

      Keterangan mode :

    r : Read only

    w : Menyatakan file baru diciptakan. Operasi yang akan dilakukan adalah operasii

     perekaman

    data. Jika file tersebut sudah ada, isi yang lama akan dihapus.a : Membuka file yang ada pada disk dan operasi yang akan dilakukan adalah

    operasii penambahan data pada file. Jika file belum ada, secara otomatis file

    akan dibuat .

    r+ : Membuka file yang sudah ada, operasi yang dilakukan berupa pembacaan dan

     penulisan.

    w+ : Membuka file untuk pembacaan/penulisan. Jika file sudah ada, isinya akan

    dihapus.

    a+ : Membuka file, operasi yang dilakukan berupa perekaman dan pembacaan. Jika

    file sudah ada, isinya tak akan terhapus.

    File biner adalah file yang pola penyimpanan di dalam disk adalah dalam bentuk

     biner, yaitu seperti bentuk dalam memori (RAM) komputer. Sedangkan file teksmerupakan file yang pola penyimpanan datanya dalam bentuk karakter.

    Keterangan mode :

    rt : mode file adalah teks dan file hendak dibaca.

    rt+ : mode file adalah teks dan file bisa dibaca atau ditulisi ( = r+t ).

    rb : mode file adalah biner dan file hendak dibaca.

    2.  Menutup File

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    107/120

     I nt f cl ose( FI LE *pf ) ;

    3.  Menyimpan File per Character

    I nt f put c( i nt kar , FI LE *pt r_ f i l e ) ;

    4.  Membaca File per Character

    I nt f get c( FI LE *pt r_ f i l e ) ;

    5.  Membaca File per Integer

    I nt get w( FI LE *pt r _f i l e) ;

    6.  Menyimpan File per Integer

    I nt put w( FI LE *pt r _f i l e) ;

    7.  Membaca File per Blok

    Untuk menyimpan atau membaca data file dalam bentuk kesatuan blok (sejumlah

     byte), misalnya untuk tipe float atau struct (struktur)

    i nt f read( voi d *buf f er , i nt n, FI LE *pt r_ f i l e) ;

    8.  Menyimpan File per Blok

    i nt f wr i t e( voi d *buf f er , i nt j um_byt e, i nt n, FI LE*pt r _ f i l e) ;

    9.  Membaca Data String dari File

    Fungsi yang digunakan untuk membaca data string pada file yaitu fgets( ) untuk

    menyimpan string str  ke dalam file. Dan  fputs( ) untuk membaca string dari file

    sampai ditemukannaya karakter baris-baru ‘\n’ atau setelah (n-1) karakter, dangan n 

    adalah panjang maksimal string yang dibaca per wktu-baca.

    char * f get s(char *st r , i nt n, FI LE *pt r_ f i l e) ;

    10. Menyimpan Data String dari File

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    108/120

      i nt f put s(char *str , FI LE *pt r_ f i l e) ;

    11. Mengganti Nama File

    Fungsi yang berguna untuk menghapus file, yaitu rename(). Bentuk deklarasinya :

    i nt r ename( char *namaf i l el ama, char *namaf i l ebaru) ;

    PENUTUP

    Bemacam-macam perintah untuk memanipulasi file yang terdapat pada bahasa

    C++. Perintah-perintah yang dipakai tersebut harus sesuai dengan tipe data yang

    disimpan pada file.

    SOAL-SOAL

    Buatlah contoh program untuk masing-masing operasi file.

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    109/120

    Algoritma dan Pemrograman 2

    Pertemuan Ke-13 & 14

    Arsip ( File) 3

    Disusun Oleh :M u k i d i n, S.Kom.

    Jurusan Teknik Informatika

    STIKOM POLTEK CIREBON

    2009 

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    110/120

    Algoritma dan Pemrograman 2

    Judul Materi  : Arsip (File) 3

    Deskripsi Materi  : Materi ini membahas tipe data file, dan proses- proses konsolidasi, penggabungan (merging) dua file, updating data file dan spliting.

    Tujuan Instruksional Khusus  :11. Mendefinisikan dan menggunakan tipe data file

    12. Mendeskripsikan tipe data file

    13. Menggunakan tipe data file14. Menjelaskan fungsi-fungsi pada tipe data file

    15. Mengimplementasikan fungsi-fungsi file untuk memanipulasi file

    Referensi  :

    •  Buku TeksMunir, Rinaldi (2005),  Algoritma dan Pemrograman dalam Bahasa Pascal dan

    C , Buku 2, Edisi Ketiga, Penerbit Informatika Bandung.Charibaldi, N. (2004), Modul Kuliah Algoritma Pemrograman II , Edisi Kedua,

    Yogyakarta

    •  Buku Acuan/ReferensiBrassard, Gilles (1999), Fundamentals of algorithma, PrinteceHall.

    Jarne, Stroustrup B. (1997), C++ Programming language, AT &T.

    Kristanto, Andri (2003), Algoritma pemrograman C++, Graha Ilmu.

    Schildt,Herbert (2000), The Complete Reference C++, McGraw-Hill.Sedgewick, R. (2000), Algoritma Third edition In C part 5, Addison Wesley.

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    111/120

    Arsip (File) 3 

    PENDAHULUAN

    Beberapa proses di bawah ini merupakan proses yang terjadi pada file, seperti

    konsolidasi, penggabungan (merging) dua file, updating data file dan spliting.

    ISI

    A. Algoritma Konsolidasi 

    Algoritma Konsolidasi adalah pengelompokan data dengan kunci yang sama yang harus

    diproses sebagai satu kesatuan.

    Contoh :

    Diketahui sebuah Arsip Nilai Mahasiswa, satu mahasiswa dapat mempunyai beberapa

     buah nilai (karena dalam satu semester mengambil beberapa matakuliah, dan tiap

    mahasiswa bisa berbeda matakuliah).

    Buatlah Algoritma untuk menghitung nilai rata-rata tiap mahasiswa, dan membuat daftar

    nilai yang lebih sederhana, yaitu menuliskan NIM dan nilai rata-rata tiap mahasiswa.

     NIM Nilai NIM Nilai Rata-rata70001 50 70001 65

    70001 80 70002 69

    70001 60 70003 80

    70001 70 70004 53

    70002 55

    70002 75

    70002 65

    70002 86

    70002 64

    70003 77

    70003 8370004 45

    70004 54

    70004 60

    277

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    112/120

    Algoritma Konsolidasi

    {Kondisi awal : ArsipMhs sudah berisi NIM dan nilai}{Kondisi akhir : record sudah dikelompokkan berdasarkan NIM yang sama, dengan

    nilainya adalah nilai rata-rata}

    Deklarasi

    Type DataMhs : Record< NIM : integer

     Nilai : real >

    ArsipMhs1, ArsipMhs2 : seqFile of DataMhsMhs : DataMhs

    CurrentNim, JumNil, nMK : integer

    Rata : realFunction Mrk(Input Mhs : DataMhs) Boolean

    {tanda akhir = }

    DeskripsiOpen(ArsipMhs1,1)

    Open(ArsipMhs2,2)Fread(ArsipMhs1, Mhs)

    If (Mark(Mhs) = true) thenOutput(‘Arsip kosong…’)

    Else

    While (Mark(Mhs) = false) doJumNil 0

    nMK 1

    currentNIM Mhs.NIM {record1 dari ArsipMhs1}Repeat

    JumNil JumNil + Mhs.NilaiFread(ArsipMhs1,Mhs)

    nMK nMK + 1

    Until (currentNIM Mhs.NIM)Rata JumNil/nMK

    Fwrite(ArsipMhs2, )

    Outout(currentNIM,Rata)

    EndwhileEndIf

    Close(ArsipMhs1)

    Close(ArsipMhs2)

    B. Penrosesan Dua Arsip Beruntun

    1. Merging

    Merging adalah penggabungan dua buah file yang tipe recordnya sama. Untuk melakukan

    merging ada dua cara. Cara yang paling sederhana adalah data file kedua ditambahkan

    setelah record terakhir file pertama, sehingga membentuk file baru. Cara ini tidak dapat

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    113/120

    dipakai jika field kunci kedua file sudah terurut dan dikehendaki file gabungan yang field

    kuncinya juga terurut.

    Contoh :

     NIM Nama NIM Nama NIM Nama

    70001 Adi 70002 Yudi 70001 Adi70003 Budi 70009 Eka 70002 Yudi

    70004 Susi 70010 Bima 70003 Budi

    70006 Anti 70004 Susi

    70008 Doni 70006 Anti

    70008 Doni

    70009 Eka

    70010 Bima

    File ArsipMhs1 File ArsipMhs2 File ArsipMhs3

    Algoritma MergingSambung

    {Menggabungkan dua buah arsip beruntun yaitu ArsipMhs1 danArsipMhs2, menjadi sebuah arsip baru yaitu ArsipMhs3,

    dengan cara semua record arsip kedua disambungkan setelah

    record terakhir arsip pertama}{Kondisi awal : arsip pertama dan kedua sudah berisi data}

    {Kondisi akhir : arsip'ketiga berisi hasil sambungan kedua arsip}

    DeklarasiType DataMhs : Record

    ArsipMhsl, ArsipMhs2, ArsipMhs3 : SeqFile of DataMhsMhs : DataMhs

    Function Mark(Input Mhs : DataMhs)   Boolean

    DeskripsiOpen(ArsipMhs1, 1)

    Open(ArsipMhs2, 1)

    Open(ArsipMhs3, 2)FRead(ArsipMhs1, Mhs)

    While (Mark(Mhs) = false) Do

    FWrite(ArsipMhs3, Mhs)

    FRead(ArsipMhs1, Mhs)EndWhile

    FRead(ArsipMhs2, Mhs)

    While (Mark(Mhs) = false) DoFWrite(ArsipMhs3, Mhs)

    FRead(ArsipMhs2, Mhs)

    EndWhileFWrite(ArsipMhs3, )

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    114/120

    Close(ArsipMhsl)

    Close(ArsipMhs2)Close(ArsipMhs3)

    Algoritma Merging2 {versi And}

    {Menggabungkan dua buah arsip beruntun yaitu

    ArsipMhs1 dan ArsipMhs2 yang sudah terurut,

    menjadi sebuah arsip baru yaitu ArsipMhs3 yang juga terurut}{Kondisi awal : arsip pertama dan kedua sudah berisi data}

    {Kondisi akhir : arsip ketiga berisi hasil merging kedua arsip}Deklarasi

    Type DataMhs : Record

    ArsipMhsl, ArsipMhs2, ArsipMhs3 : SeqFile of DataMhs

    Mhs1, Mhs2 : DataMhs

    Function Mark(Input Mhs : DataMhs)  BooleanDeskripsi

    Open(ArsipMhs1, 1)

    Open(ArsipMhs2, 1)Open( ArsipMhs3 , 2)

    FRead(ArsipMhsl, Mhs1)

    FRead(ArsipMhs2, Mhs2)While (Mark(Mhsl) = false) And (Mark(Mhs2) =false) Do

    If (Mhsl.NIM

  • 8/19/2019 Algoritma Dan Pemrograman 2 Pertemuan Ke

    115/120

    F