SlideShare a Scribd company logo
1 of 18
LAPORAN PRAKTIKUM
ALGORITMA PEMROGRAMAN & STRUKTUR DATA
MODUL VIII
DISUSUN OLEH
NAMA : DEVI
NIM : 2012081043
KELAS : TI2012A
LABORATORIUM KOMPUTER
FAKULTAS ILMU KOMPUTER
UNIVERSITAS KUNINGAN
2012
I. PEMBAHASAN
A. Dasar Teori
Stack merupakan bagian dari struktur data yang dikategorikan ke dalam
bentuk linear data, dimana operasi pemasukan maupun pengeluaran data selalu
dilakukan pada salah satu sisinya[1]. Dalam dunia komputer, penggunaan stack
(tumpukan) merupakan suatu hal yang umum digunakan seperti untuk penentuan
alamat memory, penempatan ruang data dan aplikasi lain. Sebagai bagian dari
struktur data, aplikasi stack juga digunakan untuk berbagai macam keperluan
seperti pengujian kalimat palindrome, penguji tanda kurung (matching
parentheses), dan juga berfungsi sebagai konversi dari notasi infix menjadi notasi
postfix.
Pada perhitungan aritmatika, notasi infix adalah notasi yang menempatkan
operator ditengah dua operand sedangkan notasi Postfix adalah notasi yang
menempatkan operator setelah dua operand. Penggunaan notasi infix merupakan
hal yang lumrah digunakan dalam perhitungan aritmatika dibandingkan dengan
penggunaan notasi Postfix, akan tetapi bagi mesin kompilasi notasi Postfix
merupakan notasi yang digunakan untuk melakukan suatu perhitungan.
Tulisan ini dibuat untuk memberikan gambaran secara jelas proses simulasi
konversi atas dua notasi aritmatika tersebut, berdasarkan studi literatur dari
beberapa buku dan dituangkan dengan bantuan bahasa pemrograman Pascal.
Adapun proses konversi ini ditujukan untuk menjelaskan bagaimana mesin
kompilasi dapat merubah notasi infix yang biasa digunakan oleh berbagai
kalangan menjadi notasi Postfix yang dimengerti oleh mesin kompilasi sehingga
suatu proses perhitungan aritmatika dapat dilaksanakan oleh komputer.
1. Definisi
Dalam dunia komputer, penggunaan stack atau tumpukan merupakan salah
satu komponen penting untuk menjamin proses penanganan suatu data disamping
hal lain seperti Queue (antrian), linked list, dan tree.
Definisi 1
Stack adalah suatu koleksi atau kumpulan item data yang teroganisasi dalam
bentuk urutan linear, yang operasi pemasukan dan penghapusan datanya
dilakukan pada salah satu sisinya[1]
Definisi 2
Diberikan suatu himpunan yang terurut himpunan sebagai S = {S1, S2, ...,
ST}, T pada anggota S merupakan linear order, sehingga stack dari himpunan
tersebut memiliki informasi sebagai berikut [1] :
1. Elemen puncak dari stack dalam himpunan S dikatakan sebagai TOP, sehingga:
TOP[S} = ST ............................................................................(1)
2. Banyaknya elemen stack dalam himpunan S dikatakan sebagai NOEL, sehingga
NOEL = T, dimana himpunan dari S tersebut dapat disusun sebagai :
S = {S1, S2, ..., SNOEL} .............................(2)
Dari dua definisi tersebut di atas maka suatu stack dapat digambarkan sebagai
berikut :
1. Suatu stack dalam keadaan kosong akan memiliki informasi NOEL(S) = 0 dan
TOP(S)= undefined.
S
2. Untuk stack yang bukan kosong, maka akan memiliki informasi seperti yang
digambarkan di bawah ini dimana informasi yang ada adalah NOEL(S) = 1 dan
TOP(S) = Merah
S
Untuk stack yang berisi lebih dari n jumlah data maka informasi yang ada pada
stack tersebut berisikan NOEL(S) = 2 (jika berisi 2 data) dan TOP(S) = Biru
seperti ditunjukan pada gambar di bawah ini :
S
Elemen-elemen yang berada dalam stack tersebut di atas, memiliki prinsip
dasar dalam pengoperasiannya yaitu prinsip LIFO (Last In First Out) atau yang
masuk paling belakang akan memiliki prioritas untuk keluar paling depan.
Suatu stack dapat digambarkan sebagai suatu array (larik) berdimensi satu
yang elemen-elemennya berkisar antara 1 sampai n elemen. Dengan demikian jika
suatu stack didefinisikan dengan n elemen maka dapat dikatakan jumlah
maksimum dari stack atau NOEL(S) nya adalah n, sehingga penambahan elemen
stack yang ke n+1 tidak diperkenankan atau stack tersebut dalam kondisi
overflow. Hal tersebut juga berlaku untuk stack dengan nilai minimum yaitu
NOEL(S) dari stack dalam kondisi 0, jika dilakukan operasi pengambilan elemen
atas stack tersebut akan mengakibatkan stack tersebut dalam kondisi underflow.
Dua kondisi tersebut merupakan dasar dalam merancang suatu aplikasi
pemrograman komputer.
2. Operasi-operasi Stack
Dalam penggunaannya suatu stack memiliki beberapa operasi yang dapat
diterapkan seperti membuat stack, penambahan eleme ke dalam stack,
menghapusan elemen dari dalam stack, dan operasi lain yang berhubungan dengan
stack tersebut. Adapun operasi-operasi dasar dari suatu stack adalah :
1. Create (Stack)
Operasi Create(Stack) digunakan untuk membuat suatu stack baru dengan
nama stack, yang nilai elemen saat stack tersebut dibuat adalah NOEL(S) = 0,
TOP(S) = NULL (tidak terdefinisikan)
2. IsEmpty (Stack)
Operasi ini merupakan operasi untuk mencek isi dari suatu stack dalam
keadaan kosong atau berisi. Operasi ini memiliki 2 (dua) kondisi boolean yaitu :
a. True jika stack tersebut kosong atau dapat dikatakan NOEL(S) = 0
b. False jika stack tersebut tidak dalam kondisi kosong atau dapat dikatakan
NOEL(S) > 0
3. Push (Stack, Elemen)
Operasi ini merupakan operasi untuk menambahkan satu elemen dengan
nilai X pada puncak suatu stack, sehingga posisi TOP(S) akan bernilai X,
penerapan operasi push pasa suatu stack S akan berakibat overflow jika NOEL(S)
dari stack tersebut telah bernilai maksimum.
4. Pop (Stack)
Operasi ini berfungsi untuk menghapus satu elemen dari stack S, sehingga
posisi NOEL(S) akan berkurang satu elemen, dan TOP(S) akan berubah. Operasi
pop dapat menyebabkan kondisi underflow jika suatu stack S yang berada dalam
kondisi minimum dikenakan operasi pop.
5. IsFull
IsFull digunakan untuk mengecek apakah stack sudah penuh dengan cara
memeriksa top of stacknya,jika = 1 maka stack penuh
6. Clear
Clear digunakan untuk mengosongkan stack
3. Notasi Infix dan Postfix
Suatu perhitungan aritmatika biasanya berhubungan dengan operand dan
operator. Operand merupakan suatu karakter atau elemen yang nilainya
dioperasikan dengan bantuan suatu operator untuik menghasilkan suatu solusi.
Misalkan jika diberikan suatu ekspresi aritmatika 2 * 3, maka elemen ‘dua’ dan
elemen ‘tiga’ merupakan operand dari ekspresi tersebut dan elemen ‘*’
merupakan operator perkalian atas dua operand yang menghasilkan suatu solusi.
Suatu ekspresi aritmatika dapat dibedakan dalam tiga bentuk notasi perhitungan
yaitu :
1) Notasi prefix, jika operator ditempatkan sebelum dua operand
2) Notasi infix, jika operator ditempatkan diantara dua operand
3) Notasi postfix, jika operator ditempatkan setelah dua operand
Dalam penggunaannya, dalam kehidupan sehari-hari notasi infix merupakan
notasi aritmatika yang paling banyak digunakan untuk mengekspresikan suatu
perhitungan artimatik dibanding dengan dua notasi yang lain, akan tetapi notasi
Postfix merupakan notasi yang digunakan oleh mesin kompilasi pada komputer
dengan maksud untuk mempermudah proses pengkodean, sehingga mesin
kompilasi membutuhkan stack untuk proses translasi ekspresi tersebut.
Konversi notasi infix ke postfix
Berdasarkan teori yang diterangkan tersebut di atas, proses konversi infix menjadi
notasi Postfix dalam implementasinya membutuhkan stack pada proses
konversinya, adapun proses tersebut memiliki 3 (tiga) aturan yang digunakan,
yaitu :
 Jika ditemukan simbol kurung buka “(“
Operasi push pada stack akan digunakan untuk menyimpan simbol tersebut
ke dalam stack.
 Jika ditemukan simbol kurung buka “)”
