laporan praktikum resmi bab 10 stack

25
LAPORAN PRAKTIKUM RESMI BAB X STACK Disusun oleh : Christina Natalia Sunjaya 201301003 Dosen pengampu : Yosef Murya Kusuma Ardhana.S.T., M.Kom JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO

Upload: christinanatalia

Post on 28-Dec-2015

46 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Laporan Praktikum Resmi Bab 10 Stack

LAPORAN PRAKTIKUM RESMI

BAB X STACK

Disusun oleh :Christina Natalia Sunjaya

201301003

Dosen pengampu :Yosef Murya Kusuma Ardhana.S.T., M.Kom

JURUSAN SISTEM INFORMASISEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO PURWOKERTO 2014

Page 2: Laporan Praktikum Resmi Bab 10 Stack

BAB ITEORI DASAR

1. PENDAHULUANStack atau tumpukan bentuk khusus dari Linier List yang pemasukan dan penghapusan elemennya hanya dapat dilakukan pada saty posisi, yaitu posisi akhir dari list (Top). Prinsip stack adalah LAST-IN-FIRST-OUT (LIFO). Benda yang terakhir masuk dalam stack akan menjadi benda pertama yang dikeluarkan dari stack.Stack memiliki beberapa macam operasi, yaitu :A. ISEMPTY : untuk memeriksa apakah stack kosong.B. ISFULL : untuk memeriksa apakah stack sudah penuh.C. PUSH : untuk menambahkan item pada posisi paling atas

(TOP).D. POP : untuk menghapus item paling atas (TOP).E. CLEAR : untuk mengosongkan stack.

Deklarasi MAX_STACK:#define MAX_STACK 6Deklarasi STACK dengan struct dan array data :Typedef struct STACK{Int top;Int data[6];};Deklarasi variable 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.

Page 3: Laporan Praktikum Resmi Bab 10 Stack

TOP adalah variable penanda dalam STACK yang menunjukkan elemen teratas stack.

TOP OF STACK AKAN SELALU BERGERAK HINGGA MENCAPAI max OF stack ,sehingga menyebabkan stack penuh.Void inisialisasi (){

Tumpuk.top=-1;}

A. ISEMPTY Fungsi yang menentukan apakah stack kosong atau tidak. Tanda bahwa stack kosong adalag top bernilai kurang dari nol atau -1. Fungsi IsEmpty dalam C++:Int IsEmpty(){

If(tumpuk.top == -1Return 1;

ElseReturn 0;}

B. ISFULLFungsi ini memeriksa apakah stack yang sudah ada sudah penuh atau belum. Stack penuh jika puncak stack terdapat tepat di bawah jumlah maksimum yang dapar ditampung stack atau dengan kata lain TOP=MAX_STACK-1.Int IsFull(){

If(tumpuk.top==MAX_STACK-1)

Page 4: Laporan Praktikum Resmi Bab 10 Stack

Return 1;ElseReturn 0;}

C. PUSH

Fungsi ini menambahkan item atau elemen kedalam stack dan tidak bisa dilakukan lagi jika stack sudah penuh.

Fungsi push dalam C++

Void push (char d[6])

{

Tumpuk.top++

Strcpy(tumpuk.data[tumpuk.top],d;

}

D. POPFungsi ini mengambil elemen teratas dari stack dengan syarat stack tidak boleh kosong.Cara memasukkan data dengan fungsi Pop, yaitu:

Ambil dahulu nilai elemen teratas dengan mengakses TOP of STACK.

Tampilkan nilai yang akan diambil. Lakukan decrement nilai TOP OF STACK, sehingga

jumlah elemen stack berkurang 1.Fungsi pop dalam C++:Void pop(){

Page 5: Laporan Praktikum Resmi Bab 10 Stack

Cout<<”Data yang terambil =”<<tumpuk.data[tumpuk.top];Tumpuk.top--;}

E. CLEARFungsi ini akan mengosongkan stack dengan cara mengeset Top dengan -1. Jika top bernilai kurang dari nol, maka stack dianggap kosong.Fungsi Clear dalam C++:Void clear(){Tumpuk.data=tumpuk.top=-1Cout<<”Data clear”;}

PROGRAM STACK

/* * stack.cpp * * Created on: May 23, 2014 * Author: SAMSUNG */

#include <iostream> #include <cstring> #define MAX_STACK 10using namespace std;

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

}; STACK tumpuk;

void inisialisasi (){

tumpuk.top=-1;}

int IsFull ()

Page 6: Laporan Praktikum Resmi Bab 10 Stack

{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);

}

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<<"1. Push \n";cout<<"2. Pop \n";cout<<"3. Tampilkan Data \n";cout<<"4. Clear \n";cout<<"5. Keluar \n";cout<<"Pilihan : \n ";cin>>pil;

