About Me

Hai, saya Rosihan Ari Yuana. Saya sehari-hari adalah mengajar di Universitas Sebelas Maret.

Bidang riset saya tentang adaptive learning, computer aided learning, dan datascience

Selain itu, saya juga seorang penulis buku dan blogger.

More about me...

Pembahasan Soal Olimpiade Komputer Kabupaten #1

Berikut ini adalah pertanyaan dan pembahasan dari soal yang diambil dari “Seleksi Olimpiade Komputer Tingkat Kabupaten/Kota 2007”. Insya Allah pembahasan ini direncanakan akan ditulis secara berseri.

Pertanyaan :

Jika M(x, y) adalah pernyataan “x lebih besar dari y”, dan terdapat deretan perintah dalam pseudo Pascal berikut:

while M(x, y) do
begin
  x := x - 10;
  y := y + 2;
end;

dengan harga mula-mula x = 70 dan y = 5, berapakah harga y setelah deretan keluar dari loop while?

A. 11
B. 15
C. 17
D. 21
E. 25

Jawab:

OK… akan kita bahasa pertanyaan di atas. Perhatikan bahwa loop while memiliki syarat “x lebih besar dari y”. Sehingga selama syarat tersebut terpenuhi (syarat bernilai TRUE) maka looping akan terus dijalankan. Dan proses looping akan berhenti apabila syarat sudah tidak terpenuhi (bernilai FALSE) Perhatikan jalannya proses berikut ini:

x = 70, y = 5
Cek (x > y) -> (70 > 5) -> TRUE
    x = x - 10 = 70 - 10 = 60
    y = y + 2 = 5 + 2 = 7
Cek (x > y) -> (60 > 7) -> TRUE
    x = x - 10 = 60 - 10 = 50
    y = y + 2 = 7 + 2 = 9
Cek (x > y) -> (50 > 9) -> TRUE
    x = x - 10 = 50 - 10 = 40
    y = y + 2 = 9 + 2 = 11
Cek (x > y) -> (40 > 11) -> TRUE
    x = x - 10 = 40 - 10 = 30
    y = y + 2 = 11 + 2 = 13
Cek (x > y) -> (30 > 13) -> TRUE
    x = x - 10 = 30 - 10 = 20
    y = y + 2 = 13 + 2 = 15
Cek (x > y) -> (20 > 15) -> TRUE
    x = x - 10 = 20 - 10 = 10
    y = y + 2 = 15 + 2 = 17
Cek (x > y) -> (10 > 17) -> FALSE
    STOP

Setelah proses looping while selesai, nilai y terakhir adalah 17 (Jawaban yang benar C).


Pertanyaan :

Untuk menukar isi dua variabel integer (keduanya bernama a dan b) tanpa bantuan variabel lain adalah…

A. a := b – a; b := b – a; a := b + a;
B. b := b – a; a := b + a; a := b – a;
C. a := b + a; a := b – a; b := b – a;
D. a := b – a; b := b – a; a := b – a;
E. a := b + a; b := b + a; a := b + a;

Jawab :

Untuk menjawab pertanyaan di atas, kita akan cek terlebih dahulu semua alternatif jawaban. Kita coba untuk pemisalan awal nilai a = 5 dan b = 3. Kita akan mencari jawaban sedemikian hingga hasil akhir dari proses perhitungan menghasilkan a = 3 dan b = 5.

Option A.

a = b – a = 3 – 5 = -2
b = b – a = 3 – (-2) = 5
a = b + a = 5 + (-2) = 3
Jadi a = 3 dan b = 5 (BENAR)

Option B.

b = b – a = 3 – 5 = -2
a = b + a = -2 + 5 = 3
a = b – a = -2 – 3 = -5
Jadi a = -5 dan b = -2 (SALAH)

Option C.

a = b + a = 3 + 5 = 8
a = b – a = 3 – 8 = -5
b = b – a = 3 – (-5) = 8
Jadi a = -5 dan b = 8 (SALAH)

Demikian seterusnya kita cek untuk option D dan E. Untuk option D dan E juga diperoleh hasil yang salah, sehingga jawaban yang benar adalah A.

 

Saya seorang dosen dan peneliti di Universitas Sebelas Maret. Bidang penelitian saya tentang: adaptive learning, datascience, dan computer aided learning. Selain itu saya juga seorang blogger, serta penulis buku tentang pemrograman, dan matematika.

Leave a Reply