Rancangan Percobaan

24
BAB I PENDAHULUAN 1.1. Latar Belakang Matematika merupakan program studi pertama di fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Lambung Mangkurat Banjarbaru. Saat ini, program studi Matematika memiliki lima bidang keahlian diantaranya yaitu Statistik, Terapan, Aljabar, Analisis dan Komputasi. Sepertihalnya jenjang pendidikan lain di dunia, suatu fakultas berhubungan erat dengan mahasiswa dan dosen. Berjalan atau tidakny suatu fakultas, program studi maupun bidang keahlian tergantung dengan mahasiswa dan dosen. Struktur Data merupakan salah satu mata kuliah dari bidang keahlian Komputasi. Mata kuliah ini cukup banyak diminati oleh mahasiswa terutama mahasiswa program studi Matematika. Mata kuliah ini pula biasanya ditawarkan pada semester genap yang materinya meliputi : Pointer, List, Rekursi, Sorting, Stack, Queue, dan Searching. Di tahun 2014 ini, mata kuliah Sruktur Data diminati oleh 36 mahasiswa dengan dosen pengajar pak Onie Sosanto, S.Si, M.Si dan pak Yusuf, S.Si, M.Kom. Mengingat kuliah struktur data jadwalnya siang sehingga kelihatannya kurang efisien maka ketika kuliah dengan pak Yusuf, beliau berinisiatif membagi kelompok diskusi supaya kuliahnya tidak mengantuk, lebih fokus dan aktif. Kelompok diskusi 1

description

Rancob

Transcript of Rancangan Percobaan

Page 1: Rancangan Percobaan

BAB I

PENDAHULUAN

1.1. Latar Belakang

Matematika merupakan program studi pertama di fakultas Matematika dan Ilmu

Pengetahuan Alam Universitas Lambung Mangkurat Banjarbaru. Saat ini, program

studi Matematika memiliki lima bidang keahlian diantaranya yaitu Statistik, Terapan,

Aljabar, Analisis dan Komputasi. Sepertihalnya jenjang pendidikan lain di dunia, suatu

fakultas berhubungan erat dengan mahasiswa dan dosen. Berjalan atau tidakny suatu

fakultas, program studi maupun bidang keahlian tergantung dengan mahasiswa dan

dosen.

Struktur Data merupakan salah satu mata kuliah dari bidang keahlian Komputasi.

Mata kuliah ini cukup banyak diminati oleh mahasiswa terutama mahasiswa program

studi Matematika. Mata kuliah ini pula biasanya ditawarkan pada semester genap yang

materinya meliputi : Pointer, List, Rekursi, Sorting, Stack, Queue, dan Searching.

Di tahun 2014 ini, mata kuliah Sruktur Data diminati oleh 36 mahasiswa dengan

dosen pengajar pak Onie Sosanto, S.Si, M.Si dan pak Yusuf, S.Si, M.Kom. Mengingat

kuliah struktur data jadwalnya siang sehingga kelihatannya kurang efisien maka ketika

kuliah dengan pak Yusuf, beliau berinisiatif membagi kelompok diskusi supaya

kuliahnya tidak mengantuk, lebih fokus dan aktif. Kelompok diskusi yang dibagi

menjadi 6 kelompok dengan pokok materi yang dibahas yaitu tentang Stack, Queue dan

Searching. Pembahasan pertama tentang Stack (Array dan Pointer), kedua tentang

Queue (Konsep dasar dan Implementasi), ketiga tentang Queue (Queue lingkaran),

keempat tentang Searching (Sequential dan Binary), kelima tentang Searching (Hash

Search) dan keenam membahas tentang Searching (Binary). Setiap kelompok

mempunyai pokok bahasan masing-masing yang mana pokok bahasan tersebut dibagi

dengan system lotrei. Dengan demikian, atas dasar inilah pada saat diskusi kami dari

kelompo kempat membahas tentang konsep dasar dan implementasi Queue.

1

Page 2: Rancangan Percobaan

1.2. Rumusan Masalah

Berdasarkan latar belakang di atas, maka rumusan masalah yang akan dibahas

