I. KATA PENGANTAR Dewasa ini sudah banyak berkembang bahasa-bahasa pemrograman tingkat tinggi yang pemakaiannya sudah sangat mudah, hanya klik dan drag saja. Namun meskipun demikian tetap saja programmer harus menuliskan kode-kode program agar objek-objek yang sudah mereka buat dapat bertingkah laku/bekerja sesuai dengan yang diinginkan. Secara singkat dapat dikatakan bahwa sebuah program pasti terdapat alur logika yang menyebabkan program tersebut dapat bekerja dengan benar. Modul algoritma dan pemrograman ini sangat penting bagi mahasiswa program studi Ilmu Komputer pada khususnya karena menjadi dasar bagi mahasiswa untuk mempelajari bahasa pemrograman. Pada modul ini diberikan contoh-contoh kasus untuk mempermudah memahami konsep. Karena sebuah contoh dapat memberikan inspirasi pemecahan masalah yang mirip. Tetapi patut diingat bahwa sebuah masalah di dalam pemrograman, bila diberikan kepada pemrogram yang berbeda, boleh jadi mempunyai aneka ragam solusi (dalam hal ini algoritma), mulai algoritma yang kusut karena banyak sekali percabangannya, sampai pada algoritma yang kurang efisien karena banyak sekali pengulangan instruksi yang sama dalam menganalisa kasus. Dengan mempelajari modul ini diharapkan nantinya Anda dapat memecahkan masalah secara metodologis, yaitu sesuai dengan skema (model) yang benar. Ketaatan menggunakan skema niscaya akan menghasilkan algoritma yang efisien dan mudah dipahami sehingga menghasilkan program yang baik pula. Sebagai akhir kata, semoga modul ini dapat diterima oleh para pembaca dalam mempelajari komputer, khususnya yang mempelajari mengenai bahasa penrograman Pascal serta dapat menambah wawasan bagi para pembaca dalam pembuatan program secara terstruktur. Yogyakarta, Desember 2007 Penulis Modul Ke-6 - Hal 21
II. PENDAHULUAN Suatu teknik yang biasa diterapkan dalam pemrograman terstruktur adalah teknik rancang atas-bawah (top-down design). Berdasarkan falsafah rancang atas-bawah, maka suatu program dipecah menjadi beberapa bagian yang lebih kecil, dengan harapan bagian-bagaian yang kecil menjadi lebih mudah dikodekan dan juga menjadi lebih mudah dipahami oleh program. Bagaian-bagian pemrograman seperti ini dikenal dengan sebutan subprogram atau subrutin. Program utama Subprogram Subprogram Subprogram Subprogram Gambar 1. Program dibagi-bagi menjadi beberapa subprogram Keuntungan lain dengan adanya subprogram adalah penghematan kode program. Ini terjadi jika ada beberapa bagian program yang sama dipangggil dibeberapa tempat didalam program. Untuk membuat subroutine Pascal menyediakan dua pilihan, yaitu procedure dan fungsi. Kedua jenis subroutine ini memiliki kegunaan yang sama, yaitu melakukan tugas tertentu. Modul Ke-6 - Hal 22
III. PROCEDURE A.1. Tujuan Instruksional Umum Setelah mempelajari modul ini Anda diharapkan mampu menyelesaikan permasalahan dengan memecah permasalahan dalam bentuk prosedur yang dapat dipergunakan berulang kali. 2. Tujuan Instruksional Khusus Setelah menyelesaikan modul ini Anda diharapkan dapat : a. menjelaskan bentuk umum dari procedure minimal untuk membangun procedure sederhana. b. menjelaskan perbedaan cara pengiriman data dengan menggunakan parameter minimal 2 perbedaan dengan benar. B. URAIAN MATERI Deklarasi prosedur, terdiri dari tiga bagian: 1. Judul prosedur 2. bagian deklarasi 3. bagian pernyataan Format yang lengkap PROCEDURE nama(daftar_parameter); Bagian deklarasi; Bagian pernyataan; 1). Cara Mendeklarasikan Procedure Untuk mendeklarasikan procedure dapat dilakukan dengan 2 cara, yaitu : Judul procedure tanpa parameter Bentuk umum : PROCEDURE namaprocedure; Contoh : Modul Ke-6 - Hal 23
Procedure BuatKotak; Procedure Input; Procedure Output; Penulisan judul procedure tanpa parameter diawali dengan kata PROCEDURE dan diikuti dengan nama procedure serta diakhiri dengan tanda titik koma Contoh 1: Program hitung; Var p,q, x, y : byte; Procedure TambahKali; X := 5 ; y := 2; P := x + y; Q ;= x * y; Writeln( x + y =, p); Writeln( x * y =,q); Write( x = ); readln(x); Write( Y = ); readln(y); TambahKali; {untuk menjalankan procedure tambah kali} end. Dari contoh 1 terlihat denganjelas bahwa procedure tambah kali hanya berisi baris-baris program yang dapat dijalankan, dan pada procedure itu sendiri tidak ada hasil yang ditampungnya. Judul procedure dengan parameter. Bentuk umum : PROCEDURE namaprocedure(daftar parameter); Contoh : Procedure BuatKotak(baris,kolom : integer); Procedure Input(a,b : byte; c : real); Karena a dan b berbeda type dengan c maka penulisannya dipisahkan dengan titik koma (;) Modul Ke-6 - Hal 24
2). Parameter Dalam Prosedur Parameter dalam prosedur ada dua macam, yaitu : Parameter Lokal Artinya hanya dapat digunakan pada modul atau unit program yang bersangkutan saja, tidak dapat digunakan pada modul atau unit program yang lainnya. Bentuk umumnya : Procedure kesatu; Var {deklarasi parameter LOKAL}.. {PROGRAM UTAMA} begin. End. Contoh 2: program menggunakan parameter lokal Program hitung; Procedure TambahKali; Var p,q, x, y :byte; X := 5; Y := 2; P := x + y; Q ;= x * y; Writeln( x + y =, p); Writeln( x * y =,q); Parameter p,q,x,y hanya dikenal di procedure TambahKali Var x, y : integer; Write( x = ); readln(x); end. Parameter x,y berbeda dengan parameter x,y di procedure dan hanya dikenal di program utama Write( Y = ); readln(y); TambahKali; {untuk menjalankan procedure tambah kali} Modul Ke-6 - Hal 25
Parameter Global Artinya dapat digunakan pada modul atau unit program yang lainnya. Bentuk umumnya : Var {deklarasi parameter LOKAL}. Procedure kesatu;. {PROGRAM UTAMA} begin. End. Contoh 2 : program menggunakan parameter global Program Prosedur1; uses crt; var a,hasil : real; Variabel a dan hasil akan dikenal baik di procedure maupun pada program utama Procedure jam_ke_menit; begin writeln; write('masukan jam : '); readln(a); hasil := a * 60; writeln(a:5:2,' jam ada : ',hasil:8:2,' menit'); end; {Program utama} begin clrscr; jam_ke_menit; readln; end. Modul Ke-6 - Hal 26
3). Parameter Formal dan Aktual Parameter dibedakan menjadi 2: Parameter formal dan Parameter actual Deklarasi procedure parameter formal PROCEDURE Tambah(A, B : Real) : Real; Pemanggilan procedure Tambah(10,30) parameter aktual Parameter formal adalah parameter yang terdapat pada pendeklarasian judul subprogram, baik pada fungsi maupun prosedur. Misalnya pada pendeklarasian: PROCEDURE Tambah(A, B : Real) : Real; A dan B disebut parameter formal. Parameter actual adalah parameter pada pemanggilan fungsi atau prosedur. Misalnya pada: Tambah(10, 30); 10 dan 30 adalah parameter aktual. 4). Pengiriman Parameter Pada Prosedur Pegiriman paremeter di dalam prosedur ada dua macam : Pengiriman secara nilai (by value) Parameter formal di prosedur akan berisi nilai yang dikirimkan yang kemudian bersifat lokal di prosedur. Bila nilai parameter formal di prosedur tersebut berubah, tidak akan mempengaruhi nilai parameter nyata. Bentuk umumnya : Procedure identifier (parameter : type); Modul Ke-6 - Hal 27
Contoh : Procedure Hitung (A,B : ineteger); Contoh 3 : penggunaan prosedur dengan parameter global dan pengiriman secara nilai Program Prosedur2; uses crt; var x,y,jumlah : integer; { parameter global} Procedure jml(x,y,jumlah : integer); {parameter nilai} begin jumlah := x + y; writeln('jumlah pada procedure : ',jumlah); jumlah := jumlah + 10; writeln('jumlah baru pada procedure : ',jumlah); end; {Program Utama} begin clrscr; a:= 5; b:= 1; jumlah := a + b; writeln('jumlah pada program utama : ',jumlah); jml(a,b,jumlah); writeln('jumlah baru pada program utama : ',jumlah); readln; end. Hasil Run : Jumlah pada program utama : 6 Jumlah pada procedure : 6 Jumlah baru pada procedure : 16 Jumlah baru pada programutama : 6 Pengiriman secara acuan (by reference) Bila pengiriman parameter secara acuan, maka perubahan-perubahan yang terjadi pada nilai parameter formal di prosedur akan mempengaruhi Modul Ke-6 - Hal 28
nilai parameter nyata. Biasanya pengiriman secara acuan ditandai dengan adanya kata cadangan di depan parameter formalnya Bentuk umumnya : Procedure identifier ( VAR parameter : type); Contoh : Procedure Hitung ( VAR A,B : ineteger); Contoh 4 : penggunaan prosedur dengan menggunakan parameter lokal dan pengiriman secara acuan Program Prosedur3; uses crt; Procedure tambah(a,b : integer; var c: integer); {Parameter acuan} begin c:= a + b; end; {Program Utama} var x,y,z : integer; {Parameter lokal} begin clrscr; Z := 1; x:= 2; y:= 3; tambah(x,y,z); writeln('x = ',x,' Y = ',y,' Z = ',z); readln; end. Hasil Run : X = 2 Y = 3 Z = 5 C. EVALUASI FORMATIF 1). Buatlah program untuk menghitung harga fungsi Y := X 3 + 2X 2-5X 2 dimana harga x dimasukkan lewat keyboard. Dan persamaan fungsi serta hasilnya dibuat dalam prosedur tersendiri. Modul Ke-6 - Hal 29
2) Tuliskan sebuah prosedur untuk menukarkan nilai dari dua variabel. Sebagai contoh, jika terdapat variabel a dan b, setelah pemanggilan prosedur ini, nilai a sama dengan b dan nilai b sama dengan a. prosedur ini menerima dua parameter bertipe real. 3) Tuliskan program untuk meminta masukan dari pengguna dua matriks berukuran m x n kemudian menjumlahkan dua matriks tersebut. Tuliskan tiga prosedur untuk meminta masukan matriks dari pengguna, menjumlahkan matriks, dan yang terakhir menampilkan matriks ke layar. Modul Ke-6 - Hal 30
IV. FUNCTION A.1. Tujuan Instruksional Umum Setelah mempelajari modul ini Anda diharapkan mampu menyelesaikan permasalahan dengan memecah permasalahan dalam bentuk fungsi yang dapat dipergunakan berulang kali. 2. Tujuan Instruksional Khusus Setelah menyelesaikan modul ini Anda diharapkan dapat : a. menjelaskan bentuk umum dari function minimal untuk membangun function sederhana. b. menjelaskan perbedaan penggunaan subroutine function dengan procedure minimal 2 perbedaan dengan benar. c. menyelesaikan permasalahan dengan membangun algoritma dan mengimplementasikan dalam bentuk fungsi rekursif maksimal dalam waktu 15 menit. B. URAIAN MATERI 1) Judul function Tanpa Parameter Suatu fungsi yang tanpa menggunakan parameter berarti nilai balik yang akan dihasilkannya merupakan nilai yang sudah pasti. Fungsi yang tidak mempunyai parameter, maka hasil fungsi tersebut tidak dapat diatur dari modul yang menggunakannya, karena tidak ada parameter yang dikirimkan. Bentuk umum : Function <namafunction> : tipedata dengan : function kata cadangan yang harus ada. namafunction nama fungsi yang akan dideklarasikan. tipedata tipe data hasil dari fungsi tersebut. Modul Ke-6 - Hal 31
Judul function selalu diawali dengankata cadangan function dan diikuti dengan nama function serta tipe datanya yang dipisahkan dengan tanda titik dua ( : ). Berikut digambarkan struktur blok program beserta function tanpa parameter. Contoh : Program hitung; Var x, y : byte; Function tambah : byte; Tambah := x + y; Function kali : byte; kali := x * y; End. Write( X = ); readln(x); Write( Y = ); readln(y); Writeln( x + y =,tambah); Writeln( x * y =,kali); Tambah bernilai sama dengan X + Y Kali bernilai sama dengan X * Y X = 2 Y = 3 X + Y = 5 X * Y = 6 Output : 2) Judul function Dengan Parameter Parameter digunakan untuk memberikan input pada fungsi dan fungsi akan memberikan hasil balik sesuai yang diberikannya. Bentuk deklarasi suatu fungsi dengan parameter adalah sebagai berikut: FUNCTION nama_fungsi(daftar_parameter) : tipe; Bagian_deklarasi; Bagian_pernyataan; Modul Ke-6 - Hal 32
Dalam hal ini: daftar_parameter dapat berisi sejumlah parameter Bentuk dari daftar_parameter: daf_parameter_1 : tipe_1; daf_parameter_2 : tipe_2; ; daf_parameter_n : tipe_n tipe menyatakan tipe dari hasil fungsi Jika fungsi tidak memiliki parameter, tanda ( ) tidak perlu disertakan Sama dengan prosedur, parameter dalam fungsi dapat dikirimkan secara nilai atau secara acuan. Penulisan judul fungsi yang menggunakan parameter dengan pengiriman secara nilai adalah tampak sebagai berikut : Function Hitung (A,B : integer) : integer; Sedangkan penulisan judul fungsi menggunakan parameter dengan pengiriman secara acuan adalah dengan menambahkan kata cadangan VAR sebagai berikut: Function Hitung ( VAR A,B : integer) : integer; Contoh deklarasi fungsi: FUNCTION Tambah (A : Real; B : Real) : Real; Contoh ini menunjukan bahwa fungsi Tambah mempunyai dua buah parameter yang masing-masing bertipe Real. Selain itu, hasil fungsi juga bertipe Real Berhubung tipe kedua parameter sama, penulisan seperti berikut merupakan ekuivalennya: FUNCTION Tambah (A, B : Real) : Real; Bagian deklarasi fungsi mempunyai bentuk seperti bagian deklarasi program. Bagian deklarasi bisa mengandung bagian VAR, TYPE, CONST, LABEL dan bahkan prosedur atau fungsi. Bagian ini jika ada hanya bersifat local dan hanya bagi fungsi itu sendiri. Artinya, hanya fungsi itusendiri yang bisa memanfaatkan dan mengenalinya. Modul Ke-6 - Hal 33
Bagian pernyataan berisi kode-kode yang akan dilaksanakan oleh fungsi sewaktu fungsi dipanggil. Untuk lebih jelasnya, perhatikan fungsi berikut terlebih dulu. FUNCTION Tambah(A, B : Real) : Real; BEGIN Tambah := A+B; END; Fungsi diatas berguna untuk mendapatkan hasil penjumlahan parameter A dan B. Satu hal penting yang perlu diperhatikan disini adalah adanya pernyataan: Tambah := A+B; Tampak bahwa bagian kiri dari operator penugasan berupa nama fungsi. Hal seperti ini mutlak diperlukan dan tidak lain adalah untuk memberikan hasil fungsi. Artinya fungsi Tambah akan memberikan nilai berupa penjumlahan dari parameter A dan B Untuk mencoba fungsi ini, ketik program berikut: Program Fungsi1; { -------------------------------------------------- } { Contoh pembuatan fungsi yang sederhana } { -------------------------------------------------- } USES CRT; FUNCTION Tambah(A, B : Real) : Real; BEGIN Tambah := A + B; END; { --- Akhir Fungsi Tambah ---} BEGIN { --- Program Utama ---} ClrScr; WriteLn (Tambah (10, 30)); ReadLn; END. Modul Ke-6 - Hal 34
Berikut adalah hasil pengujian terhadap program diatas: 4.0000000000E+01 3) Perbedaan dan Kesamaan Antara Prosedur dan Fungsi Perbedaan antara function dan procedure adalah sebagai berikut : Jika anda membuat prosedur maka Anda harus mendeklarasikan dengan reserved word procedure, sedangkan jika Anda ingin membuat suatu function maka Anda harus mendeklarasikan dengan reserved word Function Function harus dideklarasikan dengan tipenya, sedangkan procedure tidak. Hal ini menunjukkan bahwa pada function itu sendiri dapat menampung nilai, sedangkan procedure tidak. Kesamaan antara function dan procedure adalah sebagai berikut : Memecah sebuah program besar menjadi beberapa bagian (modul) sehingga memudahkan pembagian tugas jika program tersebut dibuat oleh lebih dari 1 orang. Selain itu juga mempermudah pengecekan kesalahan/error. Jika terdapat perintah-perintah yang sama yang akan Anda pakai dalam suatu program, maka sebaiknya perintah-perintah tersebut dipisahkan dalam suatu modul program dengan bantuan procedure, sehingga jika Anda ingin memakainya kita hanya tinggal memanggil nama procedure tersebut. Mempermudah proses dokumentasi. 4) Fungsi Rekursif Rekursif adalah kemampuan suatu rutin untuk memanggil dirinya sendiri. Jadi rekursif memungkinkan Anda memanggil suatu prosedur dari dalam prosedur itu sendiri. Mengapa kita memerlukan rekursif? karena ada beberapa kasus yang akan jauh lebih mudah diselesaikan dengan rekursi. Namun penggunaan rekursi kadang-kadang harus mengorbankan efisiensi dan kecepatan. Disamping itu, ada masalah yang sering muncul dalam rekursif, yaitu eksekusi yang tidak pernah berhenti. Akibatnya memori tumpukan akan habis dan komputer hang. Modul Ke-6 - Hal 35
Contoh : Faktorial Fungsi faktorial dari bilangan bulat positif n didefinisikan sebagai berikut : N! = n. (n-1)! jika n > 1 N! = 1 jika n = 0 atau 1. Sesuai dengan definisinya, Anda dapat menuliskan fungsi penghitung faktorial seperti contoh berikut : Function faktorial (n : byte) : longint; If ( n = 0) or (n = 1) then Faktorial := 1 Else Faktorial := n * faktorial (n-1); Pada baris pertama dari fungsi diatas, nilai n dicek sama dengan 0 atau 1, jika ya, maka fungsi mengembalikan nilai 1. jika tidak, fungsi mengembalikan nilai n * faktorial(n 1) Disinilah letak proses rekursif itu. Perhatikan fungsi faktorial ini memanggil sendiri tetapi dengan parameter (n-1). C. EVALUASI FORMATIF 1). Buatlah fungsi untuk menentukan apakah suatu bilangan habis dibagi 9 atau tidak. 2) Buatlah fungsi untuk mencari FPB (Faktor Persekutuan Terbesar) dari 2 buah bilangan yang diinputkan dari keyboard. Modul Ke-6 - Hal 36
EVALUASI Pilihlah salah satu jawaban yang Anda anggap paling benar 1. Manakah yang salah dari deklarasi di bawah ini : A. function abc(a : byte) : real; B. function xyz(x : byte) : byte; C. function klm(k,l :byte) : real; D. function stu (s : real); E. function rsm(var b : real) : real; 2. function a : boolean; begin write( Hello ); a := false; end; function b : boolean; begin writeln( World! ); b := true; end; begin if a and b then writeln( This program is written in Pascal ); end. Jika option short circuit boolean evaluation diaktifkan, output dari program diatas A. Hello world! This program is written in Pascal B. Hello C. Hello World D. World! E. Hello World! This program is written in Pascal Modul Ke-6 - Hal 37
3. Uses crt; Var I,J : integer; Function jumlah(n : integer) : integer; Var J, K : integer; J := 0; For K := 1 to N do J := J + K; Jumlah := K; {baris 9} J := 12; For I := 1 to 3 do J := J+Jumlah(I); Writeln(J); Apakah keluaran dari program diatas : A. 9 B. 18 C. 12 D. 6 E. 3 4. Dari soal no 2, baris 4 program tersebut K diganti menjadi J, bagaimanakah keluaran program itu sekarang? A. 9 B. 18 C. 22 D. 6 E. 3 5. function Bit(B,P : byte) : Char; var M : byte; begin M := 1 shl P; If (B and M) = 0 then Bit := 0 Else Bit := 1 ; Modul Ke-6 - Hal 38
Var Bil, I : Byte; Readln(Bil); For I := 7 downto 0 do Write(Bit(Bil,I)); End. Berapakah keluaran program diatas bila input nilai untuk Bil adalah 25? A. 00011001 B. 11001 C. 10011000 D. 10011 E. salah semua 6. Diketahui potongan fungsi sebagai berikut. Berapakah nilai Hitung(5)? Function Hitung(k : integer) : integer; Var Hit : integer; J : integer; For J := 1 to k do Hit := Hit + J; Hitung := Hit; A. 0 B. 5 C. 15 D. 20 E. nilainya tidak dapat diperkirakan. 7. Bila fungsi ABC didefinisikan sebagai : Function ABC (I : integer) : integer; Var J : integer; J := 0; While I > 0 do Dec(I); Modul Ke-6 - Hal 39
J := J + I mod 5; {baris 8} I := I shr 1; ABC := J; Berapakah hasil dari ABC (25)? A. 10 B. 0 C. 7 D. 40 E. salah semua. 8. Berapakah nilai ABC(25) pada soal diatas apabila baris 8 pada fungsi ABC diubah menjadi : J := J + I mod 5 shl 1; A. 10 B. 5 C. 20 D. 14 E. 0 9. Manakah yang salah dari deklarasi di bawah ini : A. procedure abc; B. procedure abc(a : byte); C. procedure xyz(var x : integer); D. procedure klm(a,b : real) : real; E. procedure sal(a,b : real; var x : real); 10. Procedure add(x,y,result : integer); Result := x +y; X := 0; Y := 0; Var X,y,result : integer; Modul Ke-6 - Hal 40
Result := 0; X := 5; Y := 7; Add(x,y,result); Writeln(x,,y,,result); Output program di atas : A. 5 7 12 B. 0 0 12 C. 0 0 12 D. 5 7 12 E 5 7 0 11. Lihat Program dibawah ini Var Bil : integer; Procedure Find(B:integer; I : integer); R := round(sqrt(b)); J := 2; While (J <= R) and (B mod J <> 0) do Inc(J); If J <= R then Write(J, * ); Find(B div J, I+1); End Else if I > 0 then Writeln(B, =, Bil) Else writeln( Bilangan prima ); Modul Ke-6 - Hal 41
Write( Masukkan bilangan = ); Readln(Bil); Find(Bil,0); End. Bagaimana output program diatas bila inputnya = 42? A. 7 * 3 * 2 = 42 B. Bilangan prima C. = 42 D. 2 * 3 * 7 = 42 E. salah semua 12. Program testing; Uses crt; Var kata : string; Bil : integer; Procedure cek(var S : string; var L : integer); Var J : integer; J := L; While (J < length(s)) and (S[J] = ) do inc(j); Delete(S,L,J - L); L := J L; Kata := saya terpisah ; Bil := 5; Cek(kata,bil); Writeln( #,kata, # ); Apa keluaran program diatas? A. #saya terpisah# B. #saya terpisah# C. #sayaterpisah# D. #saya# E. #terpisah# Modul Ke-6 - Hal 42
13. Berapakah nilai Bil pada akhir eksekusi program? A. 5 B. 1 C. 2 D. 0 E. 12 14. Apa yang terjadi bila klausa uses crt pada baris ke dua pada soal nomor 4 diatas dihilangkan, kemudian program dijalankan? A. Tidak ada keluaran apa pun yang dihasilkan B. Program tetap berjalan seperti biasanya dan tidak ada perubahan apa-apa. C. Semua output program tidak keluar di layar, tetapi di printer. D. Terjadi compile error E. Terjadi runtime error 15. Penggalan program sbb : Procedure abc(a,b,c,d,e,f : byte); C := A + B; D := A B; E := A*B; F := A div B; Bila procedure abc dipanggil dengan abc(10,3,x,y,z,w) maka x,y,z, dan w masing-masing berharga : A. 13, 7, 30, 3 B. 0, 0, 0, 0 C. 13, 7, 30, 3.33 D. 0,3, 30, 3.33 E. salah semua 16. Berikut ini penggalan program Pascal : Function Abc(a,b : byte) : longint; If b=0 then Abc := 1 Modul Ke-6 - Hal 43
Else Abc := a * Abc(a,b-1) Bila function abc di atas dipanggil dengan x := Abc(5,3); maka x berharga : A. 15 B. 125 C. 1 D. 215 E. salah semua 17. Masih berhubungan dengan no 16, function abc dipanggil dengan x := abc(3,5) maka berharga : A. 81 B. 15 C. 243 D. 24 E. salah semua 18. Masih berhuhungan dengan no 16, bila statement abc := a * abc(a,b-1); diganti dengan abc := a + abc(a,b-1); dan dipanggil dengan x := abc(3,4); maka berharga : A. 13 B. 12 C. 10 D. 8 E. salah semua 19. Penggalan program Pascal sbb : Type kal = string[20]; Procedure pqr(x : kal, n : byte); If n > 0 then Write(x[n]); Pqr(x,n-1); Modul Ke-6 - Hal 44
Bila dipanggil procedure dengan pqr( TITA99,6); maka outputnya : A. TITA99 B. 99ATIT C. TITA D. Salah semua E. 99TITA 20. Penggalan program sbb : Function xyz(n : byte) : integer; If n = 1 then xyz := n Else xyz := 1 + xyz(n-1); Bila function xyz dipanggil dengan a := xyz(10); maka a berharga : A. 1 B. 9 C. 10 D. 0 E. salah semua 21. Masih berhubungan dengan soal no. 20, bila dipanggil dengan y := xyz(16); maka y berharga : A. 16 B. 1 C. > 16 D. 10 E. salah semua 22. Bila program no. 20, statement xyz := 1 + xyz(n-1); diganti dengan xyz := n + xyz(n-1); dan dipanggil dengan y := xyz(5); maka y berharga : A. 15 B. 5 C. 1 D. > 15 E. salah semua 23. Penggalan program Pascal sbb : Function xyz(n : integer) : integer; Modul Ke-6 - Hal 45
If n < 3 then xyz := n-1 Else xyz := xyz(n-1) + xyz(n-2); Bila function xyz di atas dilengkapi dengan statemen di bawah ini maka y berharga : Y := 0; For a := 1 to 3 do y := y + xyz(a); Writeln(y); A. 2 B. 3 C. 4 D. 5 E. salah semua 24. Masih berhubungan dengan soal no 23 diatas. Bila function xyz di atas dilengkapi dengan statemen di bawah ini,maka x berharga : X := 0; For j := 3 downto 1 do x := x + xyz(j+1); Writeln(x); A. 2 B. 3 C. 4 D. 5 E. salah semua 25. Penggalan program Pascal sebagai berikut : Var a, b, c : real;... a := 123.456 b := int(a); c := sqr(b); c := sqrt(c); writeln( b, c) Modul Ke-6 - Hal 46
maka nilai b dan c adalah berharga A. 123.0 123.0 B. 123 123 C. 0.456 456 D. 456 0.456 E. 123.0 0.456 Umpan Balik dan Tindak Lanjut Cocokkanlah jawaban anda dengan Kunci Jawaban Evaluasi yang terdapat di bagian lampiran modul ini dan hitunglah jumlah jawaban anda yang benar. Kemudian gunakan rumus di bawah ini untuk mengetahui tingkat penguasaan anda dalam materi Modul ke-1. Rumus : Tingkat penguasaan = Jumlah jawaban anda 25 yang benar 100% Arti tingkat penguasaan yang anda capai : 90% - 100% = baik sekali 80% - 89% = baik 70% - 79% = sedang - 69% = kurang Kalau Anda mencapai tingkat penguasaan 80% atau lebih, Anda dapat meneruskan ke modul berikutnya. Bagus! Tetapi kalau nilai Anda dibawah 80%, Anda harus mengulang Modul ke-1 terutama yang belum Anda kuasai. Modul Ke-6 - Hal 47
BAHAN BACAAN Brassard, Gilles, and Bratley, Paul, 1996, Fundamentals of Algorithmics, Prentice Hall, Englewood Cliffs, New Jersey. Budiyanto, Alex, 2003, Pengantar Algoritma dan Pemrograman, www.ilmu Komputer.com Jogiyanto H.M, 1995, Turbo Pascal versi 5.0, jilid 1, Andi Offset, Yogyakarta. Munir, Rinaldi, Ir, dan Lidya, Leoni, Ir., 1998, Algoritma dan Pemrograman I, Informatika, Bandung. Pranata, Antony, 2000, Algoritma dan Pemrograman, J & J Learning, Yogyakarta. Modul Ke-6 - Hal 48
LAMPIRAN KUNCI JAWABAN FORMATIF 1. D 2. C 3. B 4. C 5. A 6. E 7. A 8. C 9. D 10. E 11. E 12. C 13. B 14. B 15. E 16. B 17. C 18. A 19. B 20. C 21. A 22. A 23. A 24. C 25. A Modul Ke-6 - Hal 49