Anda di halaman 1dari 20

KOMPUTER – PAKET 4

KOMPUTER – PAKET 4
KOMPUTER – PAKET 4

Bagian Non-Algoritmik
Relasi Rekurens
Relasi rekursi adalah persamaan yang mendefinisikan keterhubungan suatu suku di barisan
bilangan, dimana suku selanjutnya adalah fungsi dari suku-suku sebelumnya.

Misalkan ai adalah suku ke i barisan, maka an dapat dituliskan sebagai fungsi dari a1, a2, a3,
…, an-1. Nilai suatu suku tidak akan bisa didapatkan tanpa mengetahui suku awalnya. Salah
satu contoh dari relasi rekursi adalah barisan Fibonacci.

Barisan Fibonacci didefinisikan sebagai


F1 = 1, (disebut sebagai basis)
F2 = 2, (disebut sebagai basis)
Fn = Fn-1 + Fn-2, untuk n>2 (disebut sebagai rekurens)

Basis adalah suku-suku terkecil yang perlu diketahui untuk menyelesaikan setiap suku lain
yang lebih besar. Rekurens adalah

Barisan fibonacci :
F(1) = 1
F(2) = 1
F(3) = F(2) + F(1) = 2
F(4) = F(3) + F(2) = 3
F(5) = F(4) + F(3) = 5
F(6) = F(5) + F(4) = 8
F(7) = F(6) + F(5) = 13
...dst

Persoalan yang solusinya dapat dibagi ke dalam persoalan-persoalan yang sama namun lebih
kecil dapat kita modelkan ke dalam relasi rekursi.

Contoh :
Sebuah kontraktor diminta untuk merancang suatu gedung yang akan digosipkan akan
menjadi gedung tertinggi di dunia. Gedung tersebut diminta untuk dibangun dengan tinggi 10
meter. Anehnya, diperbolehkan untuk membuat tinggi lantai di gedung tersebut bermacam-
macam. Namun hanya terbatas pada tinggi 2, 3, dan 5 meter. Ada berapakah variasi gedung
yang dapat dibangun?
KOMPUTER – PAKET 4

Jawab :
Kita definisikan V(i) adalah banyaknya variasi pada gedung dengan ketinggian i.
Pertama-tama kita cari basis untuk barisan tersebut
V(0) = 0 (tidak ada variasi gedung yang dapat dibangun)
V(1) = 0 (tidak ada variasi gedung yang dapat dibangun)
V(2) = 1 (gedung dengan 1 lantai setinggi 2 meter)
V(3) = 1 (gedung dengan 1 lantai setinggi 2 meter)
V(4) = 1 (gedung dengan 2 lantai setinggi 2 meter+2 meter)
V(5) = 3 (terdapat 3 variasi gedung, yaitu satu gedung berisi satu lantai (5 meter), dan dua
gedung berisi 2 lantai (2+3 dan 3+2))

Untuk T>5 perhatikan bahwa :


Jika kita memiliki sisa T meter untuk membangun gedung, maka kita dapat memilih lantai
setinggi 2 meter, 3, meter, atau 5 meter sebagai lantai selanjutnya.

 Jika lantai selanjutnya adalah 2 meter, maka sisa tinggi sekarang adalah T-2 meter.
Banyak variasi sisanya adalah V(T-2)
 Jika lantai selanjutnya adalah 3 meter, maka sisa tinggi sekarang adalah T-3 meter.
Banyak variasi sisanya adalah V(T-3)
 Jika lantai selanjutnya adalah 5 meter, maka sisa tinggi sekarang adalah T-5 meter.
Banyak variasi sisanya adalah V(T-5)

Banyaknya variasi gedung untuk tinggi T adalah jumlah dari banyaknya variasi gedung untuk
tinggi T-2, banyaknya variasi gedung untuk tinggi T-3, dan banyaknya variasi gedung untuk
tinggi T-5. Dari tiga kasus tersebut diperoleh relasi rekursi V(T) = V(T-2)+ V(T-3)+ V(T-5)

