1 / 21

STRUKTUR DATA

STRUKTUR DATA . PERTEMUAN 5. vandawaa@yahoo.com. ARRAY (LARIK). STACK / TUMPUKAN. Contoh penggunaan STACK salah satunya adalah pada program konversi aritmatik mengubah bentuk INFIX ke POSTFIX ataupun INFIX ke PREFIX. Bentuk ini adalah bentuk aritmatik yang digunakan oleh komputer.

minnie
Télécharger la présentation

STRUKTUR DATA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. STRUKTUR DATA PERTEMUAN 5 vandawaa@yahoo.com

  2. ARRAY (LARIK) STACK / TUMPUKAN • Contoh penggunaan STACK salah satunya adalah pada program konversi aritmatik mengubah bentuk INFIX ke POSTFIX ataupun INFIX ke PREFIX. • Bentuk ini adalah bentuk aritmatik yang digunakan oleh komputer. • Bentuk INFIX yang ditulis dalam bahasa pemrograman, akan dikompilasi menjadi bentuk POSTFIX atau PREFIX oleh compiler.

  3. ARRAY (LARIK) STACK / TUMPUKAN OPERAND dan OPERATOR OPERATOR A + B * C OPERAND DERAJAT OPERATOR

  4. ARRAY (LARIK) STACK / TUMPUKAN INFIXPOSTFIXPREFIX A + B AB + + AB A + B * C ABC *+ *+ ABC • INFIX = bentuk aritmatik yang Operatornya ada diantara (di dalam) dua buah Operand. • POSTFIX = bentuk aritmatik yang Operatornya ada sesudah dua Operand. • PREFIX = bentuk aritmatik yang Operatornya ada sebelum dua Operand.

  5. ARRAY (LARIK) STACK / TUMPUKAN • Saat dikompilasi, bahasa pemrograman tidak menggunakan tanda kurung buka ataupun kurung tutup lagi. • Urutan pelaksanaan dilakukan tergantung dari letak Operator dan Operandnya, bukan bergantung dari derajat nilai / kekuatan Operator.

  6. ARRAY (LARIK) STACK / TUMPUKAN INFIX ke POSTFIX • HanyaOPERATOR yang disimpanke Stack • BilaisivariabelnyaOPERAND, makalangsungcetakvariabel • Operator kurungbukadankurungtutupbisadisimpanke Stack, namuntidakdituliskelayar • BilaisivariabelnyaKurungBuka‘(‘, makasimpan (PUSH) KurungBukake Stack. • BilaisivariabelnyaOPERATORmakaperiksa : • Bila Stack kosong, makasimpan Operator sekarangke Stack • Bila Stack paling atasberisi Operator selaintandakurung, makabandingkanderajatdi Stack denganvariabelsekarang. • Bilalebihrendahdi Stack, makavariabellangsungdi-PUSH • Bilalebihtinggidi Stack, maka Stack paling atasdi-POP / dicetak, kemudianvariabelsekarangmasuk/ di-PUSH.

  7. ARRAY (LARIK) STACK / TUMPUKAN INFIX ke POSTFIX • Bila Stack paling atasisinyakurungbuka ‘(’, makavariabelsekaranglangsungdi-PUSH/ disimpanke Stack. • Bilavariabelsekarangisinyakurungtutup ‘)‘, makacetaksemua Operator di Stack hinggabertemutandakurungbuka ‘(’. • Bilavariabel yang adatelahhabisdiprosesdan Stack masihberisi, makacetaksemua Operator yang adadidalam Stack hingga Stack kosongmelomponk

  8. STACK / TUMPUKAN POSTFIX INFIX A - B + C + - • - • C • + • A • B T.Atas := 1 T.Atas := 0

  9. STACK / TUMPUKAN Contoh : Ubahlah notasi INFIX berikut ke notasi POSTFIX. A + (B / C)

  10. ARRAY (LARIK) STACK / TUMPUKAN • POSTFIX • A B + C - • A B C * + • A B + C * • A B + C D * - • A B C - D * + • A B + C D - * • A B C D E $ * / - INFIX • A + B – C • A + B * C • (A + B) * C • A + B – C * D • A + (B - C) * D • (A + B) * (C - D) • A – B / (C * D $ E)

  11. ARRAY (LARIK) STACK / TUMPUKAN • (A + B * C (D - E)) / ((F + G) / H) • A B C D E - * + F G + H / / • (A + B) / ((C - D) * E $ F) $ G - H • A B + C D – E F $ * G $ / H - • A – B + C * (D $ E / (F - G) + H) - I • A B – C D E $ F G - / H + * + I -

  12. ARRAY (LARIK) STACK / TUMPUKAN DEKLARASI AWAL STACK constMaxElemen = 255; typeStringKata = string[MaxElemen]; Tumpukan = record Isi : StringKata; Atas : 0..MaxElemen; end; var Infix = StringKata; {*untuk menyimpan masukan*}

  13. ARRAY (LARIK) STACK / TUMPUKAN INFIX ke POSTFIX PenentuanDerajatNilaidari Operator : {* Fungsiuntukmengembalikannilaiderajatdari operator *} function DERAJAT(Tanda_Op : char) : integer; begin caseTanda_Opof ‘$’ : DERAJAT := 3; {* Pangkat *} ‘*’ , ‘/’ : DERAJAT := 2; {* Kali & Bagi *} ‘+’ , ‘-’ : DERAJAT := 1; {* Tambah & Kurang *} ‘(’ : DERAJAT := 0; {* KurungBuka *} end end;

  14. ARRAY (LARIK) STACK / TUMPUKAN {* Prosedur PUSH *} procedure PUSH (var T : Tumpukan; Elemen = char); Begin T.Atas := T.Atas + 1; T.Isi[T.Atas] := Elemen; end; {* Fungsi POP -> untukmengembalikannilai POP *} function POP (var T : Tumpukan) : char; begin POP := T.Isi[T.Atas]; T.Atas := T.Atas - 1; end;

  15. ARRAY (LARIK) STACK / TUMPUKAN INFIX ke POSTFIX Prosedure INFIX ke POSTFIX : procedure KONVERSI_POSTFIX(Infix : StringKata); var I : integer Operator : set of char; Temp, Kar : char; T : Tumpukan; begin {* Deklarasikan Operator yang diijinkan *} Operator := [‘$’] + [‘*’] + [‘/’] + [‘+’] + [‘-’]; for I:=1 to length(Infix) do begin Kar := Infix(I);

  16. ARRAY (LARIK) STACK / TUMPUKAN INFIX ke POSTFIX Prosedure INFIX ke POSTFIX : {* Jikavariabeladalahtanda ‘(’, maka PUSH ke Stack*} ifKar = ‘(’ then PUSH(T,Kar) {* Jikavariabeladalahtanda ‘)’, maka POP dantulis *} {* semuaisi Stack hinggaketemutanda‘(’ *} else if Kar = ‘)’ then begin whileT.Isi[T.Atas] <> ‘(’ do write(POP(T) : 2); Temp := POP(T) end

  17. ARRAY (LARIK) STACK / TUMPUKAN INFIX ke POSTFIX Prosedure INFIX ke POSTFIX : {*Jikavariabeladalahtanda Operator selaintandakurung} {*makabandingkan operator di Stack denganvariabel*} elseifKarin Operator then begin while (T.Atas] <> 0) and (DERAJAT(Kar) <= DERAJAT(T.Isi[T.Atas])) do write(POP(T) : 2); PUSH(T,Kar) end {*Jika Operand, makalangsungdicetak} elseifKar <> ‘ ‘ then write(Kar : 2) end; {* Akhirdariperulangan FOR *}

  18. ARRAY (LARIK) STACK / TUMPUKAN INFIX ke POSTFIX Prosedure INFIX ke POSTFIX : {*Jika Stack masihisi, POP / cetaksemuaisinya *} IfT.Atas <> 0 then repeat write(POP(T) : 2) until T.Atas = 0; end; {* Akhirdari Procedure KONVERSI_POSTFIX *}

  19. Tugas 4 Ubahlah notasi INFIX berikut ke notasi POSTFIX. • (70 * 20) / (15 * 3) • B $ 2 – (4 * A) * C • (A – B / C + E) / (A + B) • W + (5 * 30 + P / (5 $ 8))

  20. Tugas 4 Contoh : Ubahlah notasi INFIX berikut ke notasi POSTFIX. (A + B) / C

  21. THE END OF THIS DAY • KANGGOANG Biin NAAAHHH,,,,!!!! DEAL??? DEEEAAALLLL,,,,,

More Related