OSP 2008 OSP 2008

(1)

Soal Bidang Informatika Halaman 1 OSP 2008 - TOKI XIV 2009

OLIMPIADE SAIN PROVINSI (OSP)

BIDANG INFORMATIKA 2008

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.


(2)

Soal Bidang Informatika Halaman 2 OSP 2008 - TOKI XIV 2009 Bagian Analitika (Logika) dan Arimatika (30 soal)

1. Pepen berdiri sejauh 18 meter di sebelah utara Tugu Pemuda, Fanny berdiri 24 meter di sebelah barat Tugu yang sama. Berapakah jarak terdekat antara Fanny dan Pepen yang dapat ditempuh ?

a. 30 meter b. 900 meter c. 6 meter d. 42 meter e. 90 meter

2. Apabila dua buah bilangan 2n dan 5n (di mana n adalah bilangan bulat positif) dimulai dengan digit yang sama, maka digit tersebut adalah... (Catatan: bilangan dituliskan dengan notasi desimal, tanpa diawali nol.)

a 9

b 5

c 6

d 7

e 3

3. Manakah yang nilainya paling besar? a. 99100

b. 98101

c. 10597

d. 10198

e. 10099

4. Jika a, b, c, d dan e adalah bilangan-bilangan bulat yang tidak nol dan tidak negatif serta tidak ada yang sama, dan diketahui pula a+b+c+d=10, berapakah harga terbesar yang mungkin dari ab+cd ?

a. 10 b. 32 c. 25 d. 14 e. > 50

5. Di dalam suatu kotak terdapat 2N buah bola dan di antaranya terdapat N bola berwarna putih dan N bola beraneka warna secara unik (satu bola satu warna, tidak ada yang sama) dan tidak putih. Berapa banyak kombinasi untuk memilih N bola dari 2N bola itu?

(Catatan: Dalam perhitungan kombinasi, AAB dan ABA dianggap sama.)

a. 2N b. (2N / 2) c. 2N d. N!

e. (2N)! / N!

6. Pak Dengklek memiliki buku yang bernomor halaman mulai 1 s.d. N. Jika semua nomor halaman buku tersebut ditulis secara berderet dibutuhkan 552 digit. Berapakah N?

a. 205 b. 210 c. 211 d. 212 e. 220

7. Berapa banyak segi empat yang terbentuk dari tabel berukuran 3x3?

a. 36 b. 27 c. 30 d. 40 e. 35

8. Pak Ganesh menulis angka 1 s.d. 10000. Berapa banyak angka 1 yang muncul pada hasil tulisan Pak Ganesh?

a. 5000 b. 1000 c. 3001 d. 2092 e. 3505

9. Di suatu provinsi, diadakan lomba voli tiap 3 tahun sekali, lomba bulutangkis tiap 4 tahun sekali, lomba sepak bola tiap 7 tahun sekali, dan lomba tenis tiap 6 tahun sekali. Pada tahun 2000 semua lomba tersebut diadakan. Berapa kali terdapat lebih dari satu lomba dalam setahun dalam periode antara tahun 2005 dan tahun 2017?

a. Kurang dari 8 kali b. 8 kali

c. 9 kali d. 10 kali


(3)

Soal Bidang Informatika Halaman 3 OSP 2008 - TOKI XIV 2009 10. Tahun "semi-kabisat" adalah tahun yang bukan

merupakan tahun kabisat, tetapi jika tiap bilangan penyusun angka tahunnya dijumlahkan, hasilnya habis dibagi dengan 4. Ada berapa tahun "semi-kabisat" semenjak tahun 1901 hingga 1960? a. 10 b. 12 c. 15 d. 16 e. 18

11. Jika n adalah sebuah bilangan bulat ganjil, maka: (i) n3 – n2 pasti ganjil

(ii) n2 – n pasti genap

(iii)n3 – n pasti ganjil

(iv)n4 – n2 pasti genap

Pernyataan yang benar adalah: a. (i), (iii)

b. (i), (ii), (iii) c. (ii), (iv) d. (ii), (iii), (iv) e. (iv)

12. Pak Dengklek pertama kali pergi ke pasar Kliwon tanggal 3 Januari 2008 dan kemudian 4 hari sekali setelah itu (7 Januari 2008, 11 Januari 2008, dst).

Pak Ganesh pertama kali pergi ke pasar Kliwon tanggal 4 Januari 2008 dan kemudian 5 hari sekali setelah itu (9 Januari 2008, 14 Januari 2008, dst).