dalam makalah ini yaitu sebagai berikut :

a) Apa yang dimaksud dengan Queue ?

b) Bagaimana karakteristik dan penggunaan Queue?

c) Bagaimana bentuk operasi-operasi Queue dan contoh pengaplikasian

operasinya ?

d) Seperti apakah implementasiannya?

1.3. Batasan Masalah

Masalah yang kami bahas dalam makalah ini yaitu

a) Menjelaskan pengertian Queue

b) Menjelaskan karakteristik dan penggunaan Queue

c) Menjelaskan bentuk operasi-operasi Queue dan contoh pengaplikasian Queue

d) Menjelaskan implementasi Queue

1.4. Tujuan

Pembuatan makalah ini bertujuan untuk mengetahui konsep-konsep dasar mengenai

Queue yang meliputi pengertiaan queue, karakteristik dan penggunaannya, bentuk

operasi dan pengaplikasiannya serta implementasiannya.

1.5. MetodePenulisan

Adapun metode penulisan makalah ini yaitu menggunakan metode deduktif yang

mana data dan informasi yang ditulis merupakan kesimpulan dari kesamaan informasi

atau data beberapa referensi yang kami dapatkan dari berbagai sumber di media sosial

yaitu internet dan media cetak berupa buku bahan ajar.

2

Page 3: Rancangan Percobaan

BAB II

PEMBAHASAN

2.1. Pengertian Queue

Queue merupakan suatu struktur data linier list. Queue juga merupakan suatu

kumpulan data yang apabila elemen ditambah maka penambahannya berada di posisi

belakang atau hanya diperbolehkan pada salah satu sisi belakang (rear) dan jika dilakukan

pengambilan elemen atau penghapusan (intersection) maka akan dilakukan pada elemen

paling depan (front). Elemen-elemen pada queue dapat bertipe integer, real, dan record

dalam bentuk sederhana atau terstruktur.

Pada Queue, tumpukan disebut juga “Waiting Line” yaitu penambahan elemen baru

dilakukan pada bagian belakang dan penghapusan elemen dilakukan pada bagian depan.

Sistem pengaksesan pada Queue menggunakan sistem FIFO (First In First Out), artinya

elemen yang pertama kali masuk yang akan pertama kali dikeluarkan dari Queue.

Contohnya: Queue Q = ( a1, a2, a3…,an), maka

1. Elemen a1 adalah elemen paling depan.

2. Elemen ai adalah diatas elemen ai-1, di mana 1< i <n.

3. Elemen an adalah elemen paling belakang.

Head (atau front) menunjuk keawal antrian Q (elemen terdepan), sedangkan tail

( rear) menunjuk akhir antrian Q (elemen paling belakang). Disiplin FIFO pada Queue

berimplikasi jika elemen A, B, C, D, E dimasukkan ke Queue, maka penghapusan atau

pengambilan elemen akan terjadi dengan urutan A, B, C, D, E.

Queue jika diartikan secara harfiah berarti antrian. Queue merupakan salah satu

contoh aplikasi dari pembuatan double linked list yang cukup sering kita temui dalam

kehidupan sehari-hari, misalnya saat anda mengantri diloket untuk membeli tiket. Istilah

yang cukup sering dipakai apabila seseorang masuk dalam sebuah antrian adalah enqueue.

Sedangkan istilah yang sering dipakai bila seseorang keluar dari antrian adalah dequeue.

3

Page 4: Rancangan Percobaan

2.2. Karakteristik Queue

Karakteristik pada Queue (antrian) adalah sebagai berikut.

1. Elemen antrian yaitu item-item data yang terdapat di elemen antrian.

2. Head (front) yaitu elemen terdepan dari antrian.

3. Tail (rear) yaitu elemen terakhir dari antrian.

4. Jumlah elemen pada antrian (count).

5. Status atau kondisi antrian.

Kondisi antrian yang menjadi perhatian adalah :

Penuh

Bila elemen di antrian  mencapai  kapasitas  maksimum  antrian. Pada kondisi ini,

