Soal UTS Algoritma 08/09 No. 2 (procedure & function)


uses wincrt;

function aku(a,b:integer):integer;

begin

if a = 1 then aku := 2*a

else if b = 1 then aku := 2*b

else aku := a*b+ (aku(a-1,b)+ aku(a,b-1));

end;

function lagi (a,b : integer):integer;

begin

if (a>b) then lagi :=lagi (b,a)

else if (a=0) then lagi := b

else lagi := lagi (b mod a, a);

end;

procedure test (x,y : integer);

begin

writeln (aku (2,lagi(x,y)));

end;

var a,b : integer;

begin

b :=3;

for a := 1 to b do

test(a,b);

end.

proses.

terjadi 3 kali perulangan

test (a,b) di program utama memanggil procedure test.

procedure test memanggil function aku

function aku mamanggil function lagi

perulangan pertama

test (1,3) memanggil procedure test di sub program

procedure test (1,3) memanggil function aku (2,lagi(x,y))

function aku membutuhkan function lagi(x,y)

pertama mencari nilai dari function lagi (x,y)

lagi (1,3)

apakah a>b

1>3 tidak, maka

apakah a=0

1=0 tidak, maka

lagi= lagi (3 mod 1,1) {3 mod 1 = 1}

lagi (1,1)

apakah a>b

1>1 tidak, maka

apakah a=0

1=0 tidak, maka

lagi = lagi (1 mod 1,1) {1 mod 1 =0}

lagi (0,1)

apakah a>b

0>1 tidak, maka

apakah a=0 iya, maka

lagi = b

lagi = 1

function aku (2,lagi(x,y))

function aku (2,1)

apakah a=1

2=1 tidak, maka

apakah b=1

1=1 iya, maka

aku= 2 x b

aku= 2 x 1

aku = 2

perulangan yang kedua

test (2,3) memanggil procedure test di sub program

procedure test (2,3) memanggil function aku (2,lagi(x,y))

function aku membutuhkan function lagi(x,y)

pertama mencari nilai dari function lagi (x,y)

lagi (2,3)

apakah a>b

2>3 tidak, maka

apakah a=0

2=0 tidak, maka

lagi= lagi (3 mod 2,2) {3 mod 2 = 1}

lagi (1,2)

apakah a>b

1>2 tidak, maka

apakah a=0

2=0 tidak, maka

lagi = lagi (2 mod 2,1) {2 mod 2 =0}

lagi (0,1)

apakah a>b

0>1 tidak, maka

apakah a=0 iya, maka

lagi = b

lagi = 1

function aku (2,lagi(x,y))

function aku (2,1)

apakah a=1

2=1 tidak, maka

apakah b=1

1=1 iya, maka

aku= 2 x b

aku= 2 x 1

aku = 2

perulangan yang ketiga

test (3,3) memanggil procedure test di sub program

procedure test (3,3) memanggil function aku (2,lagi(x,y))

function aku membutuhkan function lagi(x,y)

pertama mencari nilai dari function lagi (x,y)

lagi (3,3)

apakah a>b

3>3 tidak, maka

apakah a=0

3=0 tidak, maka

lagi= lagi (3 mod 3,3) {3 mod 3 = 0}

lagi (0,3)

apakah a>b

1>1 tidak, maka

apakah a=0

0=0 iya, maka

lagi = 3

function aku (2,lagi(x,y))

function aku (2,3)

apakah a=1

2=1 tidak, maka

apakah b=1

3=1 tidak, maka

aku= a x b + (aku(a-1,b) + aku(a,b-1))

a=2, b=3

aku (a-1,b)

a= a-1

a=2-1

a=1

b=3

apakah a=1

1=1 iya, maka

aku= 2 x a

aku= 2 x 1

aku= 2

aku (a, b-1)

a=2

b=b-1

b=3-1

b=2

apakah a=1

2=1 tidak, maka

apakah b=1

2=1 tidak, maka

aku= a x b + (aku (a-1,b) + aku (a,b-1))

a=2, b=2

aku (a-1,b)

a= a-1

a=2-1

a=1

b=2

apakah a=1

1=1 iya, maka

aku= 2 x a

aku= 2 x 1

aku= 2

aku (a,b-1)

a=2

b=b-1

b=2-1

b=1

apakah a=1

2=1 tidak, maka

apakah b=1

1=1 iya, maka

aku= 2 x b

aku= 2 x 1

aku= 2

aku= a x b + (aku (a-1,b) + aku (a,b-1))

aku= 2 x 2 + (2+2)

aku= 4 + 4

aku= 8

aku= a x b + (aku(a-1,b) + aku(a,b-1))

aku= 2 x 3 + ( 2 + 8 )

aku= 6 + 10

aku= 16

tampilan.

2

2

16

semoga jelas dg penjelasanku. sudah tak usahakan jelas dengan memberi huruf besar tebal, miring dan biasa.

kalau blum jelas hub. ak di [email protected]

,

Leave a Reply