• Tidak ada hasil yang ditemukan

Staffsite STMIK PPKIA Pradnya Paramita e766b stack

N/A
N/A
Protected

Academic year: 2017

Membagikan "Staffsite STMIK PPKIA Pradnya Paramita e766b stack"

Copied!
4
0
0

Teks penuh

(1)

STACK (TUMPUKAN)

Stack merupakan salah satu spesial linked list, yang mempunyai karakteristik

sebagai berikut :

1. Operasi penyisipan (inserting) dan penghapusan (deleting) hanya dapat dilakukan

pada elemen PUNCAK (TOP STACK), sehingga elemen yang pertama masuk

akan menjadi elemen terakhir yang dikeluarkan dari stack (First In Last Out

/FILO), atau sebaliknya elemen yang terakhir masuk akan menjadi elemen

pertama yang dikeluarkan dari stack (Last In First Out / LIFO).

2. Hanya terdapat 2 (dua) operasi pada STACK, yaitu penyisipan/inserting (PUSH)

dan penghapusan/Pengambilan/Deleting (POP).

Re pre se nt a si St a c k Pa da List Be rk a it

Bila data yang disisipkan (PUSH) ke stack berturut-turut adalah Kadir, Tarsan, Eko,

Basuki, dan Gogon, maka representasi data di memori adalah sebagai berikut :

Model Logika

Gogon Basuki Eko Tarsan Kadir TOP

Operasi Dasar Pada Stack

a. Operasi Inserting (PUSH)

Algoritma operasi inserting / PUSH

PUSH(TOP, X)

b.Operasi Deleting (POP)

Algoritma operasi Deleting / POP

(2)

APLIKASI STACK

1. Pemanggilan Sub Program

Ketika dijumpai instruksi RETURN, komputer harus mengetahui alamat instruksi

mana yang harus dilaksanakan berikutnya. Untuk mengetahui alamat instruksi

yang harus dilaksanakan berikutnya, pada saat ditemukan perintah CALL (sub

program: procedure atau function) komputer akan menyimpan alamat instruksi

setelah CALL sebagai elemen TOP stack, dan ketika ditemukan instruksi

RETURN, maka komputer akan mengambil elemen TOP dari stack sebagai

alamat instruksi yang harus dikerjakan berikutnya, dan harga tersebut dihapus dari

stack.

2. Mengavakuasi Ekspresi Aritmatika

Cara kita menuliskan ekspresi aritmatik adalah dalam notasi INFIX yaitu notasi

yang meletakkan OPERATOR diantara dua OPERAND. Kompiler akan mengubah

notasi tersebut ke dalam notasi POSTFIX yaitu notasi yang meletakkan OPERATOR

setelah OPERAND.

Contoh :

Notasi Infix : A + B * C Notasi Postfix : ABC * +

Keunggulan notasi POSTFIX adalah:

a) tidak diperlukan tanda kurung ( )

b) prioritas OPERATOR tidak lagi penting

c) proses penghitungan dapat diselesaikan dalam sekali scan/pembacaan dari kiri

ke kanan.

Cara mengeksekusi notasi aritmatik (notasi POSTFIX) adalah: notasi dibaca dari

kiri ke kanan, jika ditemukan OPERAND, disimpan ke dalam STACK. Jika

ditemukan OPERATOR, kompiler akan mengoperasikan OPERATOR tersebut

dengan mengambil dua OPERAND dari stack dan hasilnya akan disimpan kembali ke

(3)

3. Mengubah Notasi Infix Menjadi Postfix

Algoritma mengubah notasi INFIX ke Notasi POSTFIX 1. Baca ekspresi infix (E)

2. Tentukan panjang E, misalkan N

3. Tentukan derajat masing operator operator