V(6) = V(4) + V(3) + V(1) = 1 + 1 + 0 = 2


V(7) = V(5) + V(4) + V(2) = 3 + 1 + 1 = 5
V(8) = V(6) + V(5) + V(3) = 2 + 3 + 1 = 6
V(9) = V(7) + V(6) + V(4) = 5 + 2 + 1 = 8
V(10) = V(8) + V(7) + V(5) = 6 + 5 + 1 = 12
Jawaban : 12
KOMPUTER – PAKET 4

Contoh :
Ada berapakah banyaknya password biner 7 digit (hanya terdiri dari digit 0 atau 1) yang tidak
mengandung 2 digit nol bersebelahan (00) ?

Jawab :
Misalkan F(N) adalah banyaknya cara membuat password biner N-digit yang tidak
mengandung 2 digit nol bersebelahan.
F(1) = 2, yaitu 1 dan 0
F(2) = 3, yaitu 01, 10 dan 11

Untuk N>2 perhatikan bahwa kita dapat membagi ke dalam dua kasus :
1) Jika digit awalnya 1, maka akan tersisa N-1 digit yang masih bebas. Masalah ini
merupakan masalah awal tetapi untuk N-1 digit. Sehingga banyak variasi password
untuk kasus ini adalah F(N-1)
2) Jika digit awalnya 0, maka digit kedua pastilah 1 (jika digit kedua adalah 0, maka
akan ada dia nol bersebelahan) sehingga akan tersisa N-2 digit yang masih bebas.
Masalah ini merupakan masalah awal tetapi untuk N-1 digit. Sehingga banyak variasi
password untuk kasus ini adalah F(N-2)

Jadi relasi rekurens untuk N>2 adalah


F(N) = F(N-1) + F(N-2)

F(3) = F(2) + F(1) = 3 + 2 = 5


F(4) = F(3) + F(2) = 5 + 3 = 8
F(5) = F(4) + F(3) = 8 + 5 = 13
F(6) = F(5) + F(4) = 13 + 8 = 21
F(7) = F(6) + F(5) = 21 + 13 = 34
Jawaban : 34
KOMPUTER – PAKET 4

Paket Soal Relasi Rekurens

Deret bilangan Fibonacci didefinisikan secara rekursif sbb.


f1 = 1
f2 = 2
fn = fn-1 + fn-2 untuk semua n > 2
1. Berapa banyak kah bilangan Fibonacci antara 10 sampai dengan 100?
A. 90
B. 9
C. 5
D. 10
E. 12
(OSK 2006)

2. Dengan mengambil satu harga n kemudian anda menjumlahkan bilangan-bilangan tsb


mulai dari f1 s.d. fn maka berapakah n terkecil agar jumlah itu > 150?
A. 9
B. 10
C. 11
D. 15
E. 20
(OSK 2006)

3. Pak Dengklek membuat kandang baru untuk bebek‐bebeknya. Kandang baru ini luasnya
adalah 3 x N meter. Untuk menutupi seluruh permukaan lantai kandang baru tersebut, Pak
Dengklek sudah membeli sejumlah papan dengan ukuran 1 x 3 meter. Sayangnya Pak
Dengklek tidak memiliki gergaji, sehingga ia tidak dapat memotong papan‐papannya
seenak hati. Kini ia memikirkan bagaimana cara ia dapat menutupi semua permukaan
lantai dengan papan‐papan tersebut tanpa memotong satu papan pun dan tanpa ada dua
atau lebih papan bertumpuk. Dasar Pak Dengklek, ia tidak puas hanya dengan mengetahui
salah satu cara untuk menutup semua permukaan lantai, kini ia memikirkan berapa
banyak kemungkinan peletakan papan‐papan agar semua permukaan lantai tertutupi.
Berikut ini adalah tiga kemungkinan konfigurasi ubin untuk N=4
KOMPUTER – PAKET 4

Berapakah banyaknya kemungkinan konfigurasi ubin untuk N=10?


A. 13
B. 21
C. 19
D. 23
E. 28
(OSN 2008 sesi 3 dan OSK 2011)

