Senin, 09 Mei 2011

pembahasan soal olimpiade komputer tingkat kabupaten tahun 2010

Pembahasan Olimpiade Komputer tahun 2010 tingkat Kota/Kabupaten

Soal No.31
Pembahasan:
//x dan y bertipe integer
1. x :=-16; y:=8;
2. x := x + y; --> -16 + 8 = -8
3. x := y - x; --> 8 - -8 = 16

maka nilai hasil eksekusi program tsb adalah x=-8 dan y=8
Jawaban: A

Soal No.32
Pembahasan:
//x dan y bertipe integer
1. x :=20; y:=35;
2. x := x + y; --> 20 + 35 = 55
3. y := x - y; --> 55 - 35 = 20
4. x := x - y; --> 55 - 20 = 35

maka nilai hasil eksekusi program tsb adalah x=35 dan y=20
Jawaban: B

Soal No.33
Potongan Algoritma

procedure cetak(a:byte);
begin
while a>0 do
begin
write(a mod 2);
a := a shr 1;
end;
end;

Prosedur yang dipanggil dengan parameter 123(cetak(13)) akan mencetak..
Pembahasan:
Alurnya seperti berikut:
cetak(13)
a=13, a > 0 --> write 1
a=13 shr 1 = 00001101 --> 110 = 6
a=6, a > 0 --> write 0
a=6 shr 1 = 00000110 --> 11 = 3
a=3, a > 0 --> write 1
a=3 shr 1 = 00000011 --> 1 = 1
a=1, a > 0 --> write 1
a=1 shr 1 = 00000001 --> 0 = 0
a=0,

parameter 123 digunakan untuk membuat Tampilan Terformat
Untuk mengatur bentuk tampilan dari tampilan default ke bentuk yang diinginkan atau Batasan cetak

• Parameter Char:n
Batasan cetak/ bentuk tampilan/ jarak tampil data char
Contoh program :
Var
Ket1, Ket2 : char ;
Begin
Ket1 : = ‘A’ ;
Ket2 : = ‘B’ ;
Writeln (Ket1 : 5, Ket2 : 3);
End.
Output program :
bbbbAbbB
* ket : b = blank

• Parameter String:n
Batasan cetak/ bentuk tampilan/ jarak tampil data string
• Parameter Boolean:n
Batasan cetak/ bentuk tampilan/ jarak tampil data Boolean
• Parameter Integer:n
Batasan cetak/ bentuk tampilan/ jarak tampil data Integer
• Parameter Real:n:m
Batasan cetak/ bentuk tampilan/ jarak tampil data Real

Jadi hasil cetakan yang mungkin dan benar adalah 1111011
Jawaban: D

Soal No.34
Suatu array berindeks dari 2 s.d. 10 dan setiap elemennya berisi huruf-huruf berurutan dari ‘a’ sampai ‘j’. Suatu algoritma bekerja pada array tersebut sbb. (Prosedur swap(a,b) adalah menukarkan harga a dan b)
For I := 1 to 10 do
Swap(X[i],X[10-i+1]);
For I := 1 to 10 do write(X[i]);
Hasil yang dicetak adalah…
Pembahasan:
Array
1 2 3 4 5 6 7 8 9 10
a b c d e f g h i j
Langkah for I dan swap
swap
I ke- X[i] X[10-i+1]
1 X[1]=j X[10]=a
2 X[2]=i X[9]=b
3 X[3]=h X[8]=c
4 X[4]=g X[7]=d
5 X[5]=f X[6]=e
6 X[6]=f X[5]=e
7 X[7]=g X[4]=d
8 X[8]=h X[3]=c
9 X[9]=i X[2]=b
10 X[10]=j X[1]=a
Tercetak dari i=1 sampai 1=10
1 2 3 4 5 6 7 8 9 10
a b c d e f g h I J
Jawaban: A

Soal No.35
For I := 2 to 9 do
Swap(X[i-1],X[i+1]);
For I := 1 to 10 do write(X[i]);
Hasil yang dicetak adalah…

Pembahasan:
Array
1 2 3 4 5 6 7 8 9 10
a b c d e f g h i j
Langkah for I dan swap
swap
I ke- X[i-1] X[i+1]
2 X[1]=c X[3]=a
3 X[2]=d X[4]=b
4 X[3]=e X[5]=a
5 X[4]=f X[6]=b
6 X[5]=g X[7]=a
7 X[6]=h X[8]=b
8 X[7]=i X[9]=a
9 X[8]=j X[10]=b

Tercetak dari i=1 sampai 1=10
1 2 3 4 5 6 7 8 9 10
C d e f g h i j a b
Jawaban: D

Soal No.36
Array Seperti soal no.34
1 2 3 4 5 6 7 8 9 10
a b c d e f g h i j
Bekerja pada algoritma
Procedure lagi(a:integer; b:integer);
Var t:integer;
Begin
t:=(a+b)div 2;
if(a<=b) then begin
write(x[t]);
lagi(a,t-1);
lagi(t+1,b);
end;
End;
Maka, pemanggilan lagi(1,10) akan mencetakkan keluaran:…

Pembahasan:
Lagi(a,b) t:=(a+b)div 2 a < b write(x[t]) lagi(a,t-1) lagi(t+1,b)
Lagi(1,10) t=11 div 2=5 1 <10 x[5]=’e’ Lagi(1,4)
Lagi(1,4) t=5 div 2=2 1<5 x[2]=’b’ Lagi(1,1)
Lagi(1,1) t=1 div 2=1 x[2]=’a’



Bila Anda kesulitan melanjutkan pengerjaan soal ini,hentikan. Coba Anda cocokkan jawaban yang 3 karakter depannya adalah “eba”.
Ada bukan?dan hanya satu pilihan.
Jawaban :A


Soal No.37
Pembahasan:soal no.37,38,39
sum :=0;
//inisialisasi I à i := 2;
while i < 31 do à hargabatas = 31 agar dapat mengakses dari 1 s.d 30
begin
sum := sum + tabeldata[i];
//increment i à i := i + 2;
end;
writeln(sum);
end.

Jawaban: C

Soal No.38
Jawaban: D

Soal No.39
Jawaban: A

Soal No.40
Pembahasan
2+ 4+ 6+ 8+10 = 30
12+14+16+18+20 = 80
22+24+26+28+30 =130 +
240
Jawaban: A

Tidak ada komentar:

Posting Komentar