• Tidak ada hasil yang ditemukan

Pertemuan 3 Prosedur dan Fungsi

N/A
N/A
Protected

Academic year: 2021

Membagikan "Pertemuan 3 Prosedur dan Fungsi"

Copied!
11
0
0

Teks penuh

(1)

| Pertemuan 3 42

Pertemuan 3

Prosedur dan Fungsi

Objektif:

1. Memahami penggunaan prosedur dan fungsi

2. Mengerti pengiriman parameter dalam prosedur dan fungsi

(2)

| Prosedur dan Fungsi 43

P3.1 Teori

Prosedur

Prosedur adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram (program bagian). Procedure diawali dengan kata cadangan Procedure di dalam bagian deklarasi prosedur. Prosedur banyak digunakan pada program yang terstruktur, karena:

1. Merupakan penerapan konsep program modular, yaitu memecah – mecah program yang rumit menjadi program – program bagian yang lebih sederhana dalam bentuk prosedur – prosedur.

2. Untuk hal – hal yang sering dilakukan berulang – ulang, cukup dituliskan sekali saja dalam prosedur dan dapat dipanggil atau dipergunakan sewaktu – waktu bila diperlukan.

Struktur prosedur terdiri dari 3 bagian yaitu : o Judul

o Deklarasi

o Deskripsi/Badan Prosedur

Ketika NAMA_PROSEDUR dipanggil, kendali program berpindah secara otomatis ke prosedur tersebut. Instruksi di dalam badan prosedur dilaksanakan. Setelah semua instruksi selesai dilaksanakan, kendali program berpindah secara otomatis ke instruksi sesudah pemanggilan prosedur.

Kebanyakan program memerlukan pertukaran informasi antara prosedur (atau fungsi) dan titik dimana ia dipanggil. Penggunaan parameter menawarkan mekanisme penukaran

procedure NAMA_PROSEDUR;

{ Spesifikasi Prosedur, menyebutkan nama, parameter, kondisi awal, kondisi akhir dan proses }

{ Kondisi awal : keadaan sebelum prosedur dilaksanakan } { Kondisi akhir : keadaan setelah prosedur dilaksanakan } (* DEKLARASI *)

{ Semua nama yang dipakai prosedur didefinisikan di sini dan hanya berlaku lokal }

(* DESKRIPSI *) begin

{ badan prosedur, berisi semua langkah atau aksi } end;

(3)

| Prosedur dan Fungsi 44 informasi tersebut. Tiap item data ditransfer antara parameter aktual dan parameter formal yang bersesuaian. Parameter aktual adalah parameter yang disertakan ketika pemanggilan, sedangkan paramater formal adalah parameter yang dideklarasikan di bagian header prosedur itu sendiri. Ketika prosedur dipanggil, parameter aktual menggantikan parameter formal. Berdasarkan maksud penggunaannya, terdapat tiga jenis parameter formal yang disertakan di dalam prosedur, yaitu:

§ Prosedur dengan Parameter Masukan / Nilai

Parameter masukan adalah parameter yang nilainya berlaku sebagai masukan untuk prosedur. Pada parameter masukan, nilai parameter aktual diisikan ke dalam parameter formal yang bersesuaian. Nilai ini digunakan di dalam badan prosedur yang bersangkutan. Nilai yang dinyatakan oleh parameter masukan tidak dapat dikirim dalam arah sebaliknya. Itulah alasan mengapa parameter jenis ini diacu sebagai parameter masukan. Perubahan nilai parameter di dalam badan prosedur tidak mengubah nilai parameter aktual. Karena yang dipentingkan adalah nilainya, maka nama parameter aktual boleh berbeda dengan nama parameter formal yang bersesuaian.

Struktur Prosedur dengan parameter masukan sebagai berikut :

§ Prosedur dengan Parameter Acuan

Parameter acuan adalah parameter yang berfungsi sebagai masukan sekaligus keluaran bagi prosedur tersebut. Bila prosedur yang mengandung parameter acuan dipanggil, nama parameter aktual di dalam program pemanggil menggantikan nama parameter formal yang bersesuaian di dalam prosedur. Jadi, nama parameter aktual akan digunakan selama pelaksanaan prosedur. Akibat penggunaan parameter masukan/keluaran, bila parameter actual

procedure NAMA_PROSEDUR(parameter : tipe_param);

{ Spesifikasi Prosedur, menyebutkan nama, parameter, kondisi awal, kondisi akhir dan proses }

{ Kondisi awal : keadaan sebelum prosedur dilaksanakan } { Kondisi akhir : keadaan setelah prosedur dilaksanakan } (* DEKLARASI *)

{ Semua nama yang dipakai prosedur didefinisikan di sini dan hanya berlaku lokal }

(* DESKRIPSI *) begin

{ badan prosedur, berisi semua langkah atau aksi } end;

(4)

