laporan stack 201301011

14
LAPORAN PRAKTIKUM RESMI ALGORITMA & STRUKTUR DATA 1 STACK Disusun oleh : Unggul Budi Suryanto 201301011 Dosen pengampu : Yosef Murya Kusuma Ardhana.S.T., M.Kom JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO PURWOKERTO 2014

Upload: unggulbudi

Post on 19-Jan-2016

62 views

Category:

Documents


0 download

DESCRIPTION

tugas kuliah

TRANSCRIPT

Page 1: Laporan Stack 201301011

LAPORAN PRAKTIKUM RESMI

ALGORITMA & STRUKTUR DATA 1

STACK

Disusun oleh :

Unggul Budi Suryanto

201301011

Dosen pengampu :

Yosef Murya Kusuma Ardhana.S.T., M.Kom

JURUSAN SISTEM INFORMASI

SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO

PURWOKERTO

2014

Page 2: Laporan Stack 201301011

BAB I

DASAR TEORI

Stack atau tumpukan merupakan bentuk khusus dari Linier List yang pemasukan dan

penghapusan elemennya hanya dapat dilakukan pada satu posisi, yaitu posisi akhir dari List

(Top)

Prinsip Stack adalah LAST-IN-FIRST-OUT (LIFO).

Operasi operasi pada stack ada beberapa macam, berikut adalah operasi operasi yang

digunakan dalam stack :

ISEMPTY: Untuk memeriksa apakah stack kosong

ISFULL : Untuk memeriksa apakah stack sudah penuh

PUSH : Untuk menambahkan item pada posisi paling atas (TOP)

POP : Untuk menghapus item paling atas (TOP)

CLEAR : Untuk mengosongkan stack

Stack pada array

Deklarasi MAX_STACK #define MAX_STACK 6

Deklarasi STACK dengan struct dan array data typedef struct STACK{

int top;

int data[6];

};

Deklarasi variabel stack dari struct

STACK tumpuk;

Inisialisasi pada stack

Pada mulanya isi top dengan -1, karena array dalam C/C++ dimulai dari 0, berarti

stack adalah KOSONG

TOP adalah variabel penanda dalam STACK yang menunjukkan elemen teratas

Stack.

TOP of STACK akan selalu bergerak hingga mencapai MAX of STACK sehingga

menyebabkan stack PENUH

Page 3: Laporan Stack 201301011

Fungsi IsEmpty

Digunakan untuk memeriksa apakah stack masih dalam kondisi kosong. Dengan cara

memeriksa TOP of STACK. Jika TOP masih = -1 maka berarti stack masih kosong

Fungsi IsFull

Digunakan untuk memeriksa apakah kondisi stack sudah penuh

Dengan cara memeriksa TOP of Stack. Jika TOP of STACK = MAX_STACK-1 maka FULL

(Penuh). Jika TOP of STACK < MAX_STACK-1 maka belum penuh

Page 4: Laporan Stack 201301011

Fungsi Push

Digunakan untuk memasukkan elemen ke dalam stack dan selalu menjadi elemen teratas

stack

Dengan cara :

1. Menambah satu (increment) nilai TOP of STACK setiap ada penambahan elemen

stack selama stack masih belum penuh

2. Isikan nilai baru ke stack berdasarkan indeks TOP of STACK setelah ditambah satu

(diincrement)

Fungsi Pop

Digunakan untuk menghapus elemen yang berada pada posisi paling atas dari stack.

• Dengan cara :

1. Ambil dahulu nilai elemen teratas stack dengan mengakses TOP of STACK.

2. Tampilkan nilai yang akan diambil.

3. Lakukan decrement nilai TOP of STACK sehingga jumlah elemen stack berkurang

1

Fungsi Clear

Page 5: Laporan Stack 201301011

Digunakan untuk mengosongkan stack / membuat stack hampa sehingga Top pada Stack

berada kembali di posisi Top = -1

BAB II

PENJELASAN PROGRAM

