I. KATA PENGANTAR. Modul Algoritma Pemrograman. Modul Ke-6 - Hal 21

dokumen-dokumen yang mirip
I. KATA PENGANTAR. Modul Algoritma Pemrograman. Modul Ke-4 - Hal 1

I. KATA PENGANTAR. Modul Algoritma Pemrograman. Modul Ke-3 - Hal 1

Tujuan Pembelajaran : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Modul.

Sesi/Perkuliahan ke: VI Tujuan Instruksional Khusus : 4. Pokok Bahasan : Deskripsi singkat : Referensi :

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom

Algoritma Pemrograman

Tujuan Pembelajaran : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Modul.

[1997] NUS: var x,y=byte; c. program xyz ; 1. Manakah identifier yang benar untuk menamakan nama program : a. prog-a b. prog_a c. prog+a d.

Algoritma Pemrograman

menunjukkan tipe hasil dari fungsi. sqr, succ dan sebagainya. buat sendiri.

Pertemuan 3 Prosedur dan Fungsi

Pengantar dalam Bahasa Pemrograman Turbo Pascal

PROCEDURE DAN FUNCTION PROCEDURE. Parameter dalam Prosedur: C/: PROGRAM CONTOH_2; VAR p,l,t,vol,panj : real;

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

Algoritma Pemrograman

MODUL 1. Struktur Bahasa PASCAL secara umum

& PEMROGRAMAN. Alex De Kweldju, S.Kom D3 Teknik Komputer Fakultas Teknik Universitas Negeri Papua

PROCEDURE DAN FUNCTION

MATERI 5 Procedure. Pendeklarasian suatu procedure pada program : PROGRAM Judul_Program; PROCEDURE Nama_Prosedur; BEGIN. {Statemen prosedur} END.

Algoritma Pemrograman

Teori Algoritma. Struktur Algoritma

BAB I TUJUAN DAN LANDASAN TEORI

Universitas gunadarma. pascal. Bab 4- bab 10. Hana Pertiwi S.T

MATERI 2 JENIS-JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

PROCEDURE. Bentuk Umum : PROGRAM judul_program ; PROCEDURE judul_prosedur ; Begin Statement prosedur ; End ; Begin Statement program utama ; end.

PROSEDUR DAN FUNCTION

PENDAHULUAN. Brigida Arie Minartiningtyas, M.Kom

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

Algoritma Pemrograman

Indentifier, Keywords, Variable, Tipe Data dan Operator. Ramos Somya, S.Kom., M.Cs.

Pertemuan Ke-2 (Teks Algoritma) Rahmady Liyantanto. S1 Teknik Informatika-Unijoyo

Materi ke-4 Praktikum Algoritma dan Pemrograman kelas Matematika PEMROGRAMAN MODULAR

Pertemuan 3 Penyeleksian Kondisi dan Perulangan

IT132 Dasar-Dasar Pemrograman. Ramos Somya, S.Kom., M.Cs.

Dasar Komputer & Pemrograman 2A

Teori Algoritma. Algoritma Perulangan

Struktur Data. Belajar Struktur Data Menggunakan Pascal Pertemuan-1

SMA SANTO PAULUS PONTIANAK

Bab 1 Algoritma dan Pemrograman Tersruktur

SATUAN ACARA PERKULIAHAN MATA KULIAH PEMROGRAMAN PASCAL * (TK) KODE / SKS: KK /2 SKS

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-5 Rekursif

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

Sesi/Perkuliahan ke: VII

Algoritma,Flowchart, Konsep

Algoritma Pemrograman

Konsep Dasar Pemrograman Pascal

Sesi/Perkuliahan ke: II

Perulangan. Bentuk Proses. 1. Perulangan For positif contoh 1 : perulangan positif untuk satu statement :

Dasar Komputer & Pemrograman 2A

FUNGSI. Blok fungsi juga diawali dengan kata cadangan Begin dan di akhiri dengan kata cadangan End dan titik koma.

