OLIMPIADE SAIN PROVINSI (OSP) BIDANG INFORMATIKA 2009

Soal Bidang Informatika Halaman 1 dari 12 OSP 2009
OLIMPIADE SAIN PROVINSI (OSP)
BIDANG INFORMATIKA 2009
Untuk dikerjakan Selama 150 menit (2 ½ jam)
Bagian Informasi
Sistem penilaian:
Jawaban benar = 4, jawaban salah = –1, jawaban kosong = 0, jawaban ganda= –1 .
penjelasan sejumlah notasi yang digunakan dalam naskah soal.
 Bilangan 2n adalah bilangan pangkat dari 2 sebanyak n kali.
 N! adalah bilangan faktorial N yang berharga hasil perkalian semua bilangan bulat mulai dari 1 sampai
dengan N.
 Bilangan non-negatif adalah bilangan yang tidak berharga negatif (nol termasuk bilangan non-negatif).
 Notasi “A mod B”, dengan A dan B bilangan-bilangan bulat menghasilkan sisa pembagian A dengan B,
misalnya 10 mod 3 = 1 karena 10 jika dibagi 3 akan menyisakan 1.
 Notasi “A div B”, dengan A dan B bilangan-bilangan bulat menghasilkan hasil pembagian A dengan B,
dengan hanya mengambil bilangan bulatnya saja misalnya 10 div 3 = 3 karena 10 dibagi 3 berharga
3,333… dan bilangan bulatnya 3.
 Notasi “abs(A)” dengan A bilangan nyata akan menghasilkan harga positif dari bilangan tersebut.
Misalnya abs(-4.5) = 4.5 dan abs(3.2) = 3.2.
 Notasi “trunc(A)” dengan A bilangan nyata akan menghasilkan bilangan bulatnya saja, misalnya trunc(4.5)
= 4, dan trunc(-4.5) = -4.
 Notasi “sqrt(A)” dengan A bilangan nyata non-negatif maka menghasilkan akar dari A (atau A), misalnya
sqrt(9) = 3.
 Notasi “length(A)” dengan A merupakan string menghasilkan panjang dari string tersebut (termasuk
semua karakter di dalamnya), misalnya length(‘Viva TOKI 2008’) = 14.
 Operasi boolean adalah operasi logika . Untuk membantu mengingatnya berikut ini table opersi-operasi
yang muncul dalam naskah soal..
A B not A A and B A or B
FALSE FALSE TRUE FALSE FALSE
FALSE TRUE TRUE FALSE TRUE
TRUE FALSE FALSE FALSE TRUE
TRUE TRUE FALSE TRUE TRUE
 Ekspresi Boolean adalah ekspresi yang dibentuk atas satu atau lebih operasi Boolean dari satu atau lebih
variable Boolean.
 Sejumlah soal (atau jawaban) dituliskan dalam dua kolom, maka perhatikan penomoran soal dan
