PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 151 Gambar 4. 20 Flowchart program studi kasus 1 Penjelasan: Flowchart dimulai dengan simbol terminator untuk memulai program. Kemudian deklarasi variabel int ujian[5] menggunakan simbol preparation. Selanjutnya deklarasi variabel k=0 dan nyatakan variabel k pada penyataan k<5 menggunakan simbol decision. Jika YES maka tampilkan “masukkan data nilai ujian [“<<k<<]=” menggunakan simbol input/output, lalu input ujian[k] menggunakan simbol input/output pula, nyatakan variabel k
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 152 pada pernyataan k=k+1 menggunakan simbol process kemudian nyatakan kembali nilai k pada pernyataan k<5 sehingga terjadi perulangan. Jika NO maka lanjutkan deklarasi j=0 dan nyatakan variabel j pada pernyataan j<5 menggunakan simbol decision. Jika YES maka tampilkan “data nilai ujian[“<<j<<”]=”ujian[j], lalu nyatakan variabel j pada pernyataan j=j+1, kemudian nyatakan kembali variabel j pada pernyataakn j<5 sehingga terjadi perulangan. Jika NO gunakan simbol terminator untuk menandakan program telah selesai. Program dari flowchart diatas sebagai berikut. #include <iostream> #include <conio.h> using namespace std; int main() { //inisialisasi array // int ujian[5]= {90,95,78,85}; int ujian[5]; //input data ke array for (int k=0;k<5;k++) { cout<<"masukkan data nilai ujian["<<k<<"] = "; cin>>ujian[k]; } //tampil data array for (int j=0;j<5;j++)
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 153 { cout<<"data nilai ujian["<<j<<"] = "<<ujian[j]<<endl; } getch(); } Hasil eksekusi program diatas sebagai berikut. Gambar 4. 21 Program studi kasus 1 Gambar 4. 22 Hasil program studi kasus 1
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 154 2. Buatlah sebuah program untuk menemukan data yang terdapat didalam element. Buatlah program baru dengan cara file – menu – source atau gunakan CTRL + N kemudian ketik programnya seperti dibawah ini: Flowchart:
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 155 Gambar 4. 23 Flowchart program studi kasus 2 Penjelasan:
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 156 Flowchart dimulai dengan simbol terminator untuk memulai program. Deklarasi variabel. Lakukan pemilihan untuk (int k=0;k<5) sebagai syarat jika benar maka tampilkan masukan data [<<k<<]. Lalu input data [k] dengan syarat k=k+1. Jika salah lakukan pemilihan kembali (int j=0;j<5) sebagai syarat jika benar maka proses rumus total=total+data(j). Jika salah maka proses rumus rata=total/5. Lalu tampilkan rata-rata pada pada array= rata. Terakhir gunakan simbol terminator untuk menandakan program telah selesai. Program dari flowchart diatas sebagai berikut. #include <iostream> #include <conio.h> using namespace std; main() { float data[5]; float rata, total = 0; //input data ke array for (int k=0;k<5;k++) { cout<<"masukkan data["<<k<<"] = "; cin>>data[k]; } //menghitung total nilai pada array for (int j=0;j<5;j++)
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 157 { total = total + data[j]; } //menghitung rata - rata rata = total / 5; cout<<"rata - rata data pada array = "<<rata<<endl; getch(); } Hasil eksekusi program diatas sebagai berikut. Gambar 4. 24 Program studi kasus 2
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 158 Gambar 4. 25 Hasil program studi kasus 2 3. Contoh program array 1 dimensi 3 Flowchart: Gambar 4. 26 Flowchart program studi kasus 3 Penjelasan: Flowchart dimulai dengan simbol terminator untuk memulai program. Kemudian deklarasi variabel int data[10] = {4, 1, 0, -9, 8, 5, -1, 2, 3, -7}, int elemen, ketemu, x menggunakan simbol preparation. Selanjutnya tampilkan “Data yang dicari : “
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 159 menggunakan simbol input/output lalu input nilai x menggunakan simbol input/output pula. Nyatakan variabel ketemu pada pernyataan ketemu=0 menggunakan simbol process. kemudian deklarasikan elemen=0 dan nyatakan variabel elemen pada penyataan elemen<=9 menggunakan simbol decision. Jika NO maka lanjut pada tahap berikut yakni pernyataan ketemu==0. Jika YES nyatakan varabel elemen pada pernyataan data[elemen]==x, jika YES maka masuk syarat ketemu=!ketemu;break; kemudian lanjut pada tahap berikut yakni pernyataan ketemu==0. Jika NO maka nyatakan variabel elemen pada pernyataan elemen=elemen+1, kemudian nyatakan kembali variabel elemen pada pernyataan elemen<=9 sehingga terjadi proses perulangan. Jika NO maka lanjut pada tahap berikut yakni pernyataan ketemu==0. Pada pernyaaan ketemu==0, nyatakan variabel ketemu pada pernyataan ketemu==0 menggunakan simbol decision. Jika YES maka tampilkan “Data ada di elemen : “ elemen lalu gunakan simbol terminator untuk menandakan program telah selesai. Jika NO maka tampilkan “Data tidak ditemukan “lalu gunakan simbol terminator untuk menandakan program telah selesai. Program dari flowchart diatas sebagai berikut. #include<iostream> #include<conio.h> using namespace std; int main() { int data[10] = {4, 1, 0, -9, 8, 5, -1, 2, 3, -7};
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 160 int elemen, ketemu, x; cout << "Data yang dicari : "; cin >> x; ketemu = 0; for(elemen=0; elemen<= 9; elemen++) { if (data[elemen] == x) { ketemu = !ketemu; break; } } if (ketemu == 0) cout << "Data tidak ditemukan "; else cout << "Data ada di elemen : " << elemen; getch(); } Hasil eksekusi program diatas sebagai berikut.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 161 Gambar 4. 27 Program studi kasus 3 Hasil eksekusi program jika data ditemukan sesuai urutannya dan menampikan elemen. Gambar 4. 28 Hasil program studi kasus 3 Hasil eksekusi jika data tidak ditemukan Gambar 4. 29 Hasil program studi kasus 3 4. Contoh program Array dua dimensi Flowchart:
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 162 Gambar 4. 30 Flowchart program studi kasus 4 Penjelasan: Flowchart dimulai dengan simbol terminator untuk memulai program. Deklarasi variabel. Deklarasi int matrix [3][4]={{5,10,1,11}},{{4,7,67,-9}},{9,0,45,3}}. Masukan syarat pemilihan int i=0;i<3. Jika tidak memenuhi maka proses selesai. Jika memenuhi masukan syarat pemilihan kedua int j=0;j<4 jika tidak memenuhi kembali ke proses i=i+1 lalu ke pemilihan int i=0;i<3 dan seleksi kembali. Jika sudah tidak memenuhi maka selesai. Jika seleksi kedua memenuhi tampilkan mattix [i][j] lalu proses j=j+1 dan ke seleksi j=0;j<4 jika
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 163 tidak maka proses i=i+1 lalu seleksi syarat i=0;i<3 seleksi tidak memenuhi maka proses selesai. Terakhir gunakan simbol terminator untuk menandakan program telah selesai. Program dari flowchart diatas sebagai berikut. #include <iostream> #include <conio.h> using namespace std; int main() { int matrix[3][4] = {{5,10,1,11},{4,7,67,-9},{9,0,45,3}}; for (int i = 0; i<3; i++) { for (int j=0;j<4; j++) { cout<<matrix[i][j]<<" "; } cout<<endl; } getch(); } Hasil eksekusi program diatas sebagai berikut.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 164 Gambar 4. 31 Program studi kasus 4 Gambar 4. 32 Hasil program studi kasus 4 4.5 Kesimpulan dan Saran 4.5.1 Kesimpulan Array adalah suatu struktur data berupa sejumlah data sejenis (bertipe data sama) yang jumlahnya tetap dan diberi suatu nama tertentu, elemen-elemen array tersusun secara berderet dan dapat diakses secara random di dalam memori. Array menggunakan indeks integer untuk menemukan urutan elemen-elemennya, dan juga elemen pertamanya akan dimulai dari indeks 0, dan yang kedua mempunyai indeks 1, serta seterusnya. Array
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 165 dideklarasikan dibagian deklarasi variabel dibedakan menjadi dua yaitu, Array Satu Dimensi dan Array Dua Dimensi. 4.5.2 Saran Array yang akan dipergunakan harus dideklarasikan terlebih dahulu. Ketika akan mendeklarasikan array kita harus memperhatika hal-hal berikut : 1. Indeks array selalu dimulai dari 0 2. Mengetahui besaran, karena array tidak bisa diperbesar ataupun diperkecil 3. Mengetahui tipe data yang ingin dimasukan kedalam array, karena jika inputan berbeda dengan initial array maka akan terjadi error.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 166
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 167 BAB V POINTER OLEH Gibran Hayder Achwan 07352211026 PROGRAM STUDI INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS KHAIRUN TERNATE 2023
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 168 BAB V POINTER 5.1 pengertian Pointer Pointer adalah variabel atau objek yang menunjuk ke variabel atau objek lain. Sebelumnya dijelaskan tentang variabel, “variabel adalah representasi dari alamat memori di komputer.” Dan pointer hanyalah variabel yang menyimpan alamat memori, memori bisa berasal dari variabel, objek dan lain-lain. Dengan petunjuk pointer, dimungkinkan untuk menampilkan memori, mendapatkan isi memori, dan memodifikasi konten memori yang ditentukan. Sebelum kita masuk ke tips, ada dua hal yang harus Anda ketahui. Ada dua jenis pointer yang kita gunakan, yaitu address-of (&) dan dereference operator (*). 5.2 Macam-macam Operator pada Pointer 5.2.1 Addres-of Operator (&) adalah operator yang memungkinkan kita untuk mendapatkan/melihat alamat memori yang dimiliki oleh variabel ini. Cara menggunakannya adalah dengan meletakkan tanda di depan identitas ketika variabel dipanggil. Ini menyebabkan kompiler memberikan alamat memori alih-alih konten/nilai memori. 5.2.2 Dereference operator (*) adalah operator yang memungkinkan Anda mengambil isi/nilai memori berdasarkan alamat memori. Pointer adalah variabel yang menyimpan alamat memori dari variabel lain. Dimungkinkan untuk mengubah nilai variabel yang ditunjukkan oleh penunjuk dan menyalinnya. Saat program sedang berjalan, kita dapat mengubah tujuan
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 169 penunjuk dengan mengubahnya ke alamat memori variabel lain atau ke alamat memori yang bukan variabel. 5.3 Cara Membuat Pointer Sebuah pointer dibuat dengan awalan namanya dengan simbol * (asterik), kemudian diisi dengan alamat memori untuk digunakan sebagai referensi. Contohnya: int *pointer1 = 000001; maka *pointer1 dapat mengakses data pada alamat memori 00001. Dengan kata lain, *pointer1 menggunakan alamat 00001 sebagai referensi. Contoh: Bentuk penulisan: tipeData *identitas; //atau tipeData *identitas = &var; contoh penulisan: int *plnt; doble *pDouble = &myVar; Secara umum pointer sebenarnya adalah variabel, aturan untuk variabel juga berlaku untuk pointer, jadi tidak jauh berbeda dengan variabel. Pointer hanya mendapatkan sedikit perbedaan, yaitu penambahan dua operator, menjadikan variabel tersebut sebagai variabel pointer. Untuk mendefinisikan variabel pointer, kita cukup menambahkan operator dereferencing di depan identitas. Operator referensi tidak harus ditambahkan ke identitas, bisa juga setelah tipe data atau antara tipe data dan identitas. notasi yang berbeda memiliki arti yang sama, yaitu operator referensi hanya berlaku untuk satu variabel. Pointer tidak hanya berlaku pada variabel, pointer dapat di
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 170 gunakan pada function, dan objek lain.caranya masih sama seperti melakukan pada variabel. 5.4 Cara mengakses Pointer Pointer adalah variabel, menggunakan pointer tidak jauh berbeda dengan menggunakan variabel. Untuk mendapatkan nilai pointer kita hanya perlu memanggil identitas pointer. plnt Panggilan mengembalikan nilai pointer, yang merupakan alamat memori dari variabel yang ditunjuk oleh pointer. Karena pointer hanya dapat memiliki nilai berupa alamat memori, untuk mengubah nilai pointer atau mengubah tujuan pointer, kita memerlukan operator address-of (&) pada operan sumber. plnt = &myVar operan sumber mengembalikan alamat memori myVar dan merupakan nilai yang diperlukan oleh variabel penunjuk. 5.5 Latihan praktikum Gambar 5. 1 tampilan dev C++ dan cara mulai buat program Tampilan devC++ Klik file-New untuk membuka lembar kerja atau klik ctrl+N Jika di lembar kerja sudah di isi dengan program maka proses compile di tandal berikut
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 171 5.5.1(pointer konstanta) Flowchart pointer konstanta : Gambar 5. 2 Flowchart kostanta Penjelasan: Dimulai dengan terminator “mulai” dan header sebagai bentuk fungsinya . setelahnya di proses char const *nama= "Borland c++"; sehingga menampilkan cout<<"Nama Program ="<<nama<<endl; yang telah di clear , lalu sistem proses
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 172 nama = "Visual C++";. lalu tampilkan cout<<"Nama Program ="<<nama<<endl dan di selesaikan dengan getch(); #include<conio.h> #include<iostream> using namespace std; main() { char const *nama="Borland C++"; system("cls"); cout<<"Nama Program="<<nama<<endl; nama=" Visual++"; cout<<"Nama Program"<<nama<<endl; getch(); } Gambar 5. 3 contoh program pointer konstanta
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 173 Gambar 5. 4 hasil compile program pointer konstanta 5.2.2 Latihan 2 (Pointer Variabel) Flowchart Pointer Variabel : Gambar 5. 5 pointer variabel
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 174 Penjelasan : Dimulai dengan Terminator “mulai”dan header pada umummnya. Masukan fungsi pointer int ilham, amir, *raka; dan di proses alex = 50 ;jack = alex; danu = &alex; lalu tampilkan keterangannya cout<<"Nilai Alex = "<<alex<<endl; cout<<"Nilai Jack = "<<jack<<endl; dan cout<<"Nilai Danu = "<<danu<<endl; dan di tutup dengan getch();. #include<conio.h> #include<iostream> using namespace std; main() { int Alex, Jack, *Danu; Alex= 50; Jack= Alex; Danu= &Alex; cout<<"Nilai alex="<<Alex<<endl; cout<<"Nilai jack="<<Jack<<endl; cout<<"Nilai danu="<<Danu<<endl; getch(); }
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 175 Gambar 5. 6 program pointer variabel Gambar 5. 7 hasil compile pointer variabel 5.6 Studi kasus 5.6.1 Operasi aritmatika pada pointer Flowchart program aritmatika :
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 176 Gambar 5. 8 Flowchart studi kasus 1 Penjelasan Flowchart : Dimulai dengan simbol terminal,mendeklarasi Int nilai [3], *penunjuk, nilai [0] = 100, nilai [1] = 200, nilai [2] = 300, penunjuk = &nilai [0] menggunakan simbol proses, lalu tampilkan nilai [1] ada di dalam memori penunjuk +1, dan nilai [2] ada di dalam penunjuk +2 menggunakan simbol input/output. Diakhiri dengan symbol terminal. #include<conio.h>
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 177 #include<iostream> using namespace std; main() { int nilai[3], *penunjuk; nilai[0]=100; nilai[1]=200; nilai[2]=300; penunjuk=&nilai[0]; cout<<"Nilai"<<*penunjuk<<"ada di alamat memori"<<penunjuk<<endl; cout<<"Nilai"<<*(penunjuk+1)<<"ada di alamat memori"<<(penunjuk+1)<<endl; cout<<"Nilai"<<*(penunjuk+2)<<"ada di alamat memori"<<(penunjuk+2)<<endl; getch(); } Gambar 5. 9 program operasi pointer aritmatika
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 178 Gambar 5. 10 hasil compile pointer aritmatika 5.6.2 Pointer dalam array Flowchart pointer dalam array: Gambar 5. 11 Flowchart pointer dalam array:
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 179 Penjelasan Flowchart : Dimulai dengan menggunakan simbol terminal, kemudian mendeklarasi Char C[4], lalu memasukkan kondisi for (int i=0; i<4; ++i) mengunakan simbol preparation, lalu print address menggunakan simbol input/output, dan akhiri menggunakan simbol terminal. #include<conio.h> #include<iostream> using namespace std; main() { char c[4]; int i; for(i=0;i<4;++i) { printf("Adress of c[%d]=%x\n",i,&c[i]); } getch(); }
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 180 Gambar 5. 12 program pointer dalam array Gambar 5. 13 hasil compile pointer dalam array 5.7 Kesimpulan dan Saran 6.7.1 KESIMPULAN Suatu variabel yang bertipe pointer tidaklah berisi data melainkan alamat suatu data. Tipe variable pointer sama dengan tipe yang dikenal oleh variable biasa, misalnya int, float, char dan sebagainya. nama dari variabel pointer juga mengikuti ketentuan nama variable biasa. perbedaan variabel pointer dengan variable biasa yaitu penggunaan tanda asterisk (*) didepan nama varibel pada waktu deklarasi.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 181 6.7.2 SARAN Penggunaan pointer pada proses program harus benar-benar diperhatikan. Sedikit saja kesalahan dalam menggunakan pointer akan mengakibatkan kesalahan fatal pada program. Karena pointer bisa langsung menunjukan pada lokasi memori, apabila lokasi yang ditunjuk salah, berarti data yang diambil juga akan salah, dan sudah tentu program anda akan menjadi salah juga.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 182
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 183 BAB VI STACK OLEH Gibran Hayder Achwan 07352211026 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS KHAIRUN TERNATE 2023
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 184 BAB VI STACK 6.1 Definisi Stack Stack adalah suatu koleksi atau kumpulan item data yang terorganisasi dalam bentuk linear, yang operasi pemasukan dan penghapusan datanya dilakukan pada salah satu sisinya. Sedangkan 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 data, dimana node yang ditambahkan dalam list dan diambil dari list hanya pada kepalanya, atau dengan prinsip pengolahannya adalah last-in fisrt-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 yang lain. Dalam suatu tumpukan akan dapat dilakukan operasi penambahan (penyisipan) dan pengambilan (penghapusan) data melalui ujung yang sama, ujung ini merupakan ujung atas tumpukkan. Sebelum struktur data tumpukkan ini digunakkan, dideklarasikan dahulu dalam kamus data. 6.2 Latihan kegiatan praktikum #include <iostream>
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 185 #define MAX 10 // latihan 1 using namespace std; struct stack { int top, data [MAX]; }Tumpukan; void init(){ Tumpukan.top = -1; } bool isempty(){ return Tumpukan.top == -1; } bool isfull(){ return Tumpukan.top == MAX -1; } void push(){ if (isfull()){ cout<<"\nTumpukan penuh" <<endl; } else { Tumpukan.top++; cout<<"\nMasukkan data ="; cin>> Tumpukan.data[Tumpukan.top]; cout<<"data"<< Tumpukan.data[Tumpukan.top] << "masuk ke stack"<<endl; } } void pop(){ if (isempty()){ cout<< "\ndata kosong\n"<<endl; } else{ cout<< "\ndata "<<Tumpukan.data [Tumpukan.top]<< "sudah terambil"<<endl; Tumpukan.top--; } } void PrintStack(){ if (isempty()){
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 186 cout<<"tTumpukan kosong"; } else{ cout<<"\nTumpukan : "; for (int i = Tumpukan.top; i >= 0; i--) cout<< Tumpukan.data[i] << ((i==0) ? "": ","); } } int main(){ int pilihan; int(); do{ PrintStack(); cout<< "\n1.input (push)\n" << "2.hapus (Pop)\n" << "3.keluar\n" << "masukan pilihan:"; cin>>pilihan; switch (pilihan){ case 1: push(); break; case 2: pop(); break; case 3: cout << "bab 6 selesai" << endl; cout << "Nama :…………………." << endl; cout << "NPM : …………………. “<< endl; return 0; break; default: cout << "pilihan tidak tersedia"<< endl; break; } system("cls"); }while("hoose !=3"); }
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 187 Compile dan perbaiki program sampai benar : Gambar 6. 1 Struktur code latihan C++
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 188 Gambar 6. 2 Lanjutan struktur code latihan C++ Gambar 6. 3 Lanjutan
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 189 Hasil running jika memilih pilihan pertama atau memasukan nilai ke dalam stack Gambar 6. 5 Hasil running Hasil running jika memilih pilih kedua atau menghapus data di dalam stack (tumpukan) Gambar 6. 6 Hasil running Gambar 6. 4 Lanjutan struktur code latihan C++
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 190 Hasil running jika memilih pilihan ke-3 atau keluar Gambar 6. 7 Hasil running
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 191 6.3 Studi Kasus Buatlah program baru dengan cara file-new-source atau gunakan CTRL+N kemudian ketik source code, programnya seperti dibawah ini:
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 192 Gambar 6. 8 flowchart program stack 2
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 193 Penjelasan: Dimulai dengan terminator dan header flowchart, masukan fungsi nya didalam simbol prepation. lalu fungsi untuk variabel while(1), tampilkan pilihan push, pop, display, quit dan scanf. Lalu masuk dalam system (choice) untuk case1-4 ditambahkan default jika yang lain, untuk void push, if (top == (MAX - 1) maka tampilkan “Stack Overflow” jika tidak, maka tampilkan nilai yang masuk dan masukan nilainya dengan nilai sudah di urutkan top = top + 1; stack_arr[top] = pushed_item; sedangkan untuk pilihan void pop(). jika nilai (top == -1) maka tampilkan “Stack Overflow” jika buka itu maka tampilkan nilai yang dihapuskan dan di urutkan top = top - 1; lalu sedangkan void display() , masukan variabel int I, jika if(top == -1) maka tampikan “Stack Overflow” jika tidak, maka else {printf("\nStack elements :\n"); untuk tampilan for(i = top; i >=0; i--) printf ("%d\n", stack_arr[i] ); kemudian diselesaikan dengan gethch();. #include <stdio.h> #include <stdlib.h> #include <conio.h> #define MAX 5 int top = -1; int stack_arr[MAX]; void push(); void pop(); void display(); int main() {
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 194 int choice; while(1) { printf("\n1.Push\n"); printf("2.Pop\n"); printf("3.Display\n"); printf("4.Quit\n\n"); printf("Enter your choice : "); scanf("%d",&choice); switch(choice) { case 1 : push(); break; case 2: pop(); break; case 3: display(); break; case 4: exit(1); default: printf("\nPILIHAN TIDAK TERSEDIA\n");
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 195 } } getch(); } void push() { int pushed_item; if(top == (MAX - 1)) printf("Stack Overflow\n"); else { printf("\nEnter the item to be pushed in stack : "); scanf("%d",&pushed_item); top = top + 1; stack_arr[top] = pushed_item; } } void pop() { if(top == -1) printf("Stack Underflow\n"); else { printf("Popped element is : %d\n",stack_arr[top]); top = top - 1; } } void display() { int i;
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 196 if(top == -1) printf("Stack is empty\n"); else { printf("\nStack elements :\n"); for(i = top; i >=0; i--) printf("%d\n", stack_arr[i] ); }} Compile sampai benar : Gambar 6. 9 Struktur pemograman
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 197 Gambar 6. 10 Lanjutan Struktur pemograman Gambar 6. 11 Lanjutan Struktur pemograman
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 198 Gambar 6. 13 Hasil running Buatlah program baru dengan cara file-new-source atau gunakan CTRL+N kemudian ketik source code programnnya seperti dibawah : Gambar 6. 12 Lanjutan struktur code latihan C++
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 199 Gambar 6. 14 flowchart program stack 3 #include<stdio.h> #include<stdlib.h>
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 200 #include <conio.h> typedef struct node { int data; struct node *link; }NODE; NODE *top = NULL; void push(); void pop(); void display(); int main() { int choice = 0; while(1) { printf("\n1.Push\n"); printf("2.Pop\n"); printf("3.Display\n"); printf("4.Quit\n\n"); printf("Enter your choice : "); scanf("%d",&choice) switch(choice) { case 1 : push(); break; case 2: pop();