• Tidak ada hasil yang ditemukan

laporan 4 ASD stack (TUMPUKAN)

N/A
N/A
Protected

Academic year: 2017

Membagikan "laporan 4 ASD stack (TUMPUKAN)"

Copied!
20
0
0

Teks penuh

(1)

LAPORAN PRAKTIKUM IV

STACK(TUMPUKAN)

Disusun untuk Memenuhi Matakuliah Praktikum Algoritma dan Struktur Data

Dibimbing oleh Bpk. Aji Prasetya

Oleh:

Ananda Putri Syaviri

130533608243

S1 PTI’13 OFF B

UNIVERSITAS NEGERI MALANG

FAKULTAS TEKNIK

JURUSAN TEKNIK ELEKTRO

PRODI PENDIDIKAN TEKNIK INFORMATIKA

Maret 2014

(2)

a)

Tujuan

1.

Memahami terminologi yang terkait dengan struktur data stack

2.

Memahami operasi-operasi yang ada dalam stack

3.

Dapat mengidentifikasi permasalahan-permasalahan pemrograman yang harus

diselesaikan dengan menggunakan stack, sekaligus menyelesaikannya.

b) Dasar Teori

Pengertian Stack

Stack adalah sebuah kumpulan data dimana data yang diletakkan di atas data yang

lain. Dengan demikian stack adalah struktur data yang menggunakan konsep LIFO.

Dengan demikian, elemen terakhir yang disimpan dalam stack menjadi elemen pertama

yang diambil. Dalam proses komputasi, untuk meletakkan sebuah elemen pada bagian atas

dari stack, maka kita melakukan push. Dan untuk memindahkan dari tempat yang atas

tersebut, kita melakukan pop.

Ada beberapa cara untuk menyajikan sebuah stack tergantung pada permasalahan yang

akan kita selesaikan. Dalam bab ini kita akan menggunakan cara yang paling sederhana,

tipe data yang sudah kita kenal, yaitu array. Kita dapat menggunakan array untuk

menyajikan sebuah stack, dengan anggapan bahwa banyaknya elemen maksimum dari

stack tersebut tidak akan melebihi batas maksimum banyaknya elemen dalam array.

Pada saat ukuran stack, kalau kita teruskan menambah data lagi, akan terjadi overflow.

Dengan demikian perlu data tambahan untuk mencatat posisi ujung stack. Dengan

kebutuhan seperti ini, kita dapat menyajikan stack dengan menggunakan tipe data struktur

(struct) yang terdiri dari dua field. Field pertama bertipe array untuk menyimpan elemen

stack, medan kedua bertipe integer untuk mencatat posisi ujung stack.

Operasi Pada Stack

(3)

2. Fungsi yang melakukan pengecekan apakah stack dalam kondisi kosong .

3. Fungsi yang melakukan pengecekan apakah stack dalam kondisi penuh .

4. Fungsi untuk menghapus seluruh stack.

5. Fungsi untuk mencetak isi stack.

c) LATIHAN(PERCOBAAN):

Percobaan 1

Algoritma dan Struktur Data

Nama Program

: Program Troubleshooting Program STACK.

Bahasa Pemrogramam

: C++

Compiler

: Code Blocks

(4)
(5)
(6)

Script yang benar :

#include <iostream> #include <conio.h> #include <windows.h> #include <stdio.h> #define maxstack 5 using namespace std;

struct STACK { int top;

float data[4]; };

float dta;

struct STACK stackbaru;

void inisialisasi() //menginisialisasi top = -1 {

stackbaru.top = -1; }

bool isfull(){

if (stackbaru.top==maxstack-1) return true; else return false;

}

(7)

if (stackbaru.top==-1)return true; else return false;

}

void push(float dta){ if (isfull()== true){

puts("Maaf, stack penuh"); getch(); } else { stackbaru.top++; stackbaru.data[stackbaru.top]=dta; } } void pop(){ if (isempty()==true){

cout<<"Data telah kosong!"; }else {

cout<<"data yang terambil : " <<stackbaru.data[stackbaru.top] <<endl; stackbaru.top--;}

}

void print(){

for (int i=0; i<=stackbaru.top; i++){ cout <<stackbaru.data[i] <<" "; }

}

void clear (){ stackbaru.top = -1; }

