Komputer

olimpiade sains bidang informatika

15:16 Ardiya

Buku Panduan Olimpiade Sains Bidang Komputer

Kisi-Kisi dan Materi Uji Olimpiade Sains

BIDANG INFORMATIKA/KOMPUTER

Disertai Contoh-contoh dan Pembahasan


Diberikan fungsi berikut

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

begin

count := count + 1;

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

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

else apaitu := apaitu (b mod a, a)

end;

Pertanyaan: Jika fungsi tsb dipanggil dengan “
writeln(apaitu(1001, 1331));” berapakah

yang dicetaknya?

Pembahasan:
Fungsi tersebut adalah fungsi rekursif dengan nama apaitu. Itu

ditandai adanya pemanggilan fungsi bernama sama dengan dirinya. Di dalam

fungsi ada struktur bersarang (nested structure) if-then-else membentuk 3

pencabangan.

-
Cabang pertama, jika harga dalam variabel a lebih besar dari b, algoritma

akan melakukan pemanggilan rekursif dengan penukaran posisi variabel a

menjadi b dan b menjadi a.

-
Cabang kedua, jika a berharga 0 maka akan dikembalikan harga b.

-
Cabang ketiga, tentu untuk a lebih kecil dari b, akan memanggil secara

rekursif dengan posisi harga a diberi harga (b mod a) dan posisi harga b

diberi harga a.

Untuk semua cabang, tidak ada operasi lain sehingga hasilnya langsung

dikembalikan ke pemanggil sebelumnya. Operasi pada variabel count tidak

berarti apa-apa berkenaan dengan pertanyaan ini.

Pemanggilan
apaitu(1001, 1331) akan membawa ke cabang ketiga lalu

memanggi
apaitu(330, 1001). Kemudian akan membawa ke cabang ketiga lagi

lalu memanggil
apaitu(11, 330). Kembali lagi ke cabang ketiga dan memanggil

apaitu(0, 11)
. Pemanggilan terakhir ini akan memberikan harga variabel b

menjadi harga yang dikembalikan dari fungsi tersebut, kemudian diteruskan

ke pemanggilan sebelumnya, hingga ke pemanggilan pertama. Jadi

jawabannya 11.

Catatan: Jika anda dapat memahami algoritma-algoritma pada kedua contoh

di atas dengan baik, maka contoh ini dan contoh di atas menghasilkan harga

fungsi yang tepat sama.
ini hanya separuh soal dan kisi lainya bisa di download di sini

Related Posts Plugin for WordPress, Blogger...

You Might Also Like

0 comments

boleh komen ,asal pakai hati ya...dan blog ini sudah dofollow

note:blog ini tidak membatasi orang yang berkomentar dengan nama Anonymous, seperti blog yang lain,jadi silahkan berkomentar sesuka hati ..!

Popular Posts

Contact Form