PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 101 int nilai[3][2] = {{8,-3},{9,0},{5,2}}; Contoh program menampilkan isi variabel array dimensi dua sebagai berikut. Contoh menampilkan isi variabel array dengan mendeklarasikan variabel array satu persatu sebagai berikut. Gambar 4. 14 Contoh program menampilkan isi variabel array 2 Penjelasan: 1. Mendeklarasikan variabel array x dan sekaligus memberi nilai awal pada array 2. Menampilkan isi array satu persatu Contoh menampilkan isi variabel array dengan mendeklarasikan sekaligus memberi nilai awal array sebagai berikut.
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 102 Gambar 4. 15 Contoh program menampilkan isi variabel array 2 Penjelasan: 1. int x[2][2]= { { 1,2},{3,4},}; Mendeklarasikan variabel x sebanyak 2 baris dan 2 kolom serta memberikan inisialisasi variabel array tersebut 2. int huruf[8][8] Mendeklarasikan array 2 dimensi dan memberi nilai awal Contoh menampilkan isi variabel array dengan menggunakan perulangan perintah For sebagai berikut.
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 103 Gambar 4. 16 Contoh program menampilkan isi variabel array 3 Gambar 4. 17 Hasil contoh program menampilkan isi variabel array 3
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 104 4.3 Latihan Kegiatan Praktikum 1. Latihan 1 Buatlah program baru pada Dev C++ dengan cara klik file – new – source file atau tekan tombol Ctrl+N pada keyboard, kemudian ketik program dibawah ini : #include<conio.h> #include<iostream> using namespace std ; int main() { //int ujian [5] = {90,95,78} ; int ujian [5] ; for (int k=0;k<3;k++){ cout<<" Masukkan data nilai ujian ["<<k<<"] = " ; cin>>ujian[k] ; } for (int j=0;j<3;j++){ cout<<"Data nilai ujian["<<j<<"] = "<<ujian[j]<<endl ; } getch() ; } Hasil eksekusi program diatas sebagai berikut.
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 105 Gambar 4. 18 Program latihan 1 Gambar 4. 19 Hasil program latihan 1 2. Latihan 2 Buatlah program baru pada Dev C++ dengan cara klik file – new – source file atau tekan tombol Ctrl+N pada keyboard, kemudian ketik program dibawah ini : #include <iostream> #include <conio.h> using namespace std; int main() { float data [3]; float data_total = 0;
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 106 float total, rata; //input data ke array for (int k=0; k<3; k++) { cout<<"Masukan data ["<<k<<"] = "; cin>> data [k]; } //menghitung total nilai array for (int J=0; J<3; J++) { total = total + data [J]; } //menghitung rata-rata rata = total / 3; cout<<"Nilai Rata-Rata data pada Array = "<<rata<<endl; getch(); } Hasil eksekusi program diatas sebagai berikut.
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 107 Gambar 4. 20 Program latihan 2 Gambar 4. 21 Hasil program latihan 2
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 108 4.4 Studi Kasus 1. 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: Gambar 4. 22 Flowchart program studi kasus 1
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 109 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 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++)
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 110 { cout<<"masukkan data nilai ujian["<<k<<"] = "; cin>>ujian[k]; } //tampil data array for (int j=0;j<5;j++) { cout<<"data nilai ujian["<<j<<"] = "<<ujian[j]<<endl; } getch(); } Hasil eksekusi program diatas sebagai berikut. Gambar 4. 23 Program studi kasus 1
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 111 Gambar 4. 24 Hasil program studi kasus 1 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:
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 112 Gambar 4. 25 Flowchart program studi kasus 2
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 113 Penjelasan: 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++)
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 114 { 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. 26 Program studi kasus 2 Gambar 4. 27 Hasil program studi kasus 2
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 115 3. Contoh program array 1 dimensi 3 Flowchart: Gambar 4. 28 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 : “ 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
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 116 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}; int elemen, ketemu, x; cout << "Data yang dicari : "; cin >> x; ketemu = 0; for(elemen=0; elemen<= 9; elemen++) { if (data[elemen] == x)
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 117 { ketemu = !ketemu; break; } } if (ketemu == 0) cout << "Data tidak ditemukan "; else cout << "Data ada di elemen : " << elemen; getch(); } Hasil eksekusi program diatas sebagai berikut. Gambar 4. 29 Program studi kasus 3 Hasil eksekusi program jika data ditemukan sesuai urutannya dan menampikan elemen.
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 118 Gambar 4. 30 Hasil program studi kasus 3 Hasil eksekusi jika data tidak ditemukan Gambar 4. 31 Hasil program studi kasus 3 4. Contoh program Array dua dimensi Flowchart:
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 119 Gambar 4. 32 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
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 120 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.
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 121 Gambar 4. 33 Program studi kasus 4 Gambar 4. 34 Hasil program studi kasus 4 4.5 Simpulan dan Saran 4.5.1 Simpulan 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
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 122 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.
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 123
BAB IV POINTER OLEH M. Imam Afwan Hasanudin 07352211015 PROGRAM STUDI INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS KHAIRUN TERNATE 2022
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 125 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.
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 126 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 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;
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 127 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 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.
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 128 5.5 Latihan praktikum Gambar 5. 1 tampilan dev C++ dan cara mulai buat program Tampilan devC++ Tampilan devC++ Klik file-New untuk membuka lembar kerja atau klik ctrl+N 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 Jika di lembar kerja sudah di isi dengan program maka proses compile di tandal berikut
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 129 5.5.2 (pointer konstanta) Flowchart pointer konstanta : Gambar 5. 2 flowchart pointer konstanta 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 nama =
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 130 "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
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 131 Gambar 5. 4 hasil compile program pointer konstanta
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 132 5.5.2 Latihan 2 (Pointer Variabel) Flowchart Pointer Variabel : 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();. Gambar 5. 5 Flowchart pointer variabel Gambar 5. 6 Flowchart pointer variabel
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 133 #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(); } Gambar 5. 7 program pointer variabel
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 134 Gambar 5. 8 hasil compile pointer variabel
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 135 5.6 Studi kasus 5.6.1 Operasi aritmatika pada pointer Flowchart program aritmatika: Gambar 5. 9 Flowchart 5.3 pointer artimatika 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
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 136 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> #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(); }
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 137 Gambar 5. 10 program operasi pointer aritmatika Gambar 5. 11 hasil compile pointer aritmatika
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 138 5.6.2 Pointer dalam array Flowchart pointer dalam array: Gambar 5. 12 pointer dalam array 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.
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 139 #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(); } Gambar 5. 13 program pointer dalam array
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 140 Gambar 5. 14 hasil compile pointer dalam array 5.7 Kesimpulan dan Saran 5.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. 5.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.
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 141
BAB IV STACK OLEH M. Imam Afwan Hasanudin 07352211015 PROGRAM STUDI INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS KHAIRUN TERNATE 2022
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 143 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> #define MAX 10
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 144 // 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];
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 145 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()){ cout<<"tTumpukan kosong"; } else{ cout<<"\nTumpukan : "; for (int i = Tumpukan.top; i >= 0; i--) cout<< Tumpukan.data[i] << ((i==0) ? "": ",");
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 146 } } 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;
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 147 return 0; break; default: cout << "pilihan tidak tersedia"<< endl; break; } system("cls"); }while("hoose !=3"); } Compile dan perbaiki program sampai benar : Gambar 6. 1 Struktur code latihan C++ Gambar 6. 2 Struktur code latihan C++
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 148 Gambar 6. 3 Lanjutan struktur code latihan C++ Gambar 6. 4 Lanjutan struktur code latihan C++ Gambar 6. 5 Lanjutan struktur code latihan C++
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 149 Hasil running jika memilih pilihan pertama atau memasukan nilai ke dalam stack Gambar 6. 8 Hasil running Hasil running jika memilih pilih kedua atau menghapus data di dalam stack (tumpukan) Gambar 6. 6 Lanjutan struktur code latihan C++ Gambar 6. 7 Lanjutan struktur code latihan C++
PRATIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 150 Gambar 6. 9 Hasil running Hasil running jika memilih pilihan ke-3 atau keluar Gambar 6. 10 Hasil running