/* * full.cpp * * Created on: 25 Mei 2014 * Author: acer */ #include <iostream> #include <cstring> #define MAX_STACK 10 using namespace std; struct STACK { int top; char data[10][10]; }; STACK tumpuk; void inisialisasi () { tumpuk.top=-1; } int IsFull() { if(tumpuk.top == MAX_STACK -1) return 1; else return 0; } int IsEmpty () { if (tumpuk.top == -1 ) return 1; else return 0; } void Push (char d[10]) { tumpuk.top++; strcpy (tumpuk.data[tumpuk.top],d); }

Page 6: Laporan Stack 201301011

void Pop () { cout<<"Data yang terambil = "<<tumpuk.data[tumpuk.top]; tumpuk.top--; } void TampilStack () { for (int i=tumpuk.top;i>=0;i--) { cout<<"Tampil data : "<<tumpuk.data[i]<<endl; } } void Clear () { tumpuk.top=-1; } int main() { int pil; inisialisasi (); char dt[10]; do { cout<<"\n1. Push \n"; cout<<"2. Pop\n"; cout<<"3. Tampilkan data \n"; cout<<"4. Clear \n"; cout<<"5. Keluar \n"; cout<<"Pilihan : "; cin>>pil; switch (pil) { case 1: if(IsFull () != 1) { cout<<"Data = "; cin>>dt; Push(dt); } else cout<<"\n Stack Penuh!\n"; break; case 2: if(IsEmpty () !=1) Pop(); else cout<<"Stack kosong! \n"; break; case 3: if(IsEmpty()!=1) TampilStack(); else cout<<"\n Stack kosong! \n"; break; case 4: Clear (); cout<<"\nStack kosong! \n"; break;

Page 7: Laporan Stack 201301011

} } while(pil !=5); return 0; }

Output program :

Page 8: Laporan Stack 201301011

Penjelasan program :

1. Tanda yang diawali dengan /* dan diakhiri tanda */ merupakan script untuk membuat

sebuah komentar pada pemrograman C++ yang jika didalamnya terdapat sebuah

perintah atau teks maka ketika program dirunning atau dijalankan tidak akan dibaca

oleh compiler.

2. #include atau disebut sebagai pengarah preprocessor #include berfungsi untuk

menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum

kompilasi dimulai.

3. <iostream> berfungsi untuk memanggil fungsi/perintah cin cout didalam program

C++.

4. Using name space std; adalah standar deviasi bahasa pemrograman C++.

5. . struct STACK

{

int top;

char data[10][10];

}; STACK tumpuk; Maksudnya adalah pendeklarasian tipedata abstrack struct bernama tumpuk.

6. Int main() adalah fungsi unruk memulai suatu program.

7. Tanda kurung kurawal {} berfungsi untuk mengawali dan mengakhiri program main

8. Void adalah sub menu yang akan dipanggil dalam menu utama.

9. Do-while adalah suatu fungsi perulangan.

10. Cout<<”\n1.push”, “\n2.pop”, dst adalah daftar menu yang ada dalam program.

11. Cout<<”pilihan : adalah var yang ditampilkan dalam program untuk pemilihan daftar

menu.

12. Cin>>pil; adalah pemanggilan var yang diinputkan oleh user.

13. Switch adalah fungsi pemilihan menu sesuai dengan yang di inputkan user.

14. Case 1, case 2, case 3 dst adalah daftar fungsi pengandaian yang digunakan dalam

program. Digunakan saat terjadi pemilihan menu, apabila dalam case 1 terpenuhi

maka program berhenti namun apabila tidak maka case akan berlanjut ke case

berikutnya.

15. Return 0; digunakan untuk membaca karakter.

Program praktikum pop /* * pop.cpp * * Created on: 25 mei 2014 * Author: unggulbudisuryanto */ #include <iostream> #include <cstring> #define max_stack 10 using namespace std; struct stack { int top; char data[10] [10]; };stack bobo;

Page 9: Laporan Stack 201301011