SOAL DAN JAWABAN UTS PEMROGRAMAN DASAR KELAS X

BAB 2 BAGAIMANA MENULISKAN PROGRAM PASCAL

Sesi/Perkuliahan ke: I

Pertemuan 4 Diagram Alur / Flowchart

Array, Record, sorting : Elektro Unud (MSU) Page 1 of 13

Modul Algoritma dan Pemograman Rismira Andriyani, S.Kom i

Perulangan Muh. Izzuddin Mahali, M.Cs. Pertemuan 3. Algoritma dan Struktur Data. PT. Elektronika FT UNY

Algoritma Pemrograman

Algoritma Pemrograman

PERKEMBANGAN PASCAL. Pascal adalah bahasa tingkat tinggi ( high level language) yang orientasinya pada segala tujuan

Pengenalan Pascal. Sejarah Singkat Pascal

Memulai Pemrograman Pascal dengan Delphi Console 1. Buka aplikasi delphi 2. Pilih File New Other Console Application

Pemrograman Dasar Pascal

Modul 1 Pengantar Bahasa Pascal

Dasar Komputer & Pemrogaman 2A

Teori Algoritma TIPE DATA

Prosedur dan Fungsi di Turbo Pascal

Pengenalan Pascal. Tujuan Pembelajaran

TPI4202 e-tp.ub.ac.id. Lecture 5

Algoritma Pemrograman

Belajar itu, Tidak harus menunggu materi dari guru Inisiatif Mencari itulah BELAJAR.

Function. Pertemuan 7 Jurusan Sistem Informasi Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Gunadarma 2015

PROSES PENJUALAN BUKU

Subprogram. Definisi

P A S C A L D A S A R

KONSEP DASAR BAHASA PASCAL

JENIS DATA SEDERHANA & INPUT/OUTPUT DATA

MODUL I DAN 2 PENGANTAR dan IDENTIFIER PASCAL

BAB V S U B R U T I N STMIK AMIKOM PURWOKERTO

Contoh soal Struktur Program Pascal (Seleksi tingkat propinsi TOKI 2004)

TIPE, NAMA, DAN NILAI

MATERI 4 PENYELEKSIAN KONDISI

SUB PROGRAM : PROSEDUR & FUNGSI. Konsep Pemrograman

Bab 1 Pengenalan Pascal 1 BAB I PENGENALAN PASCAL, TIPE-TIPE DATA PASCAL DAN STATEMEN DASAR PADA PASCAL TUJUAN PRAKTIKUM TEORI PENUNJANG

Start. Baris Program. Baris Program. Baris Program. Selesai. Contoh Program Struktur berurutan menghitung luas empat persegi panjang

Bab 2 DASAR-DASAR ALGORITMA

a. TRUE b. FALSE c. Jawaban A dan B keduanya dimungkinkan benar d. Tidak dapat ditentukan e. Tidak ada jawaban di antara A, B, C, D yang benar

BAB IV STRUKTUR PROGRAM Struktur program pada dasarnya tersusun 3 struktur program utama yaitu : a. Struktur Berurutan (Sequence Structure) b.

Contoh Prosedur tanpa parameter: uses crt; var i:byte;

ARRAY. Brigida Arie Minartiningtyas, M.Kom

Pertemuan 4 Perulangan

Komentar Program. Komentar program dapat diletakkan dimanapun di dalam program. pembatas (* dan *).

PENGANTAR LOGIKA DAN ALGORITMA DENGAN PASCAL

SOAL PASCAL A. 1. Lengkapi Source Code Dibawah ini : {* Program Menghitung dengan Operator Matematika*}

PROCEDURE DAN FUNCTION PADA ALGORITMA

Dasar Pemrograman TIP FTP UB

Algoritma Pemrograman

Catatan Kuliah PAM 282 Pemrograman Komputer II

KONSEP DASAR PEMROGRAMAN PASCAL

Chapter 3.2 : Tipe, Nama dan Nilai

Transkripsi:

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