136 BAB IV ARRAY 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. Elemen-elemen array dapat diakses oleh program menggunakan suatu indeks tertentu secara acak ataupun berurutan. Pengisian dan pengambilan nilai pada indeks tertentu dapat dilakukan dengan mengeset nilai atau menampilkan nilai pada indeks yang dimaksud. Array terbagi dalam dua jenis yaitu array satu dimensi dan dua dimensi. 4.1 Array Dimensi Satu Pada array satu dimensi hanya terdapat satu baris dan bayak kolom. Deklarasi Array satu dimensi secara umum sebagai berikut. Gambar 4.1 Penulisan deklarasi Array satu dimensi Keterangan: tipe_data : menyatakan jenis tipe data elemen larik (int, char, float, dll) nama_var_array : menyatakan nama variabel yang dipakai. ukuran : menunjukkan jumlah maksimal elemen larik/ banyak array. Untuk menginisialisasi array sama dengan memberikan nilai awal array pada saat didefinisikan, dengan cara sebagai berikut:
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 137 int nilai[6] = {1,3,5,7,9}; bisa disederhanakan sehingga menjadi : int nilai = {1,3,5,7,9}; Contoh diatas berarti anda memesan tempat di memori komputer sebanyak 5 tempat dengan indeks dari 0-4, dimana indeks ke-0 bernilai 1, ke-1 bernilai 3, dst, dan semua elemennya bertipe data integer. Tiga hal penting dalam array yang harus dipahami yaitu: 1. Index, dapat disebut dengan urutan, index pada array secara default dimulai dari 0 (nol). 2. Value, yang mengisi di setiap elemen array, dan elemen-elemen ini dapat diakses oleh program menggunakan suatu indeks tertentu secara acak ataupun berurutan. 3. Reference, alamat memori dari masing-masing elemen array. Gambar 4.2 Ilustrasi Array Satu Dimensi Contoh program menampilkan isi variabel array dimensi satu sebagai berikut. Contoh menampilkan isi variabel array dengan mendeklarasikan sekaligus memberi nilai awal array sebagai berikut.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 138 Gambar 4.3 Contoh program menampilkan isi variabel array 1 Gambar 4.4 Hasil contoh program menampilkan isi variabel array 1 Penjelasan: 1. Mendeklarasikan variabel array x dan sekaligus memberi nilai awal pada array 2. Menampilkan isi array satu persatu
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 139 Contoh menampilkan isi variabel array dengan mendeklarasikan variabel array satu persatu sebagai berikut. Gambar 4.5 Contoh program menampilkan isi variabel array 2 Gambar 4.6 Hasil contoh program menampilkan isi variabel array 2 Penjelasan: 1. Mendeklarasikan variabel array x sebanyak 5 (dihitung mulai 0) 2. Mengisi variabel array satu persatu 3. Menampilkan isi array satu persatu
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 140 Contoh menampilkan isi variabel array dengan menggunakan perulangan perintah For sebagai berikut. Gambar 4.7 Contoh program menampilkan isi variabel array 3 Gambar 4.8 Hasil contoh program menampilkan isi variabel array 3 Penjelasan : 1. Mendeklarasikan variabel array x dan sekaligus memberi nilai awal pada array 2. Menampilkan isi array dengan menggunakan perulangan perintah for
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 141 Contoh menampilkan isi variabel array dengan memasukkan nilai variabel array sebagai berikut. Gambar 4.9 Contoh program menampilkan isi variabel array 4 Gambar 4.10 Hasil contoh program menampilkan isi variabel array 4 Penjelasan : 1. Mendeklarasikan variabel array x sebanyak 5 (dihitung mulai 0) 2. Mengisi variabel array x[0] dengan 1 3. Mengisi variabel array x[1] dengan 3 4. Mengisi variabel array x[3] dengan 7 5. Mengisi variabel array x[2] dengan meminta data dari masukan keyboard 6. Mengisi variabel array x[4] dengan meminta data dari masukan keyboard
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 142 7. Menampilkan semua isi array dengan menggunakan perulangan perintah for 4.2 Array Dimensi Dua Array dua dimensi yang sering digambarkan sebagai sebuah matrik dimana array dua dimensi memiliki banyak baris dan banyak kolom. Deklarasi array dua dimensi secara umum: Gambar 4.11 Penulisan deklarasi array dua dimensi Keterangan: tipe_data :menyatakan jenis tipe data elemen larik (int, char, float, dll) nama_var_array :menyatakan nama variabel yang dipakai. batas_baris :menyatakan jumlah/ukuran baris pada array batas_kolom :menyatakan jumlah/ukuran komlom pada array. Contoh : Inisialisasi atau memberikan nilai pada array hampir sama dengan variabel tunggal, hanya dalam memberikan nilai ini diperjelas dengan memberi nomor array. x[0][0] = -45; x[0][1]= 6; x[1][0]= 0; x[1][1]= 72; x[2][0]= 4; x[2][1]= 34;
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 143 Untuk menginisialisasi array sama dengan memberikan nilai awal array pada saat didefinisikan. 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.12 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
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 144 Contoh menampilkan isi variabel array dengan mendeklarasikan sekaligus memberi nilai awal array sebagai berikut. Gambar 4.13 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.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 145 Gambar 4.14 Contoh program menampilkan isi variabel array 3 Gambar 4.15 Hasil contoh program menampilkan isi variabel array 3
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 146 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.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 147 Gambar 4.16 Program latihan 1 Gambar 4.17 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];
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 148 float data_total = 0; 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(); }
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 149 Hasil eksekusi program diatas sebagai berikut. Gambar 4.18 Program latihan 2 Gambar 4.19 Hasil program latihan 2
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 150 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.20 Flowchart program studi kasus 1
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 151 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};
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 152 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++) { cout<<"data nilai ujian["<<j<<"] = "<<ujian[j]<<endl; } getch(); }
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 153 Hasil eksekusi program diatas sebagai berikut. Gambar 4.21 Program studi kasus 1 Gambar 4.22 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:
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 154 Flowchart: Gambar 4.23 Flowchart program studi kasus 2
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 155 Penjelasan: Flowchart dimulai dengan simbol terminator untuk memulai program. Kemudian deklarasi variabel float data[5], rata, total=0 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[“<<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 nyatakan variabel total pada pernyataan total=total+data[j], lalu nyatakan variabel j pada pernyataan j=j+1 menggunakan simbol process, kemudian nyatakan kembali variabel j pada pernyataan j<5 sehingga terjadi perulangan. Jika NO maka nyatakan variabel rata pada pernyataan rata=total/5 menggunakan simbol process, kemudian tampilkan “rata-rata datapada array = “rata. Lalu gunakan simbol terminator untuk menandakan program telah selesai. Program dari flowchart diatas sebagai berikut. #include <iostream> #include <conio.h> using namespace std; main() {
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 156 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++) { total = total + data[j]; } //menghitung rata - rata rata = total / 5; cout<<"rata - rata data pada array = "<<rata<<endl; getch(); }
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 157 Hasil eksekusi program diatas sebagai berikut. Gambar 4.24 Program studi kasus 2 Gambar 4.25 Hasil program studi kasus 2
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 158 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 : “ 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
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 159 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}; int elemen, ketemu, x; cout << "Data yang dicari : "; cin >> x;
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 160 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(); }
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 161 Hasil eksekusi program diatas sebagai berikut. 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
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 162 Hasil eksekusi jika data tidak ditemukan Gambar 4.29 Hasil program studi kasus 3 4. Contoh program Array dua dimensi Flowchart: Gambar 4.30 Flowchart program studi kasus 4
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 163 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 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]<<" ";
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 164 } cout<<endl; } getch(); } Hasil eksekusi program diatas sebagai berikut. Gambar 4.31 Program studi kasus 4 Gambar 4.32 Hasil program studi kasus 4
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 165 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 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
167 BAB V POINTER OLEH Jiandzah Lukmannulhakim 07352211037 PROGRAM STUDI INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS KHAIRUN TERNATE 2022
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 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. 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 penunjuk dengan mengubahnya ke alamat memori variabel lain atau ke alamat memori yang bukan variabel.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 169 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 gunakan pada function, dan objek lain. Caranya masih sama seperti melakukan pada variabel.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 170 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 Kegiatan 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 1. Latihan 1 (Pointer konstanta) Flowchart: Gambar 5.2 Flowchart latihan 1 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 = "Visual C++";. lalu tampilkan cout<<"Nama Program ="<<nama<<endl dan di selesaikan dengan simbol terminator. Program dari flowchart diatas adalah sebagai berikut
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 172 #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(); } Hasil eksekusi program diatas sebagai berikut. Gambar 5.3 Program latihan 1
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 173 Gambar 5.4 hasil program latihan 1
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 174 2. Latihan 2 (Pointer Variabel) Flowchart: Gambar 5.5 flowchart latihan 2 Penjelasan : Dimulai dengan Terminator “mulai”dan header pada umummnya. Masukan fungsi pointer int Alex, Jack, *Danu; 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 terminator selesai. Program dari flowchart diatas sebagai berikut.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 175 #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.6 program latihan 2
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 176 Gambar 5.7 hasil program latihan 2
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 177 5.6 Studi kasus 1. Operasi aritmatika pada pointer Gambar 5.8 Flowchart studi kasus 1 Penjelasan: 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
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 178 dalam penunjuk +2 menggunakan simbol input/output. Diakhiri dengan simbol terminal. Program dari flowchart diatas adalah sebagai berikut. #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(); }
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 179 Gambar 5.9 program studi kasus 1 Gambar 5.10 hasil program studi kasus 1
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 180 2. Pointer dalam array Flowchart: Gambar 5.11 Flowchart studi kasus 2 Penjelasan: Dimulai dengan menggunakan simbol terminator, 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 terminator. Program dari flowchart diatas adalah sebagai berikut.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 181 #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.12 program studi kasus 2
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 182 Gambar 5.13 hasil program studi kasus 2 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 variabel 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.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 183
184 BAB VI STACK OLEH Jiandzah Lukmannulhakim 07352211037 PROGRAM STUDI INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS KHAIRUN TERNATE 2022
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 185 BAB VI STACK 6.1 Pengenalan 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.