| Prosedur dan Fungsi 45 diubah nilainya di dalam badan prosedur, maka sesudah pemanggilan prosedur nilai parameter aktual di titik pemanggilan juga berubah. Ini berbeda dengan parameter masukan, yang dalam hal ini meskipun nilai parameter aktual di dalam badan prosedur diubah, nilai parameter aktual tersebut tidak berubah di titik pemanggilan.

Struktur Prosedur dengan parameter masukan sebagai berikut :

§ Prosedur memanggil Prosedeur yang lain

Di dalam suatu prosedur dapat memanggil prosedur yang lainnya, untuk contoh prosedur yang memanggil prosedur lain dapat dilihat di contoh kasus.

§ Prosedur Tersarang

Prosedur tersarang (nested procedure) adalah prosedur yang berada di dalam prosedur yang lainnya. Struktur procedure tersarang sebagai berikut :

§ Prosedur Rekursif

Di dalam pascal diperkenankan memanggil procedurenya sendiri. istilah ini disebut sebagai recursion. Dalam penggunaanya membutuhkan memory yang besar. Karena pada setiap pemanggilan sejumlah memory tambahan dibutuhkan. Contoh program prosedur rekursif dapat dilihat di contoh kasus.

procedure NAMA_PROSEDUR(var parameter : tipe_param);

{ Spesifikasi Prosedur, menyebutkan nama, parameter, kondisi awal, kondisi akhir dan proses }

{ Kondisi awal : keadaan sebelum prosedur dilaksanakan } { Kondisi akhir : keadaan setelah prosedur dilaksanakan } (* DEKLARASI *)

{ Semua nama yang dipakai prosedur didefinisikan di sini dan hanya berlaku lokal }

(* DESKRIPSI *) begin

{ badan prosedur, berisi semua langkah atau aksi } end; Program Procedure Procedure Begin End; Begin End; Begin; End;

(5)

| Prosedur dan Fungsi 46 Function

Blok fungsi hamper sama dengan blok prosedur, hanya fungsi harus dideklarasikan dengan tipenya. Tipe deklarasi ini menunjukan tipe hasil dari fungsi. Tipe tersebut ditulis pada akhir deklarasi fungsi yang didahului dengan titik koma, sebagai berikut :

Function identifier( daftar-parameter): type; Contoh :

Function factorial (var fak,hasil: integer) : integer;

§ Function dengan parameter nilai

Parameter dalam function dapat dikirimkan secara nilai atau secara acuan. Penulisan judul function yang menggunakan parameter secara Nilai adalah :

Function besar(a,b : real) : real;

§ Function dengan parameter acuan

Penulisan judul function dengan menggunakan parameter secara acuan adalah sama dengan procedure yaitu ditambah Var pada deklarasi parameter. Dengan demikian nilai parameter acuan ini dapat digunakan sebagai hasil balik.

Sintaks :

Function jumlah(var a,b : integer) : integer; § Function tanpa parameter

Suatu function tanpa parameter berarti nilai balik yang akan dihasilkan merupakan nilai yang sudah pasti. Jika pada function dengan parameter, parameternya digunakan untuk input pada function dan function akan memberikan hasil balik sesuai dengan parameter yang diberikan sehingga bisa diatur dari program pemanggil. Sedang pada function tanpa parameter hasil dari function tidak dapat diatur. Sehingga function tanpa parameter jarang digunakan.

§ Function Rekursi

Rekursi adalah dimana suatu function memanggil dirinya sendiri. Proses dapat dilihat pada contoh berikut. Dimana fungsi faktor dipanggil oleh dirinya sendiri.

(6)

| Prosedur dan Fungsi 47

P3.2 Contoh Kasus

Penggunaan Prosedur

Penggunaan Prosedur dengan parameter masukan / nilai

Penggunaan Prosedur dengan parameter acuan

Prosedur memanggil prosedur yang lain

Program garis Procedure garis ; Begin Writeln(‘---‘); End; Begin; garis; Writeln(‘pascal’); garis; End; Program pengiriman_parameter_secara_nilai; procedure kali(a,b : integer); var hasil : integer begin hasil :=a*b; writeln('hasil =',hasil:6); end; var bil1,bil2 : integer; begin write('bilangan 1 =');readln(bil1); write('bilangan 2 =');readln(bil2); kali(bil1,bil2); readln; end.

program pengiriman_parameter_secara acuan; uses crt;

procedure kali(var a,b,c : integer); begin c:=a*b; end; var x,y,z : integer; begin write('nilai x=');readln(x); write('nilai y=');readln(y);

kali(x,y,z); {mengirimkan parameter secara acuan} writeln('Nilai z =',z:5);

(7)

| Prosedur dan Fungsi 48

program procedure_memanggil_procedure_yang_lain; uses crt;

procedure satu(a1: integer); begin

writeln(' nilai a =',a1:2,' ada diprocedure satu'); end;

procedure dua(a2: integer); begin

writeln(' nilai a =',a2:2,' ada diprocedure dua'); satu(a2);

end;

procedure tiga(a3: integer); begin

writeln(' nilai a =',a3:2,' ada diprocedure tiga'); dua(a3);

end;

procedure empat(a4: integer); begin

