Selasa, 19 Mei 2009

Latihan Soal UKK

Akhirnya sempat juga ...
Biar lebih mansstap blajar juga lat uh2. Met belajar!

1. Perhatikan kata-kata berikut :

1 pascal a bahasa tingkat rendah
2 C++ b bahasa mesin murni
3 C c bahasa tingkat lanjut
4 assembler d bahasa tingkat tinggi
5 bahasa mesin e bahasa tingkat menengah

Pasangan yang tepat adalah …
a. 1 - a , 2 - b, 3 - b
b. 1 - d, 2 - e, 4 - a
c. c. 3 - e, 4 - e, 5 - b
d. 3 - a, 4 - a, 5 - e
e. 4 - a, 5 - a, 2 - c

Jawab: b
Pembahasan:
Pembagian bahasa pemrograman berdasarkan sintaks dan kecepatan ada 3, yaitu: tingkat rendah, tingkat menengah, tingkat tinggi. Jadi option yang mengandung b(bahasa mesin murni) dan c (bahasa tingkat lanjut) pasti salah. Jawaban pilihan [a] dan [e] bisa dicoret dari daftar kemungkinan.
Selanjutnya tinggal diperiksa bahasa mana yang cocok dengan pembagiannya. Pilihan [c] salah karena 4(assembler )dipasangkan dengan e(bahasa tingkat menengah). Pilihan [d] salah karena 3( C ) dipasangkan dengan a ( bahasa tingkat rendah).


2. Desainer dari sebuah sistem secara keseluruhan dari awal sampai dengan akhir dikenal dengan istilah ....
a. Designer
b. Programmer
c. Surveyor
d. System Analyst
e. Tester

Jawab: C
Pembahasan:
Pada proses pembuatan program, ada beberapa tahapan yang harus dilalui. Pada tahap awal ada proses analisa kebutuhan pengguna lalu perancangan sistem. Orang yang bertanggung jawa b pada proses ini disebut System Analyst. Sedangkan programmer bertanggung jawab untuk mewujudkan program/sistem yang telah dirancang tersebut.

3. Simbol flowchart untuk case adalah ….
a. belah ketupat/diamond
b. persegi
c. segitiga
d. lingkaran
e. elips
Jawab: A
Pembahasan:
Case merupakan bentuk percabangan di pascal. Dalam membuat flowchart, bentuk percabangan diwakili dengan belah ketupat/diamond. Begitu juga 'if' dilambangkan dengan belah ketupat.

===fungsi dan prosedur===

4. Perhatikan pernyataan berikut ini:
i. procedure mempunyai 'return value'
ii. sebuah statement bisa dibuat dengan sebuah fungsi dan operator aritmat ika saja.
iii. procedure dan fungsi dapat mempunyai parameter.
iv. delete adalah contoh procedure
Pernyataan yang benar adalah:
a. i dan ii
b. i dan iii
c. ii dan iii
d. iii dan iv
e. semua salah

Jawab: D
Pembahasan:
Pernyataan [i] salah karena yang mempunyai return value atau nilai kembalian adalah fungsi. Contoh: pada perintah x := sqr(4) , fungsi sqr akan mengembalikan nilai kuadrat dari 4 (16) kepada variabel x.
Pernyataan [ii] salah karena membuat statement dengan fungsi , harus disertai operator assignment ( := ) atau prosedur.
Pernyataan [iii] dan [iv] benar. Fungsi dan prosedur mempunyai parameter, yaitu nilai yang berfungsi sebagai inputan (yang diletakkan di antara tanda kurung). Contoh:
x := sqr(panjang);
writeln('hai');
Pada contoh di atas yang disebut parameter adalah panjang dan 'hai'.


5. Perhatikan potongan program berikut:
kalimat:='apa kabar?':
huruf:=copy(kalimat,5,1);
Isi dari variabel huruf adalah …
a. kabar?
b. apa kabar?
c. apa k
d. k
e. kosong

Jawab: D
Pembahasan:
Perintah di atas adalah untuk mengkopi isi dari variabel kalimat dimulai dari posisi ke 5 sebanyak 1 karakter.

===percabangan===

6. Perhatikan source code berikut:

Kesalahan saat program di compile terdapat pada baris ke berapa dan apa alasannya?
a. baris 1 karena nama program menggunakan spasi
b. baris 12 karena tipe variabel yang digunakan bukan ordinal expression.
c. baris 15 karena sebelum 'else' menggunakan titik koma.
d. baris 13 karena angka nol seharusnya ditulis dengan tanda petik tunggal('0'..10')
e. baris 18 karena 'end' pada baris tersebut tidak mempunyai 'begin' sebagai pasangannya.

Jawab: A
Pembahasan:
Baris 12, tipe variabel qtt adalah byte. Jadi baris ini benar, karena byte, integer, char merupakan tipe variabel yang dapat digunakan pada case(termasuk ordinal expression). Lihat power poin perulangan yang ke tiga.
Pada baris 13 sudah benar, karena penulisan bilangan tidak menggunakan tanda petik. Beda jika yang dimaksudkan oleh programmer memang adalah string yang berisi angka, misalnya '100'.
Pada baris 15 dan 18 sudah benar. Pada case, aturan penulisannya memang seperti demikian. Lihat buku hal 55.

===perulangan===


7. For j:= 1 to batas do
if j mod 3 = 0 then write ('*')
else write (j);
Jika batas bernilai 4 maka potongan program di atas akan menghasilkan …
a. 12*4
b. **3*
c. *****
d. 12345
e. 12*45

Jawab: A
Pembahasan:
Perintah perulangan tersebut akan mengulang sebanyak 4 kali, dimulai dari j bernilai 1 sampai 4. Perintah 'if' merupakan perintah yang akan diulang 4 kali.Pada saat j mempunyai nilai kelipatan 3 ( 3, 6, 9, dst) 'if' akan mengerjakan perintah cetak '*'. Pada saat j mempunyai nilai selain dari kelipatan 3 (1,2,4,5,7, dst) 'if' akan mengerjakan perintah cetak isi j. Jadi yang tercetak adalah 12*4


===analisa program===

8. Analisa program ini:
program jumlah_deret;
uses crt;
var
batas,jum,i:integer;
begin
clrscr;
write('Batas : ');
readln(batas);
for i:=batas div 2 to batas do
begin
write(i,' ');
if i <> batas then write(' + ');
jum:=jum+i;
end;
writeln(' = ',jum);
readln;
end.
Soal:
a. Buatlah analisa dari perulangan yang terjadi jika inputan user adalah5(lima) 7(tujuh)!

b. Dari hasil akhirnya, jelaskan tujuan program ini!
Jawab
a. Jika inputan user adalah 7 maka variabel batas akan terjadi perulangan sebanyak 5 kali karena var i akan bernilai 3 (7 div 2) sampai 7. Dengan perulangan seperti pada tabel berikut:

setelah perulangan selesai, perintah writeln('= ',jum) dikerjakan satu kali, karena tidak termasuk dalam perulangan(diluar begin dan end milik for). Jadi hasil akhirnya adalah
3 + 4 + 5 + 6 + 7 = 25
b. Program ini berfungsi untuk mencetak deretan bilangan dari batas div 2 hingga bilangan batas, lalu menampilkan jumlahnya.

9. Perhatikan tampilan program berikut:
Nama barang: topi
Jumlah barang: 10
Harga barang: 25000
Total: 250000
Diskon : 25000

Buatlah flowchart dan program berdasarkan tampilan program di atas!

Jawab:
program gebyar_hadiah;
uses crt;
var
nm_brg:string;
total,hrg:longint;
jml:byte;
diskon:real;
begin
clrscr;
write('Nama barang: ');
readln(nm_brg);
write('Jumlah barang: ');
readln(jml);
write('Harga barang: ');
readln(hrg);

total:=jml*hrg;
if total>=100000 then
begin
diskon:=0.1 * total;
writeln('Diskon: ',diskon:0:0);
end;
if nm_brg='topi' then
writeln('Kamu dapat hadiah boneka lucu.')
else
writeln('Kamu tidak dapat hadiah. Kacian deh lu.');
readln;
end.

Flowchart:
Anda juga bisa mendownload latihan di atas dalam bentuk pdf di http://groups.google.com/group/pascal-newbie

###koreksi(22/5)
no 8, inputan bukan 5 tapi 7

Tidak ada komentar:

Posting Komentar