Algoritma dan Struktur Data

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

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 Presentation

Transcript of Algoritma dan Struktur Data

Page 1: Algoritma dan Struktur Data

Algoritma dan Struktur Data

Pass by Value & Pass by Reference

Page 2: Algoritma dan Struktur Data

Review

• Nilai sebuah variabel bisa diakses melalui dua caraCara 1 : LangsungCara 2 : Menggunakan pointer

Page 3: Algoritma dan Struktur Data

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

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

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

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

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

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

Pass by Value

• Jika kita mengubah nilai variabel p di hitungluas, apakah variabel panjang di main nilainya berubah?

Page 10: Algoritma dan Struktur Data

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

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

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

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

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

Latihan

• Buatlah fungsi untuk menukar isi dua variabel bertipe float!

Page 16: Algoritma dan Struktur Data

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

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

Additional Terms

• Pass-by-reference is also called . . . – pass-by-address, or– pass-by-location

Can you explain why?