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.
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;
}

}


laporan praktikum stack


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

               
Dengan menggunakan fungsi push() dan pop() pada stack, buatlahprogram untuk membalik kalimat.
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

  1. 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

Postingan populer dari blog ini

Program Pembuatan Constructor dengan Dua Parameter Mahasiswa