jawabannya.
Soal Bidang Informatika Halaman 2 dari 12 OSP 2009
Bagian Analitika (Logika) dan Arimatika (30 soal)
1. Apabila dua buah bilangan 2n dan (1+3n) (di
mana n adalah bilangan bulat positif) diakhiri
dengan digit yang sama, maka digit tersebut
adalah... (Catatan: bilangan dituliskan dengan
notasi desimal, tanpa diawali nol.)
A. 6
B. 7
C. 8
D. 5
E. 3
2. Dalam dua keranjang terdapat total 22 buah
bola. Bola-bola dalam keranjang pertama
masing-masing beratnya 15 gram, sementara
bola-bola dalam keranjang kedua masing-masing
beratnya 20 gram. Berapa selisih perbedaan
berat isi kedua keranjang yang mungkin bila
diketahui bahwa berat seluruh bola adalah antara
380 hingga 400 gram?
A. 90 gram
B. 65 gram
C. 75 gram
D. 105 gram
E. 85 gram
3. Nilai dari 262 – 252 + 242 – 232 + … + 42 – 32 +
22 – 12 = …
A. 431
B. 472
C. 371
D. 351
E. 451
4. Jika 4! berarti 4.3.2.1=24. Digit terakhir dari 1! +
2! + 3! + …+ 9999! adalah…
A. 1
B. 3
C. 5
D. 7
E. 9
5. Berapa persen bilangan antara 1 hingga 50 yang
jika dikuadratkan, digit terakhirnya sama dengan
1?
A. 1
B. 5
C. 10
D. 11
E. 20
6. Jumlah digit-digit pada bilangan 124 = 1+2+4 =
7. Berapakah jumlah digit-digit pada bilangan
8666.251000 ?
A. 1
B. 3
C. 5
D. 7
E. 9
7. Manakah yang nilainya paling besar?
A. 98101
B. 99100
C. 10597
D. 10198
E. 10099
8. Jika a, b, c, dan d adalah bilangan-bilangan bulat
yang tidak nol dan tidak negatif serta tidak ada
yang sama, dan diketahui pula a+b+c+d=18,
berapakah harga terbesar yang mungkin dari (ab
– cd) ?
A. 32
B. 25
C. 28
D. 18
E. 54
9. Ali ingin membuat 800 cc larutan alcohol 15%
dengan mencampur laruan alkohol 20% dan 4%.
Berapakah beda volume larutan alcohol 20%
dan volume 4% yang diperlukan ?
A. 110 cc
B. 106 cc
C. 280 cc
D. 24 cc
E. 300 cc
10. Berikut ini 4 pernyataan yang salah kecuali salah
satu yang benar: (1) “Sekarang bukan hari
Rabu”; (2) “Besok hari Jumat”; (3) “Kemarin
hari Minggu”; (4) “Pernyataan 2 dan 3 salah.”
Hari apakah sekarang?
A. Selasa
B. Rabu
C. Kamis
D. Jumat
E. Sabtu
Soal Bidang Informatika Halaman 3 dari 12 OSP 2009
11. Si Ableh dan si Bento adalah dua orang tukang
cat yang bekerja mencat sebuah ruangan. Suatu
ketika saat mereka telah melalui 6 jam bekerja
bersama di sebuah ruangan, si Ableh minta
pulang karena jatuh sakit. Si Bento terpaksa
meneruskannya sendiri dan baru selesai dalam
12 jam berikutnya. Biasanya mereka berdua
dapat menyelesaikannya dalam 10 jam saja. Bila
si Bento mengerjakannya sendirian dari awal
berapa lama waktu yang perlukan hingga selesai?
A. 15 jam
B. 36 jam
C. 30 jam
D. 24 jam
E. 20 jam
12. Jika Amir, Budi, dan Dodo adalah tiga anak yang
bersahabat. Biasanya mereka diberi uang jajan
beberapa lembaran uang ribuan, paling sedikit 1
lembar dan paling banyak 5 lembar. Pada suatu
hari Amir mendapatkan 3 lembar dan diketahui
hari itu tidak ada yang mendapatkan uang jajan
lebih banyak dari dua yang lainnya bila
dijumlahkan. Pernyataan manakah yang benar di
bawah ini pada hari itu:
(i) Dodo mungkin hanya mendapatkan satu
lembar ribuan.
(ii) Jika diketahui Dodo mendapat empat
lembar ribuan, maka Budi tidak mungkin
mendapat satu lembar ribuan.
(iii) Tidak mungkin ada anak yang mendapat
tepat lima lembar ribuan.
A. (i) dan (ii) benar.
B. (i) dan (iii) benar.
C. (ii) dan (iii) benar.
D. (i), (ii), dan (iii) benar.
E. Hanya satu pernyataan yang benar.
13. Pak Guru Umar menerima kertas hasil dari
fotocopy menggunakan mesin yang agak rusak dan
bertuliskan “541 .. 43 .. 157 = ??5”. Seharusnya
tanda “..” di ruas kiri adalah lambang
penjumlahan (“+”) atau pengurangan (“-“) dan
tanda “?” di ruas kanan adalah berisi masingmasing
satu dijit bilangan yang mungkin
berbeda. Berapakah seharusnya digit pertama
dari bilangan yang ada di ruas kanan?
A. 3
B. 4
C. 5
D. 6
E. 7
14. Jika n adalah sebuah bilangan bulat ganjil, maka:
(i) (n – 2)3(n2 + 2) pasti ganjil
(ii) (n2 + 4) n pasti genap
(iii) n3 – 3n pasti ganjil
(iv) 11n4 – (n – 2)2 pasti genap
Pernyataan yang benar adalah:
A. (i) dan (iv) saja.
B. (i) dan (iii) saja.
C. (i), (ii) dan (iii) saja.
D. (ii) dan (iii) saja.
E. (i) dan (ii) saja.
15. A, C, D, E masing-masing bernilai TRUE,
sementara B dan F masing-masing bernilai
FALSE. Dari kenyataan itu pernyataan mana
dari berikut ini yang bernilai FALSE?
A. ((A and B) or ((C and D) or E)) and F
B. ((A or B) and ((C or D) and E)) or F
C. ((A and B) and ((C or D) or E)) or F
D. (A and B) and ((C and D) and E) and F
E. ((A or B) or (C or D) or E) and F
16. Pak Udin setiap 6 tahun sekali mencat ulang
rumahnya, setiap 3 tahun sekali ia mengganti
dekorasi ruang tamunya, setiap 7 tahun sekali ia
mengganti mobilnya, dan setiap 4 tahun sekali ia
merayakan ulang tahunnya. Diketahui bahwa
pada tahun 2000 semua kegiatan itu dilakukan
bersamaan. Berapa kali dilakukan lebih dari satu
kegiatan dalam setahunnya dalam periode antara
tahun 2005 dan tahun 2017?
A. 8 kali
B. 9 kali
C. 10 kali
D. Kurang dari 8 kali
E. Lebih dari 10 kali
17. Terdapat 3 buah bilangan yang berbeda. Jika
setiap pasangan daripadanya dijumlahkan
menghasilkan 25, 37, dan 40. Beda antara dua
bilangan terbesar adalah ?
A. 3
B. 8
C. 10
D. 12
E. 15
Soal Bidang Informatika Halaman 4 dari 12 OSP 2009
18. Dari posisi 0 sumbu-x satu demi satu katak
robot berlompatan ke kanan (sumbu-x positif).
Setiap katak robot melompat dengan jarak
tertentu dan sama tapi berbeda lompatannya
satu katak dengan katak lainnya. Jarak lompatan
katak-katak adalah salah satu dari bilangan bulat
antara 2 sampai dengan 25. Di antara posisiposisi
bilangan bulat antara 50 dan 60 ada
berapa banyak posisi yang pasti tidak diinjak
katak-katak itu?
A. 2
B. 3
C. 5
D. 7
E. 10
19. Jika dari sebuah kotak pada gambar di samping
ini, Anda hanya boleh melangkah ke kotak lain
yang bersebelahan secara vertikal atau horizontal
(tidak boleh diagonal). Kotak bertanda ‘X’ tidak
boleh dilalui. Berapa banyak jalur berbeda dari
kotak A untuk sampai ke kotak Z dengan
jumlah langkah minimal?
A. 12
B. 36
C. 8
D. 28
E. 21
20. A sedang bertanding catur melawan B. A lebih
banyak memenangkan pertandingan daripada B.
Jika pertandingan ini dimenangkan oleh B,
manakah dari pernyataan berikut yang PALING
TIDAK MUNGKIN ?
A. A dan B memenangkan pertandingan
yang sama banyaknya.
B. A lebih banyak memenangkan
pertandingan daripada B.
C. A dan B sama-sama pernah kalah oleh
C.
D. B lebih banyak memenangkan
pertandingan daripada A .
E. C lebih banyak memenangkan
pertandingan daripada A dan B.
21. Lima orang A, B, C, D, dan E tinggal di sebuah
kampung yang terdiri atas 5 rumah dengan
nomor terurut dari kiri ke kanan: 1, 2, 3, 4, dan
5. Masing-masing orang memiliki hobi yang
berbeda-beda yaitu: memasak, memancing,
membaca buku, olahraga, dan berkebun. Jika
diketahui hal-hal sebagai berikut:
(i) rumah 2 ditinggali oleh orang yang suka
membaca buku.
(ii) C tinggal di antara A dan D.
(iii) A tidak bersebelahan dengan B dan B
tinggal tepat di sebelah kiri E.
(iv) C menyukai berkebun dan D tidak suka
memancing.
(v) Orang yang menyukai berolahraga tidak
bersebelahan dengan orang yang senang
membaca buku.
Hobi B adalah:
A. Memasak
B. Memancing
C. Membaca buku
D. Olahraga
E. Berkebun
22. Jika diketahui a, b, dan c adalah bilangan bulat,
maka yang manakah pernyataan berikut ini yang
tidak benar:
A. Jika a habis membagi b dan a habis
membagi c, maka a habis membagi b+c.
B. Jika a habis membagi b, maka bc habis
dibagi a untuk semua bilangan bulat c.
C. a habis membagi c jika a habis membagi
b dan b habis membagi c.
D. Jika a habis membagi b dan b habis
membagi c maka ab habis membagi c.
E. Jika b = ac dan a≠0, maka a habis
membagi b untuk semua bilangan bulat
c.
23. Tiga orang bersaudara dilahirkan dalam
keluarganya dengan selang waktu 2 tahun. Dua
tahun yang lalu jika ketiga bilangan umur mereka
dikalikan menghasilkan angka setengah dari
ketiga bilangan umur mereka dikalikan pada saat
ini. Berapakah ketiga bilangan umur mereka
dijumlahkan jika tahun lalu?
A. 20
B. 27
C. 32
D. 45
E. 58
X Z
X
X
A
Soal Bidang Informatika Halaman 5 dari 12 OSP 2009
24. Jika hari ini ia berada di kota L maka paling
cepat berapa hari lagi ia akan berada di kota M?
A. 1 hari lagi
B. 3 hari lagi
C. 2 hari lagi
D. 5 hari lagi
E. 4 hari lagi
25. Jika sekarang ia berada di kota N, maka berada
dimanakah 4 hari yang lalu jika diketahui selama
seminggu sebelumnya ia tidak berada di N dan
O, dan selalu mengunjungi kota yang berbeda
pada setiap harinya?
A. Pasti di K.
B. Pasti di M.
C. Pasti di L.
D. Antara L atau K.
E. Antara K atau M.
26. Diketahui bahwa hari ini ia berada di kota K dan
7 hari kemudian ia kembali ke kota K. Diketahui
pula bahwa sepanjang perjalanannya itu ia hanya
kembali ke kota K di hari ke 7 saja dan ia melalui
kota N sebanyak dua kali, serta ia selalu
mengunjungi kota yang berbeda pada setiap
harinya (satu hari di satu kota pasti besoknya
berada di kota lain). Pada hari keberapakah ia
berada di kota N untuk terakhir kalinya dalam
perjalanan itu?
A. 2
B. 6
C. 4
D. 3
E. 5
27. Pernyataan tambahan manakah dari berikut ini
yang PASTI benar jika keenam pernyataan di
atas benar?
(i) Tidak ada R yang merupakan P.
(ii) Beberapa dari X juga adalah P.
(iii) Beberapa dari X adalah juga M.
A. Hanya (i)
B. Hanya (i) dan (ii)
C. Hanya (i) dan (iii)
D. (i), (ii) dan (iii)
E. Tidak ada satu pun yang benar dari
ketiganya.
Deskripsi berikut ini untuk menjawab 3 pertanyaan berikutnya (no 24 – 26).
Seorang pedagang keliling berkeliling di 5 kota: K, L, M, N dan O. Minimal satu hari ia akan berada di satu
kota dan keesokan harinya mungkin ia masih berada di kota yang sama atau berpindah ke kota lainnya. Ia
memiliki aturan sbb.
 Jika sekarang ia berada di K, keesokan harinya ia bias tetap di K atau pindah ke L atau M.
 Jika sekarang ia berada di L, keesokan harinya ia pindah ke N atau O.
 Jika sekarang ia berada di M, keesokan harinya ia masih di M atau pindah ke K atau O.
 Jika sekarang ia berada di N, keesokan harinya ia pindah ke kota L atau kota O.
 Jika sekarang ia berada di O, keesokan harinya ia pindah ke kota K atau teap di kota O.