switch(pil){

case 1:

Page 7: Laporan Praktikum Resmi Bab 10 Stack

if(IsFull() !=1){cout<<"Data =";cin>>dt;push(dt);

} else cout<<"\n Stack penuh !\n";break;

case 2:if(IsEmpty () !=1)

Pop();else

cout<<"\n Stack kosong! \n";break;

case 3:if (IsEmpty()!=1)

TampilStack();else

cout<<"\n stack kosong! \n ";break;

case 4:Clear();cout<<"\n Stack Sudah kosong! \n ";break;

}}

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

Output program

Page 8: Laporan Praktikum Resmi Bab 10 Stack

BAB IIPENJELASAN PROGRAM

1. Tanda yang diawali dengan /* dan diakhiri tanda */ adalah script untuk sebuah komentar atau perintah / teks, namun jika program di run tidak akan dibaca oleh compiler, tidak muncul di output.

2. #include adalah pengarah preprocessor yang berfungsi untuk menginstruksikan compiler.

3. <iostream> adalah header atau library file untuk proses input output nantinya.

4. Using namespace std adalah penyingkatan sebuah kode5. #define MAX_STACK 10 adalah library untuk stack

maximal 106.

struct STACK {int top;char data [10] [10];}; STACK tumpuk

Struct berisi stack dengan isi tipe data integer dan character

7. void inisialisasi () prosedur inisialisasi

{tumpuk.top=-1;

}

int IsFull () fungsi isFull{

if(tumpuk.top==MAX_STACK-1) return 1;else return 0;

}int IsEmpty () fungsi isempty{

if(tumpuk.top==-1) return 1;else return 0;

}

Page 9: Laporan Praktikum Resmi Bab 10 Stack

void push (char d[10]) prosedur push

{tumpuk.top++; statement inkremenstrcpy(tumpuk.data[tumpuk.top],d);

}

8. void push (char d[10]) prosedur push

{tumpuk.top++; statement inkremenstrcpy(tumpuk.data[tumpuk.top],d);

}

void Pop() prosedur pop{

cout<<"Data yang terambil ="<<tumpuk.data[tumpuk.top]; menampilkan data tumpuk.top--;

}

void TampilStack() menampilkan stack{

for (int i=tumpuk.top;i>=0;i--) {cout<<"Tampil data :"<<tumpuk.data[i]<<endl;

}}void Clear() untuk mengehapus stack{

tumpuk.top=-1;

}9. int main () merupakan badan program

{int pil; tipe data int pil (pilihan)inisialisasi (); pemanggilan prosedur inisialisasichar dt[10];do{

cout<<"1. Push \n"; menampilkan output tulisan pushcout<<"2. Pop \n"; menampilkan output tulisan popcout<<"3. Tampilkan Data \n"; menampilkan output tulisan

tampilkancout<<"4. Clear \n"; menampilkan output tulisan clearcout<<"5. Keluar \n"; menampilkan output tulisan keluarcout<<"Pilihan : \n "; menampilkan output tulisan pilihancin>>pil; memanggil tipe data pil

10. switch(pil){ perulangan menggunakan switch

case 1: case 1 berisi perulangan statement if isfullif(IsFull() !=1){

cout<<"Data =";

Page 10: Laporan Praktikum Resmi Bab 10 Stack

cin>>dt;push(dt);

} else cout<<"\n Stack penuh !\n";break;

case 2: case berisi perulangan statement if isemptyif(IsEmpty () !=1)

Pop();else

cout<<"\n Stack kosong! \n";break;

case 3:if (IsEmpty()!=1)

TampilStack();else

cout<<"\n stack kosong! \n ";break;

case 4: Clear();cout<<"\n Stack Sudah kosong! \n ";break;

}}

while(pil!=5); perulangan dimana pilihan tidak sama dengan 5 maka akan kembali ke awalreturn 0; execute of the program}

