Sabtu, 22 Juni 2013
Senin, 07 Mei 2012
OSN TIK
OSN Tik
05:29
1. 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;
Jawab: c. Type a=(baik, jelek, buruk);
2. Tipe di bawah ini mana yang tidak dapat melakukan operasi aritmatika?
a. integer
b. byte
c. real
d. boolean
e. word
Jawab: d. Boolean
3. Deklarasi prosedur manakah yang 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);
Jawab: d. procedure hapus(s:string):boolean; Pembahasan: Untuk penulisan prosedur, tidak diperbolehkan adanya nilai kembali. Sedangkan parameter tanpa tipe data (pada opsi e), dapat dibenarkan.
4. Deklarasi function manakah yang tidak diizinkan?
a. Function density(x:real):real;
b. Function density(b:byte):byte;
c. Function density(var s:string):real;
d. Function density(var data):byte;
e. Function density;
Jawab: e. Function density; Pembahasan: Untuk penulisan function , harus ada nilai kembali.
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
Jawab: d. Type T=(Small, Medium, Large) Pembahasan: Opsi d adalah tipe data enumerasi. Tipe data enumerasi tidak dapat ditampilkan dengan perintah Writeln.
6. Dengan deklarasi berikut: Type warna=(merah,kuning,hijau,biru,hitam,putih,jingga); Var w:warna; Perintah mana yang salah?
a. If w in [warna] then writeln(‘ada’);
b. w:=merah; w:=w + kuning;
c. w:=[merah];
d. w:=hijau; dec(w);
e. w:=’Merah’;
Jawab: d. w:=hijau; dec(w); Pembahasan: Variabel w adalah variabel yang mempunyai tipe data enumerasi yang merupakan salah satu tipe data ordinal. Karena merupakan tipe data ordinal, maka variabel w dapat dioperasikan dengan fungsi atau prosedur seperti ORD, DEC, INC, PRED, dan SUCC.
7. Pada deklarasi di atas, jika variabel W1 berisi [merah,kuning,hijau] dan variabel W2 berisi [merah,kuning,hitam] maka, jika diberikan statemen W3:=W1+W2, W3 akan berisi:
a. [merah,kuning,hijau,hitam]
b. [merah,kuning,hijau,merah,kuning,hitam]
c. [hijau,hitam]
d. [merah,kuning,merah,kuning,hijau, hitam]
e. [merah,kuning]
Jawab: a. [merah,kuning,hijau,hitam] Pembahasan: Operator + pada tipe data himpunan adalah gabungan atau union.
8. Jika diberikan statemen W3:=W1-W2, W3 akan berisi:
a. [merah,kuning,hijau,hitam]
b. [merah,kuning,hijau,merah,kuning,hitam]
c. [hijau]
d. [merah,kuning,merah,kuning,hijau, hitam]
e. [merah,kuning]
Jawab: c. [hijau] Pembahasan: Operator - pada tipe data himpunan adalah operator difference. Konsep Dasar Pemrograman Prosedural 61
9. Jika diberikan statemen W3:=W1*W2, W3 akan berisi:
a. [merah,kuning,hijau,hitam]
b. [merah,kuning,hijau,merah,kuning,hitam]
c. [hijau,hitam]
d. [merah,kuning,merah,kuning,hijau, hitam]
e. [merah,kuning]
Jawab: c. [hijau,hitam] Pembahasan: Operator * pada tipe data himpunan adalah operator irisan. SOAL-SOAL INPUT / OUTPUT
10. Perhatikan potongan program berikut ini : Begin Writeln((10 shr 1) shl 2); end. Apa yang dihasilkan oleh program diatas...
a. 18 b. 19 c. 20 d. 21 e. 22
Jawab: c. 20 Pembahasan: Operator SHR adalah operasi pergeseran bit ke kanan dan operasi shl adalah operasi pergeseran bit ke kiri. 10 shr 1 = 5 ? (1010 shr 1 = 0101 = 5) 5 shl 2 = 20 (0101 shl 2 = 10100 = 20) SOAL-SOAL STRUKTUR KONTROL
11. Bagaimana keluaran program di bawah ini? Var I:integer; Begin I:=2; Case I of 1,3,5,7,9:writeln(‘Ganjil’); 2:writeln(‘Prima genap’); 0..10:writeln(‘Normal’); else writeln(‘Tidak normal’); end; end;
a. Prima genap
b. Normal
c. Prima genap Normal
d. Normal Prima genap
e. Prima genap Tidak normal
Jawab: a. Prima genap Pembahasan: Struktur kendali case akan segera keluar untuk menjalanakan statement berikutnya setelah menemukan nilai yang tepat. Perhatikan program di bawah ini: var I,j,k:integer; L:byte; begin i:=3; j:=4; k:=32; L:=0; {If – 1 } if i + j and k =0 then writeln(‘Betul’) else Konsep Dasar Pemrograman Prosedural 63 writeln(‘Salah); {If – 2 } if (i = 2) and (j <> i) then writeln(‘Betul’) else writeln(‘Salah); {If – 3} if not L in [1..120] then writeln(‘Betul’) else writeln(‘Salah’); end. Program diatas berisi tiga perintah if then else yang saling tidak berkaitan, masing-masing IF diberi nama IF – 1, IF – 2, IF – 3.
12. Perintah if manakah yang tidak dibenarkan:
a. If - 1
b. If - 2
c. If - 3
d. If – 1 dan if - 2
e. Tidak ada if yang salah
Jawab: e. Tidak ada if yang salah Pembahasan: Pada If – 1, ekspresi i+j and k adalah ekspresi matematika dengan urutan pengerjaan j and k kemudian ditambahkan dengan i. Ini merupakan ekspresi yang valid dalam bahasa Pascal Pada If – 3, ekspresi Not L akan dioperasikan terlebih dulu. Ini juga merupakan ekspresi yang valid dalam bahasa Pascal.
13. Pada program di atas, if mana yang menghasilan output “Betul”?
a. If - 1
b. If - 2
c. If - 3
d. If – 1 dan if - 2
e. Tidak ada if yang menghasilkan “Betul”
Jawab: 64 Konsep Dasar Pemrograman Prosedural b. If - 2 Pembahasan: Urutan pengerjaan operator AND dan OR adalah AND akan dievaluasi terlebih dulu. Pada kondisi pertama, (i = 2) and (j <>i), akan menghasilkan TRUE, sehingga yang dicetak adalah “Betul”
SOAL-SOAL PERULANGAN
14. Perhatikan penggalan program berikuti ni : const Data: array [1..3,1..3] of char= ((‘1’,’1’,’2’)(‘2’,’2’,’4’),(‘4’,’4’,’8’)); var i, j : byte; begin for i:= 1 to 3 do begin for j:=3 downto 1 do write(Data[i,j]): writeln; end; end. Apa keluaran program di atas ?
a. 112 224 448
b. ‘1’’1’’2’ ’2’’2’’4’ ’4’’4’’8’
c. 211 422 844
d. ‘2’’1’’1’ ’4’’2’’2’ ’8’’4’’4’
e. 124 124 248
Jawab: c. 211 422 844 15. Perhatikan program dibawah ini : type data=set of char; var setchar:data; s:string; i:integer; begin setchar:=[]; readln(s); for i:=1 to length(s) do begin if not(s[i] in setchar) then begin setchar:=setchar+[s[i]]; write(s[i]); end; end; writeln; end.
15. Output dari program di atas jika input 'To be or Not To be that is the question' adalah
a. ‘To berNthaisqun.'
b. ‘To berNhaisqu`
c. ‘to@bernhaisquN'
d. ‘T N.'
e. ‘OBERTHAISQUN’
Jawab: a. ‘To berNthaisqun.' Pembahasan: Yang perlu diperhatikan adalah bahwa tidak ada anggota yang sama dalam sebuah set (himpunan).
16. Gunakan program berikut untuk menjawab pertanyaan : type data=set of byte; var setint:data; i:integer; begin setint:=[1]; setint:=setint+[3]; setint:=[5]; for i:=1 to 5 do begin if (i in setint) then continue else setint:=[i]; end; end. Output dari program di atas adalah:
a. [1,2,3,4,5]
b. [1,3,5]
c. [5]
d. [1,3]
e. []
Jawab: c. [5] Pembahasan: Statement di bawah ini setint:=[1]; setint:=setint+[3]; setint:=[5]; Akan membuat setint berisi [5] saja. Pada statement berikutnya: for i:=1 to 5 do begin if (i in setint) then continue else setint:=[i]; end; Akan membuat setint berisi nilai terakhir dari i yaitu 5. SOAL-SOAL PROSEDUR DAN FUNGSI
17. Perhatikan program berikut : var s:string; Konsep Dasar Pemrograman Prosedural 67 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
Jawab: a. GO GET GOLD! 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!
18. 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
Jawab: a. 3 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
19. 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
Jawab: 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.
20. Perhatikan potongan program berikut : begin writeln(round(frac(3.7))); end. Apa keluaran program di atas ?
a. 0
b. 1
c. 2
d. 3
e. 4
Jawab: b. 1 Pembahasan: Fungsi frac (lihat pembahasan di atas) Fungsi round Deklarasi : Function Round (X : Real) : Longint; Keterangan : membulatkan bilangan X, yang mungkin lebih besar atau lebih kecil dari X. Frac(3.7) akan menghasilkan 0.7 Round(0.7) akan menghasilkan 1
21. Diketahui deklarasi fungsi dan variabel sebagai berikut: var St: String; procedure Sulap(var S: String); begin if S = 'Kecil’ then S :=’kecil’ else if S = ‘Besar’ then S :=’BESAR’; end; Di antara potongan program berikut, manakah yang salah?
a. St := Chr(60); Sulap(St);
b. St :=’KECIL’; Sulap(St);
c. St := Chr(45) + Chr(65); Sulap(St);
d. Sulap(‘Besar’);
e. Semua ekspresi di atas benar
Jawab: a. St := Chr(60); Sulap(St); Pembahasan: Sebuah variabel string tidak dapat diberikan nilai bertipe data character. SOAL-SOAL OPERASI FILE
22. Perintah mana yang tidak boleh digunakan untuk file bertipe text?
a. Assign
b. Reset
c. EOF
d. FilePos
e. Semua boleh digunakan untuk Text
Jawab: d. FilePos Pembahasan: Perint ah FilePos adalah perintah untuk mengetahui posisi file pointer (penunjuk file), dan hanya dapat dioperasikan untuk file bertipe bukan text. Gunakan program berikut ini untuk menjawab soal di bawah ini: program Uji; var T:Text; i,j,k:integer; begin Assign(T, 'INPUT.TXT’); Reset(T); Readln(T, i, j, k); Writeln(i,’ ’ j,’ ’, k); Readln(T,i); Readln(T,j); Writeln(i,’ ’,j); Close(T); End.
23. Misalkan file INPUT.TXT berisi baris-baris sebagai bcrikut: 3 1 4 9 5 2 6 8 7 0 Bagaimanakah output dari program tersebut?
a. 3 1 4 9 5 2 6 8 7
b. 3 1 4 9 5
c. 3 1 4 5 2
d. 3 1 4 5 8
e. Terjadi runtime error karena isi file INPUT.TXT tidak sesuai untuk program ini.
Jawab: d. 3 1 4 5 8 Pembahasan: Perintah Readln akan melakukan pembacaan di baris berikutnya. Perintah Readln pertama akan melakukan pembacaan pada file baris pertama, perintah Readln berikutnya melakukan pembacaan pada baris ke dua dan perintah Readln terakhir melakukan pembacaan pada baris ketiga.
SOAL-SOAL KASUS / MEMBACA PROGRAM
Program berikut ini dipakai untuk menjawab dua soal di bawah ini var Bil:Integer; procedure Find(B:Integer;I:Integer); var J,R:Integer; begin R:=Round(sqrt(B)); J:=2; while (J<=R) and (B Mod J<>0) do inc(J); if J<=R then begin Write(J,'*'); Find(B div J, I+1); end else if I>0 then Writeln(B,'=',Bil) else Writeln('Bilangan Prima!'); end; begin Write('Masukkan bilangan : '); Readln(Bil); Find(Bil,0); end.
24. Bagaimana output program di atas bila inputnya 42?
a. 7 * 3 * 2 = 42
b. Bilangan prima
c. =42
d. 2 * 3 * 7 = 47
e. Salah semaa
Jawab: a. 7 * 3 * 2 = 42 25. Bagaimana output program di atas bila, inputnya 23? a. = 23 b. Bilangan pima c. 23 * 1 = 23 d. = 23 Bilangan prima! e. Salah semua Jawab: b. Bilangan prima Joni, petugas statistik yang baru saja belajar Pascal. Mencoba membuat program perata-rata sebagai berikut var Amatan:array[5] of integer; Jumlah:Integer; RataRata:Integer; I:Integer; begin for I:=1 to 5 do begin Write('Amatan ke-',I,' : '); Readln(Amatan[I]); end; Jumlah:=0; For I:=1 to 5 do begin Jumlah:=Jumlah+Amatan[I]; RataRata:=Jumlah/5; Writeln('Jumlah = ',Jumlah); Writeln('Rata-rata = ',RataRata); Readln; end. Gunakan program yang dibuat oleh Joni ini untuk menjawab soal-soal berikut.
26. Ketika si Joni mencoba menjalankan program tersebut, temyata, compiler menunjukkan sebuah pesan kesalahan yang membuat: ia kebingungan. Tahukah Anda kesalahan pertama yang dibuat Joni?
a. Judul program (program Statistik) terlalu panjang, maksimum 8 karakter (misalnya: program Stat)
b. Procedure Readln (pada baris terakhir program sebelum end.) tidak boleh dipanggil tanpa parameter. Jadi seharusnya: Readln(I);
c. Statement for dengan variabel sama tidak boleh diulangi dua kali. Seharusnya dideklarasikan variabel lain, misalnya var I: Integer untuk for yang kedua
d. Deklarasi array salah, semestinya: var Amatan: array[ 1..5] of Integer;
e. Nama variabel seperti RataRata tidak valid, scharusnya Ratarata
Jawab: a. Deklarasi array salah, semestinya: var Amatan: array[ 1..5] of Integer; Pembahasan: Deklarasi dari array adalah: type identifier=array[tipe_indeks] of tipe_data di mana tipe_indeks adalah tipe data ordinal.
27. Setelah Anda memberi saran demikian, temyata Joni masih belum bisa meng-compile programnya. Apa sebabnya?
a. setiap variabel harus dideklarasikan dengan keyword var sendiri-sendiri. Misalnya: var Jumlah: Integer; var RataRata:Integer; Var I:Integer;
b. Variabel RataRata tidak harus bertipe Real
c. Semua variabel, kecuali I seharusnya adalah Real, tidak boleh Integer
d. Pemisah antara parameter dalam Write dan Writeln harus titik koma, bukan koma, Misalnya Writeln(‘Jumlah = ‘;Jumlah);
e. Semua alasan di atas salah
Jawab: c. Semua variabel, kecuali I seharusnya adalah Real, tidak boleh Integer Pembahasan: Dalam program diberikan instruksi RataRata:=Jumlah/5 yang berarti variabel RataRata harus bertipe Real. Karena operator / hanya dikenal oleh variabel yang bertipe real. Konsep Dasar Pemrograman Prosedural 75
28. Joni mengganti operator “/” dengan "div" pada baris ke-15 program tersebut. Apa akibatnya?
a. program tidak mau di-compile karena. operator div tidak dapat digunakan di situ
b. nilai rata-ratanya menjadi 5
c. nilai rata-ratanya menjadi 6
d. nilai rata-ratanya menjadi 0
e. nitai rata-ratanya menjadi 2
Jawab: b. nilai rata-ratanya menjadi 5 Pembahasan: Perintah div adalah operator pembagian yang menghasilkan pembulatan ke bawah. Gunakan program berikut ini untuk menjawab beberapa soal selanjutnya: uses crt; var j:array['A'..'Z'] of Byte; c:char; Kal:string; procedure HH(S:String); var i:integer; {baris-6} m:char; begin for i:= 1 to length(S) do begin m:=S[i]; {baris-11} if m in ['A'..'Z'] then {baris-12} inc(J[i]); end; end; begin for c:='A' to 'Z' do J[c]:=0; Kal:='PASAR'; HH(Kal); for c:='A' to 'Z' do if J[c]>0 then write(c,J[c],' '); writeln; Kal:='RAYA'; HH(Kal); for c:='Z' downto 'A' do if j[c]>0 then write(c,J[c],' '); writeln; end.
29. Bila terdapat kesalahan yang menyebabkan program sama sekali tidak dapaf dijalankan sebutkan pada baris berapa, dan bagaimana perbaikannya?
a. Kesalahan semacam ini tidak ada
b. Baris 12, seharusnya ditulis If [m] in [‘A’..’Z’] then
c. Baris 6 seharusnya ditulis var i: Char;
d. Baris 13, seharusnya ditulis lnc(J[m]);
e. Index array hanya boleh berupa angka. Jadi deklarasi variabel seharusnya ditulis: const A = 1; Z = 26; var J: array[A..Z] of Byte; c: Byte; Kal: String; dan semua konstanta karakter dalam perintah for harus diganti, misalnya: for c:= A to Z do dan eterusnya
Jawab: b. Baris 13, seharusnya ditulis inc(J[m]); Pembahasan: Variabel J adalah variabel dengan tipe data array yang mempunyai indeks [‘A’..’Z’]. Dalam program diberikan indeks berupa bilangan bulat, yaitu i. Hal ini akan menghasilkan pesan kesalahan type mismatch.
30. Dengan perbaikan seperti nomor sebelumnya (kalau ada), maka program bisa dijalankan. Apakah hasil dari program tersebut?
a. A2 PI RI SI A4 PI R2 Sl Yl
b. A2 P1 RI SI YI RI A2
c. A2 PI RI SI YI R2 A4
d. PI A2 Sl RI YI A4 R2
e. A2 P1 RI SI Yl Sl R2 PI A4
Jawab: e. A2 P1 RI SI Yl Sl R2 PI A4
31. Tindakan apakah yang dilakukan oleh subrutin HH ketika dipanggil oleh baris 19 program di atas, dengan string S berisi kata “PASAR"?
a. Menghitung frekuensi kemunculan huruf-huruf alfabet dan menyimpannya dalam array J
b. Mengumpulkan huruf-huruf alfabet yang muncul lebih dari satu kali ke dalam array J
c. Mencatat letak setiap huruf alfabet ke dalam array J
d. Menentukan huruf yang paling sering dan paling jarang muncul dalam array J e. Mengurutkan huruf-huruf menurut urutan alfabet dari yang terkecil sampai yang terbesar. Jawab: a. menghitung frekuensi kemunculan huruf-huruf alfabet dan menyimpannya dalam array J
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;
Jawab: c. Type a=(baik, jelek, buruk);
2. Tipe di bawah ini mana yang tidak dapat melakukan operasi aritmatika?
a. integer
b. byte
c. real
d. boolean
e. word
Jawab: d. Boolean
3. Deklarasi prosedur manakah yang 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);
Jawab: d. procedure hapus(s:string):boolean; Pembahasan: Untuk penulisan prosedur, tidak diperbolehkan adanya nilai kembali. Sedangkan parameter tanpa tipe data (pada opsi e), dapat dibenarkan.
4. Deklarasi function manakah yang tidak diizinkan?
a. Function density(x:real):real;
b. Function density(b:byte):byte;
c. Function density(var s:string):real;
d. Function density(var data):byte;
e. Function density;
Jawab: e. Function density; Pembahasan: Untuk penulisan function , harus ada nilai kembali.
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
Jawab: d. Type T=(Small, Medium, Large) Pembahasan: Opsi d adalah tipe data enumerasi. Tipe data enumerasi tidak dapat ditampilkan dengan perintah Writeln.
6. Dengan deklarasi berikut: Type warna=(merah,kuning,hijau,biru,hitam,putih,jingga); Var w:warna; Perintah mana yang salah?
a. If w in [warna] then writeln(‘ada’);
b. w:=merah; w:=w + kuning;
c. w:=[merah];
d. w:=hijau; dec(w);
e. w:=’Merah’;
Jawab: d. w:=hijau; dec(w); Pembahasan: Variabel w adalah variabel yang mempunyai tipe data enumerasi yang merupakan salah satu tipe data ordinal. Karena merupakan tipe data ordinal, maka variabel w dapat dioperasikan dengan fungsi atau prosedur seperti ORD, DEC, INC, PRED, dan SUCC.
7. Pada deklarasi di atas, jika variabel W1 berisi [merah,kuning,hijau] dan variabel W2 berisi [merah,kuning,hitam] maka, jika diberikan statemen W3:=W1+W2, W3 akan berisi:
a. [merah,kuning,hijau,hitam]
b. [merah,kuning,hijau,merah,kuning,hitam]
c. [hijau,hitam]
d. [merah,kuning,merah,kuning,hijau, hitam]
e. [merah,kuning]
Jawab: a. [merah,kuning,hijau,hitam] Pembahasan: Operator + pada tipe data himpunan adalah gabungan atau union.
8. Jika diberikan statemen W3:=W1-W2, W3 akan berisi:
a. [merah,kuning,hijau,hitam]
b. [merah,kuning,hijau,merah,kuning,hitam]
c. [hijau]
d. [merah,kuning,merah,kuning,hijau, hitam]
e. [merah,kuning]
Jawab: c. [hijau] Pembahasan: Operator - pada tipe data himpunan adalah operator difference. Konsep Dasar Pemrograman Prosedural 61
9. Jika diberikan statemen W3:=W1*W2, W3 akan berisi:
a. [merah,kuning,hijau,hitam]
b. [merah,kuning,hijau,merah,kuning,hitam]
c. [hijau,hitam]
d. [merah,kuning,merah,kuning,hijau, hitam]
e. [merah,kuning]
Jawab: c. [hijau,hitam] Pembahasan: Operator * pada tipe data himpunan adalah operator irisan. SOAL-SOAL INPUT / OUTPUT
10. Perhatikan potongan program berikut ini : Begin Writeln((10 shr 1) shl 2); end. Apa yang dihasilkan oleh program diatas...
a. 18 b. 19 c. 20 d. 21 e. 22
Jawab: c. 20 Pembahasan: Operator SHR adalah operasi pergeseran bit ke kanan dan operasi shl adalah operasi pergeseran bit ke kiri. 10 shr 1 = 5 ? (1010 shr 1 = 0101 = 5) 5 shl 2 = 20 (0101 shl 2 = 10100 = 20) SOAL-SOAL STRUKTUR KONTROL
11. Bagaimana keluaran program di bawah ini? Var I:integer; Begin I:=2; Case I of 1,3,5,7,9:writeln(‘Ganjil’); 2:writeln(‘Prima genap’); 0..10:writeln(‘Normal’); else writeln(‘Tidak normal’); end; end;
a. Prima genap
b. Normal
c. Prima genap Normal
d. Normal Prima genap
e. Prima genap Tidak normal
Jawab: a. Prima genap Pembahasan: Struktur kendali case akan segera keluar untuk menjalanakan statement berikutnya setelah menemukan nilai yang tepat. Perhatikan program di bawah ini: var I,j,k:integer; L:byte; begin i:=3; j:=4; k:=32; L:=0; {If – 1 } if i + j and k =0 then writeln(‘Betul’) else Konsep Dasar Pemrograman Prosedural 63 writeln(‘Salah); {If – 2 } if (i = 2) and (j <> i) then writeln(‘Betul’) else writeln(‘Salah); {If – 3} if not L in [1..120] then writeln(‘Betul’) else writeln(‘Salah’); end. Program diatas berisi tiga perintah if then else yang saling tidak berkaitan, masing-masing IF diberi nama IF – 1, IF – 2, IF – 3.
12. Perintah if manakah yang tidak dibenarkan:
a. If - 1
b. If - 2
c. If - 3
d. If – 1 dan if - 2
e. Tidak ada if yang salah
Jawab: e. Tidak ada if yang salah Pembahasan: Pada If – 1, ekspresi i+j and k adalah ekspresi matematika dengan urutan pengerjaan j and k kemudian ditambahkan dengan i. Ini merupakan ekspresi yang valid dalam bahasa Pascal Pada If – 3, ekspresi Not L akan dioperasikan terlebih dulu. Ini juga merupakan ekspresi yang valid dalam bahasa Pascal.
13. Pada program di atas, if mana yang menghasilan output “Betul”?
a. If - 1
b. If - 2
c. If - 3
d. If – 1 dan if - 2
e. Tidak ada if yang menghasilkan “Betul”
Jawab: 64 Konsep Dasar Pemrograman Prosedural b. If - 2 Pembahasan: Urutan pengerjaan operator AND dan OR adalah AND akan dievaluasi terlebih dulu. Pada kondisi pertama, (i = 2) and (j <>i), akan menghasilkan TRUE, sehingga yang dicetak adalah “Betul”
SOAL-SOAL PERULANGAN
14. Perhatikan penggalan program berikuti ni : const Data: array [1..3,1..3] of char= ((‘1’,’1’,’2’)(‘2’,’2’,’4’),(‘4’,’4’,’8’)); var i, j : byte; begin for i:= 1 to 3 do begin for j:=3 downto 1 do write(Data[i,j]): writeln; end; end. Apa keluaran program di atas ?
a. 112 224 448
b. ‘1’’1’’2’ ’2’’2’’4’ ’4’’4’’8’
c. 211 422 844
d. ‘2’’1’’1’ ’4’’2’’2’ ’8’’4’’4’
e. 124 124 248
Jawab: c. 211 422 844 15. Perhatikan program dibawah ini : type data=set of char; var setchar:data; s:string; i:integer; begin setchar:=[]; readln(s); for i:=1 to length(s) do begin if not(s[i] in setchar) then begin setchar:=setchar+[s[i]]; write(s[i]); end; end; writeln; end.
15. Output dari program di atas jika input 'To be or Not To be that is the question' adalah
a. ‘To berNthaisqun.'
b. ‘To berNhaisqu`
c. ‘to@bernhaisquN'
d. ‘T N.'
e. ‘OBERTHAISQUN’
Jawab: a. ‘To berNthaisqun.' Pembahasan: Yang perlu diperhatikan adalah bahwa tidak ada anggota yang sama dalam sebuah set (himpunan).
16. Gunakan program berikut untuk menjawab pertanyaan : type data=set of byte; var setint:data; i:integer; begin setint:=[1]; setint:=setint+[3]; setint:=[5]; for i:=1 to 5 do begin if (i in setint) then continue else setint:=[i]; end; end. Output dari program di atas adalah:
a. [1,2,3,4,5]
b. [1,3,5]
c. [5]
d. [1,3]
e. []
Jawab: c. [5] Pembahasan: Statement di bawah ini setint:=[1]; setint:=setint+[3]; setint:=[5]; Akan membuat setint berisi [5] saja. Pada statement berikutnya: for i:=1 to 5 do begin if (i in setint) then continue else setint:=[i]; end; Akan membuat setint berisi nilai terakhir dari i yaitu 5. SOAL-SOAL PROSEDUR DAN FUNGSI
17. Perhatikan program berikut : var s:string; Konsep Dasar Pemrograman Prosedural 67 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
Jawab: a. GO GET GOLD! 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!
18. 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
Jawab: a. 3 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
19. 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
Jawab: 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.
20. Perhatikan potongan program berikut : begin writeln(round(frac(3.7))); end. Apa keluaran program di atas ?
a. 0
b. 1
c. 2
d. 3
e. 4
Jawab: b. 1 Pembahasan: Fungsi frac (lihat pembahasan di atas) Fungsi round Deklarasi : Function Round (X : Real) : Longint; Keterangan : membulatkan bilangan X, yang mungkin lebih besar atau lebih kecil dari X. Frac(3.7) akan menghasilkan 0.7 Round(0.7) akan menghasilkan 1
21. Diketahui deklarasi fungsi dan variabel sebagai berikut: var St: String; procedure Sulap(var S: String); begin if S = 'Kecil’ then S :=’kecil’ else if S = ‘Besar’ then S :=’BESAR’; end; Di antara potongan program berikut, manakah yang salah?
a. St := Chr(60); Sulap(St);
b. St :=’KECIL’; Sulap(St);
c. St := Chr(45) + Chr(65); Sulap(St);
d. Sulap(‘Besar’);
e. Semua ekspresi di atas benar
Jawab: a. St := Chr(60); Sulap(St); Pembahasan: Sebuah variabel string tidak dapat diberikan nilai bertipe data character. SOAL-SOAL OPERASI FILE
22. Perintah mana yang tidak boleh digunakan untuk file bertipe text?
a. Assign
b. Reset
c. EOF
d. FilePos
e. Semua boleh digunakan untuk Text
Jawab: d. FilePos Pembahasan: Perint ah FilePos adalah perintah untuk mengetahui posisi file pointer (penunjuk file), dan hanya dapat dioperasikan untuk file bertipe bukan text. Gunakan program berikut ini untuk menjawab soal di bawah ini: program Uji; var T:Text; i,j,k:integer; begin Assign(T, 'INPUT.TXT’); Reset(T); Readln(T, i, j, k); Writeln(i,’ ’ j,’ ’, k); Readln(T,i); Readln(T,j); Writeln(i,’ ’,j); Close(T); End.
23. Misalkan file INPUT.TXT berisi baris-baris sebagai bcrikut: 3 1 4 9 5 2 6 8 7 0 Bagaimanakah output dari program tersebut?
a. 3 1 4 9 5 2 6 8 7
b. 3 1 4 9 5
c. 3 1 4 5 2
d. 3 1 4 5 8
e. Terjadi runtime error karena isi file INPUT.TXT tidak sesuai untuk program ini.
Jawab: d. 3 1 4 5 8 Pembahasan: Perintah Readln akan melakukan pembacaan di baris berikutnya. Perintah Readln pertama akan melakukan pembacaan pada file baris pertama, perintah Readln berikutnya melakukan pembacaan pada baris ke dua dan perintah Readln terakhir melakukan pembacaan pada baris ketiga.
SOAL-SOAL KASUS / MEMBACA PROGRAM
Program berikut ini dipakai untuk menjawab dua soal di bawah ini var Bil:Integer; procedure Find(B:Integer;I:Integer); var J,R:Integer; begin R:=Round(sqrt(B)); J:=2; while (J<=R) and (B Mod J<>0) do inc(J); if J<=R then begin Write(J,'*'); Find(B div J, I+1); end else if I>0 then Writeln(B,'=',Bil) else Writeln('Bilangan Prima!'); end; begin Write('Masukkan bilangan : '); Readln(Bil); Find(Bil,0); end.
24. Bagaimana output program di atas bila inputnya 42?
a. 7 * 3 * 2 = 42
b. Bilangan prima
c. =42
d. 2 * 3 * 7 = 47
e. Salah semaa
Jawab: a. 7 * 3 * 2 = 42 25. Bagaimana output program di atas bila, inputnya 23? a. = 23 b. Bilangan pima c. 23 * 1 = 23 d. = 23 Bilangan prima! e. Salah semua Jawab: b. Bilangan prima Joni, petugas statistik yang baru saja belajar Pascal. Mencoba membuat program perata-rata sebagai berikut var Amatan:array[5] of integer; Jumlah:Integer; RataRata:Integer; I:Integer; begin for I:=1 to 5 do begin Write('Amatan ke-',I,' : '); Readln(Amatan[I]); end; Jumlah:=0; For I:=1 to 5 do begin Jumlah:=Jumlah+Amatan[I]; RataRata:=Jumlah/5; Writeln('Jumlah = ',Jumlah); Writeln('Rata-rata = ',RataRata); Readln; end. Gunakan program yang dibuat oleh Joni ini untuk menjawab soal-soal berikut.
26. Ketika si Joni mencoba menjalankan program tersebut, temyata, compiler menunjukkan sebuah pesan kesalahan yang membuat: ia kebingungan. Tahukah Anda kesalahan pertama yang dibuat Joni?
a. Judul program (program Statistik) terlalu panjang, maksimum 8 karakter (misalnya: program Stat)
b. Procedure Readln (pada baris terakhir program sebelum end.) tidak boleh dipanggil tanpa parameter. Jadi seharusnya: Readln(I);
c. Statement for dengan variabel sama tidak boleh diulangi dua kali. Seharusnya dideklarasikan variabel lain, misalnya var I: Integer untuk for yang kedua
d. Deklarasi array salah, semestinya: var Amatan: array[ 1..5] of Integer;
e. Nama variabel seperti RataRata tidak valid, scharusnya Ratarata
Jawab: a. Deklarasi array salah, semestinya: var Amatan: array[ 1..5] of Integer; Pembahasan: Deklarasi dari array adalah: type identifier=array[tipe_indeks] of tipe_data di mana tipe_indeks adalah tipe data ordinal.
27. Setelah Anda memberi saran demikian, temyata Joni masih belum bisa meng-compile programnya. Apa sebabnya?
a. setiap variabel harus dideklarasikan dengan keyword var sendiri-sendiri. Misalnya: var Jumlah: Integer; var RataRata:Integer; Var I:Integer;
b. Variabel RataRata tidak harus bertipe Real
c. Semua variabel, kecuali I seharusnya adalah Real, tidak boleh Integer
d. Pemisah antara parameter dalam Write dan Writeln harus titik koma, bukan koma, Misalnya Writeln(‘Jumlah = ‘;Jumlah);
e. Semua alasan di atas salah
Jawab: c. Semua variabel, kecuali I seharusnya adalah Real, tidak boleh Integer Pembahasan: Dalam program diberikan instruksi RataRata:=Jumlah/5 yang berarti variabel RataRata harus bertipe Real. Karena operator / hanya dikenal oleh variabel yang bertipe real. Konsep Dasar Pemrograman Prosedural 75
28. Joni mengganti operator “/” dengan "div" pada baris ke-15 program tersebut. Apa akibatnya?
a. program tidak mau di-compile karena. operator div tidak dapat digunakan di situ
b. nilai rata-ratanya menjadi 5
c. nilai rata-ratanya menjadi 6
d. nilai rata-ratanya menjadi 0
e. nitai rata-ratanya menjadi 2
Jawab: b. nilai rata-ratanya menjadi 5 Pembahasan: Perintah div adalah operator pembagian yang menghasilkan pembulatan ke bawah. Gunakan program berikut ini untuk menjawab beberapa soal selanjutnya: uses crt; var j:array['A'..'Z'] of Byte; c:char; Kal:string; procedure HH(S:String); var i:integer; {baris-6} m:char; begin for i:= 1 to length(S) do begin m:=S[i]; {baris-11} if m in ['A'..'Z'] then {baris-12} inc(J[i]); end; end; begin for c:='A' to 'Z' do J[c]:=0; Kal:='PASAR'; HH(Kal); for c:='A' to 'Z' do if J[c]>0 then write(c,J[c],' '); writeln; Kal:='RAYA'; HH(Kal); for c:='Z' downto 'A' do if j[c]>0 then write(c,J[c],' '); writeln; end.
29. Bila terdapat kesalahan yang menyebabkan program sama sekali tidak dapaf dijalankan sebutkan pada baris berapa, dan bagaimana perbaikannya?
a. Kesalahan semacam ini tidak ada
b. Baris 12, seharusnya ditulis If [m] in [‘A’..’Z’] then
c. Baris 6 seharusnya ditulis var i: Char;
d. Baris 13, seharusnya ditulis lnc(J[m]);
e. Index array hanya boleh berupa angka. Jadi deklarasi variabel seharusnya ditulis: const A = 1; Z = 26; var J: array[A..Z] of Byte; c: Byte; Kal: String; dan semua konstanta karakter dalam perintah for harus diganti, misalnya: for c:= A to Z do dan eterusnya
Jawab: b. Baris 13, seharusnya ditulis inc(J[m]); Pembahasan: Variabel J adalah variabel dengan tipe data array yang mempunyai indeks [‘A’..’Z’]. Dalam program diberikan indeks berupa bilangan bulat, yaitu i. Hal ini akan menghasilkan pesan kesalahan type mismatch.
30. Dengan perbaikan seperti nomor sebelumnya (kalau ada), maka program bisa dijalankan. Apakah hasil dari program tersebut?
a. A2 PI RI SI A4 PI R2 Sl Yl
b. A2 P1 RI SI YI RI A2
c. A2 PI RI SI YI R2 A4
d. PI A2 Sl RI YI A4 R2
e. A2 P1 RI SI Yl Sl R2 PI A4
Jawab: e. A2 P1 RI SI Yl Sl R2 PI A4
31. Tindakan apakah yang dilakukan oleh subrutin HH ketika dipanggil oleh baris 19 program di atas, dengan string S berisi kata “PASAR"?
a. Menghitung frekuensi kemunculan huruf-huruf alfabet dan menyimpannya dalam array J
b. Mengumpulkan huruf-huruf alfabet yang muncul lebih dari satu kali ke dalam array J
c. Mencatat letak setiap huruf alfabet ke dalam array J
d. Menentukan huruf yang paling sering dan paling jarang muncul dalam array J e. Mengurutkan huruf-huruf menurut urutan alfabet dari yang terkecil sampai yang terbesar. Jawab: a. menghitung frekuensi kemunculan huruf-huruf alfabet dan menyimpannya dalam array J
0 komentar:
OSN KIMIA
OSN Kimia
05:30
OLIMPIADE KIMIA INDONESIA
Petunjuk :
1. Isilah Biodata anda dengan lengkap (di lembar Jawaban)
Tulis dengan huruf cetak dan jangan disingkat !
2. Soal Teori ini terdiri dari dua bagian:
A. 30 soal pilihan ganda (60 poin)
B. 5 Nomor soal essay (86 poin)
Total jumlah poin = 146 poin = 100%
3. Waktu yang disediakan: 120 menit.
4. Semua jawaban harus ditulis di lembar jawaban yang tersedia
5. Diperkenankan menggunakan kalkulator.
6. Diberikan Tabel periodik Unsur.
7. Anda dapat mulai bekerja bila sudah ada tanda mulai dari pengawas.
8. Anda harus segera berhenti bekerja bila ada tanda berhenti dari Pengawas.
9. Letakkan jawaban anda di meja sebelah kanan dan segera meninggalkan ruangan.
10. Anda dapat membawa pulang soal ujian !!!.
LEMBAR JAWABAN
Bagian A (60 poin)
Beri Tanda Silang (X) pada Jawaban Yang Anda Pilih
No Jawaban No Jawaban
1 A B C D E 16 A B C D E
2 A B C D E 17 A B C D E
3 A B C D E 18 A B C D E
4 A B C D E 19 A B C D E
5 A B C D E 20 A B C D E
6 A B C D E 21 A B C D E
7 A B C D E 22 A B C D E
8 A B C D E 23 A B C D E
9 A B C D E 24 A B C D E
10 A B C D E 25 A B C D E
11 A B C D E 26 A B C D E
12 A B C D E 27 A B C D E
13 A B C D E 28 A B C D E
14 A B C D E 29 A B C D E
15 A B C D E 30 A B C D E
Bagian A. Pilih Jawaban yang paling tepat (60 poin, masing masing 2 poin)
1. Berapa banyak atom nitrogen (Bil. Avogadro, NA= 6,2 x1023) didalam 34,7 g gas N2O (44 g/mol) ?
A.9,5 x 1023 D. 6.5 x 1023
B. 19,5 x 1023 E. Tak dapat ditentukan
C. 9.5 x 10-23
2. Berapa rasio (perbandingan) a/b, dimana a dan b adalah koeffisien reaksi:
a H2SO4 + b KOH
A. 1/2 D. 1/4
B. 1/1 E. semua jawaban tidak benar
C. 2/1
3. Persentase massa karbon dalam senyawa C6H12N adalah ?
A. 68.4% D. 83.2%
B. 61.2% E. Tidak ada jawaban yang benar
C. 73.4%
4. Bagaimana formula molekul senyawa dengan formula empiris CH2O dan massa molar 90 g/mol?
A. CH2O D. C3H8O4
B. C2H4O2 E. Tidak ada jawaban yang benar
C. C3H6O3
5. Spesi ion 37Cl- mempunyai :
A. 17 proton, 17 netron, dan 16 elektron.
B. 17 proton, 20 netron, dan 18 elektron.
C. 16 protons, 21 netron, and 17 elektrons.
D. 17 protons, 17 netron, and 20 elektrons.
E. 17 proton, 17 netron, dan 18 elektron.
6. Dalam senyawa berikut ini, manakah nitrogen yang mempunyai tingkat oksidasi paling positif.?
A.NO D. N2O5
B. NO2 E. NH4+
C. NO2-
7. Atom suatu unsur mempunyai konfigurasi elektron 1s22s22p63s23p3 . Senyawa yang paling mungkin terbentuk dengan Br adalah:
A. XBr D. XBr3
B. XBr2 E. X3Br2
C. X2Br3
¬
8. Berikut ini, kerangka manakah yang tidak mematuhi aturan octet?
9. Dari struktur molekul netral (tak-bermuatan) berikut ini, apa kemungkinan atom X?
A. H D. N
B. F E. O
C. C
10. Berikut ini pasangan pelarut dan zat terlarut yang dapat membentuk larutan adalah:
A. CBr4(l):H2O(l)
B. Br2(l):C6H14(l)
C. AgCl(s):H2O(l)
D. I2(s):H2O(l)
E. Semua membentuk larutan
11. Berikut ini, larutan manakah yang mempunyai titik beku paling rendah?
A. 0.100 M CaCl2
B. 0.100 M C6H12O6
C. 0.100 M KCl
D. 0.100 M AgNO3
E. 0.100 M CO2
12. Berikut ini diberikan Tabel energi ikatan. Tentukanlah perubahan entalpi (H) dari reaksi:
CO(g) + 2H2(g) CH3OH(g)
Ikatan energi (kJ/mol)
C-O 358
C=O 799
C-O (ikatan triple) 1072
H-H 436
C-H 413
O-H 463
A. -830 kJ D. -389 kJ
B. -557 kJ E. -116 kJ
C. -552 kJ
13. Berikut ini adalah reaksi kesetimbangan:
4A(s) + 2B (g) 2C (g) ΔHreaksi = – 60kJ
Sesudah mencapai kesetimbangan , berikut ini keadaan yang mana akan menggeser kesetimbangan kearah kiri (membentuk reaktan lebih banyak):
A. Menurunkan Temperatur
B. Menambah konsentrasi B
C. Menaikkan Tekanan
D. Menambah konsentrasi A
E. Menaikkan Temperatur
14. Berikut ini, manakah yang nilai Kp = Kc:
A. 3Fe(s) + 4H2O(g) Fe3O4 (s) + 4H2 (g)
B. C(s) + H2O(g) CO(g) + H2 (g)
C. 2SO2 (g) + O2 (g) 2SO3(g)
D. H2 (g) + I2 (s) 2HI(g)
E. Semua reaksi diatas nilai Kp=Kc
15. Untuk reaksi: PCl5 (g) PCl3 (g) + Cl2 (g) nilai Kc pada 261 oC adalah 0,0454. Bila dalam suatu wadah diisi dengan setiap gas dalam reaksi sehingga: [PCl5] = 0,25M, [PCl3] = 0,20 M, dan [Cl2 ] = 2,25 M, kemana arah reaksi yang terjadi dan mengapa?
A. Kearah produk karena Q= 0,56
B. Kearah reaktan karena Q= 1,8
C. Kearah produk karena Q = 2,8
D. Kearah reaktan karena Q = 0,0454
E. Berada dalam kesetimbangan
16. Larutan aqueous asam hipoklorit, HClO, adalah elektrolit. Partikel apa saja yang dihasilkan dalam larutan aqueous HClO?
A. HClO. D. HClO, H+, ClO-.
B. HClO, ClO-. E. HClO, H+.
C. ClO-, H+.
17. Dalam reaksi: BF3 + NH3 F3B:NH3, maka BF3 bertindak sebagai :
A. Basa Arrhenius D. Asam Lewis
B. Basa Lewis E. Tidak ada jawaban yang benar
C. Asam Bronsteid
18. Pada temperatur 25 oC nilai konstanta ionisasi air (Kw) adalah 1,01 x 10-14, sedangkan pada 50 oC nilai Kw adalah 5,48 x 10-14
Pada temperatur 50 oC pH air murni adalah:
A. < 7 D. 14
B. >7 E. 1
C. 7
19. Bila kedalam larutan asam asetat (Ka=1,8 x 10-5) ditambahkan garam natrium asetat padat maka:
A. Larutan semakin panas
B. pH larutan tetap (tidak berubah).
C. pH larutan akan turun
D. pH larutan akan naik
E. pH nya tak dapat diramalkan.
20. Larutan jenuh Kalsum hidroksida mempunyai pH 12,25. Berapa konsentrasi ion Ca2+dalam larutan tersebut?
A. 5,6 x 10-13 M D. 0,035 M
B. 2,3 X 10-5 M E. 0,018 M
C. 8,9 x10-3 M
21. Pada reaksi : A + B C, ternyata bila konsentrasi A dinaikkan 2 kali, laju reaksinya tetap (tidak berubah). Dapat dikatakan bahwa:
A. laju reaksi adalah order nol terhadap [B]
B. laju reaksi adalah order nol terhadap [A]
C. laju reaksi adalah order satu terhadap [B]
D. laju reaksi adalah order satu terhadap [A]
E. A adalah katalis
22. Reaksi penguraian gas N2O5 berikut ini: 2N2O5(g) → 4NO2(g) + O2 (g), pada saat laju hilangnya N2O5 = 1,2 x 10-4 M/detik , maka laju terbentuknya gas O2 adalah:
A. 1,2 x 10-4 M/detik D. 3,0 x 10-5 M/detik
B. 2,4 x 10-4 M/detik E. 4,8 x 10-4 M/detik
C. 6,0 x 10-5 M/detik
23. Senyawa yang merupakan isomer dari sikloheksana adalah:
A. Pentena-2 D. Heksena-3
B. 2-metil butena-2 E. 1-etil siklopropana
C. 4-metil butena-2
24. Jika asam asetat direaksikan dengan etanol dalam suasana asam, akan menghasilkan
A. Asam butanoat D. Anhidrida Asetat
B. Etil asetat E. Ester.
C. Asetil asetat
25. Oksidasi suatu propena dengan KMO4 menghasilkan
A. Keton D. Diol
B. Aldehid E. Metil etil eter.
C. Propanon
26. Benzaldehida jika dinitrasi dengan HNO3 + H2SO4 akan menghasilkan
A. m-nitro benzaldehida D. Asam benzoat
B. p- nitro benzaldehida E. m-nitro benzoat.
C. o- nitro benzaldehida
27. Jumlah isomer dari senyawa dengan formula molekul C4H6 (alifatis dan siklis) adalah:
A. 6 B. 5 C. 4 D. 3 E. 7
28. Reaksi antara isobutilena dengan HCl menghasilkan senyawa:
A. 1-kloro propana D. 3-kloro-2-metil propena
B. 2-kloro propana E. Etanal
C. ter-butil klorida
29. Anilin jika direaksikan dengan NaNO2 dan HCl akan
A. Benzena D. Hidroksi anilin
B. Diamino benzena E. Benzoat
C. Benzenadiazonium
30. Rumus dari senyawa asam α-kloro asetat adalah
A. CCl3COOH D. CH3CH2Cl
B. CH2Cl-COOH E. CH3OCl
C. CH3COCl
Bagian B. Jawablah dengan singkat dan jelas. (83 poin)
Soal 1. Rumus Empiris senyawa (14 poin)
Suatu senyawa organik (A) teridiri dari karbon, hidrogen dan oksigen. Hasil analisis elementer menunjukkan bahwa bila 4337 mg senyawa tersebut dibakar sempurna, ternyata senyawa ini menghasilkan 1035 mg CO2 dan 342 mg H2O. Hitunglah persen komposisi unsur dalam senyawa tersebut, dan tentukan rumus empiris senyawa (A).
Soal 2. Pembentukan gas H2 dari reaksi kalsiumhidrida dan Air. (18 poin)
Kalsium hidrida, CaH2 (42g/mol), bereaksi dengan air membentuk gas hydrogen, H2, sesuai reaksi:
CaH2(s) + 2H2O(l) Ca(OH)2(aq) + 2H2(g).
Reaksi ini sering digunakan untuk mengisi gas pelampung penyelamat dan balon cuaca.
a. Tentukan berapa bilangan oksidasi H dalam CaH2 (1 poin)
b. Berapa gram CaH2 yang dibutuhkan untuk menghasilkan 10,0 L gas H2 pada tekanan 740 torr pada 23° C?
(1 atm=760 torr = 60 mmHg, R= 0,082 L.atm.mol-1.K-1) (8 poin)
c. Bila kedalam CaH2 tersebut ditambahkan 100 mL air untuk mereaksikan seluruh CaH2 yang tersedia, tentukan apakah terbentuk endapan Ca(OH)2 bila larutan yang diperoleh pH nya 12,4. (9 poin)
Diketahui Ksp Ca(OH)2 = 7,9 x 10-6
Soal 3. Konfigurasi elektronik dan diagramnya (16 poin)
a. Tuliskan konfigurasi elektronik ion Se2- dan ion Co3+
(nomor atom Co =27 dan Se = 34) (6 poin)
b. Dari diagram orbital struktur elektronik berikut ini: (10 poin)
Pilih contoh mana yang menunjukkan: (pilihlah A, B, C, D atau E):
i. Melanggar aturan Hund
ii. Melanggar prinsip pengecualian Pauli
iii. Diagram orbital dalam keadaan dasar
iv. Diagram orbital dalam keadaan tereksitasi
v. Melanggar prinsip Aufbau
Soal 4. Gas Besi karbonil, Fe(CO)5 dan reaksi kesetimbangan (20 poin).
Besi karbonil, Fe(CO)5 adalah gas yang bila dalam wadah tertutup dapat terurai sesuai dengan persamaan reaksi kesetimbangan berikut ini:
2 Fe(CO)5 (g) Fe2(CO)9 (g) + CO (g)
Kedalam suatu wadah dimasukan sejumlah Fe(CO)5 sehingga konsentrasinya 0,47 M. Bila nilai Kc untuk reaksi tersebut pada 298 K adalah 9 maka:
a. Tentukanlah berapa atmosfir tekanan awal gas dalam wadah tertutup tersebut
Diketahui R= 0,082 L.atm.mol-1.K-1 (3 poin)
b. Tentukanlah berapa konsentrasi gas Fe2(CO)9 dalam keadaan kesetimbangan (9 poin)
c. Tentukanlah nilai Kp reaksi tersebut. (3 poin)
d. Tentukanlah tekanan total gas sesudah tercapai kesetimbangan (2 poin)
e. Gambarkan struktur dot Lewis gas CO (4 poin)
Petunjuk :
1. Isilah Biodata anda dengan lengkap (di lembar Jawaban)
Tulis dengan huruf cetak dan jangan disingkat !
2. Soal Teori ini terdiri dari dua bagian:
A. 30 soal pilihan ganda (60 poin)
B. 5 Nomor soal essay (86 poin)
Total jumlah poin = 146 poin = 100%
3. Waktu yang disediakan: 120 menit.
4. Semua jawaban harus ditulis di lembar jawaban yang tersedia
5. Diperkenankan menggunakan kalkulator.
6. Diberikan Tabel periodik Unsur.
7. Anda dapat mulai bekerja bila sudah ada tanda mulai dari pengawas.
8. Anda harus segera berhenti bekerja bila ada tanda berhenti dari Pengawas.
9. Letakkan jawaban anda di meja sebelah kanan dan segera meninggalkan ruangan.
10. Anda dapat membawa pulang soal ujian !!!.
LEMBAR JAWABAN
Bagian A (60 poin)
Beri Tanda Silang (X) pada Jawaban Yang Anda Pilih
No Jawaban No Jawaban
1 A B C D E 16 A B C D E
2 A B C D E 17 A B C D E
3 A B C D E 18 A B C D E
4 A B C D E 19 A B C D E
5 A B C D E 20 A B C D E
6 A B C D E 21 A B C D E
7 A B C D E 22 A B C D E
8 A B C D E 23 A B C D E
9 A B C D E 24 A B C D E
10 A B C D E 25 A B C D E
11 A B C D E 26 A B C D E
12 A B C D E 27 A B C D E
13 A B C D E 28 A B C D E
14 A B C D E 29 A B C D E
15 A B C D E 30 A B C D E
Bagian A. Pilih Jawaban yang paling tepat (60 poin, masing masing 2 poin)
1. Berapa banyak atom nitrogen (Bil. Avogadro, NA= 6,2 x1023) didalam 34,7 g gas N2O (44 g/mol) ?
A.9,5 x 1023 D. 6.5 x 1023
B. 19,5 x 1023 E. Tak dapat ditentukan
C. 9.5 x 10-23
2. Berapa rasio (perbandingan) a/b, dimana a dan b adalah koeffisien reaksi:
a H2SO4 + b KOH
A. 1/2 D. 1/4
B. 1/1 E. semua jawaban tidak benar
C. 2/1
3. Persentase massa karbon dalam senyawa C6H12N adalah ?
A. 68.4% D. 83.2%
B. 61.2% E. Tidak ada jawaban yang benar
C. 73.4%
4. Bagaimana formula molekul senyawa dengan formula empiris CH2O dan massa molar 90 g/mol?
A. CH2O D. C3H8O4
B. C2H4O2 E. Tidak ada jawaban yang benar
C. C3H6O3
5. Spesi ion 37Cl- mempunyai :
A. 17 proton, 17 netron, dan 16 elektron.
B. 17 proton, 20 netron, dan 18 elektron.
C. 16 protons, 21 netron, and 17 elektrons.
D. 17 protons, 17 netron, and 20 elektrons.
E. 17 proton, 17 netron, dan 18 elektron.
6. Dalam senyawa berikut ini, manakah nitrogen yang mempunyai tingkat oksidasi paling positif.?
A.NO D. N2O5
B. NO2 E. NH4+
C. NO2-
7. Atom suatu unsur mempunyai konfigurasi elektron 1s22s22p63s23p3 . Senyawa yang paling mungkin terbentuk dengan Br adalah:
A. XBr D. XBr3
B. XBr2 E. X3Br2
C. X2Br3
¬
8. Berikut ini, kerangka manakah yang tidak mematuhi aturan octet?
9. Dari struktur molekul netral (tak-bermuatan) berikut ini, apa kemungkinan atom X?
A. H D. N
B. F E. O
C. C
10. Berikut ini pasangan pelarut dan zat terlarut yang dapat membentuk larutan adalah:
A. CBr4(l):H2O(l)
B. Br2(l):C6H14(l)
C. AgCl(s):H2O(l)
D. I2(s):H2O(l)
E. Semua membentuk larutan
11. Berikut ini, larutan manakah yang mempunyai titik beku paling rendah?
A. 0.100 M CaCl2
B. 0.100 M C6H12O6
C. 0.100 M KCl
D. 0.100 M AgNO3
E. 0.100 M CO2
12. Berikut ini diberikan Tabel energi ikatan. Tentukanlah perubahan entalpi (H) dari reaksi:
CO(g) + 2H2(g) CH3OH(g)
Ikatan energi (kJ/mol)
C-O 358
C=O 799
C-O (ikatan triple) 1072
H-H 436
C-H 413
O-H 463
A. -830 kJ D. -389 kJ
B. -557 kJ E. -116 kJ
C. -552 kJ
13. Berikut ini adalah reaksi kesetimbangan:
4A(s) + 2B (g) 2C (g) ΔHreaksi = – 60kJ
Sesudah mencapai kesetimbangan , berikut ini keadaan yang mana akan menggeser kesetimbangan kearah kiri (membentuk reaktan lebih banyak):
A. Menurunkan Temperatur
B. Menambah konsentrasi B
C. Menaikkan Tekanan
D. Menambah konsentrasi A
E. Menaikkan Temperatur
14. Berikut ini, manakah yang nilai Kp = Kc:
A. 3Fe(s) + 4H2O(g) Fe3O4 (s) + 4H2 (g)
B. C(s) + H2O(g) CO(g) + H2 (g)
C. 2SO2 (g) + O2 (g) 2SO3(g)
D. H2 (g) + I2 (s) 2HI(g)
E. Semua reaksi diatas nilai Kp=Kc
15. Untuk reaksi: PCl5 (g) PCl3 (g) + Cl2 (g) nilai Kc pada 261 oC adalah 0,0454. Bila dalam suatu wadah diisi dengan setiap gas dalam reaksi sehingga: [PCl5] = 0,25M, [PCl3] = 0,20 M, dan [Cl2 ] = 2,25 M, kemana arah reaksi yang terjadi dan mengapa?
A. Kearah produk karena Q= 0,56
B. Kearah reaktan karena Q= 1,8
C. Kearah produk karena Q = 2,8
D. Kearah reaktan karena Q = 0,0454
E. Berada dalam kesetimbangan
16. Larutan aqueous asam hipoklorit, HClO, adalah elektrolit. Partikel apa saja yang dihasilkan dalam larutan aqueous HClO?
A. HClO. D. HClO, H+, ClO-.
B. HClO, ClO-. E. HClO, H+.
C. ClO-, H+.
17. Dalam reaksi: BF3 + NH3 F3B:NH3, maka BF3 bertindak sebagai :
A. Basa Arrhenius D. Asam Lewis
B. Basa Lewis E. Tidak ada jawaban yang benar
C. Asam Bronsteid
18. Pada temperatur 25 oC nilai konstanta ionisasi air (Kw) adalah 1,01 x 10-14, sedangkan pada 50 oC nilai Kw adalah 5,48 x 10-14
Pada temperatur 50 oC pH air murni adalah:
A. < 7 D. 14
B. >7 E. 1
C. 7
19. Bila kedalam larutan asam asetat (Ka=1,8 x 10-5) ditambahkan garam natrium asetat padat maka:
A. Larutan semakin panas
B. pH larutan tetap (tidak berubah).
C. pH larutan akan turun
D. pH larutan akan naik
E. pH nya tak dapat diramalkan.
20. Larutan jenuh Kalsum hidroksida mempunyai pH 12,25. Berapa konsentrasi ion Ca2+dalam larutan tersebut?
A. 5,6 x 10-13 M D. 0,035 M
B. 2,3 X 10-5 M E. 0,018 M
C. 8,9 x10-3 M
21. Pada reaksi : A + B C, ternyata bila konsentrasi A dinaikkan 2 kali, laju reaksinya tetap (tidak berubah). Dapat dikatakan bahwa:
A. laju reaksi adalah order nol terhadap [B]
B. laju reaksi adalah order nol terhadap [A]
C. laju reaksi adalah order satu terhadap [B]
D. laju reaksi adalah order satu terhadap [A]
E. A adalah katalis
22. Reaksi penguraian gas N2O5 berikut ini: 2N2O5(g) → 4NO2(g) + O2 (g), pada saat laju hilangnya N2O5 = 1,2 x 10-4 M/detik , maka laju terbentuknya gas O2 adalah:
A. 1,2 x 10-4 M/detik D. 3,0 x 10-5 M/detik
B. 2,4 x 10-4 M/detik E. 4,8 x 10-4 M/detik
C. 6,0 x 10-5 M/detik
23. Senyawa yang merupakan isomer dari sikloheksana adalah:
A. Pentena-2 D. Heksena-3
B. 2-metil butena-2 E. 1-etil siklopropana
C. 4-metil butena-2
24. Jika asam asetat direaksikan dengan etanol dalam suasana asam, akan menghasilkan
A. Asam butanoat D. Anhidrida Asetat
B. Etil asetat E. Ester.
C. Asetil asetat
25. Oksidasi suatu propena dengan KMO4 menghasilkan
A. Keton D. Diol
B. Aldehid E. Metil etil eter.
C. Propanon
26. Benzaldehida jika dinitrasi dengan HNO3 + H2SO4 akan menghasilkan
A. m-nitro benzaldehida D. Asam benzoat
B. p- nitro benzaldehida E. m-nitro benzoat.
C. o- nitro benzaldehida
27. Jumlah isomer dari senyawa dengan formula molekul C4H6 (alifatis dan siklis) adalah:
A. 6 B. 5 C. 4 D. 3 E. 7
28. Reaksi antara isobutilena dengan HCl menghasilkan senyawa:
A. 1-kloro propana D. 3-kloro-2-metil propena
B. 2-kloro propana E. Etanal
C. ter-butil klorida
29. Anilin jika direaksikan dengan NaNO2 dan HCl akan
A. Benzena D. Hidroksi anilin
B. Diamino benzena E. Benzoat
C. Benzenadiazonium
30. Rumus dari senyawa asam α-kloro asetat adalah
A. CCl3COOH D. CH3CH2Cl
B. CH2Cl-COOH E. CH3OCl
C. CH3COCl
Bagian B. Jawablah dengan singkat dan jelas. (83 poin)
Soal 1. Rumus Empiris senyawa (14 poin)
Suatu senyawa organik (A) teridiri dari karbon, hidrogen dan oksigen. Hasil analisis elementer menunjukkan bahwa bila 4337 mg senyawa tersebut dibakar sempurna, ternyata senyawa ini menghasilkan 1035 mg CO2 dan 342 mg H2O. Hitunglah persen komposisi unsur dalam senyawa tersebut, dan tentukan rumus empiris senyawa (A).
Soal 2. Pembentukan gas H2 dari reaksi kalsiumhidrida dan Air. (18 poin)
Kalsium hidrida, CaH2 (42g/mol), bereaksi dengan air membentuk gas hydrogen, H2, sesuai reaksi:
CaH2(s) + 2H2O(l) Ca(OH)2(aq) + 2H2(g).
Reaksi ini sering digunakan untuk mengisi gas pelampung penyelamat dan balon cuaca.
a. Tentukan berapa bilangan oksidasi H dalam CaH2 (1 poin)
b. Berapa gram CaH2 yang dibutuhkan untuk menghasilkan 10,0 L gas H2 pada tekanan 740 torr pada 23° C?
(1 atm=760 torr = 60 mmHg, R= 0,082 L.atm.mol-1.K-1) (8 poin)
c. Bila kedalam CaH2 tersebut ditambahkan 100 mL air untuk mereaksikan seluruh CaH2 yang tersedia, tentukan apakah terbentuk endapan Ca(OH)2 bila larutan yang diperoleh pH nya 12,4. (9 poin)
Diketahui Ksp Ca(OH)2 = 7,9 x 10-6
Soal 3. Konfigurasi elektronik dan diagramnya (16 poin)
a. Tuliskan konfigurasi elektronik ion Se2- dan ion Co3+
(nomor atom Co =27 dan Se = 34) (6 poin)
b. Dari diagram orbital struktur elektronik berikut ini: (10 poin)
Pilih contoh mana yang menunjukkan: (pilihlah A, B, C, D atau E):
i. Melanggar aturan Hund
ii. Melanggar prinsip pengecualian Pauli
iii. Diagram orbital dalam keadaan dasar
iv. Diagram orbital dalam keadaan tereksitasi
v. Melanggar prinsip Aufbau
Soal 4. Gas Besi karbonil, Fe(CO)5 dan reaksi kesetimbangan (20 poin).
Besi karbonil, Fe(CO)5 adalah gas yang bila dalam wadah tertutup dapat terurai sesuai dengan persamaan reaksi kesetimbangan berikut ini:
2 Fe(CO)5 (g) Fe2(CO)9 (g) + CO (g)
Kedalam suatu wadah dimasukan sejumlah Fe(CO)5 sehingga konsentrasinya 0,47 M. Bila nilai Kc untuk reaksi tersebut pada 298 K adalah 9 maka:
a. Tentukanlah berapa atmosfir tekanan awal gas dalam wadah tertutup tersebut
Diketahui R= 0,082 L.atm.mol-1.K-1 (3 poin)
b. Tentukanlah berapa konsentrasi gas Fe2(CO)9 dalam keadaan kesetimbangan (9 poin)
c. Tentukanlah nilai Kp reaksi tersebut. (3 poin)
d. Tentukanlah tekanan total gas sesudah tercapai kesetimbangan (2 poin)
e. Gambarkan struktur dot Lewis gas CO (4 poin)
0 komentar:
Soal - Soal Deklarasi
SOAL-SOAL DEKLARASI
1. 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;
Jawab: c. Type a=(baik, jelek, buruk);
2. Tipe di bawah ini mana yang tidak dapat melakukan operasi aritmatika?
a. integer
b. byte
c. real
d. boolean
e. word
Jawab: d. Boolean
3. Deklarasi prosedur manakah yang 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);
Jawab: d. procedure hapus(s:string):boolean; Pembahasan: Untuk penulisan prosedur, tidak diperbolehkan adanya nilai kembali. Sedangkan parameter tanpa tipe data (pada opsi e), dapat dibenarkan.
4. Deklarasi function manakah yang tidak diizinkan?
a. Function density(x:real):real;
b. Function density(b:byte):byte;
c. Function density(var s:string):real;
d. Function density(var data):byte;
e. Function density;
Jawab: e. Function density; Pembahasan: Untuk penulisan function , harus ada nilai kembali.
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
Jawab: d. Type T=(Small, Medium, Large) Pembahasan: Opsi d adalah tipe data enumerasi. Tipe data enumerasi tidak dapat ditampilkan dengan perintah Writeln.
6. Dengan deklarasi berikut: Type warna=(merah,kuning,hijau,biru,hitam,putih,jingga); Var w:warna; Perintah mana yang salah?
a. If w in [warna] then writeln(‘ada’);
b. w:=merah; w:=w + kuning;
c. w:=[merah];
d. w:=hijau; dec(w);
e. w:=’Merah’;
Jawab: d. w:=hijau; dec(w); Pembahasan: Variabel w adalah variabel yang mempunyai tipe data enumerasi yang merupakan salah satu tipe data ordinal. Karena merupakan tipe data ordinal, maka variabel w dapat dioperasikan dengan fungsi atau prosedur seperti ORD, DEC, INC, PRED, dan SUCC.
7. Pada deklarasi di atas, jika variabel W1 berisi [merah,kuning,hijau] dan variabel W2 berisi [merah,kuning,hitam] maka, jika diberikan statemen W3:=W1+W2, W3 akan berisi:
a. [merah,kuning,hijau,hitam]
b. [merah,kuning,hijau,merah,kuning,hitam]
c. [hijau,hitam]
d. [merah,kuning,merah,kuning,hijau, hitam]
e. [merah,kuning]
Jawab: a. [merah,kuning,hijau,hitam] Pembahasan: Operator + pada tipe data himpunan adalah gabungan atau union.
8. Jika diberikan statemen W3:=W1-W2, W3 akan berisi:
a. [merah,kuning,hijau,hitam]
b. [merah,kuning,hijau,merah,kuning,hitam]
c. [hijau]
d. [merah,kuning,merah,kuning,hijau, hitam]
e. [merah,kuning]
Jawab: c. [hijau] Pembahasan: Operator - pada tipe data himpunan adalah operator difference. Konsep Dasar Pemrograman Prosedural 61
9. Jika diberikan statemen W3:=W1*W2, W3 akan berisi:
a. [merah,kuning,hijau,hitam]
b. [merah,kuning,hijau,merah,kuning,hitam]
c. [hijau,hitam]
d. [merah,kuning,merah,kuning,hijau, hitam]
e. [merah,kuning]
Jawab: c. [hijau,hitam] Pembahasan: Operator * pada tipe data himpunan adalah operator irisan. SOAL-SOAL INPUT / OUTPUT
10. Perhatikan potongan program berikut ini : Begin Writeln((10 shr 1) shl 2); end. Apa yang dihasilkan oleh program diatas...
a. 18 b. 19 c. 20 d. 21 e. 22
Jawab: c. 20 Pembahasan: Operator SHR adalah operasi pergeseran bit ke kanan dan operasi shl adalah operasi pergeseran bit ke kiri. 10 shr 1 = 5 ? (1010 shr 1 = 0101 = 5) 5 shl 2 = 20 (0101 shl 2 = 10100 = 20) SOAL-SOAL STRUKTUR KONTROL
11. Bagaimana keluaran program di bawah ini? Var I:integer; Begin I:=2; Case I of 1,3,5,7,9:writeln(‘Ganjil’); 2:writeln(‘Prima genap’); 0..10:writeln(‘Normal’); else writeln(‘Tidak normal’); end; end;
a. Prima genap
b. Normal
c. Prima genap Normal
d. Normal Prima genap
e. Prima genap Tidak normal
Jawab: a. Prima genap Pembahasan: Struktur kendali case akan segera keluar untuk menjalanakan statement berikutnya setelah menemukan nilai yang tepat. Perhatikan program di bawah ini: var I,j,k:integer; L:byte; begin i:=3; j:=4; k:=32; L:=0; {If – 1 } if i + j and k =0 then writeln(‘Betul’) else Konsep Dasar Pemrograman Prosedural 63 writeln(‘Salah); {If – 2 } if (i = 2) and (j <> i) then writeln(‘Betul’) else writeln(‘Salah); {If – 3} if not L in [1..120] then writeln(‘Betul’) else writeln(‘Salah’); end. Program diatas berisi tiga perintah if then else yang saling tidak berkaitan, masing-masing IF diberi nama IF – 1, IF – 2, IF – 3.
12. Perintah if manakah yang tidak dibenarkan:
a. If - 1
b. If - 2
c. If - 3
d. If – 1 dan if - 2
e. Tidak ada if yang salah
Jawab: e. Tidak ada if yang salah Pembahasan: Pada If – 1, ekspresi i+j and k adalah ekspresi matematika dengan urutan pengerjaan j and k kemudian ditambahkan dengan i. Ini merupakan ekspresi yang valid dalam bahasa Pascal Pada If – 3, ekspresi Not L akan dioperasikan terlebih dulu. Ini juga merupakan ekspresi yang valid dalam bahasa Pascal.
13. Pada program di atas, if mana yang menghasilan output “Betul”?
a. If - 1
b. If - 2
c. If - 3
d. If – 1 dan if - 2
e. Tidak ada if yang menghasilkan “Betul”
Jawab: 64 Konsep Dasar Pemrograman Prosedural b. If - 2 Pembahasan: Urutan pengerjaan operator AND dan OR adalah AND akan dievaluasi terlebih dulu. Pada kondisi pertama, (i = 2) and (j <>i), akan menghasilkan TRUE, sehingga yang dicetak adalah “Betul”
SOAL-SOAL PERULANGAN
14. Perhatikan penggalan program berikuti ni : const Data: array [1..3,1..3] of char= ((‘1’,’1’,’2’)(‘2’,’2’,’4’),(‘4’,’4’,’8’)); var i, j : byte; begin for i:= 1 to 3 do begin for j:=3 downto 1 do write(Data[i,j]): writeln; end; end. Apa keluaran program di atas ?
a. 112 224 448
b. ‘1’’1’’2’ ’2’’2’’4’ ’4’’4’’8’
c. 211 422 844
d. ‘2’’1’’1’ ’4’’2’’2’ ’8’’4’’4’
e. 124 124 248
Jawab: c. 211 422 844 15. Perhatikan program dibawah ini : type data=set of char; var setchar:data; s:string; i:integer; begin setchar:=[]; readln(s); for i:=1 to length(s) do begin if not(s[i] in setchar) then begin setchar:=setchar+[s[i]]; write(s[i]); end; end; writeln; end.
15. Output dari program di atas jika input 'To be or Not To be that is the question' adalah
a. ‘To berNthaisqun.'
b. ‘To berNhaisqu`
c. ‘to@bernhaisquN'
d. ‘T N.'
e. ‘OBERTHAISQUN’
Jawab: a. ‘To berNthaisqun.' Pembahasan: Yang perlu diperhatikan adalah bahwa tidak ada anggota yang sama dalam sebuah set (himpunan).
16. Gunakan program berikut untuk menjawab pertanyaan : type data=set of byte; var setint:data; i:integer; begin setint:=[1]; setint:=setint+[3]; setint:=[5]; for i:=1 to 5 do begin if (i in setint) then continue else setint:=[i]; end; end. Output dari program di atas adalah:
a. [1,2,3,4,5]
b. [1,3,5]
c. [5]
d. [1,3]
e. []
Jawab: c. [5] Pembahasan: Statement di bawah ini setint:=[1]; setint:=setint+[3]; setint:=[5]; Akan membuat setint berisi [5] saja. Pada statement berikutnya: for i:=1 to 5 do begin if (i in setint) then continue else setint:=[i]; end; Akan membuat setint berisi nilai terakhir dari i yaitu 5. SOAL-SOAL PROSEDUR DAN FUNGSI
17. Perhatikan program berikut : var s:string; Konsep Dasar Pemrograman Prosedural 67 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
Jawab: a. GO GET GOLD! 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!
18. 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
Jawab: a. 3 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
19. 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
Jawab: 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.
20. Perhatikan potongan program berikut : begin writeln(round(frac(3.7))); end. Apa keluaran program di atas ?
a. 0
b. 1
c. 2
d. 3
e. 4
Jawab: b. 1 Pembahasan: Fungsi frac (lihat pembahasan di atas) Fungsi round Deklarasi : Function Round (X : Real) : Longint; Keterangan : membulatkan bilangan X, yang mungkin lebih besar atau lebih kecil dari X. Frac(3.7) akan menghasilkan 0.7 Round(0.7) akan menghasilkan 1
21. Diketahui deklarasi fungsi dan variabel sebagai berikut: var St: String; procedure Sulap(var S: String); begin if S = 'Kecil’ then S :=’kecil’ else if S = ‘Besar’ then S :=’BESAR’; end; Di antara potongan program berikut, manakah yang salah?
a. St := Chr(60); Sulap(St);
b. St :=’KECIL’; Sulap(St);
c. St := Chr(45) + Chr(65); Sulap(St);
d. Sulap(‘Besar’);
e. Semua ekspresi di atas benar
Jawab: a. St := Chr(60); Sulap(St); Pembahasan: Sebuah variabel string tidak dapat diberikan nilai bertipe data character. SOAL-SOAL OPERASI FILE
22. Perintah mana yang tidak boleh digunakan untuk file bertipe text?
a. Assign
b. Reset
c. EOF
d. FilePos
e. Semua boleh digunakan untuk Text
Jawab: d. FilePos Pembahasan: Perint ah FilePos adalah perintah untuk mengetahui posisi file pointer (penunjuk file), dan hanya dapat dioperasikan untuk file bertipe bukan text. Gunakan program berikut ini untuk menjawab soal di bawah ini: program Uji; var T:Text; i,j,k:integer; begin Assign(T, 'INPUT.TXT’); Reset(T); Readln(T, i, j, k); Writeln(i,’ ’ j,’ ’, k); Readln(T,i); Readln(T,j); Writeln(i,’ ’,j); Close(T); End.
23. Misalkan file INPUT.TXT berisi baris-baris sebagai bcrikut: 3 1 4 9 5 2 6 8 7 0 Bagaimanakah output dari program tersebut?
a. 3 1 4 9 5 2 6 8 7
b. 3 1 4 9 5
c. 3 1 4 5 2
d. 3 1 4 5 8
e. Terjadi runtime error karena isi file INPUT.TXT tidak sesuai untuk program ini.
Jawab: d. 3 1 4 5 8 Pembahasan: Perintah Readln akan melakukan pembacaan di baris berikutnya. Perintah Readln pertama akan melakukan pembacaan pada file baris pertama, perintah Readln berikutnya melakukan pembacaan pada baris ke dua dan perintah Readln terakhir melakukan pembacaan pada baris ketiga.
SOAL-SOAL KASUS / MEMBACA PROGRAM
Program berikut ini dipakai untuk menjawab dua soal di bawah ini var Bil:Integer; procedure Find(B:Integer;I:Integer); var J,R:Integer; begin R:=Round(sqrt(B)); J:=2; while (J<=R) and (B Mod J<>0) do inc(J); if J<=R then begin Write(J,'*'); Find(B div J, I+1); end else if I>0 then Writeln(B,'=',Bil) else Writeln('Bilangan Prima!'); end; begin Write('Masukkan bilangan : '); Readln(Bil); Find(Bil,0); end.
24. Bagaimana output program di atas bila inputnya 42?
a. 7 * 3 * 2 = 42
b. Bilangan prima
c. =42
d. 2 * 3 * 7 = 47
e. Salah semaa
Jawab: a. 7 * 3 * 2 = 42 25. Bagaimana output program di atas bila, inputnya 23? a. = 23 b. Bilangan pima c. 23 * 1 = 23 d. = 23 Bilangan prima! e. Salah semua Jawab: b. Bilangan prima Joni, petugas statistik yang baru saja belajar Pascal. Mencoba membuat program perata-rata sebagai berikut var Amatan:array[5] of integer; Jumlah:Integer; RataRata:Integer; I:Integer; begin for I:=1 to 5 do begin Write('Amatan ke-',I,' : '); Readln(Amatan[I]); end; Jumlah:=0; For I:=1 to 5 do begin Jumlah:=Jumlah+Amatan[I]; RataRata:=Jumlah/5; Writeln('Jumlah = ',Jumlah); Writeln('Rata-rata = ',RataRata); Readln; end. Gunakan program yang dibuat oleh Joni ini untuk menjawab soal-soal berikut.
26. Ketika si Joni mencoba menjalankan program tersebut, temyata, compiler menunjukkan sebuah pesan kesalahan yang membuat: ia kebingungan. Tahukah Anda kesalahan pertama yang dibuat Joni?
a. Judul program (program Statistik) terlalu panjang, maksimum 8 karakter (misalnya: program Stat)
b. Procedure Readln (pada baris terakhir program sebelum end.) tidak boleh dipanggil tanpa parameter. Jadi seharusnya: Readln(I);
c. Statement for dengan variabel sama tidak boleh diulangi dua kali. Seharusnya dideklarasikan variabel lain, misalnya var I: Integer untuk for yang kedua
d. Deklarasi array salah, semestinya: var Amatan: array[ 1..5] of Integer;
e. Nama variabel seperti RataRata tidak valid, scharusnya Ratarata
Jawab: a. Deklarasi array salah, semestinya: var Amatan: array[ 1..5] of Integer; Pembahasan: Deklarasi dari array adalah: type identifier=array[tipe_indeks] of tipe_data di mana tipe_indeks adalah tipe data ordinal.
27. Setelah Anda memberi saran demikian, temyata Joni masih belum bisa meng-compile programnya. Apa sebabnya?
a. setiap variabel harus dideklarasikan dengan keyword var sendiri-sendiri. Misalnya: var Jumlah: Integer; var RataRata:Integer; Var I:Integer;
b. Variabel RataRata tidak harus bertipe Real
c. Semua variabel, kecuali I seharusnya adalah Real, tidak boleh Integer
d. Pemisah antara parameter dalam Write dan Writeln harus titik koma, bukan koma, Misalnya Writeln(‘Jumlah = ‘;Jumlah);
e. Semua alasan di atas salah
Jawab: c. Semua variabel, kecuali I seharusnya adalah Real, tidak boleh Integer Pembahasan: Dalam program diberikan instruksi RataRata:=Jumlah/5 yang berarti variabel RataRata harus bertipe Real. Karena operator / hanya dikenal oleh variabel yang bertipe real. Konsep Dasar Pemrograman Prosedural 75
28. Joni mengganti operator “/” dengan "div" pada baris ke-15 program tersebut. Apa akibatnya?
a. program tidak mau di-compile karena. operator div tidak dapat digunakan di situ
b. nilai rata-ratanya menjadi 5
c. nilai rata-ratanya menjadi 6
d. nilai rata-ratanya menjadi 0
e. nitai rata-ratanya menjadi 2
Jawab: b. nilai rata-ratanya menjadi 5 Pembahasan: Perintah div adalah operator pembagian yang menghasilkan pembulatan ke bawah. Gunakan program berikut ini untuk menjawab beberapa soal selanjutnya: uses crt; var j:array['A'..'Z'] of Byte; c:char; Kal:string; procedure HH(S:String); var i:integer; {baris-6} m:char; begin for i:= 1 to length(S) do begin m:=S[i]; {baris-11} if m in ['A'..'Z'] then {baris-12} inc(J[i]); end; end; begin for c:='A' to 'Z' do J[c]:=0; Kal:='PASAR'; HH(Kal); for c:='A' to 'Z' do if J[c]>0 then write(c,J[c],' '); writeln; Kal:='RAYA'; HH(Kal); for c:='Z' downto 'A' do if j[c]>0 then write(c,J[c],' '); writeln; end.
29. Bila terdapat kesalahan yang menyebabkan program sama sekali tidak dapaf dijalankan sebutkan pada baris berapa, dan bagaimana perbaikannya?
a. Kesalahan semacam ini tidak ada
b. Baris 12, seharusnya ditulis If [m] in [‘A’..’Z’] then
c. Baris 6 seharusnya ditulis var i: Char;
d. Baris 13, seharusnya ditulis lnc(J[m]);
e. Index array hanya boleh berupa angka. Jadi deklarasi variabel seharusnya ditulis: const A = 1; Z = 26; var J: array[A..Z] of Byte; c: Byte; Kal: String; dan semua konstanta karakter dalam perintah for harus diganti, misalnya: for c:= A to Z do dan eterusnya
Jawab: b. Baris 13, seharusnya ditulis inc(J[m]); Pembahasan: Variabel J adalah variabel dengan tipe data array yang mempunyai indeks [‘A’..’Z’]. Dalam program diberikan indeks berupa bilangan bulat, yaitu i. Hal ini akan menghasilkan pesan kesalahan type mismatch.
30. Dengan perbaikan seperti nomor sebelumnya (kalau ada), maka program bisa dijalankan. Apakah hasil dari program tersebut?
a. A2 PI RI SI A4 PI R2 Sl Yl
b. A2 P1 RI SI YI RI A2
c. A2 PI RI SI YI R2 A4
d. PI A2 Sl RI YI A4 R2
e. A2 P1 RI SI Yl Sl R2 PI A4
Jawab: e. A2 P1 RI SI Yl Sl R2 PI A4
31. Tindakan apakah yang dilakukan oleh subrutin HH ketika dipanggil oleh baris 19 program di atas, dengan string S berisi kata “PASAR"?
a. Menghitung frekuensi kemunculan huruf-huruf alfabet dan menyimpannya dalam array J
b. Mengumpulkan huruf-huruf alfabet yang muncul lebih dari satu kali ke dalam array J
c. Mencatat letak setiap huruf alfabet ke dalam array J
d. Menentukan huruf yang paling sering dan paling jarang muncul dalam array J e. Mengurutkan huruf-huruf menurut urutan alfabet dari yang terkecil sampai yang terbesar. Jawab: a. menghitung frekuensi kemunculan huruf-huruf alfabet dan menyimpannya dalam array J
readmore »»
1. 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;
Jawab: c. Type a=(baik, jelek, buruk);
2. Tipe di bawah ini mana yang tidak dapat melakukan operasi aritmatika?
a. integer
b. byte
c. real
d. boolean
e. word
Jawab: d. Boolean
3. Deklarasi prosedur manakah yang 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);
Jawab: d. procedure hapus(s:string):boolean; Pembahasan: Untuk penulisan prosedur, tidak diperbolehkan adanya nilai kembali. Sedangkan parameter tanpa tipe data (pada opsi e), dapat dibenarkan.
4. Deklarasi function manakah yang tidak diizinkan?
a. Function density(x:real):real;
b. Function density(b:byte):byte;
c. Function density(var s:string):real;
d. Function density(var data):byte;
e. Function density;
Jawab: e. Function density; Pembahasan: Untuk penulisan function , harus ada nilai kembali.
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
Jawab: d. Type T=(Small, Medium, Large) Pembahasan: Opsi d adalah tipe data enumerasi. Tipe data enumerasi tidak dapat ditampilkan dengan perintah Writeln.
6. Dengan deklarasi berikut: Type warna=(merah,kuning,hijau,biru,hitam,putih,jingga); Var w:warna; Perintah mana yang salah?
a. If w in [warna] then writeln(‘ada’);
b. w:=merah; w:=w + kuning;
c. w:=[merah];
d. w:=hijau; dec(w);
e. w:=’Merah’;
Jawab: d. w:=hijau; dec(w); Pembahasan: Variabel w adalah variabel yang mempunyai tipe data enumerasi yang merupakan salah satu tipe data ordinal. Karena merupakan tipe data ordinal, maka variabel w dapat dioperasikan dengan fungsi atau prosedur seperti ORD, DEC, INC, PRED, dan SUCC.
7. Pada deklarasi di atas, jika variabel W1 berisi [merah,kuning,hijau] dan variabel W2 berisi [merah,kuning,hitam] maka, jika diberikan statemen W3:=W1+W2, W3 akan berisi:
a. [merah,kuning,hijau,hitam]
b. [merah,kuning,hijau,merah,kuning,hitam]
c. [hijau,hitam]
d. [merah,kuning,merah,kuning,hijau, hitam]
e. [merah,kuning]
Jawab: a. [merah,kuning,hijau,hitam] Pembahasan: Operator + pada tipe data himpunan adalah gabungan atau union.
8. Jika diberikan statemen W3:=W1-W2, W3 akan berisi:
a. [merah,kuning,hijau,hitam]
b. [merah,kuning,hijau,merah,kuning,hitam]
c. [hijau]
d. [merah,kuning,merah,kuning,hijau, hitam]
e. [merah,kuning]
Jawab: c. [hijau] Pembahasan: Operator - pada tipe data himpunan adalah operator difference. Konsep Dasar Pemrograman Prosedural 61
9. Jika diberikan statemen W3:=W1*W2, W3 akan berisi:
a. [merah,kuning,hijau,hitam]
b. [merah,kuning,hijau,merah,kuning,hitam]
c. [hijau,hitam]
d. [merah,kuning,merah,kuning,hijau, hitam]
e. [merah,kuning]
Jawab: c. [hijau,hitam] Pembahasan: Operator * pada tipe data himpunan adalah operator irisan. SOAL-SOAL INPUT / OUTPUT
10. Perhatikan potongan program berikut ini : Begin Writeln((10 shr 1) shl 2); end. Apa yang dihasilkan oleh program diatas...
a. 18 b. 19 c. 20 d. 21 e. 22
Jawab: c. 20 Pembahasan: Operator SHR adalah operasi pergeseran bit ke kanan dan operasi shl adalah operasi pergeseran bit ke kiri. 10 shr 1 = 5 ? (1010 shr 1 = 0101 = 5) 5 shl 2 = 20 (0101 shl 2 = 10100 = 20) SOAL-SOAL STRUKTUR KONTROL
11. Bagaimana keluaran program di bawah ini? Var I:integer; Begin I:=2; Case I of 1,3,5,7,9:writeln(‘Ganjil’); 2:writeln(‘Prima genap’); 0..10:writeln(‘Normal’); else writeln(‘Tidak normal’); end; end;
a. Prima genap
b. Normal
c. Prima genap Normal
d. Normal Prima genap
e. Prima genap Tidak normal
Jawab: a. Prima genap Pembahasan: Struktur kendali case akan segera keluar untuk menjalanakan statement berikutnya setelah menemukan nilai yang tepat. Perhatikan program di bawah ini: var I,j,k:integer; L:byte; begin i:=3; j:=4; k:=32; L:=0; {If – 1 } if i + j and k =0 then writeln(‘Betul’) else Konsep Dasar Pemrograman Prosedural 63 writeln(‘Salah); {If – 2 } if (i = 2) and (j <> i) then writeln(‘Betul’) else writeln(‘Salah); {If – 3} if not L in [1..120] then writeln(‘Betul’) else writeln(‘Salah’); end. Program diatas berisi tiga perintah if then else yang saling tidak berkaitan, masing-masing IF diberi nama IF – 1, IF – 2, IF – 3.
12. Perintah if manakah yang tidak dibenarkan:
a. If - 1
b. If - 2
c. If - 3
d. If – 1 dan if - 2
e. Tidak ada if yang salah
Jawab: e. Tidak ada if yang salah Pembahasan: Pada If – 1, ekspresi i+j and k adalah ekspresi matematika dengan urutan pengerjaan j and k kemudian ditambahkan dengan i. Ini merupakan ekspresi yang valid dalam bahasa Pascal Pada If – 3, ekspresi Not L akan dioperasikan terlebih dulu. Ini juga merupakan ekspresi yang valid dalam bahasa Pascal.
13. Pada program di atas, if mana yang menghasilan output “Betul”?
a. If - 1
b. If - 2
c. If - 3
d. If – 1 dan if - 2
e. Tidak ada if yang menghasilkan “Betul”
Jawab: 64 Konsep Dasar Pemrograman Prosedural b. If - 2 Pembahasan: Urutan pengerjaan operator AND dan OR adalah AND akan dievaluasi terlebih dulu. Pada kondisi pertama, (i = 2) and (j <>i), akan menghasilkan TRUE, sehingga yang dicetak adalah “Betul”
SOAL-SOAL PERULANGAN
14. Perhatikan penggalan program berikuti ni : const Data: array [1..3,1..3] of char= ((‘1’,’1’,’2’)(‘2’,’2’,’4’),(‘4’,’4’,’8’)); var i, j : byte; begin for i:= 1 to 3 do begin for j:=3 downto 1 do write(Data[i,j]): writeln; end; end. Apa keluaran program di atas ?
a. 112 224 448
b. ‘1’’1’’2’ ’2’’2’’4’ ’4’’4’’8’
c. 211 422 844
d. ‘2’’1’’1’ ’4’’2’’2’ ’8’’4’’4’
e. 124 124 248
Jawab: c. 211 422 844 15. Perhatikan program dibawah ini : type data=set of char; var setchar:data; s:string; i:integer; begin setchar:=[]; readln(s); for i:=1 to length(s) do begin if not(s[i] in setchar) then begin setchar:=setchar+[s[i]]; write(s[i]); end; end; writeln; end.
15. Output dari program di atas jika input 'To be or Not To be that is the question' adalah
a. ‘To berNthaisqun.'
b. ‘To berNhaisqu`
c. ‘to@bernhaisquN'
d. ‘T N.'
e. ‘OBERTHAISQUN’
Jawab: a. ‘To berNthaisqun.' Pembahasan: Yang perlu diperhatikan adalah bahwa tidak ada anggota yang sama dalam sebuah set (himpunan).
16. Gunakan program berikut untuk menjawab pertanyaan : type data=set of byte; var setint:data; i:integer; begin setint:=[1]; setint:=setint+[3]; setint:=[5]; for i:=1 to 5 do begin if (i in setint) then continue else setint:=[i]; end; end. Output dari program di atas adalah:
a. [1,2,3,4,5]
b. [1,3,5]
c. [5]
d. [1,3]
e. []
Jawab: c. [5] Pembahasan: Statement di bawah ini setint:=[1]; setint:=setint+[3]; setint:=[5]; Akan membuat setint berisi [5] saja. Pada statement berikutnya: for i:=1 to 5 do begin if (i in setint) then continue else setint:=[i]; end; Akan membuat setint berisi nilai terakhir dari i yaitu 5. SOAL-SOAL PROSEDUR DAN FUNGSI
17. Perhatikan program berikut : var s:string; Konsep Dasar Pemrograman Prosedural 67 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
Jawab: a. GO GET GOLD! 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!
18. 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
Jawab: a. 3 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
19. 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
Jawab: 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.
20. Perhatikan potongan program berikut : begin writeln(round(frac(3.7))); end. Apa keluaran program di atas ?
a. 0
b. 1
c. 2
d. 3
e. 4
Jawab: b. 1 Pembahasan: Fungsi frac (lihat pembahasan di atas) Fungsi round Deklarasi : Function Round (X : Real) : Longint; Keterangan : membulatkan bilangan X, yang mungkin lebih besar atau lebih kecil dari X. Frac(3.7) akan menghasilkan 0.7 Round(0.7) akan menghasilkan 1
21. Diketahui deklarasi fungsi dan variabel sebagai berikut: var St: String; procedure Sulap(var S: String); begin if S = 'Kecil’ then S :=’kecil’ else if S = ‘Besar’ then S :=’BESAR’; end; Di antara potongan program berikut, manakah yang salah?
a. St := Chr(60); Sulap(St);
b. St :=’KECIL’; Sulap(St);
c. St := Chr(45) + Chr(65); Sulap(St);
d. Sulap(‘Besar’);
e. Semua ekspresi di atas benar
Jawab: a. St := Chr(60); Sulap(St); Pembahasan: Sebuah variabel string tidak dapat diberikan nilai bertipe data character. SOAL-SOAL OPERASI FILE
22. Perintah mana yang tidak boleh digunakan untuk file bertipe text?
a. Assign
b. Reset
c. EOF
d. FilePos
e. Semua boleh digunakan untuk Text
Jawab: d. FilePos Pembahasan: Perint ah FilePos adalah perintah untuk mengetahui posisi file pointer (penunjuk file), dan hanya dapat dioperasikan untuk file bertipe bukan text. Gunakan program berikut ini untuk menjawab soal di bawah ini: program Uji; var T:Text; i,j,k:integer; begin Assign(T, 'INPUT.TXT’); Reset(T); Readln(T, i, j, k); Writeln(i,’ ’ j,’ ’, k); Readln(T,i); Readln(T,j); Writeln(i,’ ’,j); Close(T); End.
23. Misalkan file INPUT.TXT berisi baris-baris sebagai bcrikut: 3 1 4 9 5 2 6 8 7 0 Bagaimanakah output dari program tersebut?
a. 3 1 4 9 5 2 6 8 7
b. 3 1 4 9 5
c. 3 1 4 5 2
d. 3 1 4 5 8
e. Terjadi runtime error karena isi file INPUT.TXT tidak sesuai untuk program ini.
Jawab: d. 3 1 4 5 8 Pembahasan: Perintah Readln akan melakukan pembacaan di baris berikutnya. Perintah Readln pertama akan melakukan pembacaan pada file baris pertama, perintah Readln berikutnya melakukan pembacaan pada baris ke dua dan perintah Readln terakhir melakukan pembacaan pada baris ketiga.
SOAL-SOAL KASUS / MEMBACA PROGRAM
Program berikut ini dipakai untuk menjawab dua soal di bawah ini var Bil:Integer; procedure Find(B:Integer;I:Integer); var J,R:Integer; begin R:=Round(sqrt(B)); J:=2; while (J<=R) and (B Mod J<>0) do inc(J); if J<=R then begin Write(J,'*'); Find(B div J, I+1); end else if I>0 then Writeln(B,'=',Bil) else Writeln('Bilangan Prima!'); end; begin Write('Masukkan bilangan : '); Readln(Bil); Find(Bil,0); end.
24. Bagaimana output program di atas bila inputnya 42?
a. 7 * 3 * 2 = 42
b. Bilangan prima
c. =42
d. 2 * 3 * 7 = 47
e. Salah semaa
Jawab: a. 7 * 3 * 2 = 42 25. Bagaimana output program di atas bila, inputnya 23? a. = 23 b. Bilangan pima c. 23 * 1 = 23 d. = 23 Bilangan prima! e. Salah semua Jawab: b. Bilangan prima Joni, petugas statistik yang baru saja belajar Pascal. Mencoba membuat program perata-rata sebagai berikut var Amatan:array[5] of integer; Jumlah:Integer; RataRata:Integer; I:Integer; begin for I:=1 to 5 do begin Write('Amatan ke-',I,' : '); Readln(Amatan[I]); end; Jumlah:=0; For I:=1 to 5 do begin Jumlah:=Jumlah+Amatan[I]; RataRata:=Jumlah/5; Writeln('Jumlah = ',Jumlah); Writeln('Rata-rata = ',RataRata); Readln; end. Gunakan program yang dibuat oleh Joni ini untuk menjawab soal-soal berikut.
26. Ketika si Joni mencoba menjalankan program tersebut, temyata, compiler menunjukkan sebuah pesan kesalahan yang membuat: ia kebingungan. Tahukah Anda kesalahan pertama yang dibuat Joni?
a. Judul program (program Statistik) terlalu panjang, maksimum 8 karakter (misalnya: program Stat)
b. Procedure Readln (pada baris terakhir program sebelum end.) tidak boleh dipanggil tanpa parameter. Jadi seharusnya: Readln(I);
c. Statement for dengan variabel sama tidak boleh diulangi dua kali. Seharusnya dideklarasikan variabel lain, misalnya var I: Integer untuk for yang kedua
d. Deklarasi array salah, semestinya: var Amatan: array[ 1..5] of Integer;
e. Nama variabel seperti RataRata tidak valid, scharusnya Ratarata
Jawab: a. Deklarasi array salah, semestinya: var Amatan: array[ 1..5] of Integer; Pembahasan: Deklarasi dari array adalah: type identifier=array[tipe_indeks] of tipe_data di mana tipe_indeks adalah tipe data ordinal.
27. Setelah Anda memberi saran demikian, temyata Joni masih belum bisa meng-compile programnya. Apa sebabnya?
a. setiap variabel harus dideklarasikan dengan keyword var sendiri-sendiri. Misalnya: var Jumlah: Integer; var RataRata:Integer; Var I:Integer;
b. Variabel RataRata tidak harus bertipe Real
c. Semua variabel, kecuali I seharusnya adalah Real, tidak boleh Integer
d. Pemisah antara parameter dalam Write dan Writeln harus titik koma, bukan koma, Misalnya Writeln(‘Jumlah = ‘;Jumlah);
e. Semua alasan di atas salah
Jawab: c. Semua variabel, kecuali I seharusnya adalah Real, tidak boleh Integer Pembahasan: Dalam program diberikan instruksi RataRata:=Jumlah/5 yang berarti variabel RataRata harus bertipe Real. Karena operator / hanya dikenal oleh variabel yang bertipe real. Konsep Dasar Pemrograman Prosedural 75
28. Joni mengganti operator “/” dengan "div" pada baris ke-15 program tersebut. Apa akibatnya?
a. program tidak mau di-compile karena. operator div tidak dapat digunakan di situ
b. nilai rata-ratanya menjadi 5
c. nilai rata-ratanya menjadi 6
d. nilai rata-ratanya menjadi 0
e. nitai rata-ratanya menjadi 2
Jawab: b. nilai rata-ratanya menjadi 5 Pembahasan: Perintah div adalah operator pembagian yang menghasilkan pembulatan ke bawah. Gunakan program berikut ini untuk menjawab beberapa soal selanjutnya: uses crt; var j:array['A'..'Z'] of Byte; c:char; Kal:string; procedure HH(S:String); var i:integer; {baris-6} m:char; begin for i:= 1 to length(S) do begin m:=S[i]; {baris-11} if m in ['A'..'Z'] then {baris-12} inc(J[i]); end; end; begin for c:='A' to 'Z' do J[c]:=0; Kal:='PASAR'; HH(Kal); for c:='A' to 'Z' do if J[c]>0 then write(c,J[c],' '); writeln; Kal:='RAYA'; HH(Kal); for c:='Z' downto 'A' do if j[c]>0 then write(c,J[c],' '); writeln; end.
29. Bila terdapat kesalahan yang menyebabkan program sama sekali tidak dapaf dijalankan sebutkan pada baris berapa, dan bagaimana perbaikannya?
a. Kesalahan semacam ini tidak ada
b. Baris 12, seharusnya ditulis If [m] in [‘A’..’Z’] then
c. Baris 6 seharusnya ditulis var i: Char;
d. Baris 13, seharusnya ditulis lnc(J[m]);
e. Index array hanya boleh berupa angka. Jadi deklarasi variabel seharusnya ditulis: const A = 1; Z = 26; var J: array[A..Z] of Byte; c: Byte; Kal: String; dan semua konstanta karakter dalam perintah for harus diganti, misalnya: for c:= A to Z do dan eterusnya
Jawab: b. Baris 13, seharusnya ditulis inc(J[m]); Pembahasan: Variabel J adalah variabel dengan tipe data array yang mempunyai indeks [‘A’..’Z’]. Dalam program diberikan indeks berupa bilangan bulat, yaitu i. Hal ini akan menghasilkan pesan kesalahan type mismatch.
30. Dengan perbaikan seperti nomor sebelumnya (kalau ada), maka program bisa dijalankan. Apakah hasil dari program tersebut?
a. A2 PI RI SI A4 PI R2 Sl Yl
b. A2 P1 RI SI YI RI A2
c. A2 PI RI SI YI R2 A4
d. PI A2 Sl RI YI A4 R2
e. A2 P1 RI SI Yl Sl R2 PI A4
Jawab: e. A2 P1 RI SI Yl Sl R2 PI A4
31. Tindakan apakah yang dilakukan oleh subrutin HH ketika dipanggil oleh baris 19 program di atas, dengan string S berisi kata “PASAR"?
a. Menghitung frekuensi kemunculan huruf-huruf alfabet dan menyimpannya dalam array J
b. Mengumpulkan huruf-huruf alfabet yang muncul lebih dari satu kali ke dalam array J
c. Mencatat letak setiap huruf alfabet ke dalam array J
d. Menentukan huruf yang paling sering dan paling jarang muncul dalam array J e. Mengurutkan huruf-huruf menurut urutan alfabet dari yang terkecil sampai yang terbesar. Jawab: a. menghitung frekuensi kemunculan huruf-huruf alfabet dan menyimpannya dalam array J