OSN TIK
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
This entry was posted on 05.57
and is filed under
OSN TIK
.
You can follow any responses to this entry through
the RSS 2.0 feed.
You can leave a response,
or trackback from your own site.
0 komentar:
Posting Komentar