Pak Blangkon pertama kali pergi ke pasar Kliwon tanggal 5 Januari 2008 dan kemudian 6 hari sekali setelah itu (11 Januari 2008, 17 Januari 2008, dst).

Jika bertepatan pada hari yang sama, mereka selalu pergi ke pasar Kliwon bersama-sama. Pada tanggal berapa ketiga orang tersebut pergi bersama-sama untuk kedua kalinya?

a. 27 April 2008 b. 28 April 2008 c. 29 April 2008 d. 30 April 2008 e. 1 Mei 2008

13. Si Upik pandai menjumlahkan, namun ia hanya dapat menulis angka 1 dan 2. Oleh karena itu, saat Upik ingin menuliskan sebuah angka yang

lebih dari 2, ia menuliskan beberapa angka 1 dan beberapa angka 2 sedemikian sehingga jika dijumlahkan jumlahnya adalah bilangan tersebut. Contohnya, untuk menuliskan angka 3, Upik memiliki tepat 3 cara yaitu 12, 21, atau 111 (1+2=3 ; 2+1=3 ; 1+1+1=3). Untuk menuliskan angka 2, sebenarnya Upik memiliki 2 cara yaitu 2 dan 11 (2=2; 1+1=2), tapi hanya ada 1 cara untuk menuliskan angka 1. Berapa banyak cara Upik untuk menuliskan angka 8?

a. 21 b. 25 c. 30 d. 34 e. 55

14. Pak Dengklek ingin membagikan buku tulis kepada 100 anak panti asuhan. Masing-masing anak mendapat setidaknya satu buku tulis, dan tidak ada anak yang mendapat lebih dari lima buku tulis. Tidak ada seorang anak pun yang mendapat buku tulis lebih banyak dari jumlah buku tulis yang dimiliki dua orang anak lainnya. Jika Aseng, Adi, dan Ujang adalah anak panti asuhan dan Aseng mendapat tiga buku tulis, maka pernyataan manakah yang benar di bawah ini:

(i) Ujang mungkin hanya mendapat satu buku tulis.

(ii) Jika diketahui Ujang mendapat empat buku tulis, maka Adi tidak mungkin mendapat satu buku tulis.

(iii) Tidak mungkin ada anak yang mendapat tepat lima buku tulis.

a. (i) dan (ii) benar b. (i) dan (iii) benar c. (ii) dan (iii) benar d. (i), (ii), dan (iii) benar

e. Pilihan a sampai d salah semua

15. Pak Dengklek mempunyai anak-anak asuh yang terdiri dari 38 anak laki-laki dan 48 anak perempuan. Tiap kelompok dua anak laki-laki dan satu anak perempuan bisa bermain lompat tali, sementara tiap kelompok dua anak perempuan dan satu anak laki-laki bisa bermain petak umpet. Jika ada anak yang tidak dapat membentuk kelompok, maka mereka tidak bermain. Manakah sisa anak yang tidak bermain yang mungkin:

(i) 1 anak laki-laki dan 1 anak perempuan (ii) 2 anak laki-laki


(4)

Soal Bidang Informatika Halaman 4 OSP 2008 - TOKI XIV 2009 (iii) 2 anak perempuan

a. (i) dan (ii) benar b. (i) dan (iii) benar c. (ii) dan (iii) benar d. (i), (ii), dan (iii) benar

e. Pilihan a sampai d salah semua

16. Suatu hari Pak Dengklek mengajak Pak Ganesh bermain. Mula-mula Pak Dengklek memberikan sebuah kertas yang sudah bergambar segi empat berukuran 8 cm x 9 cm lalu meminta Pak Ganesh menggambar N buah titik di atas kertas itu sedemikian sehingga tidak ada dua buah titik yang berjarak kurang dari 5 cm (semua titik yang digambar tidak boleh berada di luar segi empat yang sudah tergambar sebelumnya, tetapi boleh di dalam atau tepat pada garis segi empat tersebut). Pak Dengklek menang jika Pak Ganesh tidak mampu menggambar N buah titik dengan syarat tersebut. Berapa N minimal agar Pak Dengklek pasti menang?

a. 5 b. 6 c. 7 d. 8 e. 9

17. Pada suatu hari, empat alumni TOKI (berinisial A, B, M, dan P) bertemu. Dua diantaranya membawa pasangan masing-masing makan bersama di warung makan. Kursi yang digunakan bernomor 1 sampai N (secara berurutan) dan meja yang digunakan berbentuk lingkaran sehingga kursi 1 selain bersebelahan dengan kursi 2 juga bersebelahan dengan kursi N. Terdapat satu kursi pemisah antara kursi yang diduduki A dan kursi yang diduduki M. P duduk tepat di sebelah A. Yang membawa

