Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Algoritma dan Struktur Data Pass by Value & Pass by Reference.

Presentasi serupa


Presentasi berjudul: "Algoritma dan Struktur Data Pass by Value & Pass by Reference."— Transcript presentasi:

1 Algoritma dan Struktur Data Pass by Value & Pass by Reference

2 Review Nilai sebuah variabel bisa diakses melalui dua cara  Cara 1 : Langsung  Cara 2 : Menggunakan pointer

3 Review using namespace std; #include int main(){ // Bagian deklarasi variable int x; int *px; // Bagian badan program px=&x; x=10; cout << "Nilai variable x diakses secara langsung:"<< x; cout << "\nVariable x berada dialamat:"<< px; cout << "\nNilai variable x diakses melalui pointer:"<< *px; return 0; }

4 Program tanpa fungsi #include Int main(){ float panjang, lebar, luas; panjang = 10; lebar = 20 luas = panjang * lebar; cout << "Luas persegi = “ << luas ; getch(); }

5 Perhitungan luas diletakkan di bagian terpisah #include void main(){ float panjang, lebar, luas; panjang = 10; lebar = 20 luas = hitungluas(panjang, lebar); cout << "Luas persegi = “ << luas ; getch(); }

6 Fungsi untuk menghitung luas float hitungluas(float p, l){ float l; l = p * l; return(l); }

7 Program menggunakan fungsi void main(){ float panjang, lebar, luas; ….. luas = hitungluas(panjang, lebar); …. } float hitungluas(float p, float l){ float lu; lu = p * l; return(l); }

8 Latihan Variabel atau data untuk main dan hitungluas terletak di bagian memori berbeda Keduanya tidak berhubungan Gambarkan keadaan memori untuk main dan hitungluas!

9 Pass by Value Jika kita mengubah nilai variabel p di hitungluas, apakah variabel panjang di main nilainya berubah?

10 Pass by Value float hitungluas(float p, l){ float lu; lu = p * l; p = p * 2; return(lu); }

11 Pass by Value Pada saat main memanggil fungsi hitungluas, isi variabel panjang dan lebar dicopy kemudian dikirim ke hitungluas Di fungsi hitungluas, nilai tersebut dimasukkan ke variabel p dan l Merubah nilai p dan l tidak berakibat apa-apa pada variabel panjang dan luas Ingat, variabel main dan hitungluas terletak di bagian memori yang berbeda!

12 Pass by Reference Bagaimana cara mengubah nilai variabel panjang pada main dari fungsi hitungluas? Pada saat memanggil hitungluas, jangan mengirim nilai panjang Kirim alamat variabel panjang ke hitung luas Hitungluas dapat mengakses & mengubah isi variabel panjang milik main secara indirect

13 Program menggunakan fungsi void main(){ float panjang, lebar, luas; ….. luas = hitungluas(&panjang, lebar); …. } float hitungluas(float *p, float l){ float lu; lu = (*p) * l; *p = (*p) * 2; return(l); }

14 Pass by Reference Variabel v ada di fungsi F F memanggil fungsi G G perlu mengubah nilai v di F Jangan mengirim nilai v ke G Kirim alamat v G dapat mengakses v di F secara indirect G dapat mengubah nilai v di F

15 Latihan Buatlah fungsi untuk menukar isi dua variabel bertipe float!

16 Solusi #include void tukar(float *x, float *y); int main(){ float bil1, bil2; bil1 = 10; bil2 = 15; cout << “Bilangan 1 =“ << bil1 << “, bilangan 2 =“ << bil2 ; tukar(&bil1, &bil2); cout << “\nBilangan 1 =“ << bil1 << “, bilangan 2 =“ << bil2 ; getch(); return (0); } void tukar(float *x, float *y){ float temp; temp = *x; *x = *y; *y = temp; }

17 Using a Pass by Value Is like giving someone the key to your home The key can be used by the other person to change the contents of your home!

18 Additional Terms Pass-by-reference is also called... –pass-by-address, or –pass-by-location Can you explain why?


Download ppt "Algoritma dan Struktur Data Pass by Value & Pass by Reference."

Presentasi serupa


Iklan oleh Google