Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
Algoritma dan Struktur Data
Pertemuan 10 Pass by Value & Pass by Reference
2
Review Nilai sebuah variabel bisa diakses melalui dua cara
Cara 1 : Langsung Cara 2 : Menggunakan pointer Is there any questions so far?
3
Review 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <stdio.h> #include <conio.h> void main() { int x; int *px; px = &x; x = 10; printf("nilai x diakses secara langsung : %d\n", x); *px = 11 printf("nilai x diakses melalui pointer : %d", *px); getch(); }
4
Program tanpa fungsi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <stdio.h> #include <conio.h> void main(){ float panjang, lebar, luas; panjang = 10; lebar = 20 luas = panjang * lebar; printf ("Luas persegi = %f\n", luas ); getch(); }
5
Perhitungan luas diletakkan di bagian terpisah
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <stdio.h> #include <conio.h> void main(){ float panjang, lebar, luas; panjang = 10; lebar = 20 luas = hitungluas(panjang, lebar); printf ("Luas persegi Anda = %f\n", luas ); getch(); }
6
Fungsi untuk menghitung luas
1 2 3 4 5 6 float hitungluas(float p, l){ float l; l = p * l; return(l); }
7
Program menggunakan fungsi
1 2 3 4 5 6 7 8 9 10 11 12 13 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 1 2 3 4 5 6 7 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
1 2 3 4 5 6 7 8 9 10 11 12 13 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 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include <stdio.h> #include <conio.h> void tukar(float *x, float *y); void main(){ float bil1, bil2; bil1 = 10; bil2 = 15; printf ("Bilangan 1 = %f , bilangan 2 = %f\n", bil1, bil2 ); tukar(&bil1, &bil2); getch(); } 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! 17
18
Can you explain why? Additional Terms
Pass-by-reference is also called . . . pass-by-address, or pass-by-location Can you explain why? 18
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.