• Tidak ada hasil yang ditemukan

Think Different Materi ASD 2014 pertemuan_12

N/A
N/A
Protected

Academic year: 2017

Membagikan "Think Different Materi ASD 2014 pertemuan_12"

Copied!
45
0
0

Teks penuh

(1)
(2)

Topik

Pengertian stack

Operasi pada stack

Implementasi stack dengan array

(3)

Stack (Tumpukan)

“Benda yang terakhir masuk ke dalam stack akan menjadi yang pertama keluar

(4)

Ilustrasi Stack

Karena Compo ditumpuk di posisi terakhir, maka Compo

akan menjadi elemen teratas dalam tumpukan. Sebaliknya, karena Televisi ditumpuk pada saat pertama kali, maka

(5)

Pengertian

Stack (tumpukan) adalah struktur data

dimana proses pengambilan dan

penambahan element dilakukan pada satu ujung yang sama.

Stack mengikuti konsep LIFO.

LIFO (Last In First Out) : elemen yang

terakhir kali masuk akan menjadi elemen yang pertama kali keluar.

Stack dapat dibuat dengan menggunakan

(6)

PUSH, POP dan TOP

Operasi dasar pada stack adalah : pop dan push.Push : proses menambah item pada stack.

Pop : proses mengambil item pada stack.

Pop dan push sama-sama dilakukan pada item yang

terakhir kali ditambahkan pada stack.

Sedangkan pointer TOP akan menunjuk pada element

yang paling atas (yang paling akhir ditambahkan) pada stack.

Stack

(7)

Proses Operasi Stack

Contoh lain adalah ada sekumpulan perintah stack

yaitu push(5), push(7), pop, push(3), pop, pop. Jika dijalankan, maka yang akan terjadi adalah :

(8)

Pointer Top

Digunakan untuk menunjuk element

paling akhir yang dimasukkan kedalam

stack.

Jika top tidak menunjuk pada element

manapun hal ini menunjukkan bahwa

stack dalam kondisi kosong (empty).

Pada

array

: top akan menyimpan

(9)

Operasi pada Stack

1. Deklarasi

2. Inisialisasi

3. Cek kosong

4. Cek penuh

(10)

(1) Deklarasi

Proses yang harus dilakukan pertama

kali adalah deklarasi/menyiapkan

tempat.

Langkah yang harus dilakukan adalah :

Deklarasi class

Deklarasi struktur data (menggunakan

array atau linked list)

(11)

Deklarasi Stack dengan Array

1. Pembuatan class contoh :

2. Pembuatan variabel top :

int top;

3. Pembuatan variabel untuk menampung panjang array :

int array_size;

(mendeklarasikan variabel bernama array_size dengan tipe integer)

4. Pembuatan variabel Array :

int tumpukan[];

(12)
(13)

(2) Inisialisasi

Merupakan proses pemberian nilai awal.

Pada

Array

:

1. Pembentukan obyek array beserta ukurannya.

tumpukan = new int[10];

(pembentukan obyek array yang memiliki 10 element, dan alamat obyek akan disimpan pada variabel bernama

tumpukan)

2. Pemberian nilai awal pada variabel top=-1.

(14)
(15)

(3) Cek Kosong

Operasi yang digunakan untuk

mengecek kondisi stack dalam

keadaan kosong.

Caranya : melihat nilai top. Jika nilainya

sama seperti ketika inisialisasi berarti

stack dalam kondisi kosong (top =-1

atau top=null).

Operasi ini harus dapat

(16)
(17)

(4) Cek Penuh

Operasi yang hanya dapat diterapkan pada

stack yang menggunakan array.

Operasi ini digunakan untuk mengecek kondisi

stack dalam keadaan penuh.

Caranya : melihat nilai top. Jika nilai top sudah

menunjuk n-1 (dimana n adalah ukuran array) maka dapat diindikasikan stack sudah dalam kondisi penuh.

Operasi ini harus dapat mengembalikan nilai

(18)
(19)

(5) Operasi POP

Pop adalah proses pengambilan data pada

stack.

Ketika pop terjadi, element pada stack akan

berkurang, yaitu element yang paling akhir ditambahkan.

Sehingga posisi pointer top juga akan

bergeser :

(20)

(5) Operasi POP...

(lanjutan)

Langkah-langkah :

1. Pengecekan stack dalam kondisi kosong dengan memanggil method isEmpty(). Jika nilai yang

dikembalikan true maka pop tidak bisa dilakukan (penangkapan error oleh exception handling). Jika nilai yang dikembalikan false maka akan dilakukan langkah berikutnya (langkah 2 dan 3).

2. Data dari element paling belakang akan menjadi return value (nilai yang dikembalikan).

(21)

Program Pop (Array)

Untuk menggunakan StackException() harus

(22)

(6) Operasi Push

Push adalah proses penambahan element

pada stack.

Ketika push terjadi, element pada stack

akan bertambah 1.

Posisi pointer top akan bergeser menunjuk