Deskripsi berikut ini untuk menjawab 4 pertanyaan berikutnya (no 27 – 30).
Berikut ini ada 6 pernyataan:
(1) Semua P dan X adalah N.
(2) Semua N kecuali P adalah X.
(3) Tidak ada P yang merupakan M.
(4) Tidak ada R yang merupakan N.
(5) Semua M adalah salah satu dari X atau R.
(6) Tidak ada Q yang merupakan X.
Soal Bidang Informatika Halaman 6 dari 12 OSP 2009
28. Manakah yang akan PASTI salah berdasar
keenam pernyataan di atas?
A. Beberapa R adalah X.
B. Semua R merupakan M.
C. Beberapa X bukanlah M.
D. tidak ada Q yang merupakan P.
E. Sejumlah Q bukan N, juga bukan R.
29. Dari keenam pernyataan tsb pernyataan
manakah yang dapat secara lojik merupakan
deduksi dari satu atau lebih pernyataan lainnya?
A. Pernyataan (2)
B. Pernyataan (3)
C. Pernyataan (4)
D. Pernyataan (5)
E. Pernyataan (6)
30. Jika pernyataan (2) ternyata SALAH, manakah
dari berikut ini yang HARUS benar?
A. Sejumlah P bukanlah N.
B. Sejumlah Q bukanlah X.
C. Sejumlah M bukanlah X atau pun R.
D. Sejumlah N bukanlah P atau pun X.
E. Salah satu dari “Beberapa dari X
merupakan P”, atau “beberapa dari N
bukanlah P ataupun X” adalah benar,
atau keduanya benar.
Bagian Algoritmika (30 soal)
31. perhatikan algoritma berikut
for a:= 1 to 10 do
case (a mod 5) of
0 : z[a] := 3;
1 : z[a] := 1;
2 : z[a] := 4;
3 : z[a] := 2;
4 : z[a] := 0;
end;
for b:= 10 downto 1 do begin
x:= 3*z[b];
z[b]:= a - b;
end;
for c:= 1 to 10 do
if (c mod 2 = 0) then z[c]:= z[c] + 5;
for d:= 10 downto 1 do
if (z[d] < 0) then
z[d] := z[d] * -1;
writeln(z[5]);
Apakah keluaran yang dihasilkan kode
diatas?
A. 9
B. 7
C. 5
D. 3
E. 1
32. Perhatikan deretan perintah berikut:
a := b + a; b := a – b; a := a – b;
Manakah dari pilihan berikut yang akibatnya
sama dengan deretan tsb?
A. b := b - a; a := b + a; a := b - a;
B. a := b + a; a := b - a; b := b - a;
C. a := b - a; b := b - a; a := b + a;
D. a := b - a; b := b - a; a := b - a;
E. a := b + a; b := b + a; a := b + a;
33. Perhatikan algoritma berikut.
c := 0;
d := 0;
while (a>b) do begin
a := a - b;
c := c + 1;
d := d + b;
end;
writeln(c, ‘, ‘,d);
Jika nilai a=34, b=11, maka keluaran dari
algoritma di atas adalah:
A. 3, 33
B. 1, 4
C. 0, 0
D. 6, 23
E. 5, 20
Soal Bidang Informatika Halaman 7 dari 12 OSP 2009
34. Perhatikan potongan program berikut
for i := 1 to n do begin
for j := 1 to n do begin
for k := 1 to n do begin
writeln('*');
end;
end;
end;
dengan sembarang harga n > 0, keluaran '*' akan
dicetak berulang-ulang dalam sejumlah baris
yang
A. merupakan fungsi kuadrat dari n
B. merupakan fungsi linier dari n
C. merupakan konstanta
D. merupakan fungsi pangkat empat dari n
E. merupakan fungsi kubik (pangkat 3)
dari n
35. Perintah “writeln((not A) or (B and C) or (A and
(not B) and C) or (A and B));” untuk semua
kemungkinan harga boolean A, B, C akan selalu
mencetaakan keluaran yang sama dengan:
A. writeln(((not (C or (not A))) and (not
B)) or (not A));
B. writeln((A and (B or C)) or C or (A and
C));
C. writeln((not B) or (not (A and B and
(not C))));
D. writeln((not (C or (not A))) and (not
B));
E. writeln((A and (B or C)) or C or ((not
A) and (not C)));
36. berikut ini struktur if-then-else
if (a and not (not c and not b)) or
not ((c and b) or not a)
then writeln('merah')
else writeln('putih');
Agar algoritma itu selalu menuliskan 'merah'
maka kondisi yang tepat adalah
A. a berharga true yang lain tidak penting
B. c berharga true yang lain tidak penting
C. b berharga false yang lain tidak penting
D. b berharga true yang lain tidak penting
E. a dan c keduanya harus true sementara
b tidak penting
37. Suatu array X berindeks dari 1 s.d. 10 dan setiap
elemennya berisi huruf-huruf berurutan dari 'a'
sampai 'j'. Suatu algoritma bekerja pada array X
tersebut sbb.
for i := 2 to 9 do
swap(X[i-1],X[i+1]);
//swap: menukarkan kedua isi array tsb
for i := 1 to 10 do write(X[i]);
Keluaran yang dituliskannya adalah:
A. cdefghijab
B. ebacdhfgij
C. abcdefghij
D. jihgfedcba
E. fghijabcde
38. Perhatikan algoritma berikut.
for i:=1 to 10 do
Tabel[(i*7 mod 10)+1] := (5+i*3) div 4;
Berapakah nilai dari Tabel[1] pertama?
A. 1
B. 3
C. 7
D. 8
E. 10
39. Perhatikan fungsi berikut
function f (x, a: integer) : boolean;
begin
if (x <= a) then
if (x = a)
then f := true
else f := false
else f := f (x-a, a);
end;
Manakah perintah berikut yang berisi
pemanggilan-pemanggilan fungsi f diatas
yang akan mencetak harga true?
A. writeln(f(57, 3) and f(62, 7));
B. writeln(f(53, 7) or f(62, 7));
C. writeln(f(24, 3) and f(42, 7));
D. writeln(f(24, 3) and f(47, 2));
E. writeln(f(43, 2) and f(72, 8));
Soal Bidang Informatika Halaman 8 dari 12 OSP 2009
40. Perhatikan pseudopascal berikut
readln(a);
b := 4;
while a > 0 do begin
b := b + (a mod 10);
a := a div 10;
end;
if ((b mod 3) > 0) or ((b mod 9) > 0)
then writeln('Angin bertiup')
else writeln('Angin semilir');
Berapakah nilai a yang akan menghasilkan
keluaran Angin semilir?
A. 20
B. 24
C. 21
D. 22
E. 23
Dua buah algoritma berikut untuk menjawab pertanyaan 41 - 42
Procedure satu (a: integer);
var i: integer;
begin
i := abs(a); // fungsi absolute
while i < 128 do begin
i := i * 2;
end;
writeln ( i );
end;
Procedure dua (a: integer);
var i: integer;
begin
i := abs(a); // fungsi absolute
repeat
i := i * 2;
until i >= 128;
writeln ( i );
end;
41. Bila masing-masing dipanggil dengan perintah “satu(47)” dan “dua(47)” maka yang benar mengenai keluaran
keduanya adalah:
A. Keduanya mencetak bilangan yang sama.
B. “satu(47)” mencetak bilangan yang besarnya dua kali yang dicetak “dua(47)”.
C. “satu(47)” mencetak bilangan lebih kecil dari yang dicetak “dua(47)”.
D. Keduanya tidak mencetak apapun juga
E. Salah satu atau keduanya mencetak bilangan 0.
42. Pilih pendapat yang benar dari berikut ini:
A. Kedua prosedur itu selalu mencetak bilangan yang berbeda untuk semua harga a
B. Kedua prosedur itu selalu mencetak bilangan yang sama untuk semua harga a
C. Kedua prosedur itu sama-sama tidak dapat bekerja untuk harga a bilangan negatif
D. Kedua prosedur tidak akan melakukan perintah “i := i * 2” untuk a = 128 karena kondisi tidak
terpenuhi.
E. Kedua prosedur itu sama-sama mendapatkan harga (2k .a) terkecil yang lebih besar atau sama dengan
dari 128, jika a berharga 1 s.d. 127.
Algoritma berikut untuk menjawab pertanyaan 43 - 44
jdata := n;
jml := 1;
for i := 0 to jdata-1 do begin
jml := 3*jml-1;
end;
writeln(jml);
43. Jika sebelumnya n berharga 3 berapakah yang
dicetak oleh potongan algoritma itu.
A. 58
B. 42
C. 14
D. 26
E. 15
44. Secara umum, dengan n bulat positif apakah
harga yang dicetak oleh program itu sebagai
fungsi dalam n.
A. 5n – 2
B. 3n – 3n-1 – … – 31 – 30
C. 3n-1 + 5
D. n2 + 5
E. 3n-1 + 3n-2 … + 31 + 1
Soal Bidang Informatika Halaman 9 dari 12 OSP 2009
Algoritma berikut untuk menjawab pertanyaan 45 - 47
procedure ulangulang (var n: integer);
begin
if n > 0 then begin
write(n mod 3);
n := n div 3;
ulangulang (n);
end;
end;
45. Pernyatan yang paling tepat mengenai algoritma
ulangulang di atas adalah:
A. Bilangan basis 3 dari bilangan desimal
yang diberikan.
B. Deretan bilangan 0, 1, dan 2 yang tidak
berpola.
C. Urutan dibaca dari belakang sama
dengan bilangan berbasis 3 dari n.
D. Prosedur yang menghasilkan sepertiga
dari bilangan n yang diberikan.
E. Prosedur yang menghasilkan bilangan
sisa hasil pembagian n oleh 3.
46. Apa yang akan dicetak saat pemanggilan
ulangulang (z) dengan z sebelumnya sudah
memiliki harga 49?
A. 0001
B. 1121
C. 0121
D. 1211
E. 1210
47. Jika perintah ulangulang(10000) dijalankan maka
akan menghasilkan keluaran yang terdiri atas
A. < 7 dijit
B. 7 dijit
C. 8 dijit
D. 9 dijit
E. > 9 dijit
Algoritma berikut untuk menjawab pertanyaan 48 – 49
function apaini(a: longint; b: longint): longint;
var x,y,r: longint;
begin
x := a;
y := b;
while (y <> 0) do
begin
r := x mod y;
x := y;
y := r;
end;
apaini := x;
end;
48. Jika fungsi tsb dipanggil dengan
“writeln(apaini(414, 662));” berapakah yang
dicetaknya?
A. 1
B. 8
C. 26
D. 414
E. 14
49. Jika fungsi tsb dipanggil dengan
“writeln(apaini(12345, 54321));” berapakah yang
dicetaknya?
A. 2
B. 3
C. 13
D. 7
E. 11
Soal Bidang Informatika Halaman 10 dari 12 OSP 2009
Algoritma berikut untuk menjawab pertanyaan 50 - 51
function apaitu(a: integer; b: integer;count: integer): integer;
begin
count := count + 1;
if (a > b)
then apaitu := apaitu(b, a,count)
else
if (a = 0) then apaitu := count
else apaitu :=
apaitu (b mod a, a,count)
end;
50. Jika fungsi tsb dipanggil dengan
“writeln(apaitu(1001, 1331,9));” berapakah yang
dicetaknya?
A. 2
B. 7
C. 3
D. 11
E. 13
51. Jika fungsi tsb dipanggil dengan
“writeln(apaitu(1000, 5040,7));” berapakah yang
dicetaknya?
A. 100
B. 50
C. 40
D. 10
E. 5
Deskripsi dan algoritma berikut untuk menjawab pertanyaan 52 - 54
Algoritma dengan pseudopascal berikut dimaksudkan untuk menjumlahkan bilangan-bilangan dalam suatu array
tabeldata hanya pada elemen array bernomor indeks kelipatan 3 (yaitu: 3, 6, 9, dst...) sampai dengan elemen ke 30
dan mencetak hasilnya ke layar. Diketahui, array tabeldata berindeks dari 1 sampai dengan 40
.
sum := 0;
I := . . . . // inisialisasi I
while I < hargabatas do
begin
sum := sum + tabeldata[I];
. . . . . . . . //increment I
end;
writeln(sum);
52. Berapakah harga inisialisasi I pada baris
bertanda "// inisialisasi i" agar algoritma
bekerja seperti yang diharapkan?
A. 0
B. 1
C. 2
D. 3
E. 4
53. Perintah apakah yang harus diisikan pada baris
bertanda ". . . . . . . // increment I" ?
A. I := 3
B. I := I + 1
C. I := I – 1
D. I := I + 2
E. I := I + 3
54. Berapakah harga yang diberikan pada variabel
hargabatas agar algoritma bekerja seperti yang
diharapkan?
A. 31
B. 25
C. 30
D. 35
E. 40
Soal Bidang Informatika Halaman 11 dari 12 OSP 2009
Algoritma berikut untuk menjawab pertanyaan 55 - 56
// array X berisi n bilangan dengan index dari 1 s.d. n
// fungsi Max(a,b) adalah mencari bilangan terbesar dari a atau b
ts := 0;
ms := 0;
for i := 1 to n do
begin
ts := Max(0, X[i] + ts);
ms := Max(ts, ms);
end;
writeln(ms);
55. Jika array X berisi harga-harga sebagai berikut: 1,
–3, 4, -2, -1, 6 (berarti juga n berharga 6) maka
algoritma akan mencetak harga?
A. -6
B. 4
C. 2
D. 6
E. 7
56. Jika array X berisi harga-harga sebagai berikut: 1,
-1, 1, -1, 1, -1, 1 (berarti juga n berharga 7) maka
algoritma akan mencetak harga?
A. -1
B. 4
C. 1
D. -3
E. 7
Algoritma berikut untuk menjawab pertanyaan 57 - 58
procedure Bingo(t);
begin
if (t < 2) then
writeln('Bingo!')
else
begin
Bingo(t-1);
Bingo(t-2)
end;
end;
57. Berapa kalikah 'Bingo!' dituliskan jika procedure
tersebut dipanggil dengan Bingo(6)?
A. 6
B. 1
C. 13
D. 20
E. 8
58. Untuk menghasilkan tulisan 'Bingo!' antara 100 -
200 kali procedure tsb harus dipanggil dengan
cara bagaimana?
A. Bingo(100)
B. Bingo(11)
C. Bingo(5)
D. Bingo(10)
E. Bingo(15)
59. Mana pseudopascal di bawah ini yang jika dijalankan dapat mengurutkan tabel berikut:
i 1 2 3 4 5 6 7 8 9 10
data[i] 2 0 1 3 6 7 5 10 0 1
menjadi berisi sebagai berikut (N=10):
i 1 2 3 4 5 6 7 8 9 10
data[i] 0 0 1 1 2 3 5 6 7 10
Soal Bidang Informatika Halaman 12 dari 12 OSP 2009
A. for i:=1 to N-1 do
for j:=i+1 to N do
if data[i]<data[j] then
begin
data[i]:=data[j];
data[j]:=data[i];
end;
B. for i:=1 to N do
for j:=N downto i+1 do
if data[j-1]>data[j]then
begin
temp:=data[j];
data[j]:=data[j-1];
data[j-1]:=temp;
end;
C. for i:=1 to N do
for j:=i+1 to N-1 do
if data[i]>=data[j] then
begin
temp:=data[i];
data[i]:=data[j];
data[j]:=temp;
end;
D. for i:=1 to N-1 do
for j:=i+1 to N do
if data[i]<data[j] then
begin
temp:=data[i];
data[i]:=data[j];
data[j]:=temp;
end;
E. for i:=1 to N-1 do
for j:=i to N-1 do
if data[i]<data[i+1]then
begin
temp:=data[i];
data[i]:=data[i+1];
data[i+1]:=temp;
end;
60. Mana pseudopascal di bawah ini yang paling tepat jika ingin melakukan pengecekan apakah bil merupakan
bilangan 2N (dengan 0<N<30, contohnya : 2, 4, 8, 16, dst.) atau bukan? Jika benar, akan menghasilkan
keluaran ‘Benar’. Jika salah, akan menghasilkan keluaran ‘Salah’.
A. readln(bil);
duaan:=false;
z := 2;
for i:=1 to 30 do
if (bil = z*2)
then duaan:=true;
else z := z*2;
if duaan
then writeln(‘Benar’)
else writeln(‘Salah’);
B. readln(bil);
duaan:=false;
while (bil>0) do begin
duaan:= (1=(bil mod
2))xor duaan;
bil:= bil div 2;
end;
if duaan
then writeln(‘Benar’)
else writeln(‘Salah’);
C. readln(bil);
duaan:=false;
while (bil>0) do begin
duaan:=
(1=(bil mod 2))or
duaan;
bil:=bil div 2;
end;
if duaan
then writeln(‘Benar’)
else writeln(‘Salah’);
D. readln(bil);
duaan:=false;
temp:=1;
while (bil>0) do begin
temp:=2*temp;
if (bil=temp)
then duaan:=true;
end;
if duaan
then writeln(‘Benar’)
else writeln(‘Salah’);
E. readln(bil);
duaan:=false;
temp:=1;
while ((bil-temp)>0) do
begin
temp:=temp*2;
if (bil=temp)
then duaan:=true;
end;
if duaan
then writeln(‘Benar’)
else writeln(‘Salah’);
Soal Bidang Informatika Halaman 13 dari 12 OSP 2009
Akhir Dari Naskah Soal

Leave a Reply

    Blogger news

    free counters

    About