Perhatikan algoritma berikut ini :
var
array : [1 .
. 30 ] of longint = ( 5, 5, 7, 8, 6, 8,
5, 8, 4, 6, 6, 3, 4, 2, 8,0, 9, 2, 3, 4, 7, 8, 5, 4, 5, 3, 9, 8, 0, 3) ;
i, c : longint;
i, c : longint;
begin
c
:= 0;
for i := 1 to length (arr) do begin
inc ( c, arr[i] ) ;
for i := 1 to length (arr) do begin
inc ( c, arr[i] ) ;
end;
writeln
((c/length (arr)) :0:2;
end.
41. Apa keluaran program di atas?
a.
3.17
b.
4.17
c.
5.17
d.
6.17
e.
7.17
Jawab :
Dari
syntax/ algoritma di atas dapat diperhatikan bahwa ada pemanggilan for i to length (arr) dan berikutnya ada
inc(c, arr[i]). Itu meunjukkan bahwa ada penjumlahan yang
terjadi di dalam syntax tersebut.
Dengan
cara mudah kita menjumlahkan semua array atau data yang ada pada array
tersebut. Sehingga di dapat :
Hasil keluaran :
Jawaban : C
Perhatikan potongan kode berikut untuk 2
soal selanjutnya
var
i,
n, c : longint;
begin
readln
(n) ;
c
:= 0;
for i := 1 to n do begin
inc (c, i) ;
end;
writeln (c) ;
for i := 1 to n do begin
inc (c, i) ;
end;
writeln (c) ;
end.
42. Apakah output program di atas
apabila masukan n bernilai 10?
a.
10
b.
45
c.
55
d.
65
e.
76
Jawab:
Dari kode di
atas dapat dipahami bahwa terjadi penjumlahan secara berutan Karena ada syntax inc (c,i). Karena hal tersebut maka
digunakanlah rumus penjumlahan berurutan
(PENTING)
Jawaban : C
43. Apakah output program di atas apabila masukan n bernilai 1000?
a.
1000
b.
5500
c.
5550
d.
505000
e.
500500
Jawab:
Sama dengan hal di atas memakai rumus
yang sama
Jawaban : E
Perhatikan potongan kode berikut:
var
i,
j, n, r, c, d : longint;
begin
readln (n , r);
c := 0;
for i := 1 to n do begin
d := 1;
for j := 1 to i do begin
d := d*r ;
end ;
inc (c,d);
end;
writeln (c);
readln (n , r);
c := 0;
for i := 1 to n do begin
d := 1;
for j := 1 to i do begin
d := d*r ;
end ;
inc (c,d);
end;
writeln (c);
end.
44. jika diberi input 20 2, maka outputny adalah?
a.
1048576
b.
2097152
c.
1048575
d.
2097150
e.
2097151
Jawab:
C
|
I
|
D
|
j
|
d = d x r
|
0
|
1
|
1
|
1
|
1 x 2 = 2
|
2
|
1
|
1
|
1 x 2 = 2
|
|
2
|
2 x 2 = 4
|
|||
3
|
1
|
1
|
1 x 2 = 2
|
|
2
|
2 x 2 = 4
|
|||
3
|
4 x 2 = 8
|
|||
:
: : |
:
: : |
:
: : |
:
: : |
|
N
|
n
|
Dari
table di atas dan dari kode yang diketahui inx
(c,d) berarti terjadi penjumlahan
atau deret. Dari hal tersebut maka saya menggunakan rumus deret gemetri
(PENTING)
Karena
angka yang pangkat yang didapat dari soal sangat besar yaitu
. Maka saya menggunakan modulo atau sisa bagi.
Yaitu
Dan diperoleh hasil
Maka
dari penjabaran di atas diperoleh hasilnya yang memiliki satuan 0.
Jawaban : D
Perhatikan potongan kode
berikut:
Function tista ( a : integer
) : longint;
begin
if (a < 10) then tis := a
else tis := tis ( a div 10 ) * 3 + tis (a div 50);
end;
begin
if (a < 10) then tis := a
else tis := tis ( a div 10 ) * 3 + tis (a div 50);
end;
Berapakah hasil dari
pemanggilan fungsi tis(143)?
a.
8
b. 9
c. 10
d. 11
e.
12
Jawab :
tis(143) = tis (143
div 10) x 3 + tis (143 div 50)
= tis (14) x 3 + tis (2)
= 3 x [tis (1) x 3 + tis (0)] + tis (2)
= 3 x 3 + 2
= 11
= tis (14) x 3 + tis (2)
= 3 x [tis (1) x 3 + tis (0)] + tis (2)
= 3 x 3 + 2
= 11
jawaban : D
Perhatikan potongan kode
berikut:
const
MAX = 10;
var
i, n : integer;
a : array [1 . . 10] of integer;
procedure klik ();
begin
dec (i);
end;
fuction klek ( x : integer )
: integer;
begin
if ( x = MAX ) then klek := A [X] * A[1]
else klek := A[x] * A [x+1];
end;
function klok () : integer;
var
tmp : integer;
begin
if ( i = 0 ) then klok := i
else begin
tmp := I;
klik ();
klok := klok() + klek (tmp);
tmp := I;
klik ();
klok := klok() + klek (tmp);
end;
end;in
A[1] := 1; A[2] := 2; A[3] := 3; A[4] := 4; A[5] := 5;
A[6] := 6; A[7] := 8; A[8] := 7; A[9] := 9; A[10] := 11
read (n) ;
I := n;
writeln(klok());
end.
A[6] := 6; A[7] := 8; A[8] := 7; A[9] := 9; A[10] := 11
read (n) ;
I := n;
writeln(klok());
end.
46. Apakah output program
di atas jika diberi input 8?
a. 240
b. 235
c. 237
d. 330
e. 327
Jawab :
Karena
diberi input 8. Maka kode di atas akan dimulai dari n = 8. Karena i = n, maka i = 8.
Ayo
mainkan nalarnya ya dan sesuaikan dengan kode di atas serta pahami dengan
seksama alur pembacaaan kode di atas . OKE !!!!!
n= 8
i=8
read (8)
i=8
read (8)
i
|
Tmp
|
klik
= decrease (i)
|
klok
= klok() + klek (tmp)
|
klek
(x)
|
8
|
8
|
7
|
Klok
= klok () + klek (8)
|
klek
= A[8] x A[9]
=
7 x 9
=
63
|
7
|
7
|
6
|
Klok
= klok() + klek (7) + klek (8)
|
Klek
(7) = A[7] x A[8]
=
8 x 7
=
56
|
:
:
: |
:
: : |
:
: : |
:
: : |
:
: : |
Dari
tabel di atas dapat kita nalarkan bahwa akan terjadi penjumlahan klek (x) dari
klek (8) sampai dengan klek (1).
Maka
akan didapatkan hasil = (7 x 9) + (8 x
7) + (7 x 6) + (6 x 5) + (5 x 4) + (4 x 3 ) + ( 3 x 2) + (2 x 1) = 237
Jawaban : C
Perhatikan
potongan kode sebagai berikut untuk 2 soal selanjutnya
A := 13; b :=
1;
while (a < n) do
begin
a := a + b;
b := b+ 1;
end;
writeln (a, ‘ ‘, b);
while (a < n) do
begin
a := a + b;
b := b+ 1;
end;
writeln (a, ‘ ‘, b);
47. Dari
pilihan berikut ini, berapakah nilai n yang TIDAK membuat nilai a diahir 79?
a.
68
b. 69
c. 70
d. 71
e.
72
Jawab :
Dari
kode di atas terlihat bahwa aka terjadi penambahan 1+2+3…
Sampai
nilai a ≥ n
Jadi
a = 13 … 68 79 …
Jadi
nilai n yang tidak membuat nilai a di akhir 79 adalah 68. Karena pada saat itu
a = n
Ingat
rumus:
Jawaban : A
48.berapakah
nila n maksimum yang membuat nilai b di akhir bernilai 15?
a.
134
b. 133
c. 119
d. 118
e.
117
Jawab :
Dari kode kita lihat bahwa akan
terjadi a dengan b – 1. Maka nilai b = 15 ketika a dijumlahkan sebanyak 14 kali
dengan menggunakan rumus tadi.
Jadi
n maksimum yang membuat nilai b = 15 adalah 118
Jawaban : D
Perhatikan
potongan kode sebagai berikut untuk 2 soal berikutnya
Function naon (x, y: longint ) :
longint;
begin
if y = 0 then naon := 1
else if y := 1 then nanon := x
else naon := naon (x, y div 2) * naon ( x, y div 2) * naon (x, y mod 2);
begin
if y = 0 then naon := 1
else if y := 1 then nanon := x
else naon := naon (x, y div 2) * naon ( x, y div 2) * naon (x, y mod 2);
end;
49.
Berapakah hasil dari naon ( 3,8) ?
a. 11
b.
24
c.
6561
d.
512
e. 81
Jawab
:
Dari kode tersebut kita
mengetahui bahwa kode tersebut merupakan
.
Jadi hasilnya adalah
Jawaban
: C
50.
Berapa kalikah fungsi naon dipanggil pada pemanggilan naon (4,13)?
a. 13
b.
15
c.
20
d.
21
e.
22
Jawab:
(4,13) = hasilnya 21 + 1 = 22
(4,13 ) = (4,6) (4,6) (4,1) => 7*2 +
1 => 9*2 [ (4,6) ada dua dan setiap (4,6) bakal manggil 9
naon] + 3 => 21
naon] + 3 => 21
(4,6) = (4,3) (4,3) (4,0) => 3*2 [ (4,3)
ada 2 nah setiap (4,3) bakal manggil 3 naon] + 3
(manggil dirinya sendiri ) => 9
(manggil dirinya sendiri ) => 9
(4,3) =
(4,1) (4,1) (4,1) => 3 ( manggil dirinya sendiri )
-
setiap (4,1) dan (4,0 ) tidak akan memanggil fungsi
naon lain, melainkan langsung menghasilkan nilai x atau 1
Jawaban
: E
Pesan : “ Dalam pengerjaan soal
algoritma ini kita dituntut untuk lebih teliti dan pandai dalam membaca pola
yang diberikan serta logika berpikir harus ditingkatkan.”
C.P
: 082284831195
BBM
: 5ED08188
TERIMA
KASIH DAN SELAMAT BELAJAR


Komentar
Posting Komentar