pasangan, duduk bersebelahan dengan

pasangannya masing-masing. A membawa pasangannya pada pertemuan tersebut. B duduk tepat di sebelah M. Tidak ada kursi kosong. (i) Keempat alumni TOKI duduk di kursi

yang nomornya berurutan (ii) A duduk di sebelah B

(iii) M tidak membawa pasangannya pada pertemuan tersebut

(iv) B tidak duduk di sebelah P

(v) M tidak duduk di sebelah P atau P tidak duduk di sebelah B

Berapa banyak pernyataan yang pasti benar?

a. 3 b. 1 c. 4 d. 2 e. 0 18. Pada

suatu hari di

bulan Juli 2007, Pak Dengklek bertamu ke rumah Pak Ganesh.

Pak Dengklek berkata, "Aku datang dengan membawa hadiah ulang tahun untukmu. Tetapi maaf, terlambat delapan minggu dan tiga hari." Pak Ganesh menjawab, "Terima kasih. Aku juga sudah menyiapkan kado untuk ulang tahunmu, enam minggu dan enam hari lagi." Kapankah ulang tahun Pak Ganesh berikutnya?

a. 258 hari lagi b. 259 hari lagi c. 306 hari lagi d. 307 hari lagi e. 365 hari lagi

19. Perhatikan tabel berikut:

A, W, X, Y, Z adalah bilangan bulat.

 Bilangan-bilangan di kolom terkanan adalah jumlah dari bilangan-bilangan di sebelah kirinya pada baris yang sama.

 Bilangan-bilangan di baris terbawah adalah jumlah dari bilangan-bilangan di sebelah atasnya pada kolom yang sama.

Berapakah A? a. 23 b. 25 c. 28 d. 30

X X X X 28 X X Y Y 30 Y Z W X 20 W W Z Y 16 A 19 20 30


(5)

Soal Bidang Informatika Halaman 5 OSP 2008 - TOKI XIV 2009 e. 32

20. Di dalam sebuah kotak terdapat 10 bola merah, 9 bola kuning, dan 8 bola biru. Pak Dengklek membuang satu persatu bola dari dalam kotak secara acak. Berapa jumlah maksimal bola yang boleh dibuang oleh Pak Dengklek sehingga di dalam kotak tetap terdapat 3 bola dengan warna yang sama? a. 17 b. 18 c. 19 d. 20 e. 21

21. Jika bilangan x habis dibagi 7 dan bilangan y habis dibagi 21, pernyataan-pernyataan manakah yang benar?

(i) x dan y kemungkinan adalah bilangan yang sama

(ii) y-x akan berupa bilangan non-negatif (iii) Faktor persekutuan terbesar dari x dan y

adalah 7

a. Pernyataan (i) dan (ii) benar b. Pernyataan (i) dan (iii) benar c. Pernyataan (ii) dan (iii) benar d. Pernyataan (i), (ii), dan (iii) benar e. Pilihan a sampai d salah semua 22. Jika dari sebuah kotak Anda hanya boleh

melangkah ke kotak lain yang bersebelahan secara vertikal atau horizontal (tidak boleh diagonal), berapa banyak jalur berbeda dari kotak A untuk sampai ke kotak Z dengan jumlah langkah minimal?

a. 8 b. 10 c. 12 d. 18 e. 20

23. Jika dari sebuah kotak Anda hanya boleh melangkah ke kotak lain yang bersebelahan secara vertikal atau horizontal (tidak boleh diagonal), berapa banyak jalur berbeda dari kotak A untuk sampai ke kotak Z dengan jumlah langkah minimal dan tanpa melalui kotak X? a. 8 b. 10 c. 12 d. 18 e. 20

24. Sebuah bilangan bulat positif X memiliki ciri-ciri sebagai berikut:

(i) Terdiri dari 5 digit, dan dapat dibagi habis dengan 5

(ii) Digit pertama (puluh ribuan) bukanlah 0, dan bukanlah bilangan prima

(iii) Digit kedua (ribuan) lebih besar dari digit ketiga (ratusan)

(iv) Jumlah digit ketiga (ratusan) dan kelima (satuan) berupa bilangan ganjil

(v) Digit kedua (ribuan) merupakan

bilangan prima, tetapi tidak habis membagi digit pertama (puluh ribuan) (vi) Hasil perkalian digit ketiga (ratusan) dan