1. tugas praktikumProgram stack pushListing program stack push

/* * pusshhh.cpp * * Created on: Jun 23, 2014 * Author: SAMSUNG */

#include <iostream> #include <cstring> using namespace std;

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

Page 11: Laporan Praktikum Resmi Bab 10 Stack

int MAX_STACK; };STACK tumpuk;

void inisialisasi()

{ tumpuk.top=-1;

} int IsFull()

{ if(tumpuk.top == tumpuk.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);

} void TampilStack()

{ for(int i=tumpuk.top;i>=0;i--){ cout<<"Tampil Data : "<<tumpuk.data[i]<<endl; }

}

void Clear()

{ tumpuk.top=-1;

} void MAX_STACK(int n)

{ tumpuk.MAX_STACK=n;

}

int main() {

int pil,n; inisialisasi(); char dt[10]; cout<<"Masukkan Jumlah Stack MAX: "; cin>>n; MAX_STACK(n);

Page 12: Laporan Praktikum Resmi Bab 10 Stack

do{

cout<<"1. Push \n"; cout<<"2. Tampilkan Data \n"; cout<<"3. 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) TampilStack(); else cout<<"\n Stack kosong! \n"; break;

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

OUTPUT PROGRAM STACK PUSH

Penjelasan listing program push1. Tanda yang diawali dengan /* dan diakhiri tanda */

adalah script untuk sebuah komentar atau perintah / teks, namun jika program di run tidak akan dibaca oleh compiler, tidak muncul di output.

Page 13: Laporan Praktikum Resmi Bab 10 Stack

2. #include adalah pengarah preprocessor yang berfungsi untuk menginstruksikan compiler.

3. <iostream> adalah header atau library file untuk proses input output nantinya.

4. Using namespace std adalah penyingkatan sebuah kode5. struct STACK { STRUCT STACK

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

};STACK tumpuk;

6. void inisialisasi () prosedur inisialisasi

{tumpuk.top=-1;

}

int IsFull () fungsi isFull{

if(tumpuk.top==MAX_STACK-1) return 1;else return 0;

}int IsEmpty () fungsi isempty{

if(tumpuk.top==-1) return 1;else return 0;

}void push (char d[10]) prosedur push

{tumpuk.top++; statement inkremenstrcpy(tumpuk.data[tumpuk.top],d);

}

7. void push (char d[10]) prosedur push

{tumpuk.top++; statement inkremenstrcpy(tumpuk.data[tumpuk.top],d);

}void TampilStack() menampilkan stack{

for (int i=tumpuk.top;i>=0;i--) {cout<<"Tampil data :"<<tumpuk.data[i]<<endl;

Page 14: Laporan Praktikum Resmi Bab 10 Stack

}}void Clear() untuk mengehapus stack{

tumpuk.top=-1;

}1. int main () merupakan badan program

{int pil; tipe data int pil (pilihan)inisialisasi (); pemanggilan prosedur inisialisasichar dt[10];do{

cout<<"1. Push \n"; menampilkan output tulisan pushcout<<"3. Tampilkan Data \n"; menampilkan output tulisan

tampilkancout<<"4. Clear \n"; menampilkan output tulisan clearcout<<"5. Keluar \n"; menampilkan output tulisan keluarcout<<"Pilihan : \n "; menampilkan output tulisan pilihancin>>pil; memanggil tipe data pil

2. switch(pil){ perulangan menggunakan switch

case 1: case 1 berisi perulangan statement if isfullif(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;

case 3: Clear();cout<<"\n Stack Sudah kosong! \n ";break;

}}

while(pil!=5); perulangan dimana pilihan tidak sama dengan 5 maka akan kembali ke awalreturn 0; execute of the program}

Page 15: Laporan Praktikum Resmi Bab 10 Stack

2. tugas praktikumProgram stack popListing program stack pop

/* * pooppp.cpp * * Created on: May 24, 2014 * Author: SAMSUNG */

#include <iostream> #include <cstring> #define MAX_STACK 10using 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 Pop(){

cout<<"Data yang terambil ="<<tumpuk.data[tumpuk.top];tumpuk.top--;

}

void TampilStack(){

Page 16: Laporan Praktikum Resmi Bab 10 Stack

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<<"1. Pop \n";cout<<"2. Tampilkan Data \n";cout<<"3. Clear \n";cout<<"4. Keluar \n";cout<<"Pilihan : \n ";cin>>pil;

switch(pil){

case 1:

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:Clear();cout<<"\n Stack Sudah kosong! \n ";break;}

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

Page 17: Laporan Praktikum Resmi Bab 10 Stack

Output program pop

Penjelasan listing program stack pop1. Tanda yang diawali dengan /* dan diakhiri tanda */ adalah

script untuk sebuah komentar atau perintah / teks, namun jika program di run tidak akan dibaca oleh compiler, tidak muncul di output.

2. #include adalah pengarah preprocessor yang berfungsi untuk menginstruksikan compiler.

3. <iostream> adalah header atau library file untuk proses input output nantinya.

4. Using namespace std adalah penyingkatan sebuah kode5. #define MAX_STACK 10 adalah library untuk stack

maximal 106.

struct STACK {int top;char data [10] [10];}; STACK tumpuk

Struct berisi stack dengan isi tipe data integer dan character

Page 18: Laporan Praktikum Resmi Bab 10 Stack

7. void inisialisasi () prosedur inisialisasi

{tumpuk.top=-1;

}

int IsFull () fungsi isFull{

if(tumpuk.top==MAX_STACK-1) return 1;else return 0;

}int IsEmpty () fungsi isempty{

if(tumpuk.top==-1) return 1;else return 0;

}

void Pop() prosedur pop{

cout<<"Data yang terambil ="<<tumpuk.data[tumpuk.top]; menampilkan data tumpuk.top--;

}

void TampilStack() menampilkan stack{

for (int i=tumpuk.top;i>=0;i--) {cout<<"Tampil data :"<<tumpuk.data[i]<<endl;

}}void Clear() untuk mengehapus stack{

tumpuk.top=-1;

}8. int main () merupakan badan program

{int pil; tipe data int pil (pilihan)inisialisasi (); pemanggilan prosedur inisialisasichar dt[10];do{

cout<<"1. Pop \n"; menampilkan tulisan popcout<<"2. Tampilkan Data \n"; menampilkan tulisan tampil datacout<<"3. Clear \n"; menampilkan tulisan clearcout<<"4. Keluar \n"; menampilkan tulisan keluarcout<<"Pilihan : \n "; menampilkan tulisan pilihancin>>pil; menampilkan tulisan

9. switch(pil){ perulangan menggunakan switch

Page 19: Laporan Praktikum Resmi Bab 10 Stack

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;

} }while(pil!=5); perulangan dimana pilihan tidak sama dengan 5 maka akan kembali ke awalreturn 0; execute of the program}

BAB 3KESIMPULAN

1. Stack memiliki beberapa macam operasi, yaitu :F. ISEMPTY : untuk memeriksa apakah stack kosong.G. ISFULL : untuk memeriksa apakah stack sudah penuh.H. PUSH : untuk menambahkan item pada posisi paling atas

(TOP).I. POP : untuk menghapus item paling atas (TOP).J. CLEAR : untuk mengosongkan stack.2. ISEMPTY

Fungsi yang menentukan apakah stack kosong atau tidak. Tanda bahwa stack kosong adalag top bernilai kurang dari nol atau -1.

3. ISFULLFungsi ini memeriksa apakah stack yang sudah ada sudah penuh atau belum. Stack penuh jika puncak stack terdapat

Page 20: Laporan Praktikum Resmi Bab 10 Stack

tepat di bawah jumlah maksimum yang dapar ditampung stack atau dengan kata lain TOP=MAX_STACK-1.

4. PUSH

Fungsi ini menambahkan item atau elemen kedalam stack dan tidak bisa dilakukan lagi jika stack sudah penuh.

5. POPFungsi ini mengambil elemen teratas dari stack dengan syarat stack tidak boleh kosong.

6. CLEARFungsi ini akan mengosongkan stack dengan cara mengeset Top dengan -1. Jika top bernilai kurang dari nol, maka stack dianggap kosong.