4. Ada seekor katak yang ingin menyebrangi suatu sungai. Di sungai tersebut terdapat dua
jenis benda sungai, yaitu batu yang dapat ditempati katak, dan daun yang tidak dapat
ditempati katak. Seekor katak dapat melompat ke benda tepat di depannya atau dapat
melompatinya (dengan kata lain, menempati benda kedua yang ada di depannya). Berapa
banyak cara yang bisa ditempuh katak untuk menyebrangi sungai dengan selamat.
(dengan tidak menginjak daun) jika konfigurasi benda di sungai adalah sebagai berikut
(katak menyebrang dari kiri ke kanan)

A. 1
B. 3
C. 2
D. 6
E. 10
(OSK 2013)

5. Beberapa anak berbaris dalam satu barisan. Sang Guru memerintahkan mereka untuk
mengubah posisi barisan mereka, dengan aturan: setiap anak boleh memilih untuk tetap di
posisinya semula, atau bertukar dengan orang yang berdiri tepat di depan atau tepat di
belakangnya (apabila ada dan belum pernah bertukar). Jika ada 3 orang anak yang
berbaris, dengan urutan awal A, B, C, maka ada 3 kemungkinan hasil setelah perintah
Guru dijalankan, yaitu: tetap, berubah menjadi B,A,C, atau berubah menjadi A,C,B.
Berapa kemungkinan hasil yang mungkin apabila ada 15 anak yang berbaris?
A. 15
B. 30
C. 610
D. 987
E. 1021
(OSP 2012)
KOMPUTER – PAKET 4

6. Dengan menggunakan hanya simbol 0, 1 dan 2, kita ingin membentuk string sedemikian
rupa hingga selisih antara satu simbol dengan simbol di sebelahnya tidak lebih dari satu.
Sebagai contoh, kita dapat membentuk string 011221 dan 2211010, tetapi tidak boleh
membentuk string 102. Berapakah banyaknya string seperti ini yang panjangnya tepat 10
simbol?
A. 8119
B. 8229
C. 8339
D. 10000
E. 2312
(OSP 2012)

7. Di warung mbok Darmi terdapat 2 menu masakan padang, yaitu rendang dan cincang.
Selain itu terdapat juga 3 menu masakan sunda, yaitu nasi liwet, nasi tutug oncom dan
kupat tahu. Jika pak Dengklek tidak boleh makan nasi padang 2 hari berturut-turut, ada
berapa kemungkinan kombinsai menu masakann yang bisa disusun dalam 5 hari?
A. 810
B. 1773
C. 2583
D. 3125
E. 25

8. Sebuah kalkulator memiliki konfigurasi tombol sebagai berikut.

Dari satu tombol, kita hanya boleh menekan tombol yang tepat bersisian (kiri, kanan,
atas, bawah) dengan tombol tersebut pada kesempatan berikutnya. Berapakah
kemungkinan urutan penekanan tombol jika kita dapat menekan tombol kalkulator
maksimal tiga kali?
A. 10
B. 26
C. 74
D. 110
E. 200
(OSN 2010 sesi 1 dengan perubahan)
KOMPUTER – PAKET 4

Budi ingin bermain Loncat Berhadiah. Permainan dimainkan pada sebuah kotak
berukuran R x C petak. Petak kiri atas dinomori (1, 1) dan petak kanan bawah dinomori
(R, C). Pada setiap petak terdapat sebuah bilangan. Budi memulai permainan dengan
memilih salah satu petak pada kolom 1. Dari suatu petak (r, c), Budi harus berpindah ke
petak (r, c+1), (r+1, c+1), atau (r-1, c+1). Apabila Budi sudah berada pada kolom C,
permainan berakhir. Budi mendapat poin berupa jumlah seluruh bilangan yang terdapat
pada petak-petak yang dilalui Budi.
9. Berapa poin maksimum yang dapat diperoleh Budi pada kotak permainan di bawah ini?

A. 13
B. 14
C. 15
D. 16
E. 17
(OSP 2014)

