algoritma dan struktur data
DESCRIPTION
Algoritma dan Struktur Data. Pass by Value & Pass by Reference. Review. Nilai sebuah variabel bisa diakses melalui dua cara Cara 1 : Langsung Cara 2 : Menggunakan pointer. Review. Program tanpa fungsi. Perhitungan luas diletakkan di bagian terpisah. Fungsi untuk menghitung luas. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Algoritma dan Struktur Data](https://reader036.vdokumen.com/reader036/viewer/2022083009/56814c56550346895db971fc/html5/thumbnails/1.jpg)
Algoritma dan Struktur Data
Pass by Value & Pass by Reference
![Page 2: Algoritma dan Struktur Data](https://reader036.vdokumen.com/reader036/viewer/2022083009/56814c56550346895db971fc/html5/thumbnails/2.jpg)
Review
• Nilai sebuah variabel bisa diakses melalui dua caraCara 1 : LangsungCara 2 : Menggunakan pointer
![Page 3: Algoritma dan Struktur Data](https://reader036.vdokumen.com/reader036/viewer/2022083009/56814c56550346895db971fc/html5/thumbnails/3.jpg)
Review
1234567891011121314151617181920
using namespace std;#include <iostream>int main(){
// Bagian deklarasi variableint x;int *px;
// Bagian badan programpx=&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;
}
![Page 4: Algoritma dan Struktur Data](https://reader036.vdokumen.com/reader036/viewer/2022083009/56814c56550346895db971fc/html5/thumbnails/4.jpg)
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();
}
![Page 5: Algoritma dan Struktur Data](https://reader036.vdokumen.com/reader036/viewer/2022083009/56814c56550346895db971fc/html5/thumbnails/5.jpg)
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();
}
![Page 6: Algoritma dan Struktur Data](https://reader036.vdokumen.com/reader036/viewer/2022083009/56814c56550346895db971fc/html5/thumbnails/6.jpg)
Fungsi untuk menghitung luas
1
2
3
4
5
6
float hitungluas(float p, l){
float l;
l = p * l;
return(l);
}
![Page 7: Algoritma dan Struktur Data](https://reader036.vdokumen.com/reader036/viewer/2022083009/56814c56550346895db971fc/html5/thumbnails/7.jpg)
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);
}
![Page 8: Algoritma dan Struktur Data](https://reader036.vdokumen.com/reader036/viewer/2022083009/56814c56550346895db971fc/html5/thumbnails/8.jpg)
Latihan
• Variabel atau data untuk main dan hitungluas terletak di bagian memori berbeda
• Keduanya tidak berhubungan• Gambarkan keadaan memori untuk main dan
hitungluas!
![Page 9: Algoritma dan Struktur Data](https://reader036.vdokumen.com/reader036/viewer/2022083009/56814c56550346895db971fc/html5/thumbnails/9.jpg)
Pass by Value
• Jika kita mengubah nilai variabel p di hitungluas, apakah variabel panjang di main nilainya berubah?
![Page 10: Algoritma dan Struktur Data](https://reader036.vdokumen.com/reader036/viewer/2022083009/56814c56550346895db971fc/html5/thumbnails/10.jpg)
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);
}
![Page 11: Algoritma dan Struktur Data](https://reader036.vdokumen.com/reader036/viewer/2022083009/56814c56550346895db971fc/html5/thumbnails/11.jpg)
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!
![Page 12: Algoritma dan Struktur Data](https://reader036.vdokumen.com/reader036/viewer/2022083009/56814c56550346895db971fc/html5/thumbnails/12.jpg)
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
![Page 13: Algoritma dan Struktur Data](https://reader036.vdokumen.com/reader036/viewer/2022083009/56814c56550346895db971fc/html5/thumbnails/13.jpg)
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);
}
![Page 14: Algoritma dan Struktur Data](https://reader036.vdokumen.com/reader036/viewer/2022083009/56814c56550346895db971fc/html5/thumbnails/14.jpg)
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
![Page 15: Algoritma dan Struktur Data](https://reader036.vdokumen.com/reader036/viewer/2022083009/56814c56550346895db971fc/html5/thumbnails/15.jpg)
Latihan
• Buatlah fungsi untuk menukar isi dua variabel bertipe float!
![Page 16: Algoritma dan Struktur Data](https://reader036.vdokumen.com/reader036/viewer/2022083009/56814c56550346895db971fc/html5/thumbnails/16.jpg)
Solusi1
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;
temp = *x;
*x = *y;
*y = temp;
}
![Page 17: Algoritma dan Struktur Data](https://reader036.vdokumen.com/reader036/viewer/2022083009/56814c56550346895db971fc/html5/thumbnails/17.jpg)
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!
![Page 18: Algoritma dan Struktur Data](https://reader036.vdokumen.com/reader036/viewer/2022083009/56814c56550346895db971fc/html5/thumbnails/18.jpg)
Additional Terms
• Pass-by-reference is also called . . . – pass-by-address, or– pass-by-location
Can you explain why?