writeln(' nilai a =',a4:2,' ada diprocedure empat'); tiga(a4) end; {modul Utama} var a : integer; begin clrscr; write('nilai a=');readln(a); empat(a); readln; end.

(8)

| Prosedur dan Fungsi 49 Prosedur tersarang

Prosedur rekursif

program contoh_procedure_tersarang; uses crt;

procedure satu; {deklarasi procedure satu} procedure dua;

begin {awal procedure dua} writeln('procedure dua ada di procedure satu'); end; {akhir procedure dua} procedure tiga;

begin {awal procedure tiga} writeln('procedure tiga ada di procedure satu'); end; {akhir procedure tiga} begin {awal procedure satu} writeln(' procedure satu');

dua; {memanggil procedure dua} tiga; {memanggil procedure tiga} end; {akhir procedure satu} {modul utama}

begin clrscr;

writeln(' modul utama');

satu; {memanggil procedure satu} readln; end. program procedure_memanggil_dirinya_sendiri; uses crt; var I : integer; procedure rekursi; begin

writeln('pemangilan procedure ke-',i:5); i:=i+1; if i < 5 then rekursi; end; {modul utama} begin clrscr; i:=1; rekursi; readln; end.

(9)

| Prosedur dan Fungsi 50

Function dengan parameter nilai

Function dengan parameter acuan

program penggunaan_parameter_nilai; uses crt;

function besar(a,b :real) : real; begin if a>b then besar:=a else besar:=b; end; {modul utama} var nil1,nil2 : real; begin write('bilangan 1=');readln(nil1); write('bilangan 2=');readln(nil2);

writeln('bilangan terbesar =',besar(nil1,nil2):6:2); readln;

end.

program pengiriman_parameter_secara_acuan;

function kali(var bil1,bil2,jumlah : integer) : integer; begin kali:=bil1*bil2; jumlah:=bil1+bil2; end; var x,y,z : integer; begin write('bilangan 1=');readln(x); write('bilangan 2=');readln(y); writeln(x:3,'*',y:3,' = ',kali(x,y,z):5); writeln(x:3,'+',y:3,' = ',z); readln; end.

(10)

| Prosedur dan Fungsi 51

Function tanpa parameter

Function Rekursif

function garis : string; begin garis:='---'; end; {modul utama} begin writeln(garis); writeln('pascal'); writeln(garis); readln; end. program function_memanggil_funnction_yg_lain; uses crt;

function faktor(bilangan : integer) : real; begin if bilangan=0 then faktor:=1 else faktor:=faktor(bilangan-1)*bilangan; end; var n : integer; begin

write('berapa faktorial =');readln(n); writeln(N:5,' faktorial =',faktor(n):9:0); readln;

(11)

| Prosedur dan Fungsi 52

P3.3 Latihan

Kerjakan tugas-tugas di bawah ini sebelum praktikum dimulai.

1. Prosedur dan Fungsi merupakan pemrograman modular. Apakah perbedaan antara keduanya? Kapankah suatu fungsi dibuat dan digunakan?

2. Buatlah algoritma untuk membuat bentuk belah ketupat dari deretan angka berdasarkan batas nilai yang dimasukkan melalui piranti masukan dengan menggunakan Prosedur!

Contoh:

Masukkan batas nilai: 4

Hasil belah ketupat deretan angka: 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 2 1 1 2 1 1

P3.4 Daftar Pustaka

1. Ifada N, Diktat Mata Kuliah Algoritma Pemrograman, Bangkalan: Jurusan Teknik Informatika Universitas Trunojoyo, 2005.

2. Munir R, Algoritma dan Pemrograman dengan Pascal dan C edisi Kedua, Bandung: Informatika, 2003.

Referensi

Dokumen terkait

Pengertian  parameter  formal  dan  actual  pada  function  tidak  berbeda  dengan 

Bila prosedur menghasilkan satu atau lebih nilai yang akan digunakan oleh program pemanggil, maka nilai keluaran ditampung di dalam parameter keluaran. Bila prosedur dengan

Dalam penerapannya, fungsi hanya menggunakan parameter masukan, sementara untuk fungsi yang tidak menghasilkan nilai (prosedur) dapat menggunakan kedua tipe

Bila prosedur menghasilkan satu atau lebih nilai yang akan digunakan oleh program pemanggil, maka nilai keluaran ditampung di dalam

• Bila prosedur yang mengandung parameter keluaran dipanggil, nama parameter aktual di dalam program pemanggil menggantikan nama parameter formal yang bersesuaian di dalam

– Tiap parameter aktual harus diekspresikan dalam cara yang sesuai dengan parameter formal yang bersesuaian, bergantung jenis parameter formal yang digunakan..

 Bila prosedur yang mengandung parameter keluaran dipanggil, nama parameter aktual di dalam program dipanggil, nama parameter aktual di dalam program pemanggil menggantikan

tipe data integer tidak dapat di masukan karakter huruf dan juga tidak bisa di masukan nilai bilangan pecahan jika bilangan pecahan di masukan maka akan terpotong hanya bilangan yang