tidak mungkin dilakukan penambahan keantrian. Penambahan elemen menyebabkan

kondisi kesalahan Overflow.

Kosong

Bila tidak ada elemen di antrian. Pada kondisi ini, tidak mungkin dilakukan

pengambilan elemen dari antrian. Pengambilan elemen menyebabkan kondisi

kesalahan Underflow.

2.3. Pengunaan Queue

Meski Queue sangat sederhana, namun Queue merupakan kakas dasar penyelesaian

masalah-masalah besar. Penggunaan Queue yang utama adalah untuk simulasi fenomena

antrian di dunia nyata, serta fenomena antrian di pengolahan data.

Penggunaan Queue dapat dicontohkan seperti dibawah ini :

Simulasi antrian di dunia nyata, antara lain :

Antrian pembelian tiket di depan loket untuk bis, kereta api, bioskop.

Antrian mobil di depan gerbang jalan tol.

Antrian kendaraan di jalanan umum.

Antrian menunggu di suatu bank

Sistem produksi

Barisan bahan atau komponen yang akan diproses suatu mesin.

Barisan bahan atau komponen yang akan diproses suatu manusia.

4

Page 5: Rancangan Percobaan

2.4. Operasi – Operasi pada Queue

Operasi-operasi pokok (dasar) pada Queue adalah sebagai berikut.

1. Create Queue (Q)

Create Queue (inisialisasi) yaitu suatu operasi untuk membuat antrian baru Q dengan

jumlah elemen kosong dan menginisialisasi (menunjukkan) suatu antrian.

2. EnQueue (Push)

Enqueue (addQueue) merupakan suatu operasi untuk memasukkan data atau sebuah

elemen X kedalam queue sebagai elemen akhir di Q.

3. DeqQueue(Pop)

DeqQueue (removeQueue) merupakan suatu operasi yang digunakan untuk

mengambil sebuah elemen X dari antrian Q atau menghapus elemen terdepan dari

antrian.

Operasi-operasi pengaksesan tambahan pada Queue adalah sebagai berikut.

1. HeadQueue (Q)

HeadQueue (FrontQueue) merupakan suatu operasi untuk mengembalikan atau

mengirim elemen yang ada paling depan dari antrian tanpa menghapusnya.

2. TailQueue (Q)

TailQueue (RearQueue) merupakan suatu operasi untuk mengirim elemen yang ada

di rear tanpa menghapusnya.

Operasi-operasi Queue tambahan yang dapat dilakukan adalah sebagai berikut.

1. IsEmpty

IsEmpty Queue merupakan suatu operasi yang digunakan untuk mengecek atau

memeriksa apakah antrian Q dalam keadaan kosong atau penuh berisi data.

2. IsFull

IsFull Queue merupakan suatu operasi untuk mengecek atau memeriksa apakah

antrian penuh atau masih bisa menampung data dengan cara mengecek apakah jumlah

queue sudah sama dengan MAX_QUEUE atau belum.

3. IsOverflow

IsOverflow Queue (Q) merupakan suatu operasi untuk mengirim dan mengecek

apakah antrian Q telah mengalami overflow.

5

Page 6: Rancangan Percobaan

4. IsUnderflow

IsUnderflow Queue (Q) merupakan suatu operasi untuk mengecek atau memeriksa

apakah antrian Q mengalami underflow.                  

Operasi-operasi terhadap seluruh antrian Q antaralain sebagai berikut.

1. SizeQueue

SizeQueue (Q) merupakan suatu operasi untuk mengetahui jumlah elemen di antrian

Q.

2. IsEqual

IsEqual Queue (Q1, Q2) merupakan suatu operasi untuk mengirim atau mengecek

apakah antrian Q1 dan Q2 sama isinya.

Jumlah operasi pokok Queue tidak banyak. Dengan demikian, sangat sederhana

untuk menyatakan apapun mengenai implementasinya.Sebagai contoh dapat kita lihat

antrean (Q1, Q2,...,QN). Kita notasikan bagian depan dari antrean Q sebagai FRONT (Q)