keempat (puluhan) adalah bilangan ganjil

Berapakah X mod 4 ? a. 0

b. 1 c. 2 d. 3

e. Tidak dapat ditentukan

25. Pak Dengklek sedang mempelajari rute penerbangan domestik di Indonesia. Ada penerbangan dari Bandung ke Jakarta, dari Bandung ke Cirebon, dari Cirebon ke Denpasar, dari Banten ke Flores, dari Flores ke Jakarta, dari Bandung ke Denpasar, dari Denpasar ke Jakarta, dari Jakarta ke Medan, dari Medan ke Aceh, dari Aceh ke Flores.

Jika ada penerbangan dari kota X ke kota Y bukan otomatis berarti ada penerbangan dari kota Y ke kota X. Jika ada penerbangan dari kota X ke kota Y dan ada penerbangan dari kota Y ke kota Z maka ada penerbangan dari kota X ke kota Z (bisa diatur dengan penerbangan dari kota X ke kota Y dahulu kemudian disambung dari kota Y ke kota Z).

(i) Tidak ada penerbangan dari Jakarta ke Banten.

(ii) Tidak ada penerbangan dari Bandung ke Banten.

(iii) Tidak ada penerbangan dari Bandung ke Flores.

(iv) Tidak ada penerbangan dari Cirebon ke Aceh.

Z

A

X Z

X


(6)

Soal Bidang Informatika Halaman 6 OSP 2008 - TOKI XIV 2009 (v) Tidak ada penerbangan dari Aceh ke

Denpasar.

Berapa banyak pernyataan yang benar? a. 3

b. 2 c. 1 d. 4 e. 5

26. Pak Dengklek menggambar persegi panjang dengan panjang P cm dan lebar L cm. Lalu ia bagi-bagi persegi panjang tersebut ke dalam P x L buah persegi dengan ukuran masing-masing 1cm x 1cm, dan diberinya koordinat kartesian (1, 1) hingga (P, L). Persegi dengan hasil penjumlahan koordinat x dan y berupa bilangan ganjil akan dicat warna merah, sedangkan sisanya dicat warna biru.

Pernyataan manakah yang paling tepat di bawah ini?

a. Jumlah persegi yang dicat warna merah akan selalu lebih sedikit dari yang dicat warna biru.

b. Jumlah persegi yang dicat warna merah akan selalu lebih sedikit atau sama dengan yang dicat warna biru.

c. Jumlah persegi yang dicat warna merah akan selalu lebih banyak atau sama dengan yang dicat warna biru.

d. Jumlah persegi yang dicat warna merah akan selalu lebih banyak dari yang dicat warna biru. e. Pilihan a sampai d salah semua

Deskripsi untuk soal no. 27 dan 28

Pak Dengklek dan Pak Ganesh pada awalnya berada di titik A.

Pak Dengklek berjalan lurus sejauh 30 meter. Lalu Pak Dengklek berputar ke arah yang tidak diketahui, lalu berjalan lurus sejauh 50 meter. Setelah itu, Pak Dengklek berputar ke arah yang tidak diketahui lagi, lalu berjalan lurus sejauh 40 meter. Posisi akhir Pak Dengklek diberi nama titik B.

Dari titik A, Pak Ganesh berjalan lurus ke arah yang tidak diketahui sejauh 70 meter. Lalu ia berputar ke arah yang tidak diketahui dan berjalan lurus sejauh 25 meter. Posisi akhir Pak Ganesh diberi nama titik C.

27. Berapa jarak terdekat yang mungkin antara titik B dan titik C?

a. 0 meter b. 5 meter c. 15 meter d. 25 meter e. 50 meter

28. Berapa jarak terjauh yang mungkin antara titik B dan titik C?

a. 0 meter b. 15 meter c. 152.4 meter d. 215 meter e. 225 meter

Deskripsi soal no 29 s.d 30

Pada suatu permainan terdapat empat kantung, masing-masing berisi beberapa kelereng. Di awal permainan, pemain mengeluarkan kelereng dari kantung pertama, lalu memasukkan satu kelereng ke kantung kedua, satu ke kantung ketiga, satu ke kantung keempat, satu ke kantung pertama, satu ke kantung kedua, dan seterusnya hingga semua kelereng sudah masuk kembali ke kantung-kantung. Setelah itu, pemain mengeluarkan semua kelereng dari kantung yang terakhir kali dimasuki kelereng, lalu mengulangi proses yang sama. Permainan terus berlanjut hingga jumlah kelereng yang dikeluarkan pemain dari suatu kantung tepat sebanyak satu buah.