void inisialisasi(int z) { bobo.top=z-1; } int isfull() { if(bobo.top==max_stack-1) return 1; else return 0; } int isempty() { if(bobo.top==-1) return 1; else return 0; } void pop() { cout<<"Data yang terambil = "<<bobo.data[bobo.top]<<endl; bobo.top--; } void tampilstack() { for(int i=bobo.top;i>=0;i--) { cout<<"Tampil data :"<<bobo.data[i]<<endl; } } int main() { int pil, z; cout<<"masukkan data :"; cin>>z; do{ cout<<"1.Pop \n"; cout<<"2.Tampilkan data \n"; cout<<"Pilihan : "; cin>>pil; switch(pil) { case 1 : if(isempty() !=1) pop(); else cout<<"\n Stack Kosong \n"; break; case 2 : if(isempty() !=1) tampilstack(); else cout<<"\n Stack kosong! \n"; break; case 3 : cout<<"\n Stack ERROR \n"; break;

Page 10: Laporan Stack 201301011

} } while(pil !=5); return 0; }

Output program :

Penjelasan program :

1. Tanda yang diawali dengan /* dan diakhiri tanda */ merupakan script untuk membuat

sebuah komentar pada pemrograman C++ yang jika didalamnya terdapat sebuah

perintah atau teks maka ketika program dirunning atau dijalankan tidak akan dibaca

oleh compiler.

2. #include atau disebut sebagai pengarah preprocessor #include berfungsi untuk

menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum

kompilasi dimulai.

3. <iostream> berfungsi untuk memanggil fungsi/perintah cin cout didalam program

C++.

4. Using name space std; adalah standar deviasi bahasa pemrograman C++. 5. struct stack

{ int top; char data[10] [10];

Page 11: Laporan Stack 201301011

};stack bobo;

Adalah pendeklarasian typedata abstrak bernama bobo yang digunakan dalam

program tersebut.

6. Int main() adalah fungsi unruk memulai suatu program.

7. Tanda kurung kurawal {} berfungsi untuk mengawali dan mengakhiri program main

8. Void adalah sub menu yang akan dipanggil dalam menu utama.

9. Do-while adalah suatu fungsi perulangan.

10. Cout<<”\n1”, “\n2”, dst adalah daftar menu yang ada dalam program.

11. Cout<<”pilihan : adalah var yang ditampilkan dalam program untuk pemilihan daftar

menu.

12. Cin>>pil; adalah pemanggilan var yang diinputkan oleh user.

13. Switch adalah fungsi pemilihan menu sesuai dengan yang di inputkan user.

14. Case 1, case 2, case 3 dst adalah daftar fungsi pengandaian yang digunakan dalam

program. Digunakan saat terjadi pemilihan menu, apabila dalam case 1 terpenuhi

maka program berhenti namun apabila tidak maka case akan berlanjut ke case

berikutnya.

15. Return 0; digunakan untuk membaca karakter.

Program praktikum push

/* * push.cpp * * Created on: 25 Mei 2014 * Author: acer */ #include <iostream> #include <cstring> #define MAX_STACK 10 using namespace std; struct STACK { int top; char data[10] [10]; int max_stack; };STACK bobo; void inisialisasi () { bobo.top =-1; } int isFull() { if(bobo.top == max_stack-1) return 1; else return 0; } int IsEmpty() { if(bobo.top == -1) return 1;

Page 12: Laporan Stack 201301011

else return 0; } void push(char d[10]) { bobo.top++; strcpy(bobo.data[10],d); } void tampilStack() { for(int i=bobo.top; i>=0;i--){ cout<<"tampil data : "<<bobo.data[i]<<endl; } } void clear() { bobo.top=-1; } void max_stack(int z) { bobo.max_stack=z; } int main() { int pil, z; inisialisasi(); char dt[10]; cout<<"masukkan jumlah data :"; cin>>z; do{ cout<<"1. push \n"; cout<<"2. Tampilkan data \n"; cout<<"3. Keluar \n"; cin>>pil; switch(pil){ case 1: if(isFull() !=1) { cout<<"data ="; cin>>dt; push(dt); } else cout<<"\n stack penuh!\n"; break; case 2 : if(IsEmpty() !=1) tampilStack(); else cout<<"\n stack kosong ! \n"; break; }

Page 13: Laporan Stack 201301011

} while(pil !=5); return 0; } Output programnya adalah :

