Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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; Begin X := 5 ; y := 2; P := x + y; Q ;= x * y; Writeln(‘ x + y = ‘, p); Writeln(‘ x * y = ‘,q); End; Begin 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
Modul Algoritma Pemrograman
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} ……… ……. Begin ……… ……. End; {PROGRAM UTAMA} begin ……… ……. End. Contoh 2: program menggunakan parameter lokal Program hitung; Parameter p,q,x,y hanya Procedure TambahKali; dikenal di procedure Var p,q, x, y :byte; TambahKali Begin X := 5; Y := 2; P := x + y; Q ;= x * y; Writeln(‘ x + y = ‘, p); Writeln(‘ x * y = ‘,q); End; Var x, y : integer; Parameter x,y berbeda dengan Begin parameter x,y di procedure dan hanya dikenal di program utama Write(‘x = ‘); readln(x); Write(‘Y = ‘); readln(y); TambahKali; {untuk menjalankan procedure tambah kali} end.
Modul Ke-6 - Hal 25
Modul Algoritma Pemrograman
Parameter Global Artinya dapat digunakan pada modul atau unit program yang lainnya. Bentuk umumnya :
Var {deklarasi parameter LOKAL} ……… ……. Procedure kesatu; Begin ……… ……. End; {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
Modul Algoritma Pemrograman
3). Parameter Formal dan Aktual Parameter dibedakan menjadi 2: z
Parameter formal dan
z
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
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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;
Hasil Run : X=2Y=3Z=5
tambah(x,y,z); writeln('X = ',x,' Y = ',y,' Z = ',z); readln;
end.
C. EVALUASI FORMATIF 1). Buatlah program untuk menghitung harga fungsi Y := X3 + 2X2 - 5X –2 dimana harga x dimasukkan lewat keyboard. Dan persamaan fungsi serta hasilnya dibuat dalam prosedur tersendiri.
Modul Ke-6 - Hal 29
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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
: 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
Modul Algoritma Pemrograman
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; Begin Tambah := x + y; End;
Tambah bernilai sama dengan X + Y
Kali bernilai sama dengan X*Y
Function kali : byte; Begin kali := x * y; End; Begin
End.
Write(‘X = ‘); readln(x); Write(‘Y = ‘); readln(y); Writeln(‘x + y = ‘,tambah); Writeln(‘ x * y = ‘,kali);
Output : X=2 Y=3 X+Y=5 X*Y=6
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
Modul Algoritma Pemrograman
Dalam hal ini: z
daftar_parameter dapat berisi sejumlah parameter
z
Bentuk dari daftar_parameter: daf_parameter_1 : tipe_1; daf_parameter_2 : tipe_2; …; daf_parameter_n : tipe_n
z
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
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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; Begin If ( n = 0) or (n = 1) then Faktorial := 1 Else Faktorial := n * faktorial (n-1); End;
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
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
3. Uses crt; Var I,J : integer; Function jumlah(N : integer) : integer; Var J, K : integer; Begin J := 0; For K := 1 to N do J := J + K; Jumlah := K; {baris 9} End; Begin J := 12; For I := 1 to 3 do J := J+Jumlah(I); Writeln(J); End; 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’; End;
Modul Ke-6 - Hal 38
Modul Algoritma Pemrograman
Var Bil, I : Byte; Begin 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; Begin For J := 1 to k do Hit := Hit + J; Hitung := Hit; End; 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; Begin J := 0; While I > 0 do Begin Dec(I);
Modul Ke-6 - Hal 39
Modul Algoritma Pemrograman
J := J + I mod 5; I := I shr 1;
{baris 8}
End; ABC := J; End; 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); Begin Result := x +y; X := 0; Y := 0; End; Var X,y,result : integer;
Modul Ke-6 - Hal 40
Modul Algoritma Pemrograman
Begin Result := 0; X := 5; Y := 7; Add(x,y,result); Writeln(x,’ ‘,y,’ ‘,result); End; Output program di atas : A. 5 7 12 B. 0 0 12 C. 0 0 12 D. 5 7 12 E
570
11. Lihat Program dibawah ini Var Bil : integer; Procedure Find(B:integer; I : integer); Begin R := round(sqrt(B)); J := 2; While (J <= R) and (B mod J <> 0) do Begin 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;
Modul Ke-6 - Hal 41
Modul Algoritma Pemrograman
Begin 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; Begin J := L; While (J < length(S)) and (S[J] = ‘ ‘) do inc(J); Delete(S,L,J - L); L := J – L; End; Begin Kata := ‘saya terpisah’; Bil := 5; Cek(kata,bil); Writeln(‘#’,kata,’#‘); End; Apa keluaran program diatas ? A. #saya terpisah# B. #saya terpisah# C. #sayaterpisah# D. #saya# E. #terpisah#
Modul Ke-6 - Hal 42
Modul Algoritma Pemrograman
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); Begin C := A + B; D := A – B; E := A*B; F := A div B; End; 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; Begin If b=0 then Abc := 1
Modul Ke-6 - Hal 43
Modul Algoritma Pemrograman
Else Abc := a * Abc(a,b-1) End; 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); Begin If n > 0 then Begin Write(x[n]); Pqr(x,n-1); End; End;
Modul Ke-6 - Hal 44
Modul Algoritma Pemrograman
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; Begin If n = 1 then xyz := n Else xyz := 1 + xyz(n-1); End; 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
Modul Algoritma Pemrograman
Begin If n < 3 then xyz := n-1 Else xyz := xyz(n-1) + xyz(n-2); End; 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
Modul Algoritma Pemrograman
maka nilai b dan c adalah berharga A. 123.0 123.0 B.
123
123
C.
0.456 456
D.
456
E.
123.0 0.456
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 yang benar × 100% 25
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
Modul Algoritma Pemrograman
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
Modul Algoritma Pemrograman
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