(7)

Soal Bidang Informatika Halaman 7 OSP 2008 - TOKI XIV 2009 29. Jika isi awal kantung pertama adalah 5 kelereng,

isi kantung kedua adalah 3 kelereng, isi kantung ketiga adalah 4 kelereng, dan isi kantung keempat adalah 2 kelereng, saat permainan berakhir, kantung manakah yang kelerengnya baru saja dikeluarkan?

a. Kantung pertama b. Kantung kedua c. Kantung ketiga d. Kantung keempat

e. Permainan tidak akan pernah berakhir

30. Jika isi awal kantung pertama adalah 5 kelereng, kantung kedua adalah 3 kelereng, kantung ketiga adalah 5 kelereng, berapa jumlah kelereng dalam kantung keempat supaya permainan tidak pernah berakhir?

a. 0 kelereng b. 1 kelereng c. 2 kelereng d. 3 kelereng

e. Pilihan a sampai d salah semua.

Bagian Algoritmika (30 soal) 31. Perhatikanlah potongan kode program sebagai berikut:

a := 10; b := 5; a := b – a; b := b – a; a := a + b;

Berapakah harga a dan b setelah perintah-perintah berikut ini dijalankan? a a = 15, b = 5

b a = 5, b = 10 c a = 5, b = 5 d a = 10, b = 10 e a = 5, b = 15

32. Perhatikanlah potongan kode program sebagai berikut: a := 100;

b := 5; repeat

b := b + 1; a := a – b; until a > b; writeln(a,b);

Manakah pasangan nilai (a, b) yang dicetak di akhir program?

a 94 dan 6

b 100 dan 5 c 10 dan 14 d 10 dan 15

e 5 dan 14

Untuk dua (2) pertanyaan berikutnya perhatikanlah potongan kode program sebagai berikut: program Coba;


(8)

Soal Bidang Informatika Halaman 8 OSP 2008 - TOKI XIV 2009 i,j,k,x,y : integer;

begin

read(x); i := 0; y := 0;

while (i < x) do begin

for j:=0 to i do

y := y + (2 * i); i := i + 1;

end;

for k:=0 to y do

write(‘a’);

end.

33. Berapakah y yang dihasilkan di akhir program jika x adalah 3?

a 13

b 14

c 15

d 16

e 17

34. Berapakah nilai x minimum yang diperlukan supaya di layar tertulis yang lebih dari 80 huruf ‟a‟ di akhir program?

a 2

b 4

c 5

d 10

e 15

Untuk enam (6) pertanyaan berikutnya perhatikanlah potongan kode program sebagai berikut: function HitungJuga (m : integer; n : integer) : integer; begin

if (n=0) then HitungJuga := m

else HitungJuga := HitungJuga(n, m mod n) end;

procedure Hitung (x, y : integer; var z : integer); begin

if ((x > 0) and (y > 0)) then z := HitungJuga(x,y) else

z := 0; end;

35. Berapakah hasil fungsi HitungJuga jika n = 72 dan m = 84?

a 1

b 8

c 12

d 72

e 0

36. Manakah dari nilai-nilai n di bawah ini yang bisa menghasilkan 15 pada fungsi HitungJuga jika diketahui nilai m = 105?

a 75

b 105

c 50

d 10

e 25

37. Berapakah nilai z pada prosedur Hitung jika x = -8 dan y = 12?

a 0

b -4

c 4

d 8


(9)

Soal Bidang Informatika Halaman 9 OSP 2008 - TOKI XIV 2009 38. Semua kombinasi x dan y di bawah ini

menghasilkan z yang habis dibagi 3 pada prosedur Hitung kecuali:

a x = 36, y = 12 b x = 6, y = 24

c x = 75, y = 105 d x = 100, y = 75 e x = 90, y = 18

Untuk tiga (3) pertanyaan berikutnya perhatikanlah kode program lengkap sebagai berikut: Program CobaCoba;

var

x, y, z, i, k : integer; (*** function Hitung ****)

function Hitung (i : integer) : integer; var

j, hasil : integer; begin

hasil := 0; j := 1;

while (j <= i) do begin hasil := hasil + j; j := j + 1;

end;

Hitung := hasil; end;

(*** Program Utama ***) begin

x := -1; y := 4; read(z);

write(Hitung(x));

for i:=15 downto Hitung(y) do

write(‘y’);

if (Hitung(z) > 0) then for i:=1 to z do

for k:=1 to i do

write(‘*’);

end.