dan bagian belakang sebagai REAR(Q).Jadi untuk antrean Q = [Q1, Q2, …, QN] : FRONT

(Q) = Q1 dan REAR (Q) = QN. Kita menggunakan notasi NOEL (Q) untuk menyatakan

jumlah elemen di dalam antrean Q. NOEL (Q) mempunyai harga integer. Untuk antrean Q

= [Q1,Q2,…, QN], maka NOEL (Q) = N.

Operator penyisipan (insertion) disebut INSERT dan operator penghapusan (deletion)

disebutREMOVE.

Sebagai contoh untuk memperjelas bekerjanya antrean, kita perhatikan sederetan

operasi berikut ini. Kita mulai dengan antrean hampa Q. Antrean hampa Q, atau Q[ ] dapat

disajikan seperti terlihat pada Gambar 4.1

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Gambar 4.1.Antreanhampa

Di sini :

NOEL(Q) = 0

FRONT(Q) = tidakterdefinisi

REAR(Q) = tidakterdefinisi

Lalukita INSERT elemen A, diperoleh Q = [A], sepertiterlihat di Gambar 4.2.

6

Page 7: Rancangan Percobaan

- - - - - - - - - - - - - - - - - -

A

- - - - - - - - - - - - - - - - - -

Gambar 4.2.Elemen A dimasukkan

Di sini :

NOEL(Q) = 1

FRONT(Q) = A

REAR(Q) = A

Dilanjutkandengan INSERT elemen B, sehinggadiperoleh Q = [A, B], sepertiterlihat di

Gambar 4.3.

- - - - - - - - - - - - - - - - - -

A B

- - - - - - - - - - - - - - - - - -

Gambar 4.3.Elemen B dimasukkansetelahelemen A

Di sini :

NOEL(Q) = 2

FRONT(Q) = A

REAR(Q) = B

Dilanjutkandengan INSERT elemen C, sehinggadiperoleh Q = [A, B, C], sepertiterlihat di

Gambar 4.4.

- - - - - - - - - - - - -

A B C

- - - - - - - - - - - - -

Gambar 4.4.Elemen C dimasukkansetelahelemen B

Di sini :

NOEL(Q) = 3

FRONT(Q) = A

REAR(Q) = C

Dilanjutkandengan DELETE satuelemendari Q, sehinggadiperoleh Q = [B,

C],sepertiterlihat di Gambar 4.5.

7

Page 8: Rancangan Percobaan

- - - - - - - - - - - - -

B C

- - - - - - - - - - - - -

Gambar 4.5.Satuelemendihapus

Di sini :

NOEL(Q) = 2

FRONT(Q) = B

REAR(Q) = C

Demikians eterusnya, kita dapat melakukan serangkaian INSERT dan DELETE

yang lain. Suatu kesalahan underflow dapat terjadi, yakni apabila kita melakukan

penghapusan pada antrean hampa. Antrean dikatakan beroperasi dalam cara FIRST-IN-

FIRST-OUT(FIFO). Disebut demikian karena elemen yang pertama masuk merupakan

elemen yang pertama keluar. Model antrean, sangat sering ditemukan dalam kejadian

sehari-hari, seperti mobil yang menunggu untuk pengisian bahan bakar, mobil pertama dari

antrean merupakan mobil pertama yang akan keluar dari antrean. Sebagai contoh lain

adalah orang yang menunggu dalam antrean di suatu bank. Orang pertama yang berada di

dalam barisan tersebut akan merupakan orang pertama yang akan dilayani.

2.5. Implimentasi Queue Dengan Menggunakan Array

Queue = Antrian

Elemen yang pertama kali masukkeantrianakankeluarpertamakalinya

DEQUEUE adalahmengeluarkansatuelemendarisuatuAntrian

8

Page 9: Rancangan Percobaan

Antriandapatdibuatdenganmenggunakan: Liniear Array dan Circular Array

2.5.1. Implimentasi Queue dengan linier array

Linear array adalah suatu array yang dibuat seakan-akan merupakan suatu