pada element baru yang ditambahkan.

(23)

(6) Operasi PUSH...

(lanjutan)

Langkah-langkah :

1. Penambahan element baru pada bagian belakang stack.

2. Pergeseran posisi top.

Khusus untuk array, terlebih dahulu harus

dicek kondisi stack penuh dengan

(24)
(25)
(26)

(7) Operasi peek

Peek adalah proses

pengaksesan

element yang ditunjuk oleh top(yaitu

element yang terakhir kali

ditambahkan).

Operasi ini berbeda dengan pop

karena tidak disertai dengan

(27)
(28)

Contoh Penerapan Stack

Konversi Desimal ke Biner

Notasi Polish

Menara Hanoi

(29)
(30)

Notasi Polish (1)

Menggubah notasi infix menjadi notasi

postfix.

Contoh :

A+B (infix)

(31)

Algoritma

Misal :

Q = ekspresi matematika yang ditulis

dalam notasi infix

(32)

Algoritma

1. Push tanda “(“ ke stack dan tambahkan tanda “)” di sentinel di Q.

2. Scan Q dari kiri ke kanan, kemudian ulangi langkah c s.d f untuk setiap elemen Q sampai stack Q kosong.

3. Jika yang discan adalah operand, maka tambahkan ke P 4. Jika yang discan adalah “(“ maka push ke stack

5. Jika yang discan adalah “)” maka pop isi stack sampai

ditemukan tanda “(“, kemudian tambahkan ke P sedangkan tanda “(“ tidak disertakanke P.

6. Jika yang discan adalah operator, maka :

- Jika elemen paling atas dari stack adalah operator yang

mempunyai tingkatan sama atau lebih tinggi dari operator yang discan, maka pop operator tsb dan tambahkan ke P.

(33)

Contoh

(34)

Penyelesaian

Q = A + ( B * C - ( D / E ^ F ) * G ) * H

(35)
(36)

Penyelesaian

Hasil akhir :

Dari proses di atas didapatkan notasi

(37)

Notasi Polish (2)

Menghitung ekspresi matematika yang

disusun dalam notasi postfix.

Contoh :

(38)

Algoritma

Misal :

(39)

Algoritma

1.Tambahkan tanda “)” pada sentinel di P

2.Scan P dari kiri ke kanan, ulangi langkah c dan d untuk setiap elemen P sampai ditemukan sentinel. 3.Jika yang discan adalah operand, maka push ke

stack.

4.Jika yang discan adalah operator (sebut opr1), maka  Pop 1 buah elemen teratas dari stack, simpan dalam variable var1. Pop 1 buah elemen teratas dari stack, simpan dalam variable var2. Hitung variable (var2 opr1 var1), simpan hasil di variable hitung. Push variable hitung ke stack.

(40)

Contoh Kasus

(41)

Penyelesaian

P = 5, 2, 6, +, *, 12, 4, /,

-• Tambahkan tanda “)”pada sentinel P

sehingga

P = 5, 2, 6, +, *, 12, 4, /,

-,

)

(42)

Penyelesaian

Hasil :

(43)

Operator Priority

^

Pangkat, akar

/, *

Pembagian,

perkalian

+, -

Penambahan,
(44)

Latihan

1. Ubah notasi infix berikut ke dalam

bentuk notasi postfix :

(45)

Latihan

2. Hitung ekspresi matematika berikut

yang disusun dalam bentuk postfix :

• 2,2,3,+,*,3,2,-,*

Referensi

Dokumen terkait

Berisi tinjauan pustaka dan kajian mengenai hotel, klasifikasi hotel, bentuk hotel, dasar-dasar perencanaan hotel, sarana utilitas bangunan hotel, serta

RSPl-SS dan NCGM secara berkala bertukar data dan infonnasi yang diperlukan atau berguna untuk proyek-proyek berdasarkan kesepakatan kedua belah pihak. RSPl-SS dan NCGM

Bagan yang memerlihatkan urutan prosedur dan proses dari beberapa file di dalam media tertentu. Melalui flowchart ini terlihat jenis media penyimpanan yang dipakai dalam

The ash content was lowest in the stem fraction for all species and at both harvest times, in leaf sheaths and especially in leaf blades the ash content was clearly higher (Table

Utilising as raw material only the fibrous frac- tion of miscanthus plants, the objectives of the present study were: (a) to investigate the feasibil- ity of obtaining papermaking

Berdasarkan permasalahan tersebut, maka rumusan masalah dalam kajian ini adalah: Bagaimana membuktikan adanya primordialisme di dalam film layar lebar Ngenest karya

Akan tetapi hakim tetap pada Undang-Undang yang berlaku selama tidak ada perjanjian yang mengikat antara keduanya dalam membagi harta bersama selama dalam

Sepuri NIM 505730048: Hubungan Kompetensi Guru Pendidikan Agama Islam dalam Mengimplementasikan Kurikulum Tingkat Satuan Pendidikan (KTSP) dan Pelaksanaan Evaluasi