laporan praktikum resmi stack
TRANSCRIPT
-
8/12/2019 Laporan Praktikum Resmi Stack
1/19
LAPORAN PRAKTIKUM RESMI
STACK
Disusun oleh :
Albert Sugihartono
201301018
Dosen pengampu :
Yosef Murya Kusuma Ardhana.S.T., M.Kom
JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO
PURWOKERTO
2014
-
8/12/2019 Laporan Praktikum Resmi Stack
2/19
2
BAB I
TEORI DASAR
1.
Pengantar
Stack merupakan bentuk khusus dari struktur data, dimana node yang ditambahkan ke dalam
list hanya pada kepalanya atau dengan kata lain prinsip pengolahannya adalah last-in first-
out (LIFO). Ada dua operasi utama yaitu push(memasukkan node ke dalam stack) dan
pop(mengambil node dari stack). Operasi lainnya adalah ISEMPTY, ISFULL, dan CLEAR.
Untuk menentukan jumlah maksimum elemen stack, dapat dideklarasikan terlebih dahulu
preprocessor define. Sebagai contoh adalah define MAX_STACK. Contoh
pendeklarasiannya:
TOP of STACK merupakan elemen teratas dalam stack. Jika TOP of STACK terus bergerak
hingga mencapai MAX_STACK, maka stack akan penuh.
Elemen pada stack diindikasikan oleh indeks yaitu dari indeks 0 hingga indeks ke-n. Hal ini
dikarenakan sistem stack menggunakan fungsi dari array.
#define MAX_STACK 10
-
8/12/2019 Laporan Praktikum Resmi Stack
3/19
3
BAB II
PENJELASAN PROGRAM
Pada penjelasan program bab ini dijelaskan mengenai bagaimana melakukan pemrograman
C++ program stack.cpp, push.cpp dan pop.cpp
Listing program stack.cpp
/*
* stack.cpp
*
* Created on: May 20, 2014
* Author: STIKOM109
*/
#include
#include
#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])
-
8/12/2019 Laporan Praktikum Resmi Stack
4/19
4
{
tumpuk.top++;
strcpy(tumpuk.data[tumpuk.top],d);
}
void Pop()
{cout
-
8/12/2019 Laporan Praktikum Resmi Stack
5/19
5
else
cout
-
8/12/2019 Laporan Praktikum Resmi Stack
6/19
6
stack adalah 10. Program menggunakan preprocessor #include yang digunakan
untuk operasi fungsi manipulasi string pada program yaitu strcpy yang berfungsi untuk
mengcopy string yang satu ke string lainnya.
2. Pada program dideklarasikan struct STACK yang berisi member top untuk stack mencapaitop of stack dan data untuk memasukkan data stack.
3. Stack memiliki persamaan untuk mengetahui apakah stack sudah penuh atau belum dimanapersamaan tersebut dideklarasikan pada prosedur IsFull. Persamaannya adalah Top of stack =
max_stack 1; dimana apabila bernilai TRUE maka stack penuh jika tidak maka sebaliknya
stack belum penuh.
4. Program menggunakan fungsi perulangan do-while sehingga jika user belum memilih pilihankeluar, maka user dapat melakukan salah satu operasi stack tersebut. Untuk pemilihan operasi
stack, digunakan fungsi pemilihan switch dengan variabel pil sebagai acuan case (1-5). Case
pertama merupakan case untuk operasi Push dengan menggunakan prosedur IsFull untuk
memberi peringatan jika stack yang di push elemennya telah mencapai batas maksimumnya,
dan memanggil prosedur Push. Case kedua digunakan untuk operasi pop. Pada operasi pop,
digunakan decrement pada top (tumpuk.top--) dengan syarat IsEmpty bukan 1. Case ketiga
digunakan untuk menampilkan data stack yang ada dengan memanggil prosedur
TampilStack();. Case keempat digunakan untuk operasi Clear yang memanggil prosedurClear dimana top of stack diassignment sama dengan -1 yang mengindikasikan bahwa stack
sudah kosong.
Tugas Praktikum
Pada tugas praktikum ini merupakan program operasi dalam stack yaitu push dan pop dengan
user dapat menentukan jumlah maksimum elemen stack yang dapat dimasukkan.
Program praktikum push.cpp
/*
* push.cpp
*
* Created on: May 25, 2014
-
8/12/2019 Laporan Praktikum Resmi Stack
7/19
7
* Author: ALBERT
*/
#include
#include
using namespace std;
struct STACK
{
int top;
char data[10][10];
int MAX_STACK;
}; STACK tumpuk;
void insialisasi()
{
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
-
8/12/2019 Laporan Praktikum Resmi Stack
8/19
8
return 0;
}
int MAX_STACK(int n)
{
tumpuk.MAX_STACK=n;
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
-
8/12/2019 Laporan Praktikum Resmi Stack
9/19
9
cout
-
8/12/2019 Laporan Praktikum Resmi Stack
10/19
10
Output program push.cpp
Penjelasan program push.cpp
Berikut penjelasan dari program push.cpp :
1. Pada program push.cpp, user dapat mengset berapa jumlah maksimum elemen stack yangmungkin dimasukkan. Maka dari itu, MAX_STACK tidak dideklarasikan dengan
preprocessor #define melainkan dimasukkan sebagai member ke dalam struct STACK
sehingga MAX_STACK sebagai member struct dapat diakses oleh user dalam main
program. Program menggunakan preprocessor #include yang digunakan untuk
operasi fungsi manipulasi string pada program yaitu strcpy yang berfungsi untuk
mengcopy string yang satu ke string lainnya.
2. Stack memiliki persamaan untuk mengetahui apakah stack sudah penuh atau belumdimana persamaan tersebut dideklarasikan pada prosedur IsFull. Persamaannya adalah
Top of stack = max_stack 1; dimana apabila bernilai TRUE maka stack penuh jika tidak
maka sebaliknya stack belum penuh.
3. Agar MAX_STACK dapat didefinisikan valuenya, maka MAX_STACK dibuat ke dalamsebuah fungsi yaitu int MAX_STACK(int n) dimana n nantinya merupakan variable untuk
menapung value jumlah maksimum stack.
-
8/12/2019 Laporan Praktikum Resmi Stack
11/19
11
4. Program menggunakan fungsi perulangan do-while sehingga jika user belum memilihpilihan keluar, maka user dapat melakukan salah satu operasi stack tersebut. User pertama
kali akan diminta untuk mengset jumlah maksimum stack. Pemasukkan ini dilakukan di
luar loop do-while agar proses pengesetan maksimum stack tidak berulang-ulang. Value
untuk maksimum stack diindikasikan oleh variabel x.Untuk pemilihan operasi stack,
digunakan fungsi pemilihan switch dengan variabel pilihan sebagai acuan case (1-3). Case
pertama merupakan operasi Push dengan menggunakan prosedur IsFull untuk memberi
peringatan jika stack yang di push elemennya telah mencapai batas maksimumnya, dan
memanggil prosedur Push. Pada case ini pula, fungsi MAX_STACK dipanggil untuk
memberikan batas maksimum stack yang telah dimasukkan oleh user sebelumnya. Case
kedua digunakan untuk menampilkan data stack yang ada dengan memanggil prosedur
TampilStack();. Case ketiga digunakan untuk keluar dimana digunakan untuk
menghentikan proses looping do-while.
Program praktikum pop.cpp
/*
* pop.cpp
*
* Created on: May 25, 2014
* Author: AAT
*/
#include
#include
using namespace std;
struct STACK
{
-
8/12/2019 Laporan Praktikum Resmi Stack
12/19
12
int top;
char data[10][10];
int MAX_STACK;
}; STACK tumpuk;
void insialisasi()
{
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;
}
int MAX_STACK(int x)
{
tumpuk.MAX_STACK=x;
-
8/12/2019 Laporan Praktikum Resmi Stack
13/19
13
return 0;
}
void Push(char d[10])
{
tumpuk.top++;
strcpy(tumpuk.data[tumpuk.top],d);
}
void Pop()
{
cout
-
8/12/2019 Laporan Praktikum Resmi Stack
14/19
14
do
{
cout
-
8/12/2019 Laporan Praktikum Resmi Stack
15/19
15
cout
-
8/12/2019 Laporan Praktikum Resmi Stack
16/19
16
Penjelasan program pop.cpp
Berikut penjelasan dari program pop.cpp:
1. Pada program push.cpp, user dapat mengset berapa jumlah maksimum elemen stack yangmungkin dimasukkan. Maka dari itu, MAX_STACK tidak dideklarasikan dengan
preprocessor #define melainkan dimasukkan sebagai member ke dalam struct STACK
sehingga MAX_STACK sebagai member struct dapat diakses oleh user dalam main
program. Program menggunakan preprocessor #include yang digunakan untuk
operasi fungsi manipulasi string pada program yaitu strcpy yang berfungsi untuk
mengcopy string yang satu ke string lainnya.
2. Stack memiliki persamaan untuk mengetahui apakah stack sudah penuh atau belumdimana persamaan tersebut dideklarasikan pada prosedur IsFull. Persamaannya adalah
Top of stack = max_stack 1; dimana apabila bernilai TRUE maka stack penuh jika tidak
maka sebaliknya stack belum penuh.
3. Agar MAX_STACK dapat didefinisikan valuenya, maka MAX_STACK dibuat ke dalamsebuah fungsi yaitu int MAX_STACK(int n) dimana n nantinya merupakan variable untuk
menapung value jumlah maksimum stack.
5. Program menggunakan fungsi perulangan do-while sehingga jika user belum memilih pilihankeluar, maka user dapat melakukan salah satu operasi stack tersebut. User pertama kali akan
diminta untuk mengset jumlah maksimum stack. Pemasukkan ini dilakukan di luar loop do-
while agar proses pengesetan maksimum stack tidak berulang-ulang. Value untuk maksimum
stack diindikasikan oleh variabel x.Untuk pemilihan operasi stack, digunakan fungsi
pemilihan switch dengan variabel pilihan sebagai acuan case (1-5). Case pertama merupakan
-
8/12/2019 Laporan Praktikum Resmi Stack
17/19
17
operasi Push dengan menggunakan prosedur IsFull untuk memberi peringatan jika stack yang
di push elemennya telah mencapai batas maksimumnya, dan memanggil prosedur Push. Pada
case ini pula, fungsi MAX_STACK dipanggil untuk memberikan batas maksimum stack
yang telah dimasukkan oleh user sebelumnya. Case kedua digunakan untuk operasi pop. Pada
operasi pop, digunakan decrement pada top (tumpuk.top--) dengan syarat IsEmpty bukan 1.
Case ketiga digunakan untuk menampilkan data stack yang ada dengan memanggil prosedur
TampilStack();. Case keempat digunakan untuk operasi Clear yang memanggil prosedur
Clear dimana top of stack diassignment sama dengan -1 yang mengindikasikan bahwa stack
sudah kosong.Untuk case ke lima digunakan untuk keluar yang mana menghentikan proses
loop do-while.
-
8/12/2019 Laporan Praktikum Resmi Stack
18/19
18
BAB III
KESIMPULAN
Kesimpulan akan apa yang dapat dipelajari dalam praktikum ini adalah bahwa bahwa stackmerupakan bentuk khusus dari linear list yang pemasukkan dan penghapusan elemennya hanya
dapat dilakukan pada satu posisi yaitu last list. Prinsip stack yaitu last-in first-outatau disingkat
LIFO. Stack memiliki beberapa operasi yaitu IsEmpty yang digunakan untuk memeriksa apakah
stack kosong, IsFull yang digunakan untuk memeriksa apakah stack sudah penuh, Pop digunakan
untuk menghapus elemen paling atas (top), Push untuk menyisipkan elemen stack dan Clear
untuk mengosongkan stack. Jumlah maksimum stack umumnya dideklarasikan terlebih dahulu
dengan menggunakan preprocessor #define untuk memberikan nilai absolut. Namun, ada kalanya
sebuah stack dapat ditentukan batas maksimumnya ditentukan oleh user dengan memasukkan
MAX_STACK ke dalam struct dan membuat sebuah fungsi untuknya sehingga MAX_STACK
dapat diakses di dalam main program. Untuk stack, memiliki persamaan yang digunakan untuk
menentukan apakah sebuah stack sudah penuh atau belum yaitu dengan Top of stack =
Max_stack 1 yang mana jika bernilai TRUE maka stack full.
-
8/12/2019 Laporan Praktikum Resmi Stack
19/19
19
Sumber Referensi
Kristanto, Andi. 2003. Struktur Data Dengan C++
Yogyakarta : Graha Ilmu
Ardhana. YM Kusuma. 2013. Struktur Data Dalam Ilustrasi Eclipse Indigo C++Yogyakarta : CAPS (Center of Academic Publishing Service)