39. Angka berapakah yang pertama kali tertulis di layar, jika program tersebut dijalankan?

a 0

b 1

c 2

d 3


(10)

Soal Bidang Informatika Halaman 10 OSP 2008 - TOKI XIV 2009 40. Berapa banyakah huruf ‟y‟ yang akan tertulis di

layar?

a 15

b 5

c 0

d 10

e 6

41. Berapakah z yang harus dimasukkan pengguna untuk menuliskan 15 karakter ‟*‟ di layar?

a 2

b 4

c 5

d 6

e 7

Untuk tiga (3) pertanyaan berikutnya, perhatikanlah potongan kode program sebagai berikut: function ABC (a, b : integer) : integer;

var

hasil : integer; begin

if (a mod b = 0) then ABC := b else ABC := ABC(a, b-1);

end;

function XYZ (X : integer) : integer; begin

if (X < 1) then XYZ := -1 else if (X = 1) then XYZ := 0 else XYZ := ABC(X,X-1);

end;

42. Berapakah hasil ABC(12, 4)?

a -1

b 0

c 1

d 2

e 4

43. Berapakah hasil XYZ(17)?

a -1

b 0

c 1

d 2

e 3

44. Berapakah hasil fungsi XYZ jika X = 100?

a 10

b 20

c 30

d 40

e 50

Untuk dua (2) pertanyaan berikutnya, perhatikanlah potongan kode program sebagai berikut: function sum(n:integer):integer;

begin

if (n>0) then sum:=n+sum(n-1) else


(11)

Soal Bidang Informatika Halaman 11 OSP 2008 - TOKI XIV 2009 sum:=n;

end;

45. Hasil dari sum(11) adalah... a. 55

b. 66 c. 11 d. 78 e. 91

46. Agar keluaran fungsi sum(n) > 100, berapakah harga n terkecil?

a. 11 b. 12 c. 13 d. 14 e. 15

Untuk dua (2) pertanyaan berikutnya, perhatikanlah potongan kode program sebagai berikut: var

i,j,k:integer; begin

k:=1; (*inisialisasi*) for i:=1 to 4 do

begin k:=k*i;

for j:=i+1 to 2*i do begin

k:=k+j; end; end;

writeln(abs(k)); (*keluaran program*) end.

47. Keluaran dari program di atas adalah... a. 242

b. 1250 c. 54 d. 1 e. 7557

48. Agar program menghasilkan keluaran minimum, nilai k harus diinisialisasi dengan...

a. 0 b. -1 c. -9 d. -10 e. -11

Untuk dua (2) pertanyaan berikutnya, gunakan tabel berikut untuk 4 soal berikutnya:

I 0 1 2 3 4 5 6 7 8 9

bil[i] 2 0 1 3 6 7 5 10 0 1

49. Perhatikan pseudopascal berikut: a := 0; b := 100; pb := 0; pa := 0; for i := 0 to 9 do

if bil[i] > a then a := bil[i] else b := bil[i];

Setelah pseudopascal di atas dijalankan, berapakah nilai a+b?


(12)

Soal Bidang Informatika Halaman 12 OSP 2008 - TOKI XIV 2009 a. 110

b. 0 c. 10 d. 2 e. 11

50. Perhatikan pseudopascal berikut: a := 0; b := 100; pa := 0; pb := 0; for i := 0 to 9 do

if bil[i] > a then begin

a := bil[i]; pa := i; end

else if bil[i]<b then begin b := bil[i];

pb := i; end;

Setelah pseudopascal di atas dijalankan, berapakah nilai pa+pb?

a 2

b 8

c 10

d 17

e 18

51. Perhatikan pseudopascal berikut:

function fun2(a:string;b:integer):string; var tmp:string;

begin

if (length(a) = 10) then fun2 := a else

fun2 := fun2(a[(b*b) mod length(a)+1] + a,((b*b) mod length(a))+1);

end;

Manakah pasangan berikut yang menghasilkan keluaran yang sama? a. fun2('TOKI09',1) dan fun2('TOKI09',4)

b. fun2('TOKI09',2) dan fun2('TOKI09',5) c. fun2('TOKI09',3) dan fun2('TOKI09',1) d. fun2('TOKI09',4) dan fun2('TOKI09',2) e. fun2('TOKI09',5) dan fun2('TOKI09',3) 52. Perhatikan pseudopascal berikut:

function fun3(a,b,c,d,x:integer):integer; var tmp,i:integer;

begin

for i:=3 to x do begin tmp:=b;

b:=d*a+c*b; a:=tmp; end; fun3:=b; end;

