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
Return top




0 komentar:
Posting Komentar