Operasi pop digunakan untuk mengeluarkan operator-operator yang berada
di dalam stack.
 Jika terdapat simbol operator
Jika dalam suatu untai notasi infix ditemukan simbol operator maka operasi
yang dilakukan pada stack terbagi atas :
1. Jika TOP(S) dari stack tersebut kosong atau berisi simbol “(“ maka operasi
push akan digunakan untuk memasukan operator tersebut pada posisi di
TOP(S)
2. Jika operator yang berada dipuncak stack merupakan elemen yang memiliki
tingkat yang sama atau lebih tinggi maka operasi pop digunakan untuk
mengeluarkan operator tersebut diikuti operasi push untuk menyimpan
operator hasil scanning untai.
3. Jika operator yang berada di puncak stack memiliki tingkat yang lebih
rendah dari operator yang discan, maka operator baru akan langsung
dimasukan ke dalam stack dengan operasi push.
B. Praktikum
Praktikum 1
Di bawah ini merupakan sintaks:
 Menulis source kode Program C++
 Melakukan Kompilasi
Pilih menu project, lalu pilih submenu compile atau denngan menekan
ALTF9. Maka akan muncul seperti gambar di bawah ini.
#include<conio.h>
#include<string.h>
#include<stdio.h>
void main()
{
char*str= "LIKU LIKU LAKI LAKI TAK LAKU LAKU";
printf("%srn",strrev(str));
printf("%srn",str);
}
 Menjalankan Program
Menjalankan program dengan cara pilih menu Debug, lalu submenu Run
atau dengan cara menekan CTRL+F9. Maka akan muncul gambar seperti di
bawah ini.
Pembahasan:
Program diatas adalah program untuk membalikan kata. Header yang
digunakan dalam sintaks diatas ada yaitu stdio,string dan conio. Pada baris ke-
6 terdapat pernyataan char*str = "LIKU LIKU LAKI LAKI TAK LAKU
LAKU"; artinya adalah untuk mendefinisikan pointer yang menunjuk ke suatu
string yang bertipe character. Yang dimaksud pointer pada pernyataan diatas
adalah “str”. Didalam sintaks tersebut terdapat fungsi “strrev” yang digunakan
untuk membalikan kata yang berada pada pointer “str”, fungsi tersebut berada
pada file header string. Kode format yang digunakan adalah %s karena bertipe
char/string. Untuk menampilkan hasil outputnya digunakan funngsi printf
yang berada pada file header stdio. Karena stack bersifat LIFO (Last in First
Out) maka dapat dilihat pada hasil running diatas, dan fungsi strrev tersebut
akan membalikan kata tersebut.
Praktikum 2
Dibawah ini merupakan sintaks:
Menulis source kode Program C++
Melakukan Kompilasi
#include<stdio.h>
#define N 20
main( )
{
int nilai [N],i,jml;
printf("jmlh maksimal tumpukan (<=20)=");
scanf("%d",&jml);
for(i=0; i<=jml; i++)
{
if (i>=jml)
printf("tumpukan penuh");
else
{
printf("data ke-%d=",i+1);scanf("%d",&nilai[i]);
}
}
for(i=0; i<jml; i++)
{
printf("ndata ke-%d=%d",i+1,nilai[i]);
}
return 0;
}
Menjalankan Program
Pembahasan:
Program diatas adalah program untuk menampilkan Tumpukan Data yang
diinput melalui piranti masukan. Header yang digunakan adalah stdio.
Statement yang terdapat pada baris ke-2 adalah ketetapan tumpukan yang akan
dilaksanakan maksimal 20 tumpukan. Di dalam fungsi main terdapat 3
variabel yaitu, nilai [N], I dan jml yang bertipe integer. Operasi Input output
yang digunakan dalam program tersebut adalah printf dan scanf yang berada
pada file header yang telah dideklarasikan sebelumnya, yaitu stdio. Fungsi
printf adalah untuk menampilkan suatu keluaran pada layar. Fungsi scanf
digunakan untuk menginput data berupa data numerik, karakter dan string
secara terformat. Kode format adalah untuk konversi data, data pada sintaks
tersebut bertipe integer maka kode format yang digunakan untuk menginput
data tersebut adalah %d.
Sintaks diatas menggunakan struktur perulangan / looping, struktur yang
digunakan adalah for karena jumlah perulangan yang akan dikerjakan telah
diketahui yaitu perulangan sebanyak 20 kali, indeks dimulai dari 0 karena
variable nilai bertipe array. Misalkan kita menginputkan tumpukan sebanyak 3
maka kita akan mengisikan data sebanyak 3 kali, setelah kita tekan enter maka
data yang tadi kita input akan ditampilkan lagi. Dan jika kita menginputkan
data lebih dari 20 maka kita akan mengisikan data sebanyak 20 kali selebihnya
maka akan muncul statement “Tumpukan Penuh” karena batas perulangannya
adalah sebanyak 20 kali. Bisa dilihat dari output tersebut data-data yang di
inputkan menumpuk dan bersifat LIFO.
II. TUGAS
1. Buatlah program tumpukan (stack) untuk membalik kata dengan tampilan
sebagai berikut:
Masukan kata : STACK
Setelah dibalik : KCATS
Menulis source kode Program C++
Melakukan Kompilasi
Menjalankan Program
Pembahasan:
Program diatas sama seperti praktikum 1 yang telah dibahas sebelumnya,
namunprogram ini meminta user untuk menginputkan kata yang akan dibalik.
Struktur yang digunakan sama seperti praktikum 1, hanya pada tugas ini
digunakan operasi input output untuk menginput dan menampilkan kata yang
akan dibalik. I/O yang digunakan adalah scanf dan printf. Karena scanf
menginputkan data secara terformat maka menggunkan kode format %s
karena variabelnya bertipe string. Scanf hanya bisa membaca kata tanpa
adanya spasi, jika kita menginputkan data menggunakan spasi maka tidak
akan ditampilkan kata setelah spasi tersebut.
2. Buatlah program kalkulator SCIENTIFIC
 Misalkan operasi : 3 + 2 * 5
 Operasi diatas disebut operasi infiks, notasi infiks tersebut harus diubah lebih
dahulu menjadi notasi postfix
 3 + 2 * 5 notasi postfiksnya adalah 3 2 5 * +
Menulis source kode Program C++
Melakukan Kompilasi
Menjalankan Program
Pembahasan:
Program diatas adalah program kalkulator SCIENTIFIC atau program
perhitungan sederhana. Header yang digunakan adalah stdio. Didalam fungsi
main terdapat 4 variabel yang bertipe integer. Untuk menampilkan dan
menginput data digunakan printf dan scanf yang berada pada file header stdio.
Kode format yang digunakan untuk menampilkan dan menginput data tersebut
adalah %d karena variable yang dideklarasikan berupa integer.
Suatu perhitungan aritmatika biasanya berhubungan dengan operand dan
operator. Operand merupakan suatu karakter atau elemen yang nilainya
dioperasikan dengan bantuan suatu operator untuik menghasilkan suatu solusi.
Misalkan jika diberikan suatu ekspresi aritmatika 3 + 2 * 5, maka elemen ‘3’
,elemen ‘2’ dan elemen ‘5’ merupakan operand dari ekspresi tersebut dan
elemen ‘+’ dan ‘*’ merupakan operator penjumlahan dan perkalian atas tiga
operand yang menghasilkan suatu solusi. Suatu ekspresi aritmatika dapat
dibedakan dalam tiga bentuk notasi perhitungan yaitu :
 Notasi prefix, jika operator ditempatkan sebelum dua operand
 Notasi infix, jika operator ditempatkan diantara dua operand
 Notasi postfix, jika operator ditempatkan setelah dua operand
Dalam penggunaannya, dalam kehidupan sehari-hari notasi infix
merupakan notasi aritmatika yang paling banyak digunakan untuk
mengekspresikan suatu perhitungan artimatik dibanding dengan dua notasi
yang lain, akan tetapi notasi Postfix merupakan notasi yang digunakan oleh
mesin kompilasi pada komputer dengan maksud untuk mempermudah proses
pengkodean, sehingga mesin kompilasi membutuhkan stack untuk proses
translasi ekspresi tersebut.
III. KESIMPULAN
Dari Praktikum dan tugas praktikum diatas dapat disimpulkan Stack /
Tumpukan adalah sekumpulan data yang diletakan diatas data lain. Data-data
tersebut memiliki prinsip dasar dalam pengoperasiannya yaitu prinsip LIFO (Last
In First Out) atau yang masuk paling belakang akan memiliki prioritas untuk
keluar paling depan.
Operasi-operasi dalam Stack adalah sebagai berikut:
1. Create (Stack)
Operasi Create(Stack) digunakan untuk membuat suatu stack baru dengan
nama stack, yang nilai elemen saat stack tersebut dibuat adalah NOEL(S) = 0,
TOP(S) = NULL (tidak terdefinisikan)
2. IsEmpty (Stack)
Operasi ini merupakan operasi untuk mencek isi dari suatu stack dalam
keadaan kosong atau berisi. Operasi ini memiliki 2 (dua) kondisi boolean yaitu :
a. True jika stack tersebut kosong atau dapat dikatakan NOEL(S) = 0
b.False jika stack tersebut tidak dalam kondisi kosong atau dapat dikatakan
NOEL(S) > 0
3. Push (Stack, Elemen)
Operasi ini merupakan operasi untuk menambahkan satu elemen dengan
nilai X pada puncak suatu stack, sehingga posisi TOP(S) akan bernilai X,
penerapan operasi push pasa suatu stack S akan berakibat overflow jika NOEL(S)
dari stack tersebut telah bernilai maksimum.
4. Pop (Stack)
Operasi ini berfungsi untuk menghapus satu elemen dari stack S, sehingga
posisi NOEL(S) akan berkurang satu elemen, dan TOP(S) akan berubah. Operasi
pop dapat menyebabkan kondisi underflow jika suatu stack S yang berada dalam
kondisi minimum dikenakan operasi pop.
5. IsFull
IsFull digunakan untuk mengecek apakah stack sudah penuh dengan cara
memeriksa top of stacknya,jika = 1 maka stack penuh
6. Clear
Clear digunakan untuk mengosongkan stack
Notasi Infix dan Postfix adalah notasi atau ekspresi perhitungan aritmatika.
Ada 3 notasi perhitungan aritmatika yaitu, prefix, infix dan postfiks. Notasi infix
merupakan notasi aritmatika yang paling banyak digunakan untuk
mengekspresikan suatu perhitungan artimatik dibanding dengan dua notasi yang
lain, akan tetapi notasi Postfix merupakan notasi yang digunakan oleh mesin
kompilasi pada komputer dengan maksud untuk mempermudah proses
pengkodean, sehingga mesin kompilasi membutuhkan stack untuk proses translasi
ekspresi tersebut.
IV. Daftar Pustaka
 http://boycreations.wordpress.com
 Pemrograman Turbo C++, Abdul Kadir
 http://mugi.or.id

More Related Content

What's hot

Algoritma dan Struktur Data - Antrian
Algoritma dan Struktur Data - AntrianAlgoritma dan Struktur Data - Antrian
Algoritma dan Struktur Data - AntrianKuliahKita
 
Laporan Praktikum Struktur Data Modul 3
Laporan Praktikum Struktur Data Modul 3Laporan Praktikum Struktur Data Modul 3
Laporan Praktikum Struktur Data Modul 3azmi007
 
Algoritma dan Struktur Data - antrian
Algoritma dan Struktur Data - antrianAlgoritma dan Struktur Data - antrian
Algoritma dan Struktur Data - antrianGeorgius Rinaldo
 
Laporan praktikum modul ix
Laporan praktikum modul ixLaporan praktikum modul ix
Laporan praktikum modul ixDevi Apriansyah
 
Fungsi rekursif, queue, stack
Fungsi rekursif, queue, stackFungsi rekursif, queue, stack
Fungsi rekursif, queue, stackIcha Dicaprio
 
Algoritma dan Struktur Data - tumpukan
Algoritma dan Struktur Data - tumpukanAlgoritma dan Struktur Data - tumpukan
Algoritma dan Struktur Data - tumpukanGeorgius Rinaldo
 
Bab 8-stack-dan-queue
Bab 8-stack-dan-queueBab 8-stack-dan-queue
Bab 8-stack-dan-queueRazik Akamal
 
struct & stack
struct & stackstruct & stack
struct & stackM Satrio
 
5. pemrograman array dan_string
5. pemrograman array dan_string5. pemrograman array dan_string
5. pemrograman array dan_stringRoziq Bahtiar
 

What's hot (20)

Pengantar R
Pengantar RPengantar R
Pengantar R
 
Laporan tugas struktur data
Laporan tugas struktur dataLaporan tugas struktur data
Laporan tugas struktur data
 
Algoritma dan Struktur Data - Antrian
Algoritma dan Struktur Data - AntrianAlgoritma dan Struktur Data - Antrian
Algoritma dan Struktur Data - Antrian
 
Laporan Praktikum Struktur Data Modul 3
Laporan Praktikum Struktur Data Modul 3Laporan Praktikum Struktur Data Modul 3
Laporan Praktikum Struktur Data Modul 3
 
Queue
QueueQueue
Queue
 
Stack tumpukan
Stack tumpukan Stack tumpukan
Stack tumpukan
 
Algoritma dan Struktur Data - antrian
Algoritma dan Struktur Data - antrianAlgoritma dan Struktur Data - antrian
Algoritma dan Struktur Data - antrian
 
struktur data
struktur datastruktur data
struktur data
 
Laporan praktikum modul ix
Laporan praktikum modul ixLaporan praktikum modul ix
Laporan praktikum modul ix
 
Queue antrian
Queue antrian Queue antrian
Queue antrian
 
Fungsi rekursif, queue, stack
Fungsi rekursif, queue, stackFungsi rekursif, queue, stack
Fungsi rekursif, queue, stack
 
Prak strukturdata
Prak strukturdataPrak strukturdata
Prak strukturdata
 
Stack
StackStack
Stack
 
Algoritma dan Struktur Data - tumpukan
Algoritma dan Struktur Data - tumpukanAlgoritma dan Struktur Data - tumpukan
Algoritma dan Struktur Data - tumpukan
 
Bab viii stack
Bab viii   stackBab viii   stack
Bab viii stack
 
Bab 8-stack-dan-queue
Bab 8-stack-dan-queueBab 8-stack-dan-queue
Bab 8-stack-dan-queue
 
Desain Top Down
Desain Top DownDesain Top Down
Desain Top Down
 
struct & stack
struct & stackstruct & stack
struct & stack
 
1 pengenalan matlab
1  pengenalan matlab1  pengenalan matlab
1 pengenalan matlab
 
5. pemrograman array dan_string
5. pemrograman array dan_string5. pemrograman array dan_string
5. pemrograman array dan_string
 

Viewers also liked

10.20 self assessment
10.20 self assessment10.20 self assessment
10.20 self assessmentjbajer
 
Yschincompetency
YschincompetencyYschincompetency
Yschincompetencytuya sambuu
 
Unlocking the potential of digital learning
Unlocking the potential of digital learningUnlocking the potential of digital learning
Unlocking the potential of digital learning Sanoma Learning
 
Makalah bahasa indonesia tugas uas semester genap
Makalah bahasa indonesia tugas uas semester genapMakalah bahasa indonesia tugas uas semester genap
Makalah bahasa indonesia tugas uas semester genapRisna Nilam Lutfia
 
Composición de un plan de negocios
Composición de un plan de negociosComposición de un plan de negocios
Composición de un plan de negociosGio Men
 
Sejarah perekonomian indonesia ( 3 )
Sejarah perekonomian indonesia ( 3 )Sejarah perekonomian indonesia ( 3 )
Sejarah perekonomian indonesia ( 3 )erlina risnandari
 
Review Ekonomi Riau Terkini, Regional Economist Kemenkeu Wilayah Riau
Review Ekonomi Riau Terkini, Regional Economist Kemenkeu Wilayah RiauReview Ekonomi Riau Terkini, Regional Economist Kemenkeu Wilayah Riau
Review Ekonomi Riau Terkini, Regional Economist Kemenkeu Wilayah RiauDahlan Tampubolon
 
RPP prakarya kelas 7 semester 1
RPP prakarya kelas 7 semester 1RPP prakarya kelas 7 semester 1
RPP prakarya kelas 7 semester 1kang dayat
 
Alpro I-latihan_kasus-r11102015
Alpro I-latihan_kasus-r11102015Alpro I-latihan_kasus-r11102015
Alpro I-latihan_kasus-r11102015staffpengajar
 
Studi delphi-meningkatkan-tata-kelola-hutan-dan-lahan
Studi delphi-meningkatkan-tata-kelola-hutan-dan-lahanStudi delphi-meningkatkan-tata-kelola-hutan-dan-lahan
Studi delphi-meningkatkan-tata-kelola-hutan-dan-lahanAksi SETAPAK
 
Laporan praktikum modul 6
Laporan praktikum modul 6Laporan praktikum modul 6
Laporan praktikum modul 6Devi Apriansyah
 
15. modul bahasa pemrograman (java)
15. modul bahasa pemrograman (java)15. modul bahasa pemrograman (java)
15. modul bahasa pemrograman (java)Safz Cabeza
 
The Storyteller's Secret: 3 Keys to Mastering Storytelling to Win Hearts and ...
The Storyteller's Secret: 3 Keys to Mastering Storytelling to Win Hearts and ...The Storyteller's Secret: 3 Keys to Mastering Storytelling to Win Hearts and ...
The Storyteller's Secret: 3 Keys to Mastering Storytelling to Win Hearts and ...Carmine Gallo
 

Viewers also liked (20)

10.20 self assessment
10.20 self assessment10.20 self assessment
10.20 self assessment
 
Los andes
Los andesLos andes
Los andes
 
Gautrain Recognition
Gautrain RecognitionGautrain Recognition
Gautrain Recognition
 
Historieta
HistorietaHistorieta
Historieta
 
Yschincompetency
YschincompetencyYschincompetency
Yschincompetency
 
Linea de tiempo
Linea de tiempoLinea de tiempo
Linea de tiempo
 
Unlocking the potential of digital learning
Unlocking the potential of digital learningUnlocking the potential of digital learning
Unlocking the potential of digital learning
 
Makalah bahasa indonesia tugas uas semester genap
Makalah bahasa indonesia tugas uas semester genapMakalah bahasa indonesia tugas uas semester genap
Makalah bahasa indonesia tugas uas semester genap
 
Composición de un plan de negocios
Composición de un plan de negociosComposición de un plan de negocios
Composición de un plan de negocios
 
Sejarah perekonomian indonesia ( 3 )
Sejarah perekonomian indonesia ( 3 )Sejarah perekonomian indonesia ( 3 )
Sejarah perekonomian indonesia ( 3 )
 
Review Ekonomi Riau Terkini, Regional Economist Kemenkeu Wilayah Riau
Review Ekonomi Riau Terkini, Regional Economist Kemenkeu Wilayah RiauReview Ekonomi Riau Terkini, Regional Economist Kemenkeu Wilayah Riau
Review Ekonomi Riau Terkini, Regional Economist Kemenkeu Wilayah Riau
 
Issue Tracking
Issue TrackingIssue Tracking
Issue Tracking
 
RPP prakarya kelas 7 semester 1
RPP prakarya kelas 7 semester 1RPP prakarya kelas 7 semester 1
RPP prakarya kelas 7 semester 1
 
Alpro I-latihan_kasus-r11102015
Alpro I-latihan_kasus-r11102015Alpro I-latihan_kasus-r11102015
Alpro I-latihan_kasus-r11102015
 
Studi delphi-meningkatkan-tata-kelola-hutan-dan-lahan
Studi delphi-meningkatkan-tata-kelola-hutan-dan-lahanStudi delphi-meningkatkan-tata-kelola-hutan-dan-lahan
Studi delphi-meningkatkan-tata-kelola-hutan-dan-lahan
 
Laporan praktikum modul 6
Laporan praktikum modul 6Laporan praktikum modul 6
Laporan praktikum modul 6
 
Pathways to Happiness Work Life Balance
Pathways to Happiness Work Life BalancePathways to Happiness Work Life Balance
Pathways to Happiness Work Life Balance
 
Facial nerve
Facial nerveFacial nerve
Facial nerve
 
15. modul bahasa pemrograman (java)
15. modul bahasa pemrograman (java)15. modul bahasa pemrograman (java)
15. modul bahasa pemrograman (java)
 
The Storyteller's Secret: 3 Keys to Mastering Storytelling to Win Hearts and ...
The Storyteller's Secret: 3 Keys to Mastering Storytelling to Win Hearts and ...The Storyteller's Secret: 3 Keys to Mastering Storytelling to Win Hearts and ...
The Storyteller's Secret: 3 Keys to Mastering Storytelling to Win Hearts and ...
 

Similar to Laporan praktikum modul viii

Slide minggu 2 pertemuan 2 (struktur data1)
Slide minggu 2 pertemuan 2 (struktur data1)Slide minggu 2 pertemuan 2 (struktur data1)
Slide minggu 2 pertemuan 2 (struktur data1)Setia Juli Irzal Ismail
 
Jeni Intro2 Bab03 Teknik Pemrograman Lanjut
Jeni Intro2 Bab03 Teknik Pemrograman LanjutJeni Intro2 Bab03 Teknik Pemrograman Lanjut
Jeni Intro2 Bab03 Teknik Pemrograman LanjutIndividual Consultants
 
Laporan praktikum modul ii & iii
Laporan praktikum modul ii & iiiLaporan praktikum modul ii & iii
Laporan praktikum modul ii & iiiDevi Apriansyah
 
STACK & QUEUE pert 5.pptx , stack program in teknik
STACK & QUEUE pert 5.pptx , stack program in teknikSTACK & QUEUE pert 5.pptx , stack program in teknik
STACK & QUEUE pert 5.pptx , stack program in teknikkoamik4
 
Materi rsi 8 diagram rsi
Materi rsi 8 diagram rsiMateri rsi 8 diagram rsi
Materi rsi 8 diagram rsidonasiilmu
 
Ketoprak_PPT ADT Stack dan Queue.pptx
Ketoprak_PPT ADT Stack dan Queue.pptxKetoprak_PPT ADT Stack dan Queue.pptx
Ketoprak_PPT ADT Stack dan Queue.pptxputii1
 
PythonTeX dan Sympy kolaborasi
PythonTeX dan Sympy kolaborasi PythonTeX dan Sympy kolaborasi
PythonTeX dan Sympy kolaborasi Hirwanto Iwan
 
Struktur Runtunan Algoritma
Struktur Runtunan AlgoritmaStruktur Runtunan Algoritma
Struktur Runtunan Algoritmacasnadi
 

Similar to Laporan praktikum modul viii (20)

Queue antrian
Queue antrian Queue antrian
Queue antrian
 
Slide minggu 2 pertemuan 2 (struktur data1)
Slide minggu 2 pertemuan 2 (struktur data1)Slide minggu 2 pertemuan 2 (struktur data1)
Slide minggu 2 pertemuan 2 (struktur data1)
 
Jeni Intro2 Bab03 Teknik Pemrograman Lanjut
Jeni Intro2 Bab03 Teknik Pemrograman LanjutJeni Intro2 Bab03 Teknik Pemrograman Lanjut
Jeni Intro2 Bab03 Teknik Pemrograman Lanjut
 
Laporan praktikum modul ii & iii
Laporan praktikum modul ii & iiiLaporan praktikum modul ii & iii
Laporan praktikum modul ii & iii
 
Tugas
TugasTugas
Tugas
 
Tugas
TugasTugas
Tugas
 
Tugas sp algo
Tugas sp algoTugas sp algo
Tugas sp algo
 
STACK .pdf
STACK .pdfSTACK .pdf
STACK .pdf
 
STACK & QUEUE pert 5.pptx , stack program in teknik
STACK & QUEUE pert 5.pptx , stack program in teknikSTACK & QUEUE pert 5.pptx , stack program in teknik
STACK & QUEUE pert 5.pptx , stack program in teknik
 
Materi rsi 8 diagram rsi
Materi rsi 8 diagram rsiMateri rsi 8 diagram rsi
Materi rsi 8 diagram rsi
 
Struktur data
Struktur dataStruktur data
Struktur data
 
Tipe data
Tipe dataTipe data
Tipe data
 
Kelompok 8.pptx
Kelompok 8.pptxKelompok 8.pptx
Kelompok 8.pptx
 
Matlab bab 2
Matlab bab 2Matlab bab 2
Matlab bab 2
 
Ketoprak_PPT ADT Stack dan Queue.pptx
Ketoprak_PPT ADT Stack dan Queue.pptxKetoprak_PPT ADT Stack dan Queue.pptx
Ketoprak_PPT ADT Stack dan Queue.pptx
 
C++
C++C++
C++
 
Flowchart.pptx
Flowchart.pptxFlowchart.pptx
Flowchart.pptx
 
teori Struktur data full
teori Struktur data fullteori Struktur data full
teori Struktur data full
 
PythonTeX dan Sympy kolaborasi
PythonTeX dan Sympy kolaborasi PythonTeX dan Sympy kolaborasi
PythonTeX dan Sympy kolaborasi
 
Struktur Runtunan Algoritma
Struktur Runtunan AlgoritmaStruktur Runtunan Algoritma
Struktur Runtunan Algoritma
 

More from Devi Apriansyah

Panduan penyusunan skripsi_ta_fkom_uniku
Panduan penyusunan skripsi_ta_fkom_unikuPanduan penyusunan skripsi_ta_fkom_uniku
Panduan penyusunan skripsi_ta_fkom_unikuDevi Apriansyah
 
Laporan praktikum modul 10 review
Laporan praktikum modul 10 reviewLaporan praktikum modul 10 review
Laporan praktikum modul 10 reviewDevi Apriansyah
 
Laporan praktikum modul 8 pemrogrman mobile j2me II devi-201208104
Laporan praktikum modul 8 pemrogrman mobile j2me II devi-201208104Laporan praktikum modul 8 pemrogrman mobile j2me II devi-201208104
Laporan praktikum modul 8 pemrogrman mobile j2me II devi-201208104Devi Apriansyah
 
Laporan praktikum modul 7 pemrogrman mobile j2me
Laporan praktikum modul 7 pemrogrman mobile j2me Laporan praktikum modul 7 pemrogrman mobile j2me
Laporan praktikum modul 7 pemrogrman mobile j2me Devi Apriansyah
 
Laporan praktikum modul 6 pemrogrman database dengan jdbc
Laporan praktikum modul 6 pemrogrman database dengan jdbcLaporan praktikum modul 6 pemrogrman database dengan jdbc
Laporan praktikum modul 6 pemrogrman database dengan jdbcDevi Apriansyah
 
Laporan praktikum modul 5 (pemrogrman database dengan odbc)
Laporan praktikum modul 5 (pemrogrman database dengan odbc)Laporan praktikum modul 5 (pemrogrman database dengan odbc)
Laporan praktikum modul 5 (pemrogrman database dengan odbc)Devi Apriansyah
 
Laporan praktikum modul 3 (pemrograman swing 3)
Laporan praktikum modul 3 (pemrograman swing 3) Laporan praktikum modul 3 (pemrograman swing 3)
Laporan praktikum modul 3 (pemrograman swing 3) Devi Apriansyah
 
Laporan praktikum modul 4 (pemrograman applet)
Laporan praktikum modul 4 (pemrograman applet)Laporan praktikum modul 4 (pemrograman applet)
Laporan praktikum modul 4 (pemrograman applet)Devi Apriansyah
 
Laporan praktikum modul 2 (pemrograman swing 2)
Laporan praktikum modul 2 (pemrograman swing 2)Laporan praktikum modul 2 (pemrograman swing 2)
Laporan praktikum modul 2 (pemrograman swing 2)Devi Apriansyah
 
Laporan praktikum modul 1 (pemrograman swing)
Laporan praktikum modul 1 (pemrograman swing)Laporan praktikum modul 1 (pemrograman swing)
Laporan praktikum modul 1 (pemrograman swing)Devi Apriansyah
 
Laporan praktikum modul 10 (dfd)
Laporan praktikum modul 10 (dfd)Laporan praktikum modul 10 (dfd)
Laporan praktikum modul 10 (dfd)Devi Apriansyah
 
Laporan praktikum modul 9 (review ddl dan dml)
Laporan praktikum modul 9 (review ddl dan dml)Laporan praktikum modul 9 (review ddl dan dml)
Laporan praktikum modul 9 (review ddl dan dml)Devi Apriansyah
 
Laporan praktikum modul 8 (dml part 2)
Laporan praktikum modul 8 (dml part 2)Laporan praktikum modul 8 (dml part 2)
Laporan praktikum modul 8 (dml part 2)Devi Apriansyah
 
Laporan praktikum modul 7 (dml)
Laporan praktikum modul 7 (dml)Laporan praktikum modul 7 (dml)
Laporan praktikum modul 7 (dml)Devi Apriansyah
 
Laporan praktikum modul 6 (ddl)
Laporan praktikum modul 6 (ddl)Laporan praktikum modul 6 (ddl)
Laporan praktikum modul 6 (ddl)Devi Apriansyah
 
Laporan praktikum modul 5 (normalisasi)
Laporan praktikum modul 5 (normalisasi)Laporan praktikum modul 5 (normalisasi)
Laporan praktikum modul 5 (normalisasi)Devi Apriansyah
 
Laporan praktikum modul 4 (e-rd notasi martin)
Laporan praktikum modul 4 (e-rd notasi martin)Laporan praktikum modul 4 (e-rd notasi martin)
Laporan praktikum modul 4 (e-rd notasi martin)Devi Apriansyah
 
Laporan praktikum modul 3 (erd notasi peterchen) -
Laporan praktikum modul 3 (erd notasi peterchen) -Laporan praktikum modul 3 (erd notasi peterchen) -
Laporan praktikum modul 3 (erd notasi peterchen) -Devi Apriansyah
 
Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...
Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...
Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...Devi Apriansyah
 
Laporan praktikum modul 1 (dbms)
Laporan praktikum modul 1 (dbms)Laporan praktikum modul 1 (dbms)
Laporan praktikum modul 1 (dbms)Devi Apriansyah
 

More from Devi Apriansyah (20)

Panduan penyusunan skripsi_ta_fkom_uniku
Panduan penyusunan skripsi_ta_fkom_unikuPanduan penyusunan skripsi_ta_fkom_uniku
Panduan penyusunan skripsi_ta_fkom_uniku
 
Laporan praktikum modul 10 review
Laporan praktikum modul 10 reviewLaporan praktikum modul 10 review
Laporan praktikum modul 10 review
 
Laporan praktikum modul 8 pemrogrman mobile j2me II devi-201208104
Laporan praktikum modul 8 pemrogrman mobile j2me II devi-201208104Laporan praktikum modul 8 pemrogrman mobile j2me II devi-201208104
Laporan praktikum modul 8 pemrogrman mobile j2me II devi-201208104
 
Laporan praktikum modul 7 pemrogrman mobile j2me
Laporan praktikum modul 7 pemrogrman mobile j2me Laporan praktikum modul 7 pemrogrman mobile j2me
Laporan praktikum modul 7 pemrogrman mobile j2me
 
Laporan praktikum modul 6 pemrogrman database dengan jdbc
Laporan praktikum modul 6 pemrogrman database dengan jdbcLaporan praktikum modul 6 pemrogrman database dengan jdbc
Laporan praktikum modul 6 pemrogrman database dengan jdbc
 
Laporan praktikum modul 5 (pemrogrman database dengan odbc)
Laporan praktikum modul 5 (pemrogrman database dengan odbc)Laporan praktikum modul 5 (pemrogrman database dengan odbc)
Laporan praktikum modul 5 (pemrogrman database dengan odbc)
 
Laporan praktikum modul 3 (pemrograman swing 3)
Laporan praktikum modul 3 (pemrograman swing 3) Laporan praktikum modul 3 (pemrograman swing 3)
Laporan praktikum modul 3 (pemrograman swing 3)
 
Laporan praktikum modul 4 (pemrograman applet)
Laporan praktikum modul 4 (pemrograman applet)Laporan praktikum modul 4 (pemrograman applet)
Laporan praktikum modul 4 (pemrograman applet)
 
Laporan praktikum modul 2 (pemrograman swing 2)
Laporan praktikum modul 2 (pemrograman swing 2)Laporan praktikum modul 2 (pemrograman swing 2)
Laporan praktikum modul 2 (pemrograman swing 2)
 
Laporan praktikum modul 1 (pemrograman swing)
Laporan praktikum modul 1 (pemrograman swing)Laporan praktikum modul 1 (pemrograman swing)
Laporan praktikum modul 1 (pemrograman swing)
 
Laporan praktikum modul 10 (dfd)
Laporan praktikum modul 10 (dfd)Laporan praktikum modul 10 (dfd)
Laporan praktikum modul 10 (dfd)
 
Laporan praktikum modul 9 (review ddl dan dml)
Laporan praktikum modul 9 (review ddl dan dml)Laporan praktikum modul 9 (review ddl dan dml)
Laporan praktikum modul 9 (review ddl dan dml)
 
Laporan praktikum modul 8 (dml part 2)
Laporan praktikum modul 8 (dml part 2)Laporan praktikum modul 8 (dml part 2)
Laporan praktikum modul 8 (dml part 2)
 
Laporan praktikum modul 7 (dml)
Laporan praktikum modul 7 (dml)Laporan praktikum modul 7 (dml)
Laporan praktikum modul 7 (dml)
 
Laporan praktikum modul 6 (ddl)
Laporan praktikum modul 6 (ddl)Laporan praktikum modul 6 (ddl)
Laporan praktikum modul 6 (ddl)
 
Laporan praktikum modul 5 (normalisasi)
Laporan praktikum modul 5 (normalisasi)Laporan praktikum modul 5 (normalisasi)
Laporan praktikum modul 5 (normalisasi)
 
Laporan praktikum modul 4 (e-rd notasi martin)
Laporan praktikum modul 4 (e-rd notasi martin)Laporan praktikum modul 4 (e-rd notasi martin)
Laporan praktikum modul 4 (e-rd notasi martin)
 
Laporan praktikum modul 3 (erd notasi peterchen) -
Laporan praktikum modul 3 (erd notasi peterchen) -Laporan praktikum modul 3 (erd notasi peterchen) -
Laporan praktikum modul 3 (erd notasi peterchen) -
 
Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...
Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...
Laporan praktikum modul 2 (membuat table, primary key,foreign key menggunakan...
 
Laporan praktikum modul 1 (dbms)
Laporan praktikum modul 1 (dbms)Laporan praktikum modul 1 (dbms)
Laporan praktikum modul 1 (dbms)
 

Laporan praktikum modul viii

  • 1. LAPORAN PRAKTIKUM ALGORITMA PEMROGRAMAN & STRUKTUR DATA MODUL VIII DISUSUN OLEH NAMA : DEVI NIM : 2012081043 KELAS : TI2012A LABORATORIUM KOMPUTER FAKULTAS ILMU KOMPUTER UNIVERSITAS KUNINGAN 2012
  • 2. I. PEMBAHASAN A. Dasar Teori Stack merupakan bagian dari struktur data yang dikategorikan ke dalam bentuk linear data, dimana operasi pemasukan maupun pengeluaran data selalu dilakukan pada salah satu sisinya[1]. Dalam dunia komputer, penggunaan stack (tumpukan) merupakan suatu hal yang umum digunakan seperti untuk penentuan alamat memory, penempatan ruang data dan aplikasi lain. Sebagai bagian dari struktur data, aplikasi stack juga digunakan untuk berbagai macam keperluan seperti pengujian kalimat palindrome, penguji tanda kurung (matching parentheses), dan juga berfungsi sebagai konversi dari notasi infix menjadi notasi postfix. Pada perhitungan aritmatika, notasi infix adalah notasi yang menempatkan operator ditengah dua operand sedangkan notasi Postfix adalah notasi yang menempatkan operator setelah dua operand. Penggunaan notasi infix merupakan hal yang lumrah digunakan dalam perhitungan aritmatika dibandingkan dengan penggunaan notasi Postfix, akan tetapi bagi mesin kompilasi notasi Postfix merupakan notasi yang digunakan untuk melakukan suatu perhitungan. Tulisan ini dibuat untuk memberikan gambaran secara jelas proses simulasi konversi atas dua notasi aritmatika tersebut, berdasarkan studi literatur dari beberapa buku dan dituangkan dengan bantuan bahasa pemrograman Pascal. Adapun proses konversi ini ditujukan untuk menjelaskan bagaimana mesin kompilasi dapat merubah notasi infix yang biasa digunakan oleh berbagai kalangan menjadi notasi Postfix yang dimengerti oleh mesin kompilasi sehingga suatu proses perhitungan aritmatika dapat dilaksanakan oleh komputer. 1. Definisi Dalam dunia komputer, penggunaan stack atau tumpukan merupakan salah satu komponen penting untuk menjamin proses penanganan suatu data disamping hal lain seperti Queue (antrian), linked list, dan tree. Definisi 1
  • 3. Stack adalah suatu koleksi atau kumpulan item data yang teroganisasi dalam bentuk urutan linear, yang operasi pemasukan dan penghapusan datanya dilakukan pada salah satu sisinya[1] Definisi 2 Diberikan suatu himpunan yang terurut himpunan sebagai S = {S1, S2, ..., ST}, T pada anggota S merupakan linear order, sehingga stack dari himpunan tersebut memiliki informasi sebagai berikut [1] : 1. Elemen puncak dari stack dalam himpunan S dikatakan sebagai TOP, sehingga: TOP[S} = ST ............................................................................(1) 2. Banyaknya elemen stack dalam himpunan S dikatakan sebagai NOEL, sehingga NOEL = T, dimana himpunan dari S tersebut dapat disusun sebagai : S = {S1, S2, ..., SNOEL} .............................(2) Dari dua definisi tersebut di atas maka suatu stack dapat digambarkan sebagai berikut : 1. Suatu stack dalam keadaan kosong akan memiliki informasi NOEL(S) = 0 dan TOP(S)= undefined. S 2. Untuk stack yang bukan kosong, maka akan memiliki informasi seperti yang digambarkan di bawah ini dimana informasi yang ada adalah NOEL(S) = 1 dan TOP(S) = Merah S
  • 4. Untuk stack yang berisi lebih dari n jumlah data maka informasi yang ada pada stack tersebut berisikan NOEL(S) = 2 (jika berisi 2 data) dan TOP(S) = Biru seperti ditunjukan pada gambar di bawah ini : S Elemen-elemen yang berada dalam stack tersebut di atas, memiliki prinsip dasar dalam pengoperasiannya yaitu prinsip LIFO (Last In First Out) atau yang masuk paling belakang akan memiliki prioritas untuk keluar paling depan. Suatu stack dapat digambarkan sebagai suatu array (larik) berdimensi satu yang elemen-elemennya berkisar antara 1 sampai n elemen. Dengan demikian jika suatu stack didefinisikan dengan n elemen maka dapat dikatakan jumlah maksimum dari stack atau NOEL(S) nya adalah n, sehingga penambahan elemen stack yang ke n+1 tidak diperkenankan atau stack tersebut dalam kondisi overflow. Hal tersebut juga berlaku untuk stack dengan nilai minimum yaitu NOEL(S) dari stack dalam kondisi 0, jika dilakukan operasi pengambilan elemen atas stack tersebut akan mengakibatkan stack tersebut dalam kondisi underflow. Dua kondisi tersebut merupakan dasar dalam merancang suatu aplikasi pemrograman komputer. 2. Operasi-operasi Stack Dalam penggunaannya suatu stack memiliki beberapa operasi yang dapat diterapkan seperti membuat stack, penambahan eleme ke dalam stack, menghapusan elemen dari dalam stack, dan operasi lain yang berhubungan dengan stack tersebut. Adapun operasi-operasi dasar dari suatu stack adalah : 1. Create (Stack)
  • 5. Operasi Create(Stack) digunakan untuk membuat suatu stack baru dengan nama stack, yang nilai elemen saat stack tersebut dibuat adalah NOEL(S) = 0, TOP(S) = NULL (tidak terdefinisikan) 2. IsEmpty (Stack) Operasi ini merupakan operasi untuk mencek isi dari suatu stack dalam keadaan kosong atau berisi. Operasi ini memiliki 2 (dua) kondisi boolean yaitu : a. True jika stack tersebut kosong atau dapat dikatakan NOEL(S) = 0 b. False jika stack tersebut tidak dalam kondisi kosong atau dapat dikatakan NOEL(S) > 0 3. Push (Stack, Elemen) Operasi ini merupakan operasi untuk menambahkan satu elemen dengan nilai X pada puncak suatu stack, sehingga posisi TOP(S) akan bernilai X, penerapan operasi push pasa suatu stack S akan berakibat overflow jika NOEL(S) dari stack tersebut telah bernilai maksimum. 4. Pop (Stack) Operasi ini berfungsi untuk menghapus satu elemen dari stack S, sehingga posisi NOEL(S) akan berkurang satu elemen, dan TOP(S) akan berubah. Operasi pop dapat menyebabkan kondisi underflow jika suatu stack S yang berada dalam kondisi minimum dikenakan operasi pop. 5. IsFull IsFull digunakan untuk mengecek apakah stack sudah penuh dengan cara memeriksa top of stacknya,jika = 1 maka stack penuh 6. Clear Clear digunakan untuk mengosongkan stack 3. Notasi Infix dan Postfix Suatu perhitungan aritmatika biasanya berhubungan dengan operand dan operator. Operand merupakan suatu karakter atau elemen yang nilainya dioperasikan dengan bantuan suatu operator untuik menghasilkan suatu solusi. Misalkan jika diberikan suatu ekspresi aritmatika 2 * 3, maka elemen ‘dua’ dan elemen ‘tiga’ merupakan operand dari ekspresi tersebut dan elemen ‘*’
  • 6. merupakan operator perkalian atas dua operand yang menghasilkan suatu solusi. Suatu ekspresi aritmatika dapat dibedakan dalam tiga bentuk notasi perhitungan yaitu : 1) Notasi prefix, jika operator ditempatkan sebelum dua operand 2) Notasi infix, jika operator ditempatkan diantara dua operand 3) Notasi postfix, jika operator ditempatkan setelah dua operand Dalam penggunaannya, dalam kehidupan sehari-hari notasi infix merupakan notasi aritmatika yang paling banyak digunakan untuk mengekspresikan suatu perhitungan artimatik dibanding dengan dua notasi yang lain, akan tetapi notasi Postfix merupakan notasi yang digunakan oleh mesin kompilasi pada komputer dengan maksud untuk mempermudah proses pengkodean, sehingga mesin kompilasi membutuhkan stack untuk proses translasi ekspresi tersebut. Konversi notasi infix ke postfix Berdasarkan teori yang diterangkan tersebut di atas, proses konversi infix menjadi notasi Postfix dalam implementasinya membutuhkan stack pada proses konversinya, adapun proses tersebut memiliki 3 (tiga) aturan yang digunakan, yaitu :  Jika ditemukan simbol kurung buka “(“ Operasi push pada stack akan digunakan untuk menyimpan simbol tersebut ke dalam stack.  Jika ditemukan simbol kurung buka “)” Operasi pop digunakan untuk mengeluarkan operator-operator yang berada di dalam stack.  Jika terdapat simbol operator Jika dalam suatu untai notasi infix ditemukan simbol operator maka operasi yang dilakukan pada stack terbagi atas : 1. Jika TOP(S) dari stack tersebut kosong atau berisi simbol “(“ maka operasi push akan digunakan untuk memasukan operator tersebut pada posisi di TOP(S) 2. Jika operator yang berada dipuncak stack merupakan elemen yang memiliki tingkat yang sama atau lebih tinggi maka operasi pop digunakan untuk
  • 7. mengeluarkan operator tersebut diikuti operasi push untuk menyimpan operator hasil scanning untai. 3. Jika operator yang berada di puncak stack memiliki tingkat yang lebih rendah dari operator yang discan, maka operator baru akan langsung dimasukan ke dalam stack dengan operasi push. B. Praktikum Praktikum 1 Di bawah ini merupakan sintaks:  Menulis source kode Program C++  Melakukan Kompilasi Pilih menu project, lalu pilih submenu compile atau denngan menekan ALTF9. Maka akan muncul seperti gambar di bawah ini. #include<conio.h> #include<string.h> #include<stdio.h> void main() { char*str= "LIKU LIKU LAKI LAKI TAK LAKU LAKU"; printf("%srn",strrev(str)); printf("%srn",str); }
  • 8.  Menjalankan Program Menjalankan program dengan cara pilih menu Debug, lalu submenu Run atau dengan cara menekan CTRL+F9. Maka akan muncul gambar seperti di bawah ini. Pembahasan: Program diatas adalah program untuk membalikan kata. Header yang digunakan dalam sintaks diatas ada yaitu stdio,string dan conio. Pada baris ke- 6 terdapat pernyataan char*str = "LIKU LIKU LAKI LAKI TAK LAKU LAKU"; artinya adalah untuk mendefinisikan pointer yang menunjuk ke suatu string yang bertipe character. Yang dimaksud pointer pada pernyataan diatas adalah “str”. Didalam sintaks tersebut terdapat fungsi “strrev” yang digunakan untuk membalikan kata yang berada pada pointer “str”, fungsi tersebut berada pada file header string. Kode format yang digunakan adalah %s karena bertipe char/string. Untuk menampilkan hasil outputnya digunakan funngsi printf yang berada pada file header stdio. Karena stack bersifat LIFO (Last in First Out) maka dapat dilihat pada hasil running diatas, dan fungsi strrev tersebut akan membalikan kata tersebut.
  • 9. Praktikum 2 Dibawah ini merupakan sintaks: Menulis source kode Program C++ Melakukan Kompilasi #include<stdio.h> #define N 20 main( ) { int nilai [N],i,jml; printf("jmlh maksimal tumpukan (<=20)="); scanf("%d",&jml); for(i=0; i<=jml; i++) { if (i>=jml) printf("tumpukan penuh"); else { printf("data ke-%d=",i+1);scanf("%d",&nilai[i]); } } for(i=0; i<jml; i++) { printf("ndata ke-%d=%d",i+1,nilai[i]); } return 0; }
  • 10. Menjalankan Program Pembahasan: Program diatas adalah program untuk menampilkan Tumpukan Data yang diinput melalui piranti masukan. Header yang digunakan adalah stdio. Statement yang terdapat pada baris ke-2 adalah ketetapan tumpukan yang akan dilaksanakan maksimal 20 tumpukan. Di dalam fungsi main terdapat 3 variabel yaitu, nilai [N], I dan jml yang bertipe integer. Operasi Input output yang digunakan dalam program tersebut adalah printf dan scanf yang berada pada file header yang telah dideklarasikan sebelumnya, yaitu stdio. Fungsi printf adalah untuk menampilkan suatu keluaran pada layar. Fungsi scanf digunakan untuk menginput data berupa data numerik, karakter dan string secara terformat. Kode format adalah untuk konversi data, data pada sintaks tersebut bertipe integer maka kode format yang digunakan untuk menginput data tersebut adalah %d. Sintaks diatas menggunakan struktur perulangan / looping, struktur yang digunakan adalah for karena jumlah perulangan yang akan dikerjakan telah diketahui yaitu perulangan sebanyak 20 kali, indeks dimulai dari 0 karena variable nilai bertipe array. Misalkan kita menginputkan tumpukan sebanyak 3
  • 11. maka kita akan mengisikan data sebanyak 3 kali, setelah kita tekan enter maka data yang tadi kita input akan ditampilkan lagi. Dan jika kita menginputkan data lebih dari 20 maka kita akan mengisikan data sebanyak 20 kali selebihnya maka akan muncul statement “Tumpukan Penuh” karena batas perulangannya adalah sebanyak 20 kali. Bisa dilihat dari output tersebut data-data yang di inputkan menumpuk dan bersifat LIFO.
  • 12. II. TUGAS 1. Buatlah program tumpukan (stack) untuk membalik kata dengan tampilan sebagai berikut: Masukan kata : STACK Setelah dibalik : KCATS Menulis source kode Program C++ Melakukan Kompilasi Menjalankan Program Pembahasan: Program diatas sama seperti praktikum 1 yang telah dibahas sebelumnya, namunprogram ini meminta user untuk menginputkan kata yang akan dibalik. Struktur yang digunakan sama seperti praktikum 1, hanya pada tugas ini digunakan operasi input output untuk menginput dan menampilkan kata yang
  • 13. akan dibalik. I/O yang digunakan adalah scanf dan printf. Karena scanf menginputkan data secara terformat maka menggunkan kode format %s karena variabelnya bertipe string. Scanf hanya bisa membaca kata tanpa adanya spasi, jika kita menginputkan data menggunakan spasi maka tidak akan ditampilkan kata setelah spasi tersebut. 2. Buatlah program kalkulator SCIENTIFIC  Misalkan operasi : 3 + 2 * 5  Operasi diatas disebut operasi infiks, notasi infiks tersebut harus diubah lebih dahulu menjadi notasi postfix  3 + 2 * 5 notasi postfiksnya adalah 3 2 5 * + Menulis source kode Program C++ Melakukan Kompilasi Menjalankan Program
  • 14. Pembahasan: Program diatas adalah program kalkulator SCIENTIFIC atau program perhitungan sederhana. Header yang digunakan adalah stdio. Didalam fungsi main terdapat 4 variabel yang bertipe integer. Untuk menampilkan dan menginput data digunakan printf dan scanf yang berada pada file header stdio. Kode format yang digunakan untuk menampilkan dan menginput data tersebut adalah %d karena variable yang dideklarasikan berupa integer. Suatu perhitungan aritmatika biasanya berhubungan dengan operand dan operator. Operand merupakan suatu karakter atau elemen yang nilainya dioperasikan dengan bantuan suatu operator untuik menghasilkan suatu solusi. Misalkan jika diberikan suatu ekspresi aritmatika 3 + 2 * 5, maka elemen ‘3’ ,elemen ‘2’ dan elemen ‘5’ merupakan operand dari ekspresi tersebut dan elemen ‘+’ dan ‘*’ merupakan operator penjumlahan dan perkalian atas tiga operand yang menghasilkan suatu solusi. Suatu ekspresi aritmatika dapat dibedakan dalam tiga bentuk notasi perhitungan yaitu :  Notasi prefix, jika operator ditempatkan sebelum dua operand  Notasi infix, jika operator ditempatkan diantara dua operand  Notasi postfix, jika operator ditempatkan setelah dua operand Dalam penggunaannya, dalam kehidupan sehari-hari notasi infix merupakan notasi aritmatika yang paling banyak digunakan untuk mengekspresikan suatu perhitungan artimatik dibanding dengan dua notasi yang lain, akan tetapi notasi Postfix merupakan notasi yang digunakan oleh
  • 15. mesin kompilasi pada komputer dengan maksud untuk mempermudah proses pengkodean, sehingga mesin kompilasi membutuhkan stack untuk proses translasi ekspresi tersebut.
  • 16. III. KESIMPULAN Dari Praktikum dan tugas praktikum diatas dapat disimpulkan Stack / Tumpukan adalah sekumpulan data yang diletakan diatas data lain. Data-data tersebut memiliki prinsip dasar dalam pengoperasiannya yaitu prinsip LIFO (Last In First Out) atau yang masuk paling belakang akan memiliki prioritas untuk keluar paling depan. Operasi-operasi dalam Stack adalah sebagai berikut: 1. Create (Stack) Operasi Create(Stack) digunakan untuk membuat suatu stack baru dengan nama stack, yang nilai elemen saat stack tersebut dibuat adalah NOEL(S) = 0, TOP(S) = NULL (tidak terdefinisikan) 2. IsEmpty (Stack) Operasi ini merupakan operasi untuk mencek isi dari suatu stack dalam keadaan kosong atau berisi. Operasi ini memiliki 2 (dua) kondisi boolean yaitu : a. True jika stack tersebut kosong atau dapat dikatakan NOEL(S) = 0 b.False jika stack tersebut tidak dalam kondisi kosong atau dapat dikatakan NOEL(S) > 0 3. Push (Stack, Elemen) Operasi ini merupakan operasi untuk menambahkan satu elemen dengan nilai X pada puncak suatu stack, sehingga posisi TOP(S) akan bernilai X, penerapan operasi push pasa suatu stack S akan berakibat overflow jika NOEL(S) dari stack tersebut telah bernilai maksimum. 4. Pop (Stack) Operasi ini berfungsi untuk menghapus satu elemen dari stack S, sehingga posisi NOEL(S) akan berkurang satu elemen, dan TOP(S) akan berubah. Operasi pop dapat menyebabkan kondisi underflow jika suatu stack S yang berada dalam kondisi minimum dikenakan operasi pop. 5. IsFull IsFull digunakan untuk mengecek apakah stack sudah penuh dengan cara memeriksa top of stacknya,jika = 1 maka stack penuh 6. Clear
  • 17. Clear digunakan untuk mengosongkan stack Notasi Infix dan Postfix adalah notasi atau ekspresi perhitungan aritmatika. Ada 3 notasi perhitungan aritmatika yaitu, prefix, infix dan postfiks. Notasi infix merupakan notasi aritmatika yang paling banyak digunakan untuk mengekspresikan suatu perhitungan artimatik dibanding dengan dua notasi yang lain, akan tetapi notasi Postfix merupakan notasi yang digunakan oleh mesin kompilasi pada komputer dengan maksud untuk mempermudah proses pengkodean, sehingga mesin kompilasi membutuhkan stack untuk proses translasi ekspresi tersebut.
  • 18. IV. Daftar Pustaka  http://boycreations.wordpress.com  Pemrograman Turbo C++, Abdul Kadir  http://mugi.or.id