Algoritma dan Struktur Data
Review
• Nilai sebuah variabel bisa diakses melalui dua cara
Cara 1 : Langsung
Review
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20using namespace std; #include <iostream> 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;
Program tanpa fungsi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <stdio.h> #include <conio.h> Int main(){float panjang, lebar, luas;
panjang = 10; lebar = 20
luas = panjang * lebar;
cout << "Luas persegi = “ << luas ; getch();
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);
cout << "Luas persegi = “ << luas ; getch();
Fungsi untuk menghitung luas
1
2
3
4
5
6
float hitungluas(float p, l){
float l;
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;
Latihan
• Variabel atau data untuk main dan hitungluas terletak
di bagian memori berbeda
• Keduanya tidak berhubungan
Pass by Value
Pass by Value
1
2
3
4
5
6
7
float hitungluas(float p, l){
float lu;
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
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
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;
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
Latihan
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 26 #include <stdio.h> #include <conio.h>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;
Using a Pass by Value
•
Is like giving someone the key to your
home
•
The key can be used by the other
Additional Terms
•
Pass-by-reference
is also called . . .
– pass-by-address, or
– pass-by-location