Penjelasan program :

1. Tanda yang diawali dengan /* dan diakhiri tanda */ merupakan script untuk membuat

sebuah komentar pada pemrograman C++ yang jika didalamnya terdapat sebuah

perintah atau teks maka ketika program dirunning atau dijalankan tidak akan dibaca

oleh compiler.

2. #include atau disebut sebagai pengarah preprocessor #include berfungsi untuk

menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum

kompilasi dimulai.

3. <iostream> berfungsi untuk memanggil fungsi/perintah cin cout didalam program

C++.

4. Using name space std; adalah standar deviasi bahasa pemrograman C++. 5. struct STACK

{ int top; char data[10] [10]; int max_stack; };STACK bobo;

Adalah pendeklarasian typedata abstrak bernama bobo yang digunakan dalam

program tersebut.

6. Int main() adalah fungsi unruk memulai suatu program.

7. Tanda kurung kurawal {} berfungsi untuk mengawali dan mengakhiri program main

8. Void adalah sub menu yang akan dipanggil dalam menu utama.

9. Do-while adalah suatu fungsi perulangan.

10. Cout<<”\n1”, “\n2”, dst adalah daftar menu yang ada dalam program.

Page 14: Laporan Stack 201301011

11. Cout<<”pilihan : adalah var yang ditampilkan dalam program untuk pemilihan daftar

menu.

12. Cin>>pil; adalah pemanggilan var yang diinputkan oleh user.

13. Switch adalah fungsi pemilihan menu sesuai dengan yang di inputkan user.

14. Case 1, case 2, case 3 dst adalah daftar fungsi pengandaian yang digunakan dalam

program. Digunakan saat terjadi pemilihan menu, apabila dalam case 1 terpenuhi

maka program berhenti namun apabila tidak maka case akan berlanjut ke case

berikutnya.

15. Return 0; digunakan untuk membaca karakter.

BAB IV

KESIMPULAN

Stack atau tumpukan merupakan bentuk khusus dari Linier List yang pemasukan dan

penghapusan elemennya hanya dapat dilakukan pada satu posisi, yaitu posisi akhir dari List

(Top)

Prinsip Stack adalah LAST-IN-FIRST-OUT (LIFO).

Operasi operasi pada stack ada beberapa macam, berikut adalah operasi operasi yang

digunakan dalam stack :

ISEMPTY: Untuk memeriksa apakah stack kosong

ISFULL : Untuk memeriksa apakah stack sudah penuh

PUSH : Untuk menambahkan item pada posisi paling atas (TOP)

POP : Untuk menghapus item paling atas (TOP)

CLEAR : Untuk mengosongkan stack

Stack pada array

Deklarasi MAX_STACK

#define MAX_STACK 6

Deklarasi STACK dengan struct dan array data

typedef struct STACK{

int top;

int data[6];

};

Deklarasi variabel stack dari struct STACK tumpuk;

Fungsi IsEmpty Digunakan untuk memeriksa apakah stack masih dalam kondisi kosong.

Fungsi ISFULL Fungsi ini memeriksa apakah stack yang sudah ada sudah penuh atau

belum.

Fungsi Push Digunakan untuk memasukkan elemen ke dalam stack dan selalu menjadi

elemen teratas stack

Fungsi Pop Digunakan untuk menghapus elemen yang berada pada posisi paling atas dari

stack.

Fungsi Clear Digunakan untuk mengosongkan stack / membuat stack hampa sehingga Top

pada Stack berada kembali di posisi Top = -1

DAFTAR PUSTAKA

1. Ardhana, YM Kusuma. 2013. Struktur Data dalam Ilustrasi Eclups Indigo C ++.

Yogyakarta.