garis lurus dengan satu pintu masuk dan satu pintu keluar. Berikut ini diberikan

deklarasi kelas QueueLinear sebagai implementasi dari Queue menggunakan linear

array. Dalam prakteknya, kita dapat menggantinya sesuai dengan kebutuhan kita. Data

dikses dengan field data, sedangkan indeks item pertama dan terakhir disimpan dalam

field Head dan Tail. Konstruktor akan menginisialisasi nilai Head dan Tail dengan -1

untuk menunjukkan bahwa antrian masih kosong dan mengalokasikan data sebanyak

MAX_QUEUE yang ditunjuk oleh data. Destruktor akan mengosongkan antrian

kembali dan mendealokasikan memori yang digunakan oleh antrian.

Queue denganmenggunakan linier array

Terdapatsatubuahpintumasuk di suatuujungdansatubuahpintukeluar di ujungsatunya

Sehinggamembutuhkanvariabel Head dan Tail

Seperti halnya pada tumpukan (stack), maka dalam queue kita juga mengenal

tiga operasi dasar , yaitu inisialisasi (create) queue, enqueue queue dan dequeue queue.

Create queue

Untuk inisialisasi queue menggunakan array, maka kita membutuhkan

deklarasi antrian, misalnya sebagai berikut:

Const Max_Elemen = 100;

Type Antri = array[1..Max_Elemen] of integer;

Var Antrian : Antri;

Depan,

Belakang : integer;

9

Page 10: Rancangan Percobaan

Dalam deklarasi di atas, elemen queue dinyatakan dalam tipe integer.

Variabel depan menunjukkan posisi elemen pertama dalam array, sedangkan

variable menunjukkan posisi elemen terakhir dalam array.

Enqueue queue

Penambahan elemen baru, yang dinyatakan oleh variable X bisa

diimplementasikan dengan statement :

Belakang := Belakang + 1;

Antrian[Belakang] := X;

Dequeue queue

Penghapusan elemen bisa diimplementasikan dengan:

X := Antrian[Depan];

Depan := Depan + 1;

Pada saat permulaan, Belakang dibuat sama dengan 0 dan Depan dibuat sama dengan

1, dan antrian dinyatakan kosong jika Belakang < Depan. Banyaknya elemen yang ada

di antrian dinyatakan sebagai Belakang – Depan + 1.

2.5.2. Implementasi Queue dengan Circular Array

Circular array adalah suatu array yang dibuat seakan-akan merupakan sebuah

lingkaran dengan titik awal(head) dan titik akhir (tail) saling bersebelahan jika array

tersebut masih kosong.

Create()

Untuk menciptakan dan menginisialisasi Queue

Dengan cara membuat Head dan Tail = -1

10

Page 11: Rancangan Percobaan

IsEmpty()

Untuk memeriksa apakah Antrian sudah penuh atau belum

Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty

Kita tidak memeriksa Head, karena Head adalah tanda untuk kepala antrian

(elemen pertama dalam antrian) yang tidak akan berubah-ubah

Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian

kebelakang, yaitu menggunakan nilai Tail

IsFull()

Untuk mengecek apakah Antrian sudah penuh atau belum

Dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena MAX-1

adalah batas elemen array pada C) berarti sudah penuh

11

Page 12: Rancangan Percobaan

Enqueue(data)

Untuk menambahkan elemen ke dalam Antrian, penambahan elemen selalu

ditambahkan di elemen paling belakang

Penambahan elemen selalu menggerakan variabel Tail dengan cara increment

counter Tail

Dequeue()

Digunakan untuk menghapus elemen terdepan/pertama dari Antrian

Dengan cara mengurangi counter Tail dan menggeser semua elemen antrian

kedepan.

Penggeseran dilakukan dengan menggunakan looping

12

Page 13: Rancangan Percobaan

Clear()

Untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head

= -1

Penghapusan elemen-elemen Antrian sebenarnya tidak menghapus arraynya,

namun hanya mengeset indeks pengaksesan-nya ke nilai -1 sehingga elemen-

elemen Antrian tidak lagi terbaca

13

