laporan praktikum stack
BAB 1 PENDAHULUAN
1.1 Latar Belakang
Secara umum suatu struktur data terdiri
dari beberapa bagian seperti
himpunan
nilai-nilai data dan sejumlah operasi dasar yang bekerja pada data tersebut
menurut suatu algortima tertentu. Sebagai contoh bila nilai data yangdibicarakan
adalah bagian dari himpunan bilangan riil, maka operasi-operasi yang dapat
dilakukan pada himpunan tersebut hanya operasi tambah, kurang, bagi dan kali,
sedangkan algoritma yang diterapkan pada himpunan data tersebut mungkin
merupakan
algoritma untuk mencari nilai maksimum atau minimum dari data yang data.
Dalam
penerapannya seorang pengguna komputer hanya akan
menggunakan
fungsi-fungsi dasar yang ada tanpa memperhatikan secara terperinci
algoritma
yang digunakan maupun struktur dari tempat penyimpanan dimana data tersebut
disimpan. Untuk itu dibuatlah suatu model yang dapat menyelesaikan suatu
persoalan yang ada. Seperti yang telah diketahui sebelumnya bahwa sebuah
ungkapan
aritmatika
yang biasa kita gunakan dibangku sekolah disebut dengan notasi infix
(contoh
: A = C + D / B * C) sehingga kalkulator sederhanapun juga
menggunakan
notasi ini. Jika ekspresi yang digunakan oleh manusia akan
digunakan
oleh komputer, ekspresi tersebut harus diubah menjadi bentuk polish 2 notation,
dimana polish notation ini berhubungan dengan penanganan konversi secara
simbolik ekspresi suffix pada machine code. Dengan notasi infix, computer akan
sukar mengevaluasi ungkapan tersebut.
Disini
dibuat suatu konsep yang sangat berguna didalam ilmu komputer
untuk
menulis ungkapan dengan menggunakan notasi tertentu melalui salah satu
pemanfaatan tumpukan (stack).
1.2 Tujuan
1. Mahasiswa
dapat memahami pengertian Stuck (Tumpukan).
2. Mahasiswa
dapat mengetahui operator-operator yang terdapat pada Stuck.
3. Mahasiswa
dapat mengetahui bagaimana deklarasi dari sebuah Stuck.
4. Mahasiswa
mengetahui operasi-operasi apa saja yang terdapat pada Stuck.
5. Mahasiswa
dapat mengetahui bagaimana contoh aplikasi dari Stuck.
BAB II DASAR TEORI
A. PENGERTIAN STACK (TUMPUKAN)
Pengertian stack pada struktur
data adalah sebagai
tumpukan dari benda, sekumpulan data yang seolah-olah
diletakkan di atas data yang lain, koleksi dari objek-objek homogen, atau Suatu
urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir
(top) saja.
Stack merupakan bentuk khusus dari suatu struktur
data, dimana node yang
ditambahkan ke dalam list dan diambil dari list hanya pada kepalanya, atau
dengan prinsip pengolahannya adalah last-in first-out (LIFO). Pada struktur ini
hanya ada dua fungsi utama, yaitu push (memasukkan node ke dalam stack),
dan pop (mengambil node dari stack).Secara sederhana tumpukan bisa diartikan sebagai kumpulan data yang seolaholah diletakkan di atas data yang lain.
ditambahkan ke dalam list dan diambil dari list hanya pada kepalanya, atau
dengan prinsip pengolahannya adalah last-in first-out (LIFO). Pada struktur ini
hanya ada dua fungsi utama, yaitu push (memasukkan node ke dalam stack),
dan pop (mengambil node dari stack).Secara sederhana tumpukan bisa diartikan sebagai kumpulan data yang seolaholah diletakkan di atas data yang lain.
B.
PENDEKLARASIAN STACK
Pendeklarasian
tumpukan menggunakan Larik dan sebuah variabel dengan tipe data Record :
Const
Makstump = 80 {Kapasitas maksimal tumpukan}
Type
Tumpukan = Record
Isi : Array [1..
Makstump] of integer;
Atas: 0.. Makstump;
end;
Var
T : Tumpukan;
Elemen
Tumpukan T tersimpan dalam Larik T.isi adalah bertipe integer, banyak elemen
tumpukan maksimum adalah sebesar “Makstup” 80 elemen
Jika
T.Atas = 5 berarti tumpukan ada 5 elemen yaitu T.isi[1] .. T.isi[5], jika T.Atas
dikurangi 1 sehingga menjadi 4, berarti T.isi[4] adalah elemen teratas,
sebaliknya jika tumpukan ditambah 1 buah elemen maka T.Atas ditambah 1 sehingga
menjadi 6, maka T.isi[6] adalah elemen teratas.
(Zakaria
Markus Teddy and Prijono Agus, Konsep dan Implementasi Struktur Data, 2006)
B. KELEBIHAN DAN KEKURANGAN
Kelebihan
:penambahan dan penghapusan data dapat dilakukan dengan cepat, yaitu O
(1),Selama memori masih tersedia, penambahan data bias terus dilakukan. Dengan
demikian tidak ada kekhawatiran terjadinya stack overflow.
-
Kekurangan :Setiap sel tidak hanya menyimpan value saja, melainkan
juga pointer ke sel berikutnya. Hal ini menyebabkan implementasi stack memakai
linked list akan memerlukan memori yang lebih banyak dari pada kalau di implementasikan dengan Array.Tiap elemen
pada linked list hanya bisa diakses dengan cara sekuensial, sehingga lambat,
yaitu O (n).
C. OPERASI PADA STACK
2 operasi dasar yang bisa dilaksanakan
pada sebuah stack, yaitu:
Operasi Push (menyisipkan data)
memasukkan data ke dalam stack
Operasi Pop (menghapus data)
menghapus elemen yang terletak pada posisi paling atas dari sebuah stack
langkah-lngkah :
1. buat stack (stack) - create
membuat sebuah stack baru yang masih kosong
spesifikasi:
-
tujuan : mendefinisikan
stack yang kosong
-
input : stack
-
syarat awal : tidak ada
-
output stack : - (kosong)
-
syarat akhir : stack dalam
keadaan kosong
2. stack kosong (stack) - empty
fungsi untuk menentukan apakah stack dalam keadaan
kosong atau tidak
spesifikasi:
-
tujuan : mengecek apakah
stack dalam keadaan kosong
-
input : stack
-
syarat awal : tidak ada
-
output : boolean
-
syarat akhir : stack kosong
bernilai true jika stack dalam keadaan kosong
3. stack penuh (stack) - full
fungsi untuk memeriksa apakah stack yang ada sudah
penuh
spesifikasi:
-
tujuan : mengecek apakah
stack dalam keadaan penuh
-
input : stack
-
syarat awal :
tidak ada
-
output : boolean
-
syarat akhir : stack penuh
bernilai true jika stack dalam keadaan penuh
4. push (stack, info baru)
menambahkan sebuah elemen kedalam stack.
spesifikasi:
-
tujuan :
menambahkan elemen, info baru pada stack pada posisi paling atas
-
input : stack
dan Info baru
-
syarat awal : stack tidak
penuh
-
output : stack
-
syarat akhir : stack
bertambah satu elemen
5. pop (stack, info pop)
mengambil elemen teratas dari stack
spesifikasi:
- tujuan :
mengeluarkan elemen dari stack yang berada pada posisi paling atas
- input : stack
- syarat awal :
stack tidak kosong
- output : stack
dalam info pop
- syarat akhir : stack berkurang satu elemen
BAB III METODOLOGI
3.1 Algoritma
1. Mulai.
2. Membaca
file header.
3. Membaca
tipe data int
4. Membaca
deklarasi fungsi struct STACK.
5. Membaca
integer top, id[maxstack], string nama[maxstack].
6. Membaca
stack_var.
7. Membaca
fungsi int isfull, int isempty, push, pop, cetak,.
8. Membaca
fungsi utama.
9. Membaca
pemanggilan inisialisasi.
10. Membaca
program switch
11. Inputan
menu stack.
Menu
1 : pemanggilan fungsi push.
Menu
2 : pemanggilan fungsi pop.
Menu
3 : pemanggilan fungsi cetak.
Menu
4 : pemanggilan fungsi return.
12. Menu
default jika menu yang diinputkan tidak sesuia dari yang ditentukan.
13. Cetak
hasil.
14. Selesai.
15.
3.2 Penjelasan Flowchart
·
Program meminta user untuk memilih
pengolahan data yang diinginkan
·
Kemudian sesudah program menerima
perintah untuk di eksekusi
·
selanjutnya program akan meminta
user untuk memasukan angka yang dimana ingin di olah barisan penumpukan data
·
Kemudian program akan mengeksekusi
tumpukan data sesuai inputan dari user.
·
selanjutnya program akan
menampilkan hasil data yang telah di proses
·
setelah diproses, program akan
kembali memberikan pilihan pada user, apakah user ingin proses data lagi atau
tidak.
·
Jika tidak, program akan
selesesai.
·
Jika user ingin mengolah data
kembali, maka program akan kembali sesuai yang diinginkan user.
3.3 Flowchart
|
Pendeklarasian int
typedef int stack[10];
int n=5, Top=0;
int IsEmpty(int &Top)
int IsFull(int &Top)
int cetak(stack A,int &Top)
int PUSH(stack A, int &Top)
int POP(stack A,int &Top)
|
|
Selesai
|
|
Mulai
|
BAB IV HASIL PRATIKUM
Source code:
|
#include<iostream.h>
#include<stdlib.h>
typedef int stack[10];
int n=5, Top=0;
int IsEmpty(int &Top){
if(Top==0)
cout<<"\nstack
kosong\n\n";
}
int IsFull(int &Top){
if(Top==n)
cout<<"\nstack
penuh\n\n";
}
int cetak(stack A,int &Top){
system("CLS");
int
i;
if(Top==0)
IsEmpty
(Top);
else;{
{
for(i=1;i<=Top;i++)
cout<<A[i]<<"
";
}
cout<<endl<<endl;
}
}
int PUSH(stack A, int &Top){
system("CLS");
if(Top==n)
IsFull(Top);
else{
Top++;
cout<<"PUSH\nMasukkan
Data : ";cin>>A[Top];
cout<<"Posisi
Top saat ini:"<<Top<<endl<<endl;
}
}
int POP(stack A,int &Top){
system("CLS");
if(Top==0)
IsEmpty(Top);
else{
|
|
IsEmpty(Top);
else{
cout<<"POP\nSatu data
sudah di POP\n";
Top--;
cout<<"Posisi
Top saat ini:"<<Top<<endl<<endl;
}
}
int main(){
stack
A={1,2,3,4,5,6,7,8,9,10};
int
i,pilih;
menu:
cout<<"STACK\n";
cout<<"1.Push\n2.Pop\n3.View
data\n4.EXIT\nMasukkan pilihan :";cin>>pilih;
switch(pilih)
{
case
1:{PUSH(A,Top);break;}
case
2:{POP(A,Top);break;}
case
3:{cetak(A,Top);break;}
case
4:{return 0;break;}
default
:{system("CLS");cout<<"pilihan salah\n\n";
}
goto
menu;
}
}
|
Output:
Analisa:
Dalam program ini untuk memunculkan
data id yang telah digunakan menggunakan fungsi stack_var;. int isfull untuk
mengecek apakah dalam stack dalam kondisi penuh , int isempty untuk mengecek
apakah dalam kondisi kosong. Fungsi push yang digunakan untuk mengisi stack
tersebut. Penggunaan logika true/false yang perlu diperhatikan. Jika kondisi
benar maka inputan yang keluar adalah pemberitahuan bahwa stack benar penuh,
jika tidak maka pemanggilan fungsi top++;. Fungsi pop untuk mengambil isi
stack, jika logika benar maka muncul inputan “stack kosong”, jika logika salah
maka data yang terambil sebelumnya akan muncul, menggunakan fungsi if(Top==0)
Fungsi print untuk mencetak stack.
TUGAS PRAKTIKUM
|
#include
<iostream>
#include
<stdio.h>
#include
<stdlib.h>
#include
<conio.h>
#define
maxstack 200
using
namespace std;
struct
STACK //membuat jenis data
abstrak 'STACK'
{
int top;
char data[maxstack];
};
char
dta[maxstack];
struct
STACK stackbaru;
void
inisialisasi()
{
stackbaru.top = -1;
}
bool
isfull() //menanyakan
penuhkah?
{
if (stackbaru.top == maxstack-1) return
true;
else return false;
}
bool
isempty() //menanyakan
kosongkah?
{
if (stackbaru.top == -1) return true;
else return false;
}
void
push(char dta) //mengisi stack (menyiapkan data)
{
|
Source code
I.
II.
III.
IV.
V.
VI.
VII.
VIII.
IX.
X.
|
if
(isfull() == false)
{
stackbaru.top++;
stackbaru.data[stackbaru.top]=dta;
}
else
{
puts ("\nMaaf Stack
penuh");
}
}
void
pop() //mengambil isi
stack
{
while (isempty() == false)
{
cout<<stackbaru.data[stackbaru.top];
stackbaru.top--;
}
}
void
print() //mencetak stack
{
cout<<" ";
for (int i=0; i<=stackbaru.top; i++)
{
cout<<stackbaru.data[i];
}
}
void
clear()
{
stackbaru.top = -1;
}
main()
{
char kata[200];
printf("--- PROGRAM PEMBALIK
KALIMAT --- \n\n");
gets(kata);
for(int i=0; kata[i]; i++)
push(kata[i]);
printf("------------------------------------ \n\n");
print();
cout<<"
menjadi ";
pop();
cout<<"\n";
getche();
}
|
|
gets(kata);
for(int i=0; kata[i]; i++)
push(kata[i]);
printf("------------------------------------ \n\n");
print();
cout<<"
menjadi ";
pop();
cout<<"\n";
getche();
}
|
output
BAB V KESIMPULAN
5.1 Kesimpulan
Queue (antrian)
adalah salah satu list linier dari struktur data yang beroperasi dengan
cara First In First Out (FIFO) yaitu elemen pertama yang masuk merupakan
elemen yang pertama keluar. Data-data di dalam antrian dapat bertipe integer,
real, record dalam bentuk sederhana atau terstruktur. Queue dilakukan
dengan cara penyisipan di satu ujung, sedang penghapusan di ujung lain. Ujung
penyisipan biasa disebut rear/tail, sedang ujung penghapusa
disebut front/head.
Sebuah queue dalam
program setidaknya harus mengandung tiga variabel, yakni: head untuk
penanda bagian depan antrian, tail unttuk penanda bagian belakang
antrian, dan array data untuk menyimpan data-data yang dimasukkan ke
dalam queue tersebut.
Pada queue
ada operasi – operasi dasar, yaitu: prosedur create untuk membuat queue
baru yang kosog, fungsi IsEmpty untuk mengecek queue tersebut kosong
atau tidak, fungsi IsFull untuk mengecek queue tersebut penuh atau
tidak, prosedur EnQueue untuk memasukkan data kedalam queue, prosedur DeQueue
untuk mengeluarkan sebuah elemen pada posisi head dari queue, fungsi clear
untuk menghapus elemen queue, dan prosedur tampil untuk menampilakn
elemen yang ada pada queue.
Ada beberapa
queue, yaitu: queue dengan linear array yaitu queue yang dibuat
seakan-akan merupakan suatu garis lurus dengan satu pintu masuk dan satu pintu
keluar, queue dengan circular array yaitu queue yang dibuat seakan-akan
merupakan sebuah lingkaran dengan titik awal (head) dan titik akhir (tail)
saling bersebelahan jika array tersebut masih kosong, dan queue dengan
linked-list.
5.2
Saran
Penggunaan
stack pada struktur data sangat bermanfaat untuk para pemrogram untuk melakukan
suatu pemakain dalam informatika misalnya untuk meresenpetasi pemanggilan
prosedur, perhitungan ekspresi aritmatika, rekursifitas, backtracking. Gunakan
stack pada program yang operasinya selalu dilakukan pada elemen yang paling
atas.
DAFTAR PUSTAKA
- Shalahuddin, Rosa A.S. 2010. Modul Pembelajaran Struktur Data. Bandung : Modula.
Marcus, Zakaria, Teddy. Prijono, Agus.
Konsep dan Implementasi Struktur Data. Bandung : Informatika.
Hastuti, Nor Fitriana. 2009. Program Implementasi Stack dalam Pascal. http://terminaltechno.blog.uns.ac.id/2009/11/07/program-implementasi-stack-dalam-pascal/.
Diakses pada 30 Mei2013, Pukul 10.37 WIB.
Sanjaya, Dwi.2005.Asyiknyabelajarstruktur data
di planet C++.Jakarta: PT Elex Media Komputindo
Suarga, Drs, M.Sc.,M.Math.,Ph.D.
2012 “Algoritma dan Pemrograman”. Yogyakarta: Andi.
Sjukani, Moh.2012“ Struktur Data (Algoritma
dan Struktur Data dengan C,C++”. Jakarta: Mitra Wacana Media
Modul Laboratorium Dasar Komputer Program Ilmu
Komputer Universitas Sriwijaya. 2006
Komentar
Posting Komentar