1. Model ujian ini adalah pilihan berganda: memilih maksimum SATU jawaban untuk setiap
soal dan jika peserta memilih lebih dari satu jawaban untuk satu soal, maka jawaban
tersebut akan dinilai SALAH.
2. Jawaban BENAR bernilai 4, jawaban SALAH bernilai -1 dan jawaban kosong (tidak
menjawab) bernilai 0.
3. Jumlah soal adalah 50 yang dikerjakan dalam waktu 2.5 jam (150 menit).
4. Notasi algoritma pada bagian algoritmika menggunakan pseudopascal yang pada intinya
seperti pascal tetapi tidak serinci pascal karena diutamakan pada konsep logika di dalam
algoritma.
5. Jawaban yang akan dinilai adalah yang ada di LEMBAR JAWABAN. Jadi jawaban yang
baru dituliskan di bagian soal (belum dipindahkan) dianggap tidak menjawab dan tidak
akan dinilai.
6. Beberapa soal/pilihan ditulis dalam dua kolom, jadi harap peserta memperhatikan nomor
soal dan nomor pilihan jawaban terkait.
7. Peserta:
a. dilarang menggunakan alat komunikasi (handphone, pager, PDA, dll) selama
mengerjakan ujian ini,
b. dilarang menggunakan buku/referensi/catatan selain berkas soal ini,
c. dilarang menggunakan perangkat komputasi (laptop, kalkulator, komputer),
d. dilarang bekerja sama dengan atau mencontek hasil pekerjaan peserta lain.
8. Pelanggaran terjadap larangan ini oleh seorang peserta berakibat yang bersangkutan
untuk dibatalkan dari keikutsertaan ujian.
9. Berkas soal BOLEH digunakan untuk coretan tetapi TIDAK BOLEH dilepas dari
bundelannya. Jika bundelan lepas secara tidak sengaja, pengawas diharapkan
membundelnya kembali atau diganti dengan berkas baru.
Procedure satu(var n : integer); 33. Bila baris kedua program tersebut diganti
Begin menjadi :
If n > 0 then begin
Write(n mod 3); Var k : integer;
n := n div 3;
satu(n); Bagaimanakah keluaran program tersebut?
end; a. 9
end; b. 18
c. 12
Berapakah nilai dari satu(29)? d. 6
a. 9 e. 3
b. 90
c. 220 34. Diberikan potongan program berikut :
d. 1002
e. 2001 For i := 1 to 10 do
If (a < i) then a := b + 1
Program berikut digunakan untuk Else if (b < a) then b := b + a
nomor 32 sampai 33.
Else if (c < d) then c := c + d
Function dua(n : integer) : integer; Else if (d < b + 10) then d := d * 2;
Var j,k : integer; Writeln(a + b + c +d);
Begin
j := 0; Nilai yang dicetak apabila a, b, c, d masing-
For k := 1 to n do j := j + k; masing 1, 2, 3, 4 adalah ...
dua := k; a. 44
end; b. 55
c. 66
begin d. 77
j := 12; e. 88
for i := 1 to 3 do j := j + dua(i);
writeln(j); Program berikut digunakan untuk
end. nomor 35 sampai 36.
36. Jika i[j] := (j+1) mod 4 diganti menjadi i[j] := Program berikut digunakan untuk
(j*j) mod 4, maka outputnya adalah ... nomor 40 sampai 41.
a. 1101
Function empat(x,y:integer) : integer;
b. 1011 Begin
c. 1221 If y := 0 then empat := 1
d. 1100 Else empat := x * empat(x,y-1);
e. 1200 End;
Procedure cek(a,b,c,d:boolean);
Begin
if ((a and not b) or c) and not ((c and b)
or (d and not a))
then writeln(‘kasus 1’)
else
if ((not c and b) or
(a and b and not c and d))
then writeln(‘kasus 2’)
else
42. Berapakah nilai n yang menyebabkan if ((not a and not b and (c or d)) and (c
pemanggilan fungsi tulis(n) menghasilkan and d))
then writeln(‘kasus 3’)
string dengan panjang 100?
else
a. 500 writeln(‘kasus 4’);
b. 10 end;
c. 250
d. 125 45. Dengan suatu kombinasi harga a,b,c,d,
e. 100 prosedur mencetak “kasus 3”, dengan
kombinasi yang sama perintah “writeln(a
43. Jika dilakukan pemanggilan fungsi tulis(20) and b,’-‘,c and d )” akan menghasilkan dua
maka karakter ke-15 dari string yang harga Boolean apakah?
dihasilkan fungsi tersebut adalah ... a. True-True
a. j b. True-False
b. o c. False-True
c. i d. False-False
d. n e. Tidak dapat dipastikan
e. s
46. Dengan suatu kombinasi harga a,b,c,d,
44. Di bawah ini pemanggilan fungsi manakah prosedur mencetak “kasus 1”, dengan
yang menghasilkan string ‘n’? kombinasi yang sama perintah “writeln(a
a. Tulis(7) and not b,’-‘,not ( c and d ) )” akan
b. Tulis(11) menghasilkan dua harga Boolean apakah?
c. Tulis(13) a. True-True
d. Tulis(103) b. True-False
e. A, B, C, dan D salah c. False-True
d. False-False
e. Tidak dapat dipastikan
Program berikut digunakan untuk 50. Hasil pemanggilan fungsi lima(4,0) adalah ...
nomor 48 sampai 50. a. 0
b. 1
function lima(a,b:integer):integer; c. 4
var tmp : integer;
d. 16
begin
if (b = 1) then lima := a e. Run-Time Error (Rekursi tidak berhenti)
else begin
tmp := lima(a,b div 2);
if (b mod 2 = 0) then
lima := tmp * tmp
else
lima := tmp * tmp * a;
end;
end;