Page 14: Rancangan Percobaan

Tampil()

Untuk menampilkan nilai-nilai elemen Antrian o Menggunakan looping dari

head s/d tail

2.6 Implementasi queue menggunakan linked listStruktur data queue dapat juga diimplementasikan dengan menggunakan linked list. Berikut penjelasan detail mengenai implementasi queue dengan linked list:~ Menggunakan 2 variabel reference objek yakni front dan back.~ Queue dikatakan kosong apabila front=back=null.~ Proses enqueue dilakukan dengan cara :- Buat node baru N, kemudian masukkan data baru X ke dalam N.- Jika queue dalam keadaan kosong, atur nilai front=back=N.- Jika queue tidak kosong, tambahkan N dan update nilai back.~ proses dequeue dilakukan dengan cara menghapus elemen pertama (yang diacu oleh variabel front).

14

Page 15: Rancangan Percobaan

Gambar 1. Ilustrasi Implementasi Queue dengan LinkedLIst

Dalam gambar 1 diatas, terlihat ada 4 buah data. Setiap data mempunyai anggota yang

menunjukkan ke data berikutnya, kecuali elemen yang paling belakang menunjuk ke

NULL. NULL berarti bahwa elemen tersebut tidak menunjuk ke posisi apapun. Elemen

paling depan ditunjuk oleh variabel front, sedangkan elemen paling belakang ditunjuk oleh

variabel back.

Setiap elemen dari queue mempunyai 2 bagian yaitu bagian data yang bernilai dengan data,

dan sebagian lagi adalah penunjuk ke data berikutnya (next).

BAB III

PENUTUP

3.1 Kesimpulan

Dari pembahasansebelumnyadapatditarikbeberapakesimpulan, yaitu :

15

Page 16: Rancangan Percobaan

a. Queue (antrian)adalah suatu struktur data linier list yang merupakan suatu

kumpulan data.

b. Pada queueapabila elemen ditambah maka penambahannya berada di posisi

belakang atau hanya diperbolehkan pada salah satu sisi belakang (rear)dan jika

dilakukan pengambilan elemen atau penghapusan (intersection) maka akan

dilakukan pada elemen paling depan (front).

c. Terdapatbeberapa karakteristik pada Queue, yaitu :elemenantrian, head (font), tail

(rear) , Jumlah elemen pada antrian (count), dan status atau kondisi antrian.

d. Queue banyakdigunakan di dalamkehidupannyata, contohnyaSimulasi antrian

dansistem produksi.

e. Terdapat operasi-operasi pokok (dasar) pada QueueyaituCreate Queue (Q),

EnQueue (Push), DeqQueue(Pop)danditambahoperasi-operasitambahanlainnya.

f. Implementasi queue pada array dapat dilakukan dengan linier array dan circulair

array.

g. Implementasi queue pada linkedlist dapat dilakukan dengan menggunakan 2

variabel reference objek yakni front dan back, Queue dikatakan kosong apabila

front=back=null, Proses enqueue dilakukan, proses dequeue dilakukan dengan cara

menghapus elemen pertama.

a. Pada linier array linear array suatu array dibuat seakan-akan merupakan suatu garis

lurus dengan satu pintu masuk dan satu pintu keluar.Sedangkanpadacircular array

suatu array dibuat seakan-akan merupakan sebuah lingkaran dengan titik

awal(head) dan titik akhir (tail) saling bersebelahan jika array tersebut masih

kosong.

3.2 Saran

Saran dari kami sebagai tim penulis adalah program queue (antrian) sangat tepat

digunakan dalam kehidupan nyata seperti pada simulasi antrian dan sistem produksi.

Pekerjaan akan lebih mudah dan cepat terselesaikan dari pada menggunakan sistem manual.

Selain itu diharapkan pembaca agar mencari referensi lain untuk contoh listing program

16

Page 17: Rancangan Percobaan

queue untuk pemakaian aplikasi lain jugaseperti listing program untuk aplikasi Free Pascal

IDE, Turbo Pascal, dan lain-lain.

17

Page 18: Rancangan Percobaan

18