Anda di halaman 1dari 4

Perhatikan deskripsi berikut untuk soal nomor 1-3

function apaitu(a: integer; b: integer): integer;


begin
count := count + 1;
if (a > b) then
apaitu := apaitu(b, a)
else if (a = 0) then
apaitu := b
else
apaitu := apaitu (b mod a, a)
end;

1. Jika fungsi tersebut dipanggil dengan “writeln(apaitu(1001, 1331));” berapakah yang dicetaknya?

(A) 2 (B) 7 (C) 13 (D) 3 (E) 11

2. Jika fungsi tersebut dipanggil dengan “writeln(apaitu(1000, 5040));” berapakah yang dicetaknya?

(A) 10 (B) 100 (C) 50 (D) 40 (E) 5

3. Jika variabel count bersifat global dan diinisialisasi 0, dan fungsi tersebut dipanggil dengan
perintah “writeln(apaitu(1234, 277));” berapakah harga count setelah pemanggilan itu?

(A) 1 (B) 5 (C) 9 (D) 10 (E) 13

Perhatikan deskripsi berikut untuk soal nomor 4-7

if (a and b) or ((not c) and d) then


if ((a or not b) and c) or (b and (not a)) then
writeln(1);
else
if (a or (d and b)) and (not b) then
writeln(2);
else
writeln(4);
else
if not (d and c) and (not a) then
writeln(5);
else
writeln(6);

4. Jika dijalankan dan ternyata mencetakkan harga 4 maka urutan harga-harga a, b, c, d yang mungkin
adalah?
(A) TRUE, FALSE, TRUE, FALSE
(B) TRUE, TRUE, TRUE, FALSE
(C) FALSE, FALSE, TRUE, TRUE
(D) TRUE, TRUE, FALSE, FALSE
(E) TRUE, FALSE, FALSE, TRUE

5. Jika a berharga TRUE, b berharga FALSE, c berharga FALSE, dan d berharga TRUE, maka apa
yang akan dicetak?
(A) 5 (B) 4 (C) 3 (D) 2 (E) 1
6. Jika a berharga FALSE, b berharga FALSE, c berharga FALSE, dan d berharga FALSE, maka apa
yang akan dicetak?
(A) 5 (B) 4 (C) 3 (D) 2 (E) 1

7. Yang tidak akan mencetakkan angka 5 adalah untuk urutan a, b, c, d:


(A) FALSE, TRUE, TRUE, FALSE
(B) FALSE, TRUE, FALSE, FALSE
(C) FALSE, FALSE, TRUE, FALSE
(D) FALSE, FALSE, FALSE, TRUE
(E) FALSE, FALSE, FALSE, FALSE

8. Jika “P(x)” adalah pernyataan “x merupakan buah-buahan”;


“Q(x)” adalah pernyataan “kata x berisi huruf p”; dan
“R(x)” adalah pernyataan “panjang x kurang dari 5 huruf”,
manakah pernyataan yang benar dari berikut ini?

(A) P(jeruk) and Q(jeruk) or R(jeruk)


(B) P(kertas) and Q(kertas) or R(kertas)
(C) P(papan) and Q(papan) or R(papan)
(D) P(palu) and Q(palu) or R(palu)
(E) P(nanas) and Q(nanas) or R(nanas)

9. Perhatikan potongan program berikut ini:


{x dan y bertipe integer}
x:=3; y:=4;
x:=x+y;
y:=x-y;
x:=x-y;

Nilai pasangan variabel x dan y setelah operasi x:=x-y dieksekusi adalah...


(A) x = 3, y =4 (D) x = 3, y = -1
(B) x = 4, y = 3 (E) x = 7, y = 3
(C) x = -1, y = -1
10. Perhatikan potongan program berikut
begin
readln(n);
i:=0;
while i<n do
begin
i:=i+4;
if (i<n) then
for j:=1 to 4 do
write('*');
end;
end;

Berapa kali '*' ditulis dilayar jika input n adalah 20?


(A) 24 (B) 8 (C) 12 (D) 16 (E) 30
11. Perhatikan potongan program berikut
var
data : array[1..10] of integer = (3,9,2,6,1,4,7,8,5,10);
procedure kambing(m : integer);
begin
if (m<=10) then
begin
kambing(m*2);
write(data[m],’ ’);
kambing(m*2+1);
end;
end;

Output yang dihasilkan jika dilakukan pemanggilan kambing(1) adalah ....


(A) 3
(B) 3 9 2 6 1 4 7 8 5 10
(C) 3 9 6 8 5 10 1 2 4 7
(D) 8 6 5 9 10 1 3 4 2 7
(E) 8 5 6 10 1 9 4 7 2 3
12. Ekspresi "not((P and Q) or (not P or (P and not Q)))" bernilai True jika:
(A) P = True, Q = True
(B) P = True, Q = False
(C) P = False, Q = True
(D) P = False, Q = False
(E) Berapapun nilai P dan Q, ekspresi tersebut tidak mungkin bernilai true

Deskripsi untuk soal nomor 13 - 14


Perhatikan potongan algoritma berikut ini
j := 2;
for i := 0 to 10 do begin
if j > 0 then writeln(‘ok’);
j := 5 – (j*2);
end;

13. Berapa kalikah pencetakan keluaran ‘ok’ dilakukan oleh potongan program itu?
(A) 7 (B) 3 (C) 5 (D) 6 (E) 4
14. Berapakah harga j setelah keluar dari iterasi for tersebut?
(A) 681 (B) 600 (C) -681 (D) -702 (E) -101
Perhatikan potongan algoritma berikut.
t:= 2;
while t <= n do begin
writeln(‘ok’);
t := t* 2 - 1;
end;

15. Berapa kalikah pencetakan 'ok' jika dijalankan dengan harga n = 100?
(A) 3 (B) 5 (C) 7 (D) 9 (E) 11

Anda mungkin juga menyukai