Manakah yang menghasilkan bilangan genap? a. fun3(1,1,1,1,10)

b. fun3(3,3,1,2,11) c. fun3(3,4,4,5,7) d. fun3(3,4,4,5,7) e. fun3(2,3,1,3,4)


(13)

Soal Bidang Informatika Halaman 13 OSP 2008 - TOKI XIV 2009 53. Perhatikan pseudopascal berikut:

function tes1(n:integer):boolean; var ok:boolean; i:integer;

begin

ok := true;

for i := 2 to trunc(sqrt(n))+1 do if (n mod i) = 0 then ok := false; tes1:=ok;

end;

Manakah pemanggilan yang menghasilkan false? a. tes1(43)

b. tes1(51) c. tes1(53) d. tes1(59) e. tes1(67)

54. Perhatikan pseudopascal berikut:

function tes2(n:integer):boolean; var ok:boolean; j,i:integer; begin

ok := true; j := 0;

for i := 1 to (n div 2) do

if (n mod i) = 0 then j := j+i*2; tes2 := (j=2*n);

end;

Manakah pemanggilan yang menghasilkan true? a. tes2(12)

b. tes2(24) c. tes2(28) d. tes2(29) e. tes2(36)

55. Perhatikan pseudopascal berikut:

function tes3(n,m:integer):boolean; var i,j,tmp:integer;

begin

tmp := n; i := 0;

while (tmp > 0) do begin

if (tmp mod 2) = 1 then i := i+1; tmp := tmp div 2;

end;

tmp := m; j := 0;

while (tmp > 0) do begin

if (tmp mod 2) = 1 then j := j+1; tmp := tmp div 2;

end;

tes3 := i=j; end;


(14)

Soal Bidang Informatika Halaman 14 OSP 2008 - TOKI XIV 2009 a. tes3(99,100)

b. tes3(100,120) c. tes3(56,121) d. tes3(89,156) e. tes3(80,173)

56. 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. 23

b. 20 c. 24 d. 21 e. 22

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 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 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:=i+1 to N-1 do

if data[i]>=data[j] then begin

temp:=data[i]; data[i]:=data[j]; data[j]:=temp; end;


(15)

Soal Bidang Informatika Halaman 15 OSP 2008 - TOKI XIV 2009 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;

d. 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;

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;

58. 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; for i:=1 to 30 do if (bil=2^i) then duaan:=true; 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’);


(16)

Soal Bidang Informatika Halaman 16 OSP 2008 - TOKI XIV 2009

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:

a (not (C or (not A))) and (not B) or (not A) b (A and (B or C)) or C or ((not A) and (not C)) c (A and (B or C)) or C or (A and C)

d (not B) or (not (A and B and (not C))) e (not (C or (not A))) and (not B)

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:

a (not (C or (not A))) and (not B) or (not A) b (A and (B or C)) or C or ((not A) and (not C)) c (A and (B or C)) or C or (A and C)

d (not B) or (not (A and B and (not C))) e (not (C or (not A))) and (not B)


(1)

Soal Bidang Informatika Halaman 11 OSP 2008 - TOKI XIV 2009 sum:=n;

end;

45. Hasil dari sum(11) adalah... a. 55

b. 66 c. 11 d. 78 e. 91

46. Agar keluaran fungsi sum(n) > 100, berapakah harga n terkecil?

a. 11 b. 12 c. 13 d. 14 e. 15

Untuk dua (2) pertanyaan berikutnya, perhatikanlah potongan kode program sebagai berikut: var

i,j,k:integer; begin

k:=1; (*inisialisasi*) for i:=1 to 4 do

begin k:=k*i;

for j:=i+1 to 2*i do begin

k:=k+j; end; end;

writeln(abs(k)); (*keluaran program*) end.

47. Keluaran dari program di atas adalah... a. 242

b. 1250 c. 54 d. 1 e. 7557

48. Agar program menghasilkan keluaran minimum, nilai k harus diinisialisasi dengan...

a. 0 b. -1 c. -9 d. -10 e. -11

Untuk dua (2) pertanyaan berikutnya, gunakan tabel berikut untuk 4 soal berikutnya: I 0 1 2 3 4 5 6 7 8 9

bil[i] 2 0 1 3 6 7 5 10 0 1

49. Perhatikan pseudopascal berikut: a := 0; b := 100; pb := 0; pa := 0; for i := 0 to 9 do

if bil[i] > a then a := bil[i] else b := bil[i];

Setelah pseudopascal di atas dijalankan, berapakah nilai a+b?


(2)

