Bagian Informasi
Sistem penilaian:
Jawaban benar = 4, jawaban salah = –1, jawaban kosong = 0, jawaban ganda= –1 .
• 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.
1. Apabila dua buah bilangan 2n dan (1+3n) (di 6. Jumlah digit-digit pada bilangan 124 = 1+2+4 =
mana n adalah bilangan bulat positif) diakhiri 7. Berapakah jumlah digit-digit pada bilangan
dengan digit yang sama, maka digit tersebut 8666.251000 ?
adalah... (Catatan: bilangan dituliskan dengan A. 1
notasi desimal, tanpa diawali nol.) B. 3
C. 5
A. 6 D. 7
B. 7 E. 9
C. 8
D. 5 7. Manakah yang nilainya paling besar?
E. 3
A. 98101
2. Dalam dua keranjang terdapat total 22 buah B. 99100
bola. Bola-bola dalam keranjang pertama C. 10597
masing-masing beratnya 15 gram, sementara D. 10198
bola-bola dalam keranjang kedua masing-masing E. 10099
beratnya 20 gram. Berapa selisih perbedaan
berat isi kedua keranjang yang mungkin bila 8. Jika a, b, c, dan d adalah bilangan-bilangan bulat
diketahui bahwa berat seluruh bola adalah antara yang tidak nol dan tidak negatif serta tidak ada
380 hingga 400 gram? yang sama, dan diketahui pula a+b+c+d=18,
berapakah harga terbesar yang mungkin dari (ab
A. 90 gram – cd) ?
B. 65 gram
C. 75 gram A. 32
D. 105 gram B. 25
E. 85 gram C. 28
D. 18
3. Nilai dari 262 – 252 + 242 – 232 + … + 42 – 32 + E. 34
22 – 12 = …
9. Ali ingin membuat 800 cc larutan alcohol 15%
A. 431 dengan mencampur laruan alkohol 20% dan 4%.
B. 472 Berapakah beda volume larutan alcohol 20%
C. 371 dan volume 4% yang diperlukan ?
D. 351
E. 451 A. 110 cc
B. 106 cc
4. Jika 4! berarti 4.3.2.1=24. Digit terakhir dari 1! + C. 280 cc
2! + 3! + …+ 9999! adalah… D. 24 cc
A. 1 E. 70 cc
B. 3
C. 5 10. Berikut ini 4 pernyataan yang salah kecuali salah
D. 7 satu yang benar: (1) “Sekarang bukan hari
E. 9 Rabu”; (2) “Besok hari Jumat”; (3) “Kemarin
hari Minggu”; (4) “Pernyataan 2 dan 3 salah.”
5. Berapa persen bilangan antara 1 hingga 50 yang Hari apakah sekarang?
jika dikuadratkan, digit terakhirnya sama dengan
1? A. Selasa
A. 1 B. Rabu
B. 5 C. Kamis
C. 10 D. Jumat
D. 11 E. Sabtu
E. 20
A. 20
B. 27
C. 32
D. 45
E. 58
24. Jika hari ini ia berada di kota L maka paling 26. Diketahui bahwa hari ini ia berada di kota K dan
cepat berapa hari lagi ia akan berada di kota M? 7 hari kemudian ia kembali ke kota K. Diketahui
pula bahwa sepanjang perjalanannya itu ia hanya
A. 1 hari lagi kembali ke kota K di hari ke 7 saja dan ia melalui
B. 3 hari lagi kota N sebanyak dua kali, serta ia selalu
C. 2 hari lagi mengunjungi kota yang berbeda pada setiap
D. 5 hari lagi harinya (satu hari di satu kota pasti besoknya
E. 4 hari lagi berada di kota lain). Pada hari keberapakah ia
berada di kota N untuk terakhir kalinya dalam
25. Jika sekarang ia berada di kota N, maka berada perjalanan itu?
dimanakah 4 hari yang lalu jika diketahui selama
seminggu sebelumnya ia tidak berada di N dan A. 4
O, dan selalu mengunjungi kota yang berbeda B. 2
pada setiap harinya? C. 6
D. 3
A. Pasti di K. E. 5
B. Pasti di M.
C. Pasti di L.
D. Antara L atau K.
E. Antara K atau M.
A. Pernyataan (2)
B. Pernyataan (3)
C. Pernyataan (4)
D. Pernyataan (5)
E. Pernyataan (6)
34. berikut ini struktur if-then-else Agar algoritma itu selalu menuliskan 'merah'
maka kondisi yang tepat adalah
if (a and not (not c and not b)) or not ((c
and b) or not a) A. a berharga true yang lain tidak penting
then writeln('merah') B. c berharga true yang lain tidak penting
else writeln('putih'); 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
for i:=1 to 10 do A. 1
Tabel[(i*7 mod 10)+1] := (5+i*3) div 4; B. 3
C. 7
D. 8
E. 10
36. Suatu array X berindeks dari 1 s.d. 10 dan setiap Keluaran yang dituliskannya adalah:
elemennya berisi huruf-huruf berurutan dari 'a' A. cdefghijab
sampai 'j'. B. ebacdhfgij
Suatu algoritma bekerja pada array X C. abcdefghij
tersebut sbb D. jihgfedcba
for i := 2 to 9 do E. fghijabcde
swap(X[i-1],X[i+1]; // swap menukarkan
kedua isi array tsb
for i := 1 to 10 do write(X[i]);
38. Bila masing-masing dipanggil dengan perintah “satu(475.3)” dan “dua(475.3)” maka yang benar mengenai
keluaran keduanya adalah:
A. Yang dicetak kedua prosedur itu selalu mencetak bilangan yang berbeda untuk semua harga a yang
digunakan ada pemanggilan satu(a) dan dua(a)
B. Kedua prosedur itu akan selalu mencetakkan bilangan berbeda jika dipanggil dengan satu(x) dan
satu(y) dengan harga x berbeda dari y.
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 |a|.2k terkecil yang lebih besar atau sama dengan
dari 128, jika a berharga 1 s.d. 127.
40. Apa yang akan dicetak saat pemanggilan 41. Jika perintah ulangulang(1000) dijalankan maka
ulangulang (z) dengan z sebelumnya sudah akan menghasilkan keluaran yang terdiri atas
memiliki harga 49? A. < 7 dijit
B. 7 dijit
A. 0001 C. 8 dijit
B. 1211 D. 9 dijit
C. 0121 E. > 9 dijit
D. 1120
E. 1210
jdata := n;
jml := 1;
for i := 0 to jdata-1 do begin
jml := 3*jml-1;
end;
writeln(jml);
43. Secara umum, dengan n bulat positif apakah 44. Jika sebelumnya n berharga 3 berapakah yang
harga yang dicetak oleh program itu sebagai dicetak oleh potongan algoritma itu.
fungsi dalam n. A. 58
A. 5n – 2 B. 42
B. 3n – 3n-1 – … – 31 – 30 C. 14
C. 3n-1 + 5 D. 26
D. n2 + 5 E. 15
E. 3n-1 + 3n-2 … + 31 + 1
45. Jika fungsi tsb dipanggil dengan 46. Jika fungsi tsb dipanggil dengan
“writeln(apaini(414, 662));” berapakah yang “writeln(apaini(12345, 54321));” berapakah yang
dicetaknya? dicetaknya?
A. 1
B. 8 A. 2
C. 26 B. 3
D. 414 C. 13
E. 14 D. 7
E. 11
Soal Bidang Informatika Halaman 9 OSP 2009
Algoritma berikut untuk menjawab pertanyaan 47 - 48
47. Jika fungsi tsb dipanggil dengan 48. Jika fungsi tsb dipanggil dengan
“writeln(apaitu(1001, 1331));” berapakah yang “writeln(apaitu(1000, 5040));” berapakah yang
dicetaknya? dicetaknya?
A. 2 A. 100
B. 7 B. 50
C. 3 C. 40
D. 11 D. 10
E. 13 E. 5
sum := 0;
I := n; // inisialisasi I
49. Berapakah harga n untuk menginisialisasi I 51. Berapakah harga yang diberikan pada variabel
pada baris "// inisialisasi i" agar algoritma hargabatas agar algoritma bekerja seperti yang
bekerja seperti yang diharapkan? diharapkan?
A. 0
B. 1 A. 25
C. 2 B. 30
D. 3 C. 35
E. 4 D. 31
E. 40
50. Perintah manakah yang harus diisikan pada ". . .
. . . . // increment I" ?
A. I := 3
B. I := I + 1
C. I := I – 1
D. I := I + 3
E. I := I + 2
Soal Bidang Informatika Halaman 10 OSP 2009
Algoritma berikut untuk menjawab pertanyaan 52- 53
// 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);
52. Jika array berisi harga-harga sebagai berikut: 1, - 53. Jika array berisi harga-harga sebagai berikut: 1, -
3, 4, -2, -1, 6 (berarti juga n berharga 6) maka 1, 1, -1, 1, -1, 1 (berarti juga n berharga 7) maka
algoritma akan mencetak harga? algoritma akan mencetak harga?
A. 7
B. 4 A. 1
C. 2 B. -1
D. 6 C. 4
E. -6 D. -3
E. 7
procedure Bingo(t);
begin
if (t < 2) then
writeln('Bingo!')
else
begin
Bingo(t-1);
Bingo(t-2)
end;
end;
54. Berapa kalikah 'Bingo!' dituliskan jika procedure 55. Untuk menghasilkan tulisan 'Bingo!' lebih dari
tersebut dipanggil dengan Bingo(6)? 100 kali procedure tsb harus dipanggil dengan
A. 13 cara bagaimana?
B. 8 A. Bingo(11)
C. 6 B. Bingo(100)
D. 1 C. Bingo(10)
E. 2 D. Bingo(15)
E. Bingo(5)
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');
57. 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
i 1 2 3 4 5 6 7 8 9 10
data[i] 0 0 1 1 2 3 5 6 7 10
A. readln(bil); D. readln(bil);
duaan:=false; duaan:=false;
for i:=1 to 30 do temp:=1;
if (bil=2^i) while (bil>0) do begin
then duaan:=true; temp:=2*temp;
if duaan if (bil=temp)
then writeln(‘Benar’) then duaan:=true;
else writeln(‘Salah’); end;
if duaan
B. readln(bil); then writeln(‘Benar’)
duaan:=false; else writeln(‘Salah’);
while (bil>0) do begin
duaan:= (1=(bil mod E. readln(bil);
2))xor duaan; duaan:=false;
bil:= bil div 2; temp:=1;
end; while ((bil-temp)>0) do
if duaan begin
then writeln(‘Benar’) temp:=temp*2;
else writeln(‘Salah’); if (bil=temp)
then duaan:=true;
C. readln(bil); end;
duaan:=false; if duaan
while (bil>0) do begin then writeln(‘Benar’)
duaan:= else writeln(‘Salah’);
(1=(bil mod 2))or
duaan;
bil:=bil div 2;
end;
if duaan
then writeln(‘Benar’)
else writeln(‘Salah’);
59. Nilai dari ekspresi boolean (not A) or (B and C) or (A and (not B) and C) or (A and B) akan selalu sama
dengan ekspresi:
60. Nilai dari ekspresi boolean (not A) or (B and C) or (A and (not B) and C) or (A and B) akan selalu
berlawanan dengan ekspresi: