SOAL & PEMBAHASAN OLIMPIADE KOMPUTER SMAN 3 Nganjuk

Soal dan Pembahasan Seleksi I
1. Seorang pedagang barang elektronik menjual sebuah televisi berwarna layar datar seharga Rp.3.000.000, jika tarif pajak barang elektronik yang tergolong barang mewah tersebut adalah antara 5 % sampai 8 %, maka harga yang paling mungkin untuk televisi tersebut setelah ditambah pajak adalah :
(A) Rp. 3.180.000
(B) Rp. 3.100.000
(C) Rp. 3.120.000
(D) Rp. 3.140.000
(E) Rp. 3.250.000
Pembahasan
X = Rp 3.000.000
Tarif Pajak = 5% - 8%
Harga televisi + pajak 5% = 3.150.000
6% = 3.180.000
7% = 3.210.000
8% = 3.240.000

2. Manakah yang mendeklarasikan tipe enumerasi dengan tepat?
a. Type a=integer;
b. Type a=1..300;
c. Type a=(baik, jelek, buruk);
d. Type a=[baik, jelek, buruk];
e. Type a=baik, jelek, buruk;

3. Tipe di bawah ini mana yang tidak dapat melakukan operasi aritmatika?
a. Integer
b. Byte
c. Real
d. boolean
e. word

4. Deklarasi prosedur manakah yang tidak dibenarkan?
a. procedure hapus;
b. procedure hapus(s:string);
c. procedure hapus(var s:string);
d. procedure hapus(s:string):boolean;
e. procedure hapus(var data);
Pembahasan:
Untuk penulisan prosedur, tidak diperbolehkan adanya nilai kembali. Sedangkan parameter tanpa tipe data (pada opsi e), dapat dibenarkan.

5. Tipe variabel ekspresi manakah yang tidak dapat ditampilkan dengan procedure Writeln?
a. Type T=Integer;
b. Type T=String;
c. Type C=Char;
d. Type T=(Small, Medium, Large)
e. Semua valid
Pembahasan:
Opsi d adalah tipe data enumerasi. Tipe data enumerasi tidak dapat ditampilkan dengan perintah Writeln.

6. Perhatikan program berikut :
var s:string;
begin
s:='TOKI GO GET GOLD!';
delete(s,1,length(s)-12);
writeln(s);
end.
Apa keluaran program di atas ?
a. GO GET GOLD!
b. GO GET GOLD!
c. GET GOLD!
d. TOKI GO GET
e. TOKI GO GE
Pembahasan:
Procedure delete:
Deklarasi : procedure Delete(var S: String; Index: Integer; Count:Integer);
Keterangan : procedure delete akan menghapus S sebanyak count karakter, dimulai dari posisi Index.
Function length:
Deklarasi : Function Length (S : String) : Integer;
Keterangan : Length menghasilkan panjang dari S, bernilai antara 0 sampai dengan 255.
Jika S tidak berisi apa-apa maka akan menghasilkan 0.
Statement delete(s,1,length(s)-12) akan menghapus s dari posisi 1 sebanyak panjang s, yaitu 17-12 = 5. Sehingga yang dihapus adalah karakter ‘TOKI ‘ dan s akan bernilai GO GET GOLD!

7. Perhatikan penggalan program berikut :
var i,k: integer;
begin
i:=5; k:=0;
k:=trunc(sqrt(i))+1;
writeln(k);
end.
Apa keluaran program di atas ?
a. 3
b. 2.24
c. 2
d. 0
e. program tidak dapat dijalankan
Pembahasan:
Fungsi sqrt :
Deklarasi : Function Sqrt (X : Real) : Real;
Keterangan : menghasilkan akar pangkat dua dari x, di mana x harus positif
Fungsi trunc:
Deklarasi : Function Trunc (X : Real) : Longint;
Keterangan : menghasilkan bilangan bulat dari X, akan selalu lebih kecil atau sama dengan X.
Sqrt(5) akan menghasilkan 2.23
Trunc(2.23) akan menghasilkan 2
Sehingga k:=trunc(sqrt(i))+1; akan menghasilkan 3

8. Mengacu pada program berikut :
var
A,B:string;
C:string[10];
begin
A:='TOKI MEMANG';
B:='HEBAT';
C:=A+B;
if (Pos(B)>0) then
Begin
Writeln('A');
end else
Writeln('B');
end.
Apa yang terjadi jika program di atas di jalankan...
a. Huruf ‘A’ tercetak
b. Huruf ‘B’ tercetak
c. Tidak dapat dipastikan
d. Terjadi error
e. Tidak bisa di compile
Pembahasan:
Kesalahan pertama yang akan ditemui program adalah pada function pos.
Deklarasi : Function Pos (Substr : String; S : String) : Integer;
Keterangan : function pos akan menghasilkan urutan atau posisi substr di S. Jika tidak ditemukan, maka akan menghasilkan 0.
Pada program function pos hanya terdiri dari 1 parameter saja sehingga program tidak akan dapat dijalankan.

9. Jika n dan p adalah dua bilangan bulat, dan n + p berharga ganjil, manakah dari berikut ini bil ganjil?
a. n – p + 1
b. np
 

c. n2 + p2 – 1
d. 3p + 5n
e. (p – n)(n – p)
Pembahasan ;
A bukan, karena (n+p) adalah ganjil maka dari n dan p salah satu ganjil dan yang lain genap. Selisih antara n dan p pasti ganjil sehingga jika ditambah 1 menjadi genap.
B bukan karena perkalian antara suatu bilangan genap dengan bilangan apapun akan menjadi genap.
C bukan karena pangkat bulat positif berapapun dari bilangan genap, tetap genap, dan ganjil tetap ganjil, kemudian ganjil ditambah genap dan dikurang ganjil menjadi genap.
D bukan karena pangkat bulat positif berapapun dari bilangan ganjil tetap bilangan ganjil, dan jumlah dua bilangan ganjil menjadi genap.
E benar, karena perkalian antara dua bilangan ganjil menghasilkan bilangan ganjil.

10. var
i,j : integer;
begin
for i :=1 to 3 do
for j :=i to 3 do
write(‘*’);
writeln;
end.
Output program di atas :
a. *
 

**
***

b. ***
***
***

c. ***
**
*

d. ******

2 comments:

Free SMS

Chat Di Sini Ya ^_^

Friends

Follower's Blog

Iklan adsense

Iklan adsense Camp