Soal Bidang Informatika Halaman 12 OSP 2008 - TOKI XIV 2009 a. 110

b. 0 c. 10 d. 2 e. 11

50. Perhatikan pseudopascal berikut: a := 0; b := 100; pa := 0; pb := 0; for i := 0 to 9 do

if bil[i] > a then begin

a := bil[i]; pa := i; end

else if bil[i]<b then begin b := bil[i];

pb := i; end;

Setelah pseudopascal di atas dijalankan, berapakah nilai pa+pb?

a 2 b 8 c 10 d 17 e 18

51. Perhatikan pseudopascal berikut:

function fun2(a:string;b:integer):string; var tmp:string;

begin

if (length(a) = 10) then fun2 := a else

fun2 := fun2(a[(b*b) mod length(a)+1] + a,((b*b) mod length(a))+1);

end;

Manakah pasangan berikut yang menghasilkan keluaran yang sama? a. fun2('TOKI09',1) dan fun2('TOKI09',4)

b. fun2('TOKI09',2) dan fun2('TOKI09',5) c. fun2('TOKI09',3) dan fun2('TOKI09',1) d. fun2('TOKI09',4) dan fun2('TOKI09',2) e. fun2('TOKI09',5) dan fun2('TOKI09',3) 52. Perhatikan pseudopascal berikut:

function fun3(a,b,c,d,x:integer):integer; var tmp,i:integer;

begin

for i:=3 to x do begin tmp:=b;

b:=d*a+c*b; a:=tmp; end; fun3:=b; end;

Manakah yang menghasilkan bilangan genap? a. fun3(1,1,1,1,10)

b. fun3(3,3,1,2,11) c. fun3(3,4,4,5,7) d. fun3(3,4,4,5,7) e. fun3(2,3,1,3,4)


(3)

Soal Bidang Informatika Halaman 13 OSP 2008 - TOKI XIV 2009 53. Perhatikan pseudopascal berikut:

function tes1(n:integer):boolean; var ok:boolean; i:integer;

begin

ok := true;

for i := 2 to trunc(sqrt(n))+1 do if (n mod i) = 0 then ok := false; tes1:=ok;

end;

Manakah pemanggilan yang menghasilkan false? a. tes1(43)

b. tes1(51) c. tes1(53) d. tes1(59) e. tes1(67)

54. Perhatikan pseudopascal berikut:

function tes2(n:integer):boolean; var ok:boolean; j,i:integer; begin

ok := true; j := 0;

for i := 1 to (n div 2) do

if (n mod i) = 0 then j := j+i*2; tes2 := (j=2*n);

end;

Manakah pemanggilan yang menghasilkan true? a. tes2(12)

b. tes2(24) c. tes2(28) d. tes2(29) e. tes2(36)

55. Perhatikan pseudopascal berikut:

function tes3(n,m:integer):boolean; var i,j,tmp:integer;

begin

tmp := n; i := 0;

while (tmp > 0) do begin

if (tmp mod 2) = 1 then i := i+1; tmp := tmp div 2;

end;

tmp := m; j := 0;

while (tmp > 0) do begin

if (tmp mod 2) = 1 then j := j+1; tmp := tmp div 2;

end;

tes3 := i=j; end;


(4)

Soal Bidang Informatika Halaman 14 OSP 2008 - TOKI XIV 2009 a. tes3(99,100)

b. tes3(100,120) c. tes3(56,121) d. tes3(89,156) e. tes3(80,173)

56. 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. 23

b. 20 c. 24 d. 21 e. 22

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 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

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:=i+1 to N-1 do

if data[i]>=data[j] then begin

temp:=data[i]; data[i]:=data[j]; data[j]:=temp; end;


(5)

Soal Bidang Informatika Halaman 15 OSP 2008 - TOKI XIV 2009 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;

d. 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;

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;

58. 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; for i:=1 to 30 do if (bil=2^i) then duaan:=true; 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’);


(6)

Soal Bidang Informatika Halaman 16 OSP 2008 - TOKI XIV 2009

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:

a (not (C or (not A))) and (not B) or (not A) b (A and (B or C)) or C or ((not A) and (not C)) c (A and (B or C)) or C or (A and C)

d (not B) or (not (A and B and (not C))) e (not (C or (not A))) and (not B)

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:

a (not (C or (not A))) and (not B) or (not A) b (A and (B or C)) or C or ((not A) and (not C)) c (A and (B or C)) or C or (A and C)

d (not B) or (not (A and B and (not C))) e (not (C or (not A))) and (not B)