10. Berapa poin maksimum yang dapat diperoleh Budi pada kotak permainan di bawah ini?

A. 37
B. 38
C. 39
D. 40
E. 41
(OSP 2014)
KOMPUTER – PAKET 4

Bagian Algoritmik
Rekursi
Secara umum, rekursi adalah sesuatu yang didefinisikan dari dirinya sendiri. Secara khusus di
dunia ilmu komputer, rekursi adalah metode pemecahan masalah dengan memper-kecil
permasalahan menjadi lebih kecil, lebih kecil, dan lebih kecil lagi hingga permasalahan
menjadi cukup kecil untuk diselesaikan secara trivial. Algoritma rekursi terdiri dari 2 bagian :

1. Basis, kasus terkecil yang dapat diselesaikan secara trivial


2. Rekurens, kasus yang didefinisikan dari kasus lain yang lebih kecil

Algoritma rekursi yang benar harus memenuhi 3 syarat berikut :

1. Algoritma rekursi harus memiliki basis


2. Algoritma rekursi harus mengubah state-nya dan mengarah ke basis
3. Algoritma rekursi harus memanggil dirinya sendiri.

Contoh dari bentuk rekursi yang sering dipakai adalah Fibonacci :

( ) {
( ) ( )

Dalam notasi pseudocode, fungsi fibonacci ini dapat dituliskan menjadi :

function fib(n : longint) : longint;


begin
if n<=2 then
fib := 1
else
fib := fib(n-1) + fib(n-2);
end;

Aksi pada bagian if disebut sebagai basis, karena akan menjadi penghenti dari fungsi rekursi
tersebut, sedangkan aksi pada bagian else disebut sebagai rekurens.

Jika fungsi fibonacci di atas dipanggil dengan fib(5), maka yang terjadi adalah :
(Daerah dalam kotak menandakan bahwa kontrol program berpindah ke pemanggilan fungi
tersebut. Dan setelah nilai ditemukan, kontrol program kembali ke fungsi pemanggil.)
KOMPUTER – PAKET 4

Contoh :
function panggil1(x:longint):longint;
begin
if (x<3) then panggil1:=0
else panggil1:=panggil1(x-1)+2*panggil1(x-2)+3;
end;
Bila fungsi di atas dipanggil dengan panggil1(7), maka hasil keluarannya adalah:
A. 7
B. 28
C. 34
D. 63
E. 97

Jawab :
Kita tidak perlu menuliskan langkah-langkah rekursi sesuai dengan kontrol program. Kita
cukup hitung nilai dari panggil1() untuk parameter 1, lalu 2, lalu 3, dan seterusnya. Cara
seperti ini disebut sebagai bottom up.
panggil1(1) = 0
panggil1(2) = 0
panggil1(3) = panggil1(2) + 2.panggil1(1) + 3 = 3
panggil1(4) = panggil1(3) + 2.panggil1(2) + 3 = 6
panggil1(5) = panggil1(4) + 2.panggil1(3) + 3 = 15
panggil1(6) = panggil1(5) + 2.panggil1(4) + 3 = 30
panggil1(7) = panggil1(6) + 2.panggil1(5) + 3 = 63
Jawaban : D
KOMPUTER – PAKET 4

Paket Soal Rekursi

1. Perhatikan potongan program berikut


procedure TOKI(k:integer);
begin
if (k >1) then
begin
if k mod 2 =0 then
TOKI(k div 2)
else
TOKI(3*k+1);
if k mod 5 =1 then
write('T');
if k mod 5 =2 then
write('O');
if k mod 5 =3 then
write('K');
if k mod 5 =4 then
write('I');
end;
end;
Berapa banyak huruf ‘K’ yang tertulis bila dipanggil TOKI(20)?
A. 5
B. 4
C. 3
D. 2
E. 1
(OSK 2011)

2. Perhatikan potongan program berikut


procedure Star (t: integer);
begin
if (t < 2) then
write('*')
else
begin
Star (t-1);
Star (t-2)
end;
end;
KOMPUTER – PAKET 4

Berapa kalikah simbol '*' dituliskan jika procedure tersebut dipanggil dengan perintah
Star(6)?
A. 8
B. 6
C. 1
D. 13
E. 2
(OSK 2010)

3. Perhatikan potongan program berikut


function f(n: int)
begin
if n=0 then f:=0
else f := n + f(n-1);
end;
Berapakah nilai f(5)?
A. 125
B. 0
C. 5
D. 15
E. 25
(OSK 2006)

4. Perhatikan potongan program berikut


function wow(x:integer):integer;
begin
if (x < 2) then wow := x
else wow := wow(x-2) + 3*wow(x-1);
end;
Apa yang akan dikembalikan pada pemanggilan fungsi wow(8)?
A. 3620
B. 3760
C. 3824
D. 3927
E. 4126
(OSK 2014)
KOMPUTER – PAKET 4

5. Perhatikan potongan program berikut


var N, hasil: integer;

procedure solve(X:integer);
begin
if (X>1) then
begin
hasil:=hasil+1;
solve(X div 2 + X mod 2);
end;
end;

begin
readln(N);
hasil:=0;
solve(N);
writeln(hasil);
end.
Bila diberi masukan bilangan 77, maka program akan memberikan keluaran …
A. 5
B. 6
C. 7
D. 8
E. 9
(OSP 2013 dengan perubahan)

6. Perhatikan potongan program berikut


const x : array[0..9] of integer = (2,6,4,3,3,7,7,3,4,8);

function inijuga(a: integer; b: integer): integer;


var t: integer;
begin
if (a > b) then inijuga := inijuga(b,a);

if (a=b) then inijuga := x[a]


else
begin
t := (a+b) div 2;
inijuga := inijuga(a, t) + inijuga(t+1, b);
end;
end;
Pemanggilan melalui perintah “writeln(inijuga(0,9))” akan mencetakkan harga
berapakah?
KOMPUTER – PAKET 4

A. 44
B. 47
C. 16
D. 14
E. 98
(OSK 2007)

Perhatikan potongan program berikut untuk mengerjakan soal 6-7


function mangga(rambutan : integer) : integer;
begin
if (rambutan = 1) then mangga := 1 else
if (rambutan mod 2 = 1) then
mangga := mangga(3*rambutan + 1)
else
mangga := mangga(rambutan div 2);
end;

function jeruk(anggur, melon : integer) : integer;


begin
if (melon = 1) then jeruk := 0 else
jeruk := mangga(anggur)*anggur + jeruk(anggur, melon-1);
end;
7. Berapakah hasil pemanggilan fungsi mangga(49)?
A. 1
B. 7
C. 14
D. 21
E. 49
(OSK 2014)

8. Berapakah hasil pemanggilan fungsi jeruk(25, 20)?


A. 425
B. 450
C. 475
D. 500
E. 525
(OSK 2014)
KOMPUTER – PAKET 4

Perhatikan potongan program berikut


function f(a : integer):integer;
begin
if a=0 then
f:= 1
else
f:= 2*f(a-1);
end;

function g(b: integer):integer;


begin
if b=0 then
g:= f(b)
else
g:= f(b) + g(b-1);
end;
9. Berapakah nilai g(3)?
A. 1
B. 3
C. 4
D. 15
E. 16
(OSK 2014 dengan perubahan)

10. Berapakah nilai g(10)?


A. 1
B. 9
C. 10
D. 1023
E. 1024
(OSK 2014 dengan perubahan)
KOMPUTER – PAKET 4

Jawaban dan Pembahasan Modul 3


Analitik
Fungsi dan Prosedur
1 - 11 D
2 D 12 E
3 B 13 B
4 E 14 C
5 A 15 D
6 C 16 E
7 B 17 B
8 A 18 C
9 B 19 E
10 D 20 C

1. Karena Bobbi sedang dalam perjalanan, maka Bobbi bukanlah ahli biologi, dokter
maupun ahli kimia (karena mereka sedang duduk bersebelahan). Sehingga Bobbi adalah
penulis.
Ket : terdapat kesalahan pada pilihan jawaban.
Jawaban : D

2. Dengan memanfaatkan tabel pemasangan


- Karena Anjing dan Kambing sekarang sedang hamil, maka keduanya betina,
sedangkan Kucing dan Hamster jantan.
- Si Anjing lebih muda dari Virgo, tapi lebih tua dari Aquarius yang sebentar lagi akan
memiliki anak. Dapat disimpulkan bahwa Anjing bukan Virgo dan bukan Aquarius.
Aries Aquarius Libra Virgo
Anjing (B) x x
Kucing (J)
Hamster (J)
Kambing( B)
Karena Aquarius akan memiliki anak, maka Aquarius pastilah kambing
Sementara hewan lain bukan Aquarius, dan nama-nama yang lain bukanlah kambing
Aries Aquarius Libra Virgo
Anjing (B) x x
Kucing (J) x
Hamster (J) x
Kambing( B)  x x
KOMPUTER – PAKET 4

- Virgo lebih tua dari Hamster. Sehingga Virgo bukan Hamster.


Aries Aquarius Libra Virgo
Anjing (B) x x
Kucing (J) x
Hamster (J) x x
Kambing( B)  x x
Sehingga dapat disimpulkan bahwa pastilah Virgo adalah kucing
Jawaban : D

3. Dengan menggunakan tabel pemasangan dan membagi kasus, diperoleh yang berprofesi
sebagai pengarang adalah Riko
Jawaban : B

4. Karena pedagang V lebih dari pedagang I maupun II, sedangkan pedagang I lebih dari
pedagang III maupun IV, maka yang terbesar adalah pedagang V.
Jawaban : E

5. Q pasti dikunjungi pertama kali, karena :


- R tidak boleh dikunjungi pertama kali
(Tidak boleh mengunjungi warung R pada hari Senin.)
- P tidak boleh dikunjungi pertama kali
(Harus mengunjungi R terlebih dahulu daripada P)
- S tidak boleh dikunjungi pertama kali
(Harus mengunjungi P terlebih dahulu daripada S)
- T tidak boleh dikunjungi pertama kali
(Harus mengunjungi Q terlebih dahulu daripada T)
Jawaban : A

6. Gambarkan setiap informasi :


- E berada 3 peringkat di bawah B dan 4 peringkat di atas F
(Karena hanya ada 8 bilangan, maka B paling atas dan F paling bawah)
F _ _ E _ _ _ B (terurut dari paling bawah ke paling atas)

- Peringkat A lebih baik dari D, dan peringkat D lebih baik dari H. Selisih peringkat
A dan D sama dengan selisih peringkat D dan H
H<D<A
- Peringkat G lebih baik dari peringkat C
C<G
Jika selisih peringkat A dan D adalah 1, maka hanya ada satu kemungkinan, yaitu :
FCGEHDAB
Jika selisih peringkat A dan D adalah 2, maka hanya ada satu kemungkinan, yaitu :
FCHEDGA B
Jawaban : C
KOMPUTER – PAKET 4

7. Satu-satunya yang mungkin adalah Heru


Jawaban : B

8. Satu-satunya yang mungkin adalah Jono, Marta


Jawaban : A

9. Bagi kasus berdasarkan aturan aturan yang berlaku


- C paling suka duduk persis di belakang supir

_ S
__C
___

- E sedang tidur, sehingga dia duduk di sebelah jendela pada barisan paling
belakang

_ S _ S _ S
__C __C __C
E__ _E_ __E

- A-B merupakan sebuah pasangan dimana mereka harus duduk bersebelahan


- D-A sedang bermusuhan, sehingga mereka tidak boleh duduk berdekatan dan
harus ada orang di antara mereka berdua (baik secara horizontal, vertical, maupun
diagonal)
(Kita perlu mencari posisi A dan B bersebelahan dimana D tidak berdekatan
dengan A)
_ S D S _ S D S _ S D S D S
ABC __C D_C __C ABC __C __C
E_ D EAB EBA EBA _ED ABE BAE

- G harus duduk di samping jendela


- F mabuk darat, sehingga tidak boleh duduk di barisan paling belakang
tidak D S G S D S tidak D S D S
ada GFC DFC GFC ada GFC GFC
solusi EAB EBA EBA solusi ABE BAE

Jawaban : B

10. Dari hasil penelusuran diperoleh yang berada di posisi depan, selain G adalah D
Jawaban : D
KOMPUTER – PAKET 4

11. a = (12, 30, 21, 8, 6, 9, 1, 7)


val = 12
h=1
lakukan loop i=2 sampai 8
saat k=2 → cek(a[2] < 12)? tidak
saat k=3 → cek(a[3] < 12)? tidak
saat k=4 → cek(a[4] < 12)? ya → h=2, tukar a[2] dan a[4] → a = (12, 8, 21, 30, 6, 9, 1, 7)
saat k=5 → cek(a[5] < 12)? ya → h=3, tukar a[3] dan a[5] → a = (12, 8, 6, 30, 21, 9, 1, 7)
saat k=6 → cek(a[6] < 12)? ya → h=4, tukar a[4] dan a[6] → a = (12, 8, 6, 9, 21, 30, 1, 7)
saat k=7 → cek(a[7] < 12)? ya → h=5, tukar a[5] dan a[7] → a = (12, 8, 6, 9, 1, 30, 21, 7)
saat k=8 → cek(a[8] < 12)? ya → h=6, tukar a[6] dan a[8] → a = (12, 8, 6, 9, 1, 7, 21, 30)
tukar a[1] dan a[6], a = (7, 8, 6, 9, 1, 12, 21, 30)
Banyaknya zz() dipanggil adalah 6 kali
Jawaban : D

12. Sama dengan di atas


Jawaban : E

13. Perhatikan bahwa prosedur esrever akan menukar dua buah variabel global (i, j) lalu
menulisnya dalam posisi terbalik. Outputnya adalah 100 2
Jawaban : B

14. Karena prosedur XYZ menerima variabel x dan y dengan passing by reference, maka
perubahan terhadap a dan b akan berpengaruh terhadap x dan y.
Dalam prosedur, nilai a dan b ditukar (mengakibatkan nilai x dan y tertukar), lalu
dilakukan aksi penambahan 10 terhadap x. Isi x di akhir prosedur adalah 15
Jawaban : C

15. Perhatikan bahwa prosedur swap(a, b, c) akan melakukan penukaran nilai-nilai dari (a
sampai b) dan (b+1 sampai c)
Array x setelah pemanggilan swap adalah (1, 5, 6, 2, 3, 4)
Jawaban : D

16. Array x setelah pemanggilan swap adalah (3, 5, 1, 6, 4, 2)


Jawaban : E

17. Idenya adalah menukarkan setengah bagian dari array, dengan setengah bagian lain.
Kemudian lakukan hal yang sama pada kedua setengah bagian tersebut secara rekursif.
Butuh minimal 17 kali pemanggilan swap :
Jawaban : B

18. Fungsi yyy akan menghasilkan nilai mutlak dari a (parameter fungsi).
Fungsi zzz akan menghasilkan penjumlahan nilai mutlak dari bilangann-bilangan dari x
sampai y (parameter fungsi).
KOMPUTER – PAKET 4

Sehingga keluaran dari fungsi zzz(1, 10) adalah


|-1| + |2| + |-3| + |4| + |-5| + |6| + |-7| + |8| + |-9| + |10| = 55
Jawaban : C

19. Karena nilai x lebih besar dari nilai y maka perulangan for tidak melakukan aksi apapun
Hasil pemanggilan fungsi zzz(10, 1) adalah 0
Jawaban : E

20. Perhatikan bahwa jika z bernilai positif, maka hitung(z) juga bernilai positif
Untuk suatu nilai z, program akan mencetak * sebanyak 1+2+3+…+z buah.
z yang harus dimasukkan adalah 5
Jawaban : C

Anda mungkin juga menyukai