Download
stack n.
Skip this Video
Loading SlideShow in 5 Seconds..
STACK PowerPoint Presentation

STACK

206 Vues Download Presentation
Télécharger la présentation

STACK

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. STACK Materi 4 LatifahRifani

  2. PENDAHULUAN • Penyimpanandanpengambilan data yang sangatefektifapabila data yang terakhirmasukadalah data yang akandiambilpertama kali. • Tumpukanmemungkinkanakseskesatu item data saja, yaitu item terakhir yang disisipkan. • Bilakitamenghilangkan item inimakakitabisamengakseskesebelah item terakhir yang disisipkan, danseterusnya.

  3. SEJARAH • Tumpukanpertama kali diusulkanpadatahun 1955, dankemudiandipatenkanpadatahun 1957, oleh Friedrich L. Bauer Jerman. • Konsepyang samadikembangkansecaraindependen, padasekitarwaktu yang sama, oleh Leonard Charles Australia Hamblin.

  4. PENGERTIAN • Merupakantumpukan data yang seolah-olahdiletakkan di atas data yang lain. • Kita dapatmenambahkan (menyisipkan) data danmengambil (menghapus) data melaluiujung yang sama, yang disebutsebagaiujungatas stack (top of stack).

  5. Stack bersifat LIFO (Last In First Out). • Benda yang terakhir masuk ke dalam stack akan menjadi yang pertamakeluar dari stack.

  6. ILUSTRASI 1 A B C C Top of stack B B A A A

  7. ILUSTRASI 2 D D masuk C C keluar B B A A

  8. MISALNYA: Terdapat stack S=(a1, a2, a3, …, an) • Elemenmana yang merupakanelementerbawah. • Elemenmana yang merupakanelemen paling atas. • Elemenmana yang akandikeluarkan. • Elemenmana yang paling akhirdikeluarkan.

  9. KARAKTERISTIK STACK • Elemen stack yaitu item-item data di elemen stack. • Top (elemenpuncakdari stack) • Jumlahelemenpada stack. • Status / kondisi stack.

  10. KONDISI STACK Kondisi stack yang perludiperhatikanadalah: • Penuh: bilaelemen stack mencapaikapasitasmaksimum. Padakondisiinitidakmungkindilakukanpenambahanke stack. Penambahanelemenmenyebabkankondisikesalahanoverflow.

  11. Kosong: bilatidakadaelemen di stack. Padakondisiini, tidakmungkindilakukanpengambilanelemendari stack. Pengambilanelemenmenyebabkankondisikesalahanunderflow.

  12. STACK REPRESENTASI STATIS • Biasanyadiimplementasikandenganmenggunakan array. • Karenaitu, stack denganrepresentasistatisdapatmengalamikondisielemenpenuh.

  13. STACK REPRESENTASI DINAMIS • Biasanyadiimplementasikandenganmenggunakan pointer yang menunjukpadaelemen-elemen yang dialokasikanpadamemori. • Elemenditambahkanakanmenggunakanpenambahanelemenpadaawal stack (addfirst). • Saatpengambilanataupenghapusanelemenmenggunakanpenghapusan di awal stack (delfirst).

  14. OPERATOR-OPERATOR DI DALAM STACK

  15. OPERASI PUSH • Adalahoperasimenambahkanelemenbarupadasebuah stack. • Aturanpenambahan stack: • Sebagaikondisiawaladasebuah stack yang telahmemilikibeberapaelemendenganelemen paling atassebagai top. • Dibuatsebuahelemenbaru yang akandimasukkankedalam stack.

  16. Elemenbarudimasukkankedalam stack. • Penunjuk top pada stack diubahmenunjukkeelemen yang barusajaditambahkan. Elemenbaru top top

  17. OPERASI POP • Adalahoperasimengambilsebuahelemendarisebuah stack. Aturanmengambilsebuahelemendarisebuah stack adalahsebagaiberikut: • Sebagaikondisiawaladasebuah stack yang telahmemilikibeberapaelemendenganelemen paling atassebagai top. • Penunjuk top diubahmenjadimenunjukelemen di bawahelemenatas. • Elemenatasdiambildari stack.

  18. ILUSTRASI Elemenkeluar top top

  19. CONTOH • Ada sekumpulanperintah stack yaitu push(3), push(5), pop, push(2), pop, pop. • Makaapabiladijalankanmakahasilnyaadalah: T T 5 2 3 3 3 3 3 T T T Top = 0 kosong Push 3 Push 5 Pop Push 2 Pop Pop Stack kosong

  20. CREATE • Operator iniberfungsiuntukmembuatsebuah stack kosong.

  21. ISEMPTY • Operator iniberfungsiuntukmenentukanapakahsuatu stack adalah stack kosong. Operasinyaakanbernilaiboolean, dengandefinisisebagaiberikut : ISEMPTY(S) = true, jika S adalah stack kosong = false, jika S bukan stack kosong atau ISEMPTY(S) = true, jika(S) = NULL = false, jika(S)= 1 Catatan : ISEMPTY(CREATE(S)) = true.

  22. ISFULL • Operator iniberfungsiuntukmenentukanapakahsuatu stack adalah stack penuh. Operasinyaakanbernilaiboolean, dengandefinisisebagaiberikut : ISFULL(S) = true, jika S adalah stack penuh = false, jika S bukan stack penuh Catatan : ISEMPTY(CREATE(S)) = true.

  23. PENGGUNAAN STACK • Dalamduniakomputer, penggunaanstack (tumpukan) merupakansuatuhal yang umumdigunakansepertiuntukpenentuanalamat memory, penempatanruang data danaplikasi lain. • Aplikasistackjugadigunakanuntukberbagaimacamkeperluansepertipengujiankalimatpalindrome, pengujitandakurung (matching parentheses), danjugaberfungsisebagaikonversidarinotasiinfix menjadinotasipostfix.

  24. Sebuahkompilatormempunyaitugas, salahsatu di antaranyaadalahmenyelidikiapakahPemrogramtelahdengancermatmengikutiaturantatabahasa, atausintaksdaribahasapemrograman yang bersangkutan. • Misalnyauntukparantheseskiri (tandakurungbuka) yang diberikan, harusdipastikanadanyaparantheseskanan (tandakurungtutup) yang bersangkutan.

  25. MATCHING PARENTHESES • Proses inidilakukan compiler untukmemeriksakelengkapantandakurung yang terdapatpadasuatuekspresiaritmetik. Sedangkan stack di sinidigunakansebagaitempatprosesnya. • Algoritmayang digunakanadalah : • Elemen-elemensuatuekspresiaritmetik (string) di-Scan darikirikekanan. • Jikaditemukansimbol "(" atau "Left parenthesis", makasimboltersebut di-push kedalam stack.

  26. Jikaditemukansimbol ")" atau "Right parenthesis", makaisi stack diperiksa. • Jikastack kosongterjadikesalahan. • berarti: adasimbol ")", tetapitidakadasimbol "(" yang seharusnyamendahului. • Jikastack tidakkosongartinyaadapasangannyadanlangsung di-POP keluarstack.

  27. INTERPRETER POSTFIX • Contoh lain penggunaan stack adalahpemeriksaandaneksekusiekpresi postfix. • Ekspresipostfix merupakanekpresidenganaturan L R B dengan L adalah operand kiri, R operand kanandan B adalahoperatornya. • Ekspresiyang kitabiasagunakansehari-hariadalahekspresi infix denganaturan L B R. Contoh, jikaekspresiinfixnya "6*7-2" makaekspresipostfixnyaadalah "6 7 * 2 -".

  28. NOTASI INFIX DAN POSTFIX • Suatuperhitunganaritmatikabiasanyaberhubungandengan operand dan operator. Operand merupakansuatukarakteratauelemen yang nilainyadioperasikandenganbantuansuatu operator untukmenghasilkansuatusolusi.

  29. Misalkanjikadiberikansuatuekspresiaritmatika 2 * 3, makaelemen ‘dua’ danelemen ‘tiga’ merupakan operand dariekspresitersebutdanelemen ‘*’ merupakan operator perkalianatasdua operand yang menghasilkansuatusolusi.

  30. Dalampenggunaannya, dalamkehidupansehari-harinotasiinfixmerupakannotasiaritmatika yang paling banyakdigunakanuntukmengekspresikansuatuperhitunganartimatikdibandingdenganduanotasi yang lain. • Akan tetapinotasiPostfixmerupakannotasi yang digunakanolehmesinkompilasipadakomputerdenganmaksuduntukmempermudah proses pengkodean, sehinggamesinkompilasimembutuhkanstackuntuk proses translasiekspresitersebut.

  31. NOTASI POSTFIX • Bentukaplikasi stack yang lain adalahmengubahsuatuekspresiaritmatik (string) kedalamnotasi postfix. Notasi postfix inidigunakanoleh compiler untukmenyatakansuatuekspresiaritmatikdalambahasatingkattinggi (high level language). Stack digunakanoleh compiler untukmentransformasikanekspresiaritmatikmenjadisuatuekspresidalambentuk/notasi postfix.

  32. Contoh : • Misaldiberikanekspresiaritmatik : A + B ; • Makabentuknyadalamnotasi postfix menjadi : AB+

  33. Urutan (prioritas) dari operator adalah : • Perpangkatan(^) • Perkalian(*) atauPembagian (/) • Penjumlahan(+) atauPengurangan (-)

  34. ATURAN DALAM PROSES TRANSFORMASI KE POSTFIX • Ekspresiaritmatik yang diberikan di- "Scan" darikirikekanan. • Bilasimbol yang di-scan adalah "(", makasimboltersebut di push kedalam stack. • Bilasimbol yang di-scan adalah ")", makaseluruhisi stack di pop keluarmulaidarisimbol "(" yang pertamaditemukandalam stack. • Bilasimboladalah operator, makadilakukanperbandinganduludengansimbol (operator) yang beradapadaposisi top dalamstack: • Jikaderajatnyasetaraataulebihrendahdarisimbol yang beradapadaposisi top, maka top stack di-pop keluarsebagai output dansimbol yang baru di-push kedalam stack.

  35. Jikaderajatnyalebihtinggidarisimbol yang beradapadaposisi top, makasimbol (operator) yang di-scan tersebut di-push kedalam stack. • Bilasimbol yang di-scan adalah operand, makasimboltersebutlangsungsebagai output. • Bilasimboladalah ";" makaseluruhisi stack di-pop sebagai output.

  36. CONTOH • 3 + 2 * 5 • (A + B) * (C – D) / E;

  37. SOAL: Ubahbentukaritmetikaberikutkedalambentuk postfix • ( (A + B) * C / D + E ^ F ) / G ; • ((A * B) + C / D – E * F) * G; A B + D * C / E F ^ + G / A B * C D / + E F * - G *