Contoh : * dan / = 2, + dan - = 1, kurung buka ‘ ( ‘ = 0 4. Untuk I = 1 s/d N kerjakan

a. X = E[I] b.Jika X adalah:

ƒ Operand : Langsung tuliskan sebagai output ƒ ‘(‘ : PUSH ke STACK

ƒ ‘)’ : POP dan tulis (ke output) semua isi STACK sampai ‘(‘ pasangannya. Tanda ‘(‘ juga diPOP tetapi tidak ditulis ke output

ƒ Operator : Jika stack kosong atau derajat X lebih tinggi dari elemen top stack, PUSH X ke stack.

Jika tidak, POP top stack dan tulis ke output

kemudian lakukan pembandingan X dengan top stack yang baru. Jika memenuhi syarat PUSH X ke stack. 5. Jika akhir ekspresi telah tercapai dan stack belum kosong, POP isi stack dan

tulis hasilnya.

Contoh Kasus

Ubah notasi INFIX berikut ke dalam notasi POSTFIX

E = A + B * C

Step Simbol Stack Output

0 # # #

1 A # A

2 + + A

3 B + A B

4 * + * A B

5 C + * A B C

6 ↵ # A B C * +

Notasi POSTFIX-nya adalah ABC*+

Latihan:

Ubah notasi INFIX berikut ke dalam notasi POSTFIX

(4)

4. Reversing String (Membalik Urutan String)

Untuk membalik urutan string dapat dilakukan dengan membaca

masing-masing karakter mulai karakter pertama sampai karakter terakhir dan memasukkanya

ke stack (PUSH ke stack). Setelah semua karakter masuk, keluarkan (POP) semua isi

stack dan cetak hasilnya.

Algoritma Reversing String

Reversing(StringAwal, StringHasil) Panjang = Length(StringAwal);

I = 1; StringHasil = ‘’; While I <= Panjang do

X = StringAwal[I]; PUSH(TOP, X);

StringHasil = StringHasil + X; I++;

Ewhile {

Jika ingin menampilkan hasilnya

Cout << ‘String awal adalah : ‘ << StringAwal; Cout << ‘String hasil adalah : ‘ << StringHasil; }

Return

5. Konversi Bilangan

Konversi bilangan desimal dapat dilakukan dengan membagi bilangan tersebut

dengan DIV basis bilangan yang diinginkan, dan memasukkan sisa baginya ke stack.

Jika bilangan asal sudah sama dengan 0 (nol), keluarkan isi stack dan tulis hasilnya.

Contoh kasus: konversi bilangan desimal ke biner

13(10) = ……..(2)

Cara menghitung

Step Proses Hasil Sisa 1 13 DIV 2 6 1 2 6 DIV 2 3 0 3 3 DIV 2 1 1 4 1 DIV 2 0 1

Referensi

Dokumen terkait

Demikian pengumuman pemenang lelang ini disampaikan, apabila ada peserta yang keberatan atas penetapan pemenang ini, dapat menyampaikan sanggahan secara tertulis kepada Kelompok

Berdasarkan perbandingan kurva isotermi sorpsi hasil percobaan dengan masing-masing model isotermi sorpsi yang dipilih tersebut dapat dilihat bahwa pada kue Pia kacang

Peraturan Pemerintah Nomor 79 Tahun 2005 tentang Pedoman Pembinaan dan Pengawasan Penyelenggaraan Pemerintah Daerah 54. Perpres Nomor 185 Tahun 2014 tentang Percepatan

Penelitian ini adalah Penelitian Tindakan Kelas (PTK), yang mana tujuan utamanya adalah untuk mengungkap cara meningkatkan kemampuan menulis siswa dalam teks

Klasifikasi :* Kecil / Besar Standard : MS ISO 9001:2008 *Potong yang tidak

Tujuan dari penelitian ini adalah untuk memaparkan dan menjelaskan (1) maksim implikatur percakapan(2) makna implikatur percakapan.Sumber data adalah dialog tentang One-

Tujuan dari penelitian ini adalan untuk mencari validitas empiris (validitas konkuren) dalam midterm tes siswa kelas sepuluh dari SMK Takhassus Al- Qur’an Sadamiyyah Jepara

[r]