INSTITUT TEKNOLOGI TELKOM
BAB 6. PROSEDUR 1.
Terd Terdap apat at sebu sebuah ah pro prosed sedur ur seb sebag agai ai ber berik ikut ut : [UAS Genap 05/06 no 8] procedure Nulis(n:integer); Nulis(n:integer); begin write(n); if (n>1) then Nulis(n-1) else Writeln(n); Writeln(n); end;
Jika di dalam program utama terdapat pernyataan program tersebut adalah: A. 4
B.
1 1 2 3 4
C. 4 3 2 1 1
D.
Nulis(4) ,
12344
maka keluaran dari
E.
4 3 2 1 1
Jawab : C. 4 3 2 1 1 Pembahasan : Sesuai pernyataan Nulis(4), berarti n=4. Saat procedure dijalankan, maka dilakukan langkah-langkah berikut ini : •
•
•
•
Output yang tampil di layar adalah 4. Karena n>1, maka procedure Nulis dipanggil dipanggil kembali. Seluruh Seluruh isi procedure procedure akan dijalankan kembali, yaitu: output yang tampil pada layar adalah n-1=3 Karena n>1, maka procedure Nulis dipanggil kembali. Seluruh isi procedure kembali dijalankan, yaitu: output yang tampil pada layar adalah n-1=2 Karena n>1, maka procedur Nulis dipanggil kembali. Seluruh isi procedure dijalankan kembali, yaitu: output yang tampil pada layar adalah n-1=1.
Karena n tidak lebih besar dari 1, maka di layar akan ditampilkan kembali 1. Jadi, output keseluruhan yang tampil pada layar adalah 4 3 2 1 1 •
TIM ALGORITMA FAKULTAS ELEKTRO DAN KOMUNIKASI
1
INSTITUT TEKNOLOGI TELKOM
2.
Perhatikan algoritma di bawah ini : [UAS Genap 06/07 no 16] 1> 2> 3> 4> 5> 6>
Program HayoCobaTebak1 Kamus a,b,c :Integer Procedure Tukar (Input a:integer; I/O b:integer) Kamus Lokal Algoritma
7>
c ← b
8>
a ← b
9> 10> 11>
b ← c {Akhir procedure} Algoritma
12>
a ← 10
13>
b ← 5
14> 15> 16>
c ← 3 Tukar(a,b) Tukar(c,b)
Setelah program utama dijalankan berapa nilai a,b,c setelah pemanggilan Tukar(a,b)
: A. B. C. D. E.
a = 5; b= 10 ; c= 3 a = 10; b= 10 ; c= 3 a = 10; b= 5 ; c= 5 a = 5; b= 10 ; c= 3 a = 5; b= 3 ; c= 10
Jawab : C. a = 10; b= 5 ; c= 5 Pembahasan : Saat program utama dijalankan, maka nilai a=10, b=5 dan c=3. Kemudian, saat pemanggilan Tukar(a,b), prosedur Tukar dijalankan. Prosedur tukar melakukan urutan pengerjaan sebagai berikut: 1. Nilai b disimpan ke dalam c, sehingga c=5. 2. Nilai b disimpan ke dalam a sehingga a=5. 3. Nilai c disimpan ke dalam b, sehingga b=5. Yang akan ditampilkan pada layar adalah a=10; b=5 dan c=5. Hal ini dikarenakan pada deklarasi prosedur, variabel a merupakan input sedangkan b ádalah variabel input/output. Artinya, hasil yang tersimpan pada variabel a hanya berlaku di dalam prosedur saja. Inilah sebabnya nilai yang ditampilkan di layar saat program utama dijalankan mengambil nilai a yang diberikan pada awal program utama, bukan hasil dari prosedur.
TIM ALGORITMA FAKULTAS ELEKTRO DAN KOMUNIKASI
2
INSTITUT TEKNOLOGI TELKOM
3.
Perhatikan algoritma di bawah ini : [UAS Genap 08/09 no 4] procedure PutarAbis (IN a,b:integer; IN/OUT c,d:integer) Kamus lokal: Algoritma a ← b ; b ← c ; c ← d; d ← a + b Program CobaDuluAja Kamus : procedure PutarAbis (IN a:integer, b:integer, IN/OUT c:integer, d :integer) a, b, c, d :integer Algoritma a ← 1 ; b ← 2; c ← 3; d ← 4 PutarAbis(a,b,c,d) d ← a PutarAbis(a,b,c,d)
Berapakah nilai akhir yang terkandung dalam a, b, c ,d setelah eksekusi program? A. A = 1 ; b = 2 ; c = 4 ; d = 5 B. A = 2 ; b = 3 ; c = 4 ; d = 4 C. A = 1 ; b = 2 ; c = 4 ; d = 6 D. A = 2 ; b = 3 ; c = 2 ; d = 5 E. A = 1 ; b = 2 ; c = 1 ; d = 6 Jawab : E. A = 1 ; b = 2 ; c = 1 ; d = 6 Pembahasan : Saat program dieksekusi, maka nilai a=1, b=2, c=3, d=4. Saat prosedur PutarAbis (a.b.c.d) dijalankan, maka nilai a=b=2, b=c=3, c=d=4, d=a+b=2+3=5. Karena a dan b merupakan variabel input serta c dan d merupakan variabel input/output, maka nilai c dan d akan sesuai dengan hasil operasi prosedur, yaitu c=4 dan d=5. Sementara nilai a dan b akan mengikuti nilai awal. Pada langkah selanjutnya nilai d=a=1. Saat pemanggilan kembali prosedur PutarAbis(a,b,c,d), maka nilai a=1, b=2, c=1 dan d=6
4.
Perhatikan deklarasi prosedur berikut : [UTS Genap 08/09 no 6] Procedure Pro1 ( input a : integer, input/output b : integer, output C : integer ) Berikut adalah pernyataan yang benar mengenai deklarasi tersebut:. A.
Variabel a tergolong variabel global.
B.
Variabel a dapat diisi dengan variabel global yang belum terdefinisi.
C.
Variabel b dapat diisi dengan variabel global yang belum terdefinisi.
D.
Variabel b dan c dapat diisi dengan variabel global yang sudah terdefinisi.
E.
Variabel c harus diisi dengan angka / konstanta.
TIM ALGORITMA FAKULTAS ELEKTRO DAN KOMUNIKASI
3
INSTITUT TEKNOLOGI TELKOM
Jawab : D. Variabel b dan c dapat diisi dengan variabel global yang sudah terdefinisi. Pembahasan : Variabel a, b dan c dapat diisi dengan variabel global yang telah terdefinisi dan variabel c tidak boleh diisi dengan angka atau konstanta. Yang paling sesuai adalah pilihan D.
5.
Perhatikan program berikut berikut (UTS Algo 2-0809 no 6) : Program Fungsi Kamus i,j,k:integer x,y : real procedure pro1(input i:integer;input/output j,k:integer) procedure pro2(output i:integer;input j,k:real) Algoritma i←0;j←1;k←2 input(i,j,k);input(x,y) pro1(j,k,i) output(i,j,k) pro2(j,x,y) output(j,x,y)
{baris1} {baris2} {baris3} {baris4} {baris5} {baris6}
Berikut adalah pernyataan yang benar mengenai deklarasi tersebut:. A. B. C. D. E.
Program error karena nama parameter pro1 dan pro2 sama. Nilai variabel j pada baris3 dan baris 4 bisa berbeda Nilai variabel j pada baris5 dan baris6 bisa berbeda Pemanggilan pro2 boleh dilakukan dengan pro2(1,0.5,2.5) Pemanggilan pro1 boleh dilakukan dengan pro1(1,5,2)
Jawab : C. Nilai variabel j pada baris5 dan baris6 bisa berbeda Pembahasan : 1. Dari program, nama parameter beberapa prosedur boleh sama. 2. Nilai parameter j pada baris ketiga dan keempat akan sama karena yang dioutputkan akan sesuai dengan hasil prosedur, dimana j merupakan parameter input/output. 3. Nilai variabel j pada baris 5 dan 6 bisa berbeda, bisa pula sama. Tergantung proses di dalam prosedur. 4. Pada pemanggilan prosedur, nilai parameter output tidak boleh angka atau konstanta. Jadi jawaban yang paling tepat adalah C.
TIM ALGORITMA FAKULTAS ELEKTRO DAN KOMUNIKASI
4
INSTITUT TEKNOLOGI TELKOM
6.
Perhatikan deklarasi prosedur berikut : [UTS Ganjil 09/10 no 13] Procedure Pro1 ( input a : integer, input/output b : integer, output c : integer ) Berikut adalah pernyataan yang salah mengenai deklarasi tersebut : A.
Parameter a harus diisi dengan variabel yang memiliki nilai.
B.
Parameter b harus diisi dengan variabel yang memiliki nilai.
C.
Parameter c dapat diisi dengan variabel yang belum berisi nilai.
D.
Parameter a dan b dapat diisi dengan variabel yang sudah memiliki nilai.
E.
Parameter b dan c harus diisi dengan parameter aktual yang berupa variabel.
Jawab : A. Parameter a harus diisi dengan variabel yang memiliki nilai. Pembahasan : Parameter input boleh diisi variabel yang tidak memiliki nilai
7.
Terdapat program Pascal sebagai berikut : [UTS Genap 05/06 no 19] Program XXX; Var n:integer; Procedure ANI(var a:integer); Var I : integer; Begin For I:=1 to 3 do A:=I; A:=A+1; End; Begin n:=1; ANI(n); End.
Dari Program XXX diatas, dengan melihat pemakaian procedure ANI, maka keluaran nilai A akan muncul : A. B. C. D. E
4 6 3 5 7
Jawab : A. 4
TIM ALGORITMA FAKULTAS ELEKTRO DAN KOMUNIKASI
5
INSTITUT TEKNOLOGI TELKOM
Pembahasan : Saat program dijalankan, maka n=1. Saat pemanggilan prosedur ANI, diperoleh ANI(1), dimana : ƒ Pada Iterasi 1, diperoleh A=2 ƒ Pada Iterasi 2, dperoleh A=3 ƒ Pada Iterasi 3, diperoleh A=4 Sehingga nilai A yang muncul adalah 4.
8.
Terdapat program Pascal sebagai berikut : [UTS Genap 05/06 no 19] Program XXX; Var n:integer; Procedure ANI(var a:integer); Var I : integer; Begin For I:=1 to 3 do A:=I; A:=A+1; End; Begin n:=1; ANI(n); End.
bila heading
diubah menjadi ANI(a:integer) , maka nilai n = … [UTS Genap 05/06 no 20] A. B. C. D. E
Procedure
ANI(var
a:integer)
Procedure
1 2 3 4 5
Jawab : A. 1 Pembahasan : Bila parameter formal prosedur tidak menggunakan var, maka nilai yang dihasilkan prosedur hanya berlaku didalam prosedur itu sendiri dan tidak berlaku global. Nilai n=1, sesuai dengan nilai awal.
TIM ALGORITMA FAKULTAS ELEKTRO DAN KOMUNIKASI
6
INSTITUT TEKNOLOGI TELKOM
9.
Perhatikan program di bawah ini : [UTS_Genap 07/08 no 6] Program Fungsi Kamus i,j,k:integer procedure prosedur1 (input i:integer;input/output j,k:integer) Algoritma i←0;j←1;k←2 input(i,j,k) prosedur1(j,k,i) output(j,k,i)
Procedure prosedur1 (input i:integer; input/output j,k:integer) Kamus lokal Algoritma k ← i + j j ← k mod i i ← j mod k
Jika algoritma tersebut dieksekusi dengan input dari user secara berurutan adalah 2, 5 dan 10, maka output yang ditampilkan adalah: A. 0, 0, 12 B. 0, 0, 15 C. 5, 0, 15
D. 0, 15, 5 E. 2, 0, 12
Jawab : C. 5, 0, 15 Pembahasan : Saat program dijalankan, maka i= 0; j=1, k=2 karena ada perintah input, maka program menunggu input yang dimasukkan user, sehingga i=2, j=5 dan k =10 Saat pemanggilan prosedur prosedur1(5, 10, 2), maka K=5+10=15 J=15 mod 5=0 i=0 mod 15=0 Yang ditampilkan adalah 5, 0, 15 Variabel yang pertama merupakan variabel input, maka yang dimunculkan adalah nilai awal, yaitu j=5. Variabel kedua dan ketiga merupakan variabel input/output sehingga yang dimunculkan adalah nilai hasil prosedur, yaitu 0 dan 15.
TIM ALGORITMA FAKULTAS ELEKTRO DAN KOMUNIKASI
7
INSTITUT TEKNOLOGI TELKOM
10.
Terdapat program dibawah ini : [UTS Genap 05/06 no 10] Program APAADANYA; Procedure APA(a:string ;var b:string); begin If a=’Satu’ then b=’APA’ Else if a=’dua’ then b=’APA-APAAN’ Else b=’APAADANYA’; End; {Variabel GLOBAL} Const N=3; Var kata, kiti : string; i : integer; begin write(‘Masukkan kata satu, dua atau yang lain:’); readln(kata); for i:=1 to N do begin APA(kata, kiti); write(kiti); end; end.
Berdasar program di atas, pilih yang jawaban sesuai: A. B. C. D. E
Jika kata=’satu’ maka keluaran= satusatusatu Jika kiti=’APA’ maka Keluaran=APAADANYAAPAADANYAAPAADANYA Jika kata=’dua’ maka keluaran=APA-APAANAPA-APAANAPA-APAAN Jika kata=’dua’ maka keluaran=duaduadua; Jika kata=’APA’ maka keluaran=APA-APAANAPA-APAANAPA-APAAN
Jawab :C. Jika kata=’dua’ maka keluaran=APA-APAANAPA-APAANAPA-APAAN Pembahasan : Iterasi akan dilakukan 3 kali, sesuai dengan jumlah konstanta N, yaitu 3. Jika masukan adalah kata ’dua’ maka sesuai prosedur, akan muncul APA-APAAN sebanyak 3 kali, sehingga outputnya adalah APA-APAANAPA-APAANAPA-APAAN.
Bandung, Oktober 2010 TIM ALGORITMA F. ELKO
TIM ALGORITMA FAKULTAS ELEKTRO DAN KOMUNIKASI
8