int main() {

inisialisasi(); //pemanggilan fungsi inisialisasi

char menu; char uulang; do { system("cls"); printf("Menu:\n"); puts("1. Pop stack"); puts("2. Push stack"); puts("3. Cetak");

puts("4. Bersihkan stack"); puts("5. Exit");

cout<<"Menu pilihan Anda: "; cin>>menu;

if(menu == '1') {

pop(); getch(); uulang = 'y'; }

else if(menu == '2') {

cout<<"Data yang akan disimpan di stack : "; cin>>dta;

(8)

else if(menu == '3') {

print();

cout<<"Ulang? (y/t) "; cin>>uulang; }

else if(menu == '4') {

clear();

cout<<"Ulang? (y/t) "; cin>>uulang; }

else if(menu == '5') {

exit(0); }

}

while(uulang == 'Y' || uulang == 'y'); }

(9)

Algoritma :

1. Mulai.

2. Membaca file header.

3. Membaca fungsi struct STACK.

4. Membaca tipe data integer top, float data yang berisikan array dengan elemen

berjumlah 4 (float data [4]).

5. Membaca tipe data float dta.

6. Membaca fungsi struct STACK stackbaru.

7. Membaca fungsi inisialisasi.

8. Membaca fungsi bool isfull.

9. Membaca fungsi bool isempty.

10. Membaca fungsi push(float dta)

11. Membaca fungsi pop.

12. Membaca fungsi print ( untuk mencetak data ).

13. Membaca fungsi clear (untuk menghapus/ mengosongkan data).

14. Membaca fungsi utama.

15. Pemanggilan fungsi inisialisasi.

16. Membaca tipe data charr menu dan uulang.

17. Membaca pemanggilan percabangan do-while, yand didalamnya terdapat

pilihan menu dengan menggunakan perulangan if else.

18. Jika 1 maka pemanggilan fungsi pop dan uulang berfungsi.

19. Jika 2 maka fungsi push dan uulang, serta inputan data yang akan disimpan.

20. Jika 3 maka fungsi print dan uulang.

21. Jika 4 maka fungsi clear dan uulang.

22. Jika 5 maka fungsi exit (keluar).

23. Cetak hasil.

24. Selesai.

Deskripsi:

(10)

error(outputnya tidak akan keluar dengan benar/ sesuai dengan yang ditargetkan).

Penulisan fungsi pop dan push perlu diperhatikan. Untuk menjalankan setiap menu

yang disediakan menggunakan percabangan do- while dengan perulangan if else.

Menu 1 apabila memilih pop maka fungsi pop akan berfungsi mulai menjalankan

logika Boolean yang ada pada deklarasi fungsi pop. Jika benar maka data telah kosong

jika salah maka data yang terambil diambl dengan pembacaan fungsi

stackbaru.data[stackbaru.top]. Menu 2 apabila memilih menu push, maka fungsi push

akan berfungsi, jika logika Boolean benar maka stack, penuh jika tidak maka akan

berfungsi “stackbaru.top++; stackbaru.data[stackbaru.top]=dta;”.

d) TUGAS RUMAH(sekaligus TUGAS PRAKTIKUM).

Tugas Rumah 1

Algoritma dan Struktur Data

Nama Program

:

Program membalikkan kata .

Bahasa Pemrogramam

: C++

Compiler

: Code Blocks.

Script program :

//http://mahfuzm.blogspot.com/2011/04/program-stack-c.html //header

#include <iostream> #include <stdio.h> #include <stdlib.h> #include <conio.h> #define maxstack 50

using namespace std;

struct STACK //membuat jenis data abstrak 'STACK' {

int top;

char data[maxstack]; };

char dta[maxstack]; struct STACK stackbaru;

(11)

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

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<<"\nKalimat awal : ";

for (int i=0; i<=stackbaru.top; i++) {

(12)

} }

void clear() {

stackbaru.top = -1; }

int main() {

char kata[50]; //menampung inputan

printf("Program Pembalik Kalimat \n\n");

printf("*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*\n"); printf("Masukkan kalimat yang Anda inginkan: \n");

gets(kata);

for(int i=0; kata[i]; i++) push(kata[i]);

print();

cout<<"\n*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*\n\n"; cout<<"Balikan dari kalimat Anda : ";

pop(); cout<<"\n";

}

OutProgram :

(13)

1. Mulai.

2. Membaca file header.

3. Membaca fungsi struct STACK

4. Membaca tipe data integer top dan char data[maxstack].

5. Membaca tipe data char dta[maxstack] .

6. Membaca fungsi struct STACK stackbaru.

7. Membaca fungsi inisialisasi.

8. Membaca fungsi bool isfull.

9. Membaca fungsi bool isempty.

10. Membaca fungsi push(char dta).

11. Membaca fungsi pop.

12. Membaca fungsi print.

13. Membaca fungsi clear.

14. Membaca fungsi utama.

15. Membaca tipe data char kata [50].

16. Inputtan kalimat yang diinginkan.

17. Cetak hasil.

18. Membaca fungsi gets(kata) yang berfungsi untuk membaca spasi.

19. Membaca perulangan for.

20. Pemanggilan fungsi push(kata[i]).

21. Pemanggilan fungsi print.

22. Inputan hasil balikkan kalimat.

23. Pemanggilan fungsi pop.

24. Cetak hasil.

25. Selesai.

Deklarasi :

Program diatas merupaka program yang berfungsi membalikkan kalimat dengan

memanfaatkan fungsi- fungsi dalam stack. Penggunaan fungsi operasi-operasi dasar

dari stack , kemudia penggunaan tipe data char kata[50] yang berfungsi menampung

kalimat yang akan dibalik sebanyak 50 elemen yang tersedia. Kemudian penggunaan

gets(kata) yang befungsi agar spasi saat inputan kalimat dapat terbaca. Penggunaan

fungsi perulangan for yang digunakan untuk membalikkan kata , yaitu :

for(int i=0; kata[i]; i++) push(kata[i]);

Tugas Rumah 2

Algoritma dan Struktur Data

Nama Program

:

Program Menu Stack dengan menganalisis pemunculan data yang

sama.

Bahasa Pemrogramam

: C++

Compiler

: Code Blocks.

Script program :

(14)

#include <stdlib.h> #define maxstack 10

using namespace std;

char pilih,tampil,ulang; int data_sama;

struct STACK /* deklarasi struktur STACK */ {

int top;

int id[maxstack]; string nama[maxstack]; }stack_var;

bool isfull() /* fungsi boolean untuk mengecek apakah dalam kondisi penuh ? */

{

if (stack_var.top == maxstack-1) return true; else return false;

}

bool isempty() /* fungsi boolean untuk mengecek apakah dalam kondisi kosong ? */

{

if (stack_var.top == -1) return true; else return false;

}

void push() /* mengisi stack */ {

if (isfull() == true) {

cout << "\nMaaf Stack Penuh"; }

else {

stack_var.top++; do

{

data_sama=0;

(15)

cin>>stack_var.id[stack_var.top]; for (int i=0;i<stack_var.top;i++) {

if (stack_var.id[stack_var.top]==stack_var.id[i]) /* jika ID dalam kondisi sama maka menampilkan sebuah statement */ {

data_sama=1;

cout<<"\nID sudah di gunakan...!!\n\n"; cout<<"Tampilkan Data...?? (y/t)? "; cin>>tampil;

if (tampil=='y'||tampil=='Y') {

cout<<"ID : "<<stack_var.id[i]<<"\nNama : "<<stack_var.nama[i]<<endl; /* menampilan ID yang sama */

}break; }

}

} while (data_sama==1);

cout<<"\n Nama : ";

cin>>stack_var.nama[stack_var.top]; }

}

void pop () { /* mengambil isi stack */ if (isempty()==true) {

cout<<"Maaf, Stack Masih Kosong...!!\n"; } else {

cout<<"Data yang terambil : \nID : "<<stack_var.id[stack_var.top]<<"\nNama : "<<stack_var.nama[stack_var.top]<<endl;

cout<<"Telah di Ambil...!!\n\n"; stack_var.top--;

} }

void print() /* mencetak stack */ {

cout<<"\nData :";

(16)

cout<<"\n| "<<stack_var.id[i]<<" | "<<stack_var.nama[i]<<" "<<"|"<<endl;

cout<<"+---+"; }

}

void clear (){ /* menghapus isi stack */ stack_var.top = -1;

cout<<"Data Telah Kosong...!!\n\n"; }

void inisialisasi() /* karena dalam array di mulai pada indeks ke 0 */

{

stack_var.top=-1; }

int main() {

inisialisasi(); do

{

system("cls"); cout<<"\n\n";

cout<<" | ++ MENU STACK ++ |\n"; cout<<" |==========================|\n"; cout<<" | 1. Masukkan Data |\n"; cout<<" | 2. Keluarkan Data |\n"; cout<<" | 3. Kosongkan Data |\n"; cout<<" | 4. Tampilkan Data |\n"; cout<<" | 5. Keluar |\n\n";

cout<<"Pilih : ";cin>>pilih; switch(pilih)

{

case '1': push();

cout<<"\n\nMenu Utama (y/t) ?"; cin>>ulang;

break;

(17)

pop();

cout<<"\n\nMenu Utama (y/t) ?"; cin>>ulang;

break;

case '3': clear();

cout<<"\n\nMenu Utama (y/t) ?"; cin>>ulang;

break;

case '4': print();

cout<<"\n\nMenu Utama (y/t) ?"; cin>>ulang;

break;

case '5':

cout<<"\t\t\tThanks You \n"; exit(0);

cout<<"\n\nMenu Utama (y/t) ?"; cin>>ulang;

break;

default :

cout<<"Maaf yang Anda Input Salah...!!\n\n"; cout<<"Menu Utama (y/t) ?";

cin>>ulang; break; }

} while (ulang=='Y'||ulang=='y');

}

(18)
(19)

Algoritma :

1. Mulai.

2. Membaca file header.

3. Membaca tipe data char pilih, tampil, ulang.

4. Membaca integer data_sama.

5. Membaca deklarasi fungsi struct STACK.

6. Membaca integer top, id[maxstack], string nama[maxstack].

7. Membaca stack_var.

8. Membaca fungsi bool isfull, bool isempty, push, pop, print, clear, dan inisialisasi.

9. Membaca fungsi utama.

10. Membaca pemanggilan inisialisasi.

11. Membaca perulangan do-while.

12. Inputan menu stack.

13. Menu 1 : pemanggilan fungsi push.

Menu 2 : pemanggilan fungsi pop.

Menu 3 : pemanggilan fungsi clear.

Menu 4 : pemanggilan fungsi print.

Menu 5 : pemanggilan fungsi exit (keluar).

Menu default jika menu yang diinputkan tidak sesuia dari yang ditentukan.

14. Cetak hasil.

15. Selesai.

Deklarasi :

Dalam program ini untuk memunculkan data id yang telah digunakan menggunakan

fungsi stack_var;. bool isfull untuk mengecek apakah dalam stack dalam kondisi penuh , bool

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 stack_var.top++;. Fungsi pop untuk mengambil isi stack, jika logika

benar maka muncul inputan “maaf, stack masih kosong”, jika logika salah maka data yang

terambil sebelumnya akan muncul, menggunakan fungsi stack_var.id[stack_var.top].

(20)

e) KESIMPULAN

1)

Stack adalah kumpulan data yang diletakkan bertumpuk dengan data lainnya sehingga

disebut tumpukan data.

2)

Ada 5 operasi dasar pada stack: (1) data abstrak STACK (2) bool isfull (3) bool

isempty (4) clear (5) print.

3)

Ada 2 operasi paling dasar dari stack yaitu : (1) pop (2) push.

4)

Operasi push yaitu operasi menambahkan elemen data pada urutan terakhir (paling

atas).

5)

Operasi pop yaitu operasi mengambil sebuah elemen data pada urutan terakhir dari

stack.

6)

Bool isfull berfungsi untuk mengecek stack dalam kondisi penuh.

7)

Bool isempty berfungsi untuk mengecek stack dalam kondisi kosong.

8)

Clear berfungsi untuk menghapus stack.

9)

Print berfungsi mencetak stack.

f) DAFTAR RUJUKAN

1.

Tim Asisten Dosen. 2014.

Modul 2 Sorting (Pengurutan)

. Malang: Unversitas Negeri

Malang.

Referensi

Dokumen terkait

Duvall dan Miller (1985), menambahkan bahwa salah satu faktor yang mendasari pemilihan pasangan adalah faktor homogamy , yakni kesesuaian dengan pasangan baik secara

PEMBELAJARAN TEMATIK TERHADAP KREATIVITAS GURU DI SD NEGERI SAMIRONO KECAMATAN GETASAN KABUPATEN SEMARANG TAHUN PELAJARAN 2010 / 2011“.. Skripsi ini penulis susun untuk memenuhi

terikat dalam penelitian ini menjadi variabel terikat adalah hasil belajarc. siswa yang dimaksud dalam penelitian ini adalah nilai post

Berdasarkan hal tersebut penulis penulis mencoba membuat sistem pakar dengan judul “Sistem Pakar Untuk Diagnosa dan Pencari solusi Penyakit Tulang Menggunakan

Sebagaimana diamanatkan dalam Undang-Undang Nomor 25 Tahun 2004 Pasal 5 Ayat (2), bahwa yang dimaksud dengan Rencana Pembangunan Jangka Menengah Daerah (RPJMD) adalah

Dengan demikian, Anwar Zahid yang secara pribadi adalah seorang kyai, pemegang otoritas agama di masyarakat, dengan media baru yang ia gunakan dalam menyebarkan dakwahnya

Penyelenggaraan penyuluhan kehutanan, menurut UU Nomor 16/2006, dilakukan oleh penyuluh Pegawai Negeri Sipil (PNS), penyuluh swasta dan/atau Penyuluh Kehutanan

1. Kesan:- Memberikan Tambahan ilmu yang lebih banyak serta mampu menyupai wawasan untuk mata kuliah teori Mineralogi dan