tugas praktikum 4 praktikum

Upload: adi-cameng

Post on 07-Jul-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/18/2019 tugas praktikum 4 praktikum

    1/20

    BAB I

    LANDASAN TEORI

    1.1. Array

    Array adalah tipe terstruktur yang terdiri dari sejumlah komponen yang memiliki

    tipe yang sama. Array memiliki indeks yang digunakan untuk membedakan data dalam

    array satu dan yang lainnya.

    Array memiliki susunan tertentu, array yang paling sederhana adalah array 1

    dimensi. Gabungan dari array 1 dimensi dengan array 1 dimensi menghasilkan array 2

    dimensi. Gabungan dari array 1 dimensi dengan array 2 dimensi menghasilkan array 3

    dimensi.

    Didalam pembuatan laporan ini hanya memakai array 1 dimensi. Pendeklarasian

    array dilakukan dengan cara sebagai berikut:

     pemberian nilai pada array dilakukan dengan cara sebagai berikut:

    1.2. Looping atau perulangan

    ooping adalah sebuah program perulangan statement dengan jumlah tertentu jika

    kondisi terpenuhi. Perulangan akan berhenti jika nilai yang dimasukan sudah tidak 

    memenuhi syarat yang diberikan.

    1

    //deklarasi array 1 dimensi

    Tipe_data variable[panjang_array ];

    //pemberian nilai array

    Tipe_data variable[panjang_array ]=nilai;

  • 8/18/2019 tugas praktikum 4 praktikum

    2/20

    !acam"macam looping pada # :

    • $hile loop

    %ynta& : $hile 'e&pression( statement

    • do"$hile loop

    %ynta& : do statement $hile 'condition()

    %ecara *ungsional hampir sama dengan $hile loop, hanya saja condition dalam

    do"$hile die+aluasi setelah eksekusi statement, dengan kata lain sedikitnya satu kali

    eksekusi statement $alaupun kondisi tidak terpenuhi.

    • *or loop

    %ynta& : *or'initialiation)condition)increase( statement)

    1.3. Queue

    Antrian '-ueue( mempunyai prinsip /0 'irst /n irst 0ut( bah$a yang pertama

    masuk yang pertama keluar. ueue memiliki kosep, data yang diinputkan akan

    dimasukan kedalam tail, atau data paling belakang, dan head akan di akan dijumlahkan

    untuk mengambil atau mengeluarkan data.

    Adapun operasi didalam ueue sebagai berikut:

    1. nueue !emasukkan data ke dalam antrian

    n-ue

    digunakan

    untuk proses

     pamasukan

    data, dengan

    cara

    menambahkan

    tail dengan satu.

    ntuk 

    2

    void enqueue(int x

    !i" ((antrian#$%&' == )) (antrian#T&*+ ==

    !

    antrian#$%&' = 1;

    antrian#T&*+ = 1;

    ,

    else

    !

    antrian#T&*+ = antrian#T&*+ - 1;

    ,

    antrian#data[antrian#T&*+] = x;

    ,

  • 8/18/2019 tugas praktikum 4 praktikum

    3/20

    menambah panjang antrian, program akan menerima inputan user dan disimpan pada

    array indeks ke tail.

    2. Deueue !engeluarkan data terdepan dari antrian

    De-ueue melakukan proses untuk menghilangkan indeks terdepan, sehingga

    data terdepan seakan tidak ada, tapi sebenarnya datanya masih ada, tapi indeks head di

    tambahkan satu sehingga ketika saat menampilkan data maka indeks terdepan sebelum

    di de-ueuer tidak akan ditampilkan.

    3. #lear !enghapus seluruh antrian

    #lear atau create empty melakukan proses untuk membuat data kembali seperti

    a$al dengan mengembalikan indeks head dan tail ke indeks ke 4.

    5. /smpty !emeriksa apakah antrian kosong

    /smpty

    digunakan

    untuk 

    3

    void 'equeue(!

    i" (q#.ead q#tail !

    q#.ead = ;

    q#tail = ;,

    q#.ead = q#.ead - 1;

    void 0reate%mpty(

    !

    antrian#$%&' = ;

    antrian#T&*+ = ;

    ,

    int *s%mpty(

    !

    i" ((antrian#$%&' antrian#T&*+ (antrian#$%&' ==

    ))

    (antrian#T&*+ ==

    return 1;

    else

    return ;

    ,

  • 8/18/2019 tugas praktikum 4 praktikum

    4/20

    menyatakan apakah antrian masih kosong atau tidak. Dengan cara menentukan apakah

    indek head lebih besar dari tail, atau apakah head sama dengan tail.

    6. /sull !emeriksa apakah antrian penuh

    /sull

    digunakan

    untuk 

    menyatakan

    apakah antrian

    sudah penuh

    atau belum, dengan cara mengecek apakah tail sama dengan panjang maksimum

    antrian.

    4

    int *s2ull(

    !

    i" (antrian#T&*+ == max

    return 1;

    else

    return ;

    ,

  • 8/18/2019 tugas praktikum 4 praktikum

    5/20

    BAB II

    PEMBAASAN

    2.1. !onto"

    Progra#

    Pada

     program ini,

    user akan

    menginputkan

    data satu per 

    satu, kemudian

    setelah selesai

    menginputkan

    data ke dalam

    -ueue , maka

     program akan

    menampilkan

    semua isi

    -ueue.

    2.1.1. Sour$e

    !o%e !onto"

    Progra#

    5

    3in0lude 4stdio#.

    3in0lude 4stdlib#.

    3de"ine max 5

    typede" stru0t

    !

      int tail6 .ead6 data[max];

    ,7ueue;

    7ueue antri;

    void 0reate_empty(

    !

      antri#.ead=;

      antri#tail=;

    ,

    void enque(int x

    !

      i"((antri#.ead==))(antri#tail==

      !

      antri#.ead=1;

      antri#tail=1;

     

    ,

      else

      !

      antri#tail--;

      ,

      antri#data[antri#tail]=x;

    ,

    void deque(

    !

      i"(antri#.eadantri#tail

      !

      antri#.ead=;

      antri#tail=;

      ,

      antri#.ead--;

    ,

    int is%mpty(

    !

      i"((antri#.eadantri#tail(antri#.ead==))(antri#tail==

      !

      return 1;

      ,

      else

      !

      return ;

      ,

    ,

    int is2ull(

    !

      i"(antri#tail==max

      !

      return 1;

    ,

      else

      !

      return ;

      ,

    ,

    int main(

    !

      int *nput6lagi6alinan;

      0reate_empty(;

      lagi =1;

      8.ile(lagi==1

      !

      i"((is%mpty(==1(is2ull(==

      !

      print"(9antrian tersedia:n9;

      print"(9masukan data< 9;

      s0an"(9d96)*nput;

      enque(*nput;

      print"(9tamba.kan datan9;

      print"(91#ya6#tidakn9;

      print"(9input pili.an< 9;

      s0an"(9d96)lagi;

      ,

      else i"(is2ull(==1

      !

      print"(9antrian penu.:n9;

      lagi=;

      ,

      ,

      8.ile(is%mpty(==

  • 8/18/2019 tugas praktikum 4 praktikum

    6/20

    2.1.2. Pen&ela'an $onto"

    #ontoh

     program

    tersebut adalah

     penerapan

    -ueue,

     bagaimana

     bilangan diantri. Didalam source code tersebut menggunakan *ungsi n-ue, De-ue,

    /sull, /smpty, dan #reate mpty. Didalam *ungsi n-ue dalam program jika nilai

    7ead dan 8ail bernilai 4, nilai 7ead dan 8ail akan diubah menjadi 1, untuk membulai

    sebuah antrian.

      9ika

    tidak makaseperti

     biasannya,

     bah$a nilai

    dari tail akan

    di ingkremen,

    untuk 

    menerima

    6

    !

      print"(9d96antri#data[antri#.ead];

      deque(;

      ,

      return ;

    ,

    void 0reate_empty(

    !

      antri#.ead=;

      antri#tail=;

    ,

    void enque(int x

    !

      i"((antri#.ead==))(antri#tail==

      !

      antri#.ead=1;

      antri#tail=1;

    , else !

      antri#tail--;

      , antri#data[antri#tail]=x;

    ,

  • 8/18/2019 tugas praktikum 4 praktikum

    7/20

    inputan data kedalam antrian yang dimulai dari paling belakang. Didalam *ungsi

    inputan user diambil dengan +ariable &. maka ketika user menginputkan, +ariable

    didalam struck akan menyamakan nilai dengan +ariable &,

    Pada

    ungsi De-ue,

     jika nilai head

    lebih besar  

    dari tail maka

    7ead dan tail

    diberi nilai 4,

    karena antrian

    dinyatakan

    sudah kosong jika nilai head lebih besar dari pada tail. Pada de-ue yang mengalami

    ingkremen adalah head. ntuk menghilangkan data atau pengambilan data.

    ungsi ismpty dan isull menyatakan syarat penuh dari -ueue dan syarat

    kosong dari -ueue. %yarat penuh adalah saat tail mencapai nilai ma&, dan saat kosong

    adalah saat nilai head lebih besar dari tail dan saat nilai head dan tail bernilai 4.

    Didalam program akan melakukan perulangan selama nilai lagi sama dengan 1,

    dengan menerima inputan user untuk menentukan ingin menambah data atau tidak.

    Didalam perulang ini user akan diminta menginputkan data.

    2.1.3. S$reen S"oot Progra# A

    7

    void deque(

    !

      i"(antri#.eadantri#tail

      !

      antri#.ead=;

      antri#tail=;

      ,

      antri#.ead--;

    ,

    8.ile(lagi==1

      !

      i"((is%mpty(==1(is2ull(==

      !

      print"(9antrian tersedia:n9;

      print"(9masukan data< 9;

  • 8/18/2019 tugas praktikum 4 praktikum

    8/20

    (a#)ar 2.1 run $onto" progra#

    2.2. Lati"an

    Pada program ini, user akan menginputkan data satu per satu, kemudian setelah

    selesai menginputkan data ke dalam -ueue , maka program akan menampilkan semua

    isi -ueue. Dengan menambahkan *itur untuk mencari data pada antrian menggunakan

    *ungsi, dan

    Algoritma

     pencarian.

    2.2.1. Sour$e

    !o%e

    8

    3in0lude 4stdio#.

    3in0lude 4stdlib#.

    3de"ine max 5

    typede" stru0t

    !

      int tail6 .ead6 data[max];

    ,7ueue;

    7ueue antri;

    void 0reate_empty(

    !

      antri#.ead=;

      antri#tail=;

    ,

    void enque(int x

    !

      i"((antri#.ead==))(antri#tail==

      !

      antri#.ead=1;

      antri#tail=1;

      ,

      else

      !

      antri#tail--;

      ,

      antri#data[antri#tail]=x;

    ,

  • 8/18/2019 tugas praktikum 4 praktikum

    9/20

    9

    void deque(

    !

      i"(antri#.eadantri#tail

      !

      antri#.ead=;

      antri#tail=;

      ,

      antri#.ead--;

    ,

    int is%mpty(

    !

      i"((antri#.eadantri#tail(antri#.ead==))(antri#tail==

      !

      return 1;

      ,

      else

      !

      return ;

      ,

    ,

    int is2ull(

    !

      i"(antri#tail==max

      !

      return 1;

      ,

      else

      !

      return ;

      ,

  • 8/18/2019 tugas praktikum 4 praktikum

    10/20

    10

    int 0ari(int x

    !

      int y;

      "or(y=;y4antri#tail;y--

      !

      i"(x==antri#data[y]

      !

      print"(9data d ditemukan pada antrian ke> d96x6y;

      ,

      ,

    ,

    int main(

    !

      int *nput6lagi6alinan;

      0reate_empty(;

      lagi =1;

      8.ile(lagi==1

      !

      i"((is%mpty(==1(is2ull(==

      !

      print"(9antrian tersedia:n9;

      print"(9masukan data< 9;

      s0an"(9d96)*nput;

      enque(*nput;

      print"(9tamba.kan datan9;

      print"(91#ya6#tidakn9;

      print"(9input pili.an< 9;

      s0an"(9d96)lagi;

      ,

  • 8/18/2019 tugas praktikum 4 praktikum

    11/20

    2.2.2. Pen&ela'an Lati"an

    %ama 7alnya seperti #ontoh program, namun didalam latihan program diminta

    untuk menambahkan *ungsi pencarian data. Proses pencarian data adalah dengan

    menggunakan nilai dari head kemudian dilakukan perulangan untuk mencari data

    dengan mencocokan nilainya satu"satu dari nilai head sampai nilai tail.

    2.2.3. S$reen

    S"oot Lati"an

    11

    else i"(is2ull(==1

      !

      print"(9antrian penu.:n9;

      lagi=;

      ,

      ,

      8.ile(is%mpty(==

      !

      print"(9dt96antri#data[antri#.ead];

      deque(;

      ,

      print"(9masukan data yg akan di0ari< 9;

      s0an"(9d96)alinan;

      0ari(alinan;

      return ;

    ,

    int 0ari(int x

    ! int y;

      "or(y=;y4antri#tail;y-- !

      i"(x==antri#data[y] !

      print"(9data d ditemukan pada antrian ke> d96x6y;

      ,

      ,

    ,

  • 8/18/2019 tugas praktikum 4 praktikum

    12/20

    (a#)ar 2.2. Run Lati"an

    BAB III

    LAMPIRAN T*(AS

    3.1 Tuga'

    ealisasi ueue dalam kehidupan sehari"hari dan buat program sederhana untuk 

    merepresentasikannya. Program yang dibuat adalah program untuk melakukan antrian

     pengambilan sembako, dengan menggunakan ringbu**er 

    12

  • 8/18/2019 tugas praktikum 4 praktikum

    13/20

    3.1.1. Sour$e !o%e Tuga'

    13

    3in0lude 4stdio#.

    3in0lude 4stdlib#.

    int .ead=16tail=1;

    void %nque(;

    void 'eque(;

    void tampil(;

    void isi(;int is2ull(;

    int is%mpty(;

    typede" stru0t

    !

      int peng.asilan6kepemilikan6tandai;

      0.ar nama[?5]6alamat[?5];

    ,sembako;

    sembako antrian[1];

    int main(

    !

      int x6mks6pili.an6lagi=16ulang=1;

      print"(9tttt&ntrian @embakon9;

      print"(9masukan jumla. maksimum antrian< 9;s0an"(9d96)mks;

     

    menu<

      print"(9menun9;print"(91#registrasi antriann9;

      print"(9?#proses antrian terdepann9;print"(9A#tampilkan

    antriann9;

      print"(9pili.an< 9;s0an"(9d96)pili.an;

      s8it0.(pili.an

      !

      0ase 1<

      8.ile(lagi==1

      !

      i"(is2ull(mks==))is%mpty(==1

      !

      isi(;

      %nque(;

      print"(9tamba. lagi 1#ya/#tidakn9;

      s0an"(9d96)lagi;

      ,

      else

      !

      break;

      ,

      ,  goto menu;

      break;

    0ase ?<

      ulang=1;

      i"(ulang==1

      !

      'eque(;

  • 8/18/2019 tugas praktikum 4 praktikum

    14/20

    14

    print"(9d96.ead;

      print"(9prosese lagi 1#ya/#tidakn9;

      s0an"(9d96)ulang;

      ,

      else!

      goto menu;

      break;

      ,

      0ase A<

      i"(.ead==1))tail==1

      !

      print"(9data kosong9;

      ,

      else

      !

      tampil(;

      ,

      goto menu;

      break;

      ,

    ,

    void %nque(int mks

    !

      i"(.ead==1))tail==1

      !

      tail--;

      ,else i"(.ead4=tail

      !

      tail--;

      ,

    ,

  • 8/18/2019 tugas praktikum 4 praktikum

    15/20

    15

    void isi(

    !  ""lus.(stdin;

      print"(9nama< 9;

      gets(antrian[tail]#nama;

      print"(9alamat< 9;

      gets(antrian[tail]#alamat;

      print"(9peng.asilan< 9;

      s0an"(9d96)antrian[tail]#peng.asilan;

      print"(9golongan< 9;

      s0an"(9d96)antrian[tail]#kepemilikan;

    ,

    int is%mpty(

    !

      i"(.eadtail

      !

      print"(9antrian kosong:n9;

      .ead=1;

      tail=1;

      return ;

      ,

      else

      !  return 1;

      ,

    ,

    int is2ull(int mks

    !

      i"(tailmks

      !

  • 8/18/2019 tugas praktikum 4 praktikum

    16/20

    3.1.2. S$reen

    '"oot progra#

    Tuga'

    ;erikut adalah

    tampilan dari

     program:

    (a#)ar 3.1.

    ta#pilan

    progra#

    3.1.3.

    Pen&ela'an

    Progra#

    Tuga'

    16

    return 1;

      ,  else

      !

      return ;

      ,

    ,

    void 'eque(

    !

      i"(is%mpty(==1))(.ead4tail

      !

      .ead--;

      ,

      else

      !

      print"(9antrian kosong:n9;

      ,

    ,

    void tampil(

    !

      int x6y;

      x=.ead;

      y=tail;  "or(x;x4tail;x--

      !

      print"(9antrian ke>d < sn96x6antrian[x]#nama;

      ,

    ,

  • 8/18/2019 tugas praktikum 4 praktikum

    17/20

    Pada progam antrian sembako, program pertama akan meminta inputan user 

     berupa banyaknya antrian yang akan disediakan.

  • 8/18/2019 tugas praktikum 4 praktikum

    18/20

    masuk ke menu tampil jika nilai head dan tail bernilai 1 atau kosong. Didalam *ungsi

    tampil dilakukan proses perulangan dengan menggunakan *or dan diulang sebanyak tail

    dengan nilai a$al berupa head.

    BAB I+

    PEN*T*P

    ,.1 -e'i#pulan

    Dapat disimpulkan dari tugas ini, -ueue merupakan proses pengantirian dimana

    data pertama yang masuk adalah yang pertama keluar. ungsi digunakan agar program

    lebih e*isien dan sedikit menggunakan memori.

    ,.2 Saran

    %aran pada saat melakukan ring buu*er, pada saat penampilan data diharapkan

    lebih teliti dengan nilai dari pada head agar tidak terjadi kesalahan dalam pengambilan

    nilai a$al.

    18

    void tampil(

    !

      int x6y; x=.ead; y=tail;

      "or(x;x4tail;x--

      ! print"(9antrian ke>d < sn96x6antrian[x]#nama;

      ,

    ,

  • 8/18/2019 tugas praktikum 4 praktikum

    19/20

    DATAR P*STA-A

    1. % ;0G1. ? Looping (Perulangan) Pada Bahasa C @. 21

    !aret 241.http:BBkomanganombudiutama.blogspot.co.idB2412B45Binput"

     program"include"main"int"abn.html2. AC/CA7.A=/=G.@ Pengertian Array, Cara Kerja Dan Contohnya@.

    Diakses 21 maret 241.http:BBaiah.ilearning.meBprogrammingBpengertian"

    array"cara"kerja"dan"contohnyaB

    3. #0DP0GA! #PP.@ Memahami Struct pada Bahasa C @. 21 maret 241.

    http:BBkodeprogramcpp.blogspot.co.idB2416B45Bmemahami"struct"pada"bahasa"

    c.html

    19

    http://komanganombudiutama.blogspot.co.id/2012/04/input-program-include-main-int-abn.htmlhttp://komanganombudiutama.blogspot.co.id/2012/04/input-program-include-main-int-abn.htmlhttp://komanganombudiutama.blogspot.co.id/2012/04/input-program-include-main-int-abn.htmlhttp://komanganombudiutama.blogspot.co.id/2012/04/input-program-include-main-int-abn.html

  • 8/18/2019 tugas praktikum 4 praktikum

    20/20

    20