Anda di halaman 1dari 7

Deskripsi berikut ini adalah untuk 2 soal berikut:

var
arr : array [0..5] of integer = (8,1,6,3,4,15);
i : integer;
aduk : array [0..6] of integer;

procedure kalikali();
begin
aduk[0] := 1;
for i:=1 to 6 do
aduk[i] := aduk[i-1] * arr[i-1];
end;
function hasil (kiri, kanan :integer): integer;
begin
hasil := (aduk[kanan] div aduk[kiri-1]);
end;
begin
kalikali();
writeln(aduk[3]);
writeln(hasil(2,3));
writeln(hasil(4,6));
end.

1. Apakah keluaran baris writeln(aduk[3]); dari program di atas?

a. 3
b. 6
c. 48
d. 144
e. 180

2. Apakah keluaran baris writeln(hasil(2,3)); dari program di atas?

a. 3
b. 6
c. 48
d. 144
e. 180

3. Apakah keluaran baris writeln(hasil(4,6)); dari program di atas?

a. 3
b. 6
c. 48
d. 144
e. 180

4. Berapakah nilai dari arr[9] setelah program selesai dijalankan?


var arr: array[1..10] of integer;
i, j, s: integer;
begin
for i := 1 to 10 do
arr[i] := i + 1;
for i := 1 to 10 do
begin
for j:= i+1 to 10 do
begin
if (arr[i] = -1)then break;
s := arr[j] div arr[i];
if (s * arr[i] = arr[j]) then
begin
arr[i] := arr[i] + arr[j];
arr[j] := arr[i] - arr[j];
arr[i] := arr[i] - arr[j];
arr[i] := -1;
end;
end;
end;
end.

a. -1
b. 0
c. 2
d. 5
e. 10

5. Apakah keluaran dari program dibawah?


var arr: array[1..7] of integer = (3, 5, 2, 1, 1, 7, 2);
cnt: array[1..10] of integer;
i, j: integer;
begin
for i := 1 to 7 do
inc(cnt[arr[i]]);
for i := 1 to 10 do
for j := 1 to cnt[i] do
write(i);
end.

a. 1122357
b. 7532211
c. 3521172
d. 1234567
e. 1123357

6. Apakah keluaran dari program dibawah?


var i, ans, x: integer;
begin
ans := 0;
x := 80;
for i := 1 to x do
begin
if i mod 3 = 0 then inc(ans);
end;
writeln(ans);
end.

a. 26
b. 27
c. 28
d. 3
e. 80

7. Apakah keluaran dari program dibawah?


var kancil, panda, i, j: integer;
begin
for i := 2 to 100 do
begin
j := 1;
kancil := 0;
while(j <= i) do
begin
if i mod j = 0 then inc(kancil);
inc(j);
end;
if kancil = 2 then inc(panda);
end;
writeln(panda);
end.

a. 10
b. 15
c. 25
d. 30
e. 40

8. Apakah keluaran dari program dibawah?


var data: array[1..10] of integer = (8, 12, 16, 20, 12, 14, 16, 20, 20, 22);
function itik(a, b: integer):integer;
begin
if b = 0 then itik := a
else itik := itik(b,a mod b);
end;
function bebek(x: integer):integer;
begin
if x > 10 then bebek:=0
else bebek := itik(data[x], bebek(x * 2));
end;
begin
writeln(bebek(1));
end.

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

9. Berapa kali teks ‘OSK2021’ dicetak pada pemanggilan mystery(0,8)?


procedure mystery(a:integer; b:integer;);
var m:integer;
begin
if (a <> b)
begin
writeln(‘OSK2021’);
m := (a + b) / 2;
mystery(a, m);
mystery(m, b);
end;
end;

a. 4
b. 5
c. 6
d. 7
e. program tidak pernah berhenti

Deskripsi berikut ini adalah untuk 2 soal berikut:


var
n, temp : longint;
begin
readln(n);
while n >= 10 do
temp := 1;
while n > 0 do
begin
temp := temp * (n mod 10);
n := n div 10;
end;
n := temp;
end.

10. Berapakah nilai akhir n, jika nilai n pada awalnya adalah 62792912?

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

11. Berapakah nilai akhir n, jika nilai n pada awalnya adalah 14934976?

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

Deskripsi berikut ini adalah untuk 2 soal berikut:


var
n, count : integer;
begin
readln(n);
count := 0;
repeat
n := (n * n + 5) mod 23;
count := count + 1;
until n = 0;
end.

12. Berapakah hasil akhir dari variabel count, jika n = 1?

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

13. Berapakah nilai maksimal dari variabel count dari semua kemungkinan nilai n?

a. 6
b. 7
c. 8
d. 9
e. Jawaban a, b, c, d salah

Deskripsi berikut ini adalah untuk 2 soal berikut:


function move(n:integer): integer;
begin
if (n=1) then move:=1
else move:=2*move(n-1)+1;
end;

14. Nilai kembalian pemanggilan fungsi move(16) adalah:

a. 65535
b. 31
c. 1
d. 32768
e. 33

15. Untuk semua nilai n>=1, nilai kembalian pemanggilan fungsi move(n) ekivalen dengan:

a. 2^(n-1)
b. 2^(n-1) + 1
c. 2*(n-1)
d. 2*(n-1)+1
e. 2^(n) – 1

Deskripsi berikut untuk soal nomor 16 – 17


var kancil, panda, i, j: integer;
begin
kancil = 1012101
ans = 0
while kancil > 0 do
begin
ans := ans * 10
ans := ans + (kancil mod 10)
kancil := kancil div 10
end;
writeln(ans)
end;

16. Output dari program tersebut jika kancil = 1012101 adalah

a. 7
b. 1000001
c. 6
d. 1012101
e. 8

17. Output dari program tersebut jika kancil = 100100 adalah

a. 7
b. 1001
c. 1001009
d. 1012101
e. 8

Deskripsi untuk soal nomor 18 - 19


function asik(a,b,x : integer) : integer;
var i:integer;
begin
for i:= 1 to x do
a := a+b;
asik := a;
end;
function seru(a,b,x : integer) : integer;
var i:integer;
begin
for i:= 1 to x do
begin
a := a-b;
break;
end;
seru := a;
end;

18. Apakah hasil yang dikembalikan dari menjalankan fungsi asik (1, 9, 5)?

a. 46
b. 45
c. 37
d. 15
e. 142

19. Apa hasil yang dikembalikan dari menjalankan fungsi seru( asik( 15, 9, 2000 ) , 9, 2000 )?

a. 16006
b. 16015
c. 18037
d. 18000
e. 18006

20. procedure Pagar(N: integer);


var k: integer;
begin
k := N;
while k > 0 do begin
write("#");
k := k - 10; {update harga k}
end;
end;

Jika banyaknya karakter "#" yang dicetak sebagai fungsi dari N (dengan harga N cukup besar), maka
fungsi itu proporsional dengan bentuk fungsi ...

a. (log N)2
b. N2
c. log N
d. N
e. N log N

Anda mungkin juga menyukai