12.07.2015 Views

STACK (TUMPUKAN)

STACK (TUMPUKAN)

STACK (TUMPUKAN)

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Program Stack (3)Fungsi IsFull• Untuk memeriksa apakah stack sudahpenuh?• Dengan cara memeriksa top of stack, jikasudah sama dengan MAX_<strong>STACK</strong>-1 makafull, jika belum (masih lebih kecil dariMAX_<strong>STACK</strong>-1) maka belum full10


Program Stack (4)• Ilustrasi Stack pada kondisi Full11


Program Stack (5)Fungsi IsEmpty• Untuk memeriksa apakah stack masih kosong?• Dengan cara memeriksa top of stack, jika masih -1 makaberarti stack masih kosong!12


Program Stack (6)Fungsi Push• Untuk memasukkan elemen ke stack, selalumenjadi elemen teratas stack (yang ditunjuk olehTOS)• Tambah satu (increment) nilai top of stack lebihdahulu setiap kali ada penambahan elemen stack.• Asalkan stack masih belum penuh, isikan data baruke stack berdasarkan indeks top of stack setelahdiincrement sebelumnya.13


Program Stack (7)14


Program Stack (8)Fungsi Pop• Untuk mengambil elemen teratas (data yangditunjuk oleh TOS) dari stack.• Ambil dahulu nilai elemen teratas stackdengan mengakses top of stack, tampilkannilai yang akan dipop, baru dilakukandecrement nilai top of stack sehingga jumlahelemen stack berkurang15


Program Stack (9)16


Program Stack (10)• Fungsi Print• Untuk menampilkan semua elemenelemenstack• Dengan cara looping semua nilai arraysecara terbalik, karena kita harusmengakses dari indeks array tertinggiterlebih dahulu baru ke indeks yangkecil!17


Program Stack (11)18


Infix-Postfix-Prefix• Perhatikan kalimat aritmatika A*(B+C)• Infix: “in” , operator berada di dalamoperand. Contoh: A + B• Postfix: operator berada setelah operand.Contoh: A B +• Prefix: operator berada sebelum operand.Contoh: + A B


Contoh KonversiInfix Postfix PrefixA + B A B + + A BA + B + C A B + C + + + A BA + B * C A B C * + + A * B C(A + B) * C A B + C * * + A B CA + B + C * D A B + C D * + + + A B * C DA + (B+C) * D A B C + D * + + A * + B C D


Studi Kasus Stack• Perhitungan dua buah stack• Pembuatan Kalkulator SCIENTIFIC– Misalkan operasi: 3 + 2 * 5– Operasi di atas disebut notasi infiks, notasiinfiks tersebut harus diubah lebih dahulumenjadi– notasi postfix 3 + 2 * 5– notasi postfiksnya adalah 2 5 * 3 +21


Studi Kasus Stack (2)25*3+Stack SoalStack Hasil• Pop Stack Soal:• Jika berupa operand, maka masukkan ke Stack hasil• Jika berupa operator, maka:– Pop nilai pertama dari Stack Hasil– Pop nilai kedua dari Stack Hasil– Lakukan operasi sesuai dengan operator yang didapat.22


Studi Kasus Stack (3)*3+52Stack SoalStack Hasil• Operator * di pop dari Stack Soal.• Pop Stack Hasil dua kali, yaitu 5 dan 2 kemudian, simpan 5 kedalam variabel misalnya a, dan 2 ke dalam variabel misalnya b.• Lakukan operasi sesuai dengan operatornya, b a• Jadi b * a, yaitu 2 * 5 kemudian hasilnya disimpan lagi kedalam Stack Hasil–23


Studi Kasus Stack (4)+310Stack SoalStack Hasil• Kemudian lakukan langkah yang sama, sampai selesai.• Pada contoh: operator + dipop dari Stack Soal• Pop Stack Hasil dua kali, yaitu 3, disimpan pada variabel a,dan 10, disimpan pada variabel b. Kemudian lakukanoperasi sesuai dengan operatornya, b a• Jadi b + a, yaitu 10 + 3 = 13.24


Ilustrasi Operasi Stack3 + 2 * 5Input Operation Stack2 Push operand 25 Push operand 2, 5* Multiply 103 Push operand 10, 3+ Add 13Hasil akhir 13, tinggalkan pada top stack


Kasus Lain• Soal: Selesaikan soal ((1+2)*4)+3menggunakan operasi stack• Langkah-langkah:• Operasi infix dirubah ke operasi postfix:1 2 + 4 * 3 +• Buat ilustrasi operasi stack dengan tabel


Ilustrasi Operasi Stack((1+2)*4)+3Input Operation Stack1 Push operand 12 Push operand 1, 2+ Add 34 Push operand 3, 4* Multiply 123 Push operand 12, 3+ Add 15Hasil akhir 15, tinggalkan pada top stack


Kesimpulan Presentasi• Secara umum sudah baik, penjelasan lebihjelas karena ada langkah-langkah dananimasinya• Ada program riil untuk menunjukkanimplementasi dari tema yang dibahas• Disampaikan juga, kapan kita membutuhkanjenis struktur data / algoritma yang sedangdibahas (mis. Stack : untuk menghematmemori saat melakukan operasi aritmatika)


Terima Kasih

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!