You are on page 1of 10

9

SUB PROGRAM(PROSEDUR)

9.1. Konsep Dasar Sub Program

Salah satu metode perancangan program yang baik adalah menggunakan konsep modular atau sering disebut dengan pemrograman modular. Dengan metode ini suatu masalah dipecah menjadi beberapa masalah yang lebih kecil (ke dalam modul-modul). Dengan membagi masalah menjadi beberapa modul, maka masalah tersebut akan menjadi lebih sederhana, sehingga program dapat lebih mudah disusun dan dipahami. Dalam bahasa Pascal sub program terbagi dua jenis yaitu prosedur dan fungsi. Manfaat lain dari pemrograman modular adalah software reusabilty. Subprogram yang dibuat satu kali diharapkan dapat digunakan oleh program lain, sehingga penulisan program (proses pengkodean) lebih efektif.

Keuntungan menggunakan modul: 1. Rancangan top-down dengan pendekatan divide-and-conquer, program besar dapat dibagi menjadi modul-modul yang lebih kecil; 2. Dapat dikerjakan oleh beberapa orang dengan koordinasi yang lebih mudah; 3. Mencari kesalahan relatif lebih mudah karena alur logika lebih jelas, dan kesalahan dapat dilokalisasi dalam satu modul; 4. Modifikasi dapat dilakukan tanpa mengganggu program secara keseluruhan; 5. Mempermudah dokumentasi.

Sifat-sifat modul yang baik adalah: Fan-in yang tinggi: makin sering suatu modul dipanggil oleh pengguna makin tinggi nilai fanin. Fan-out yang rendah: makin sedikit (spesifik) tugas yang dilakukan oleh suatu modul, makin rendah nilai fen-out. Self-contained: kemampuan memenuhi kebutuhannya sendiri.

9.2. Prosedur

Dasar pemrograman/ Modul_09_SubProgram(Prosedur)

Prosedur adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai sub program. Prosedur diawali dengan kata Procedure didalam bagian deklarasi prosedur. Prosedur dipanggil dan digunakan didalam blok program yang lainnya dengan menyebutkan judul prosedurnya. Bentuk umum penulisan prosedur dalam sebuah program:

Program judul_program;

Procedure judul_procedure; Begin .instruksi end;

Begin

end.

Prosedur memiliki struktur yang sama dengan program, yaitu : procedure Name; const (* Constants *) var (* Variables *) begin (* Statements *) end;

Perhatikan pada bagian akhir prosedur, terlihat setelah END tidak menggunakan titik, tapi tanda titik koma. Ini menandakan bahwa bagian tersebut bukan akhir suatu program. Untuk memanggil program, dapat dilakukan dengan cara menuliskan nama porsedur : Nama_procedure;

9.3. Parameter dalam Prosedur

Dasar pemrograman/ Modul_09_SubProgram(Prosedur)

Nilai didalam suatu program Pascal sifatnya lokal, artinya hanya dapat digunakan pada modul atau unit program yang bersangkutan saja, tidak dapat digunakan pada modul atau unit program yag lainnya. Perhatikan contoh dibawah ini :

Program 9.1
Procedure Tanya_hitung1; Var X, Y : Real; Begin Write (Nilai X ? ); Readln(X) Y := X * X; End; Begin Tanya_hitung1; Writeln (Nilai Y = , Y:6:2) End.

Program 9.2
Procedure Tanya_hitung2; Var X, Y : Real; Begin Write (Nilai X ? ); Readln(X) Y := X * X; Writeln (Nilai Y = , Y:6:2) End; Begin Tanya_hitung2; End.

Program 9.1 adalah salah, karena modul utama menggunakan variabel lokal suatu prosedur. Bandingkan dengan program 9.2. Jika program 9.2 dijalankan maka hasil program adalah sebagai berikut: Nilai x? 3.0 Nilai Y= 9.00

Supaya nilai-nilai variabel dapat digunakan di modul lainnya yang membutuhkannya, maka dapat dilakukan dengan beberapa cara, yaitu :

1. Dibuat bersifat global Supaya suatu nilai dapat bersifat global, maka harus dideklarasikan diatas modul yang menggunakannya Contoh :

Dasar pemrograman/ Modul_09_SubProgram(Prosedur)

Var A, B : Integer; Procedure Satu; Begin Readln(A); Readln(B); End; Procedure Dua; Begin B:= A+1 End Begin Satu; Writeln (A); Dua Writeln (B); End.

Pada contoh diatas, variabel A dan B bersifat global untuk semua modul yaitu untuk prosedur SATU dan DUA, sehingga dapat digunakan untuk semua modul itu.

2. Dikirimkan sebagai parameter ke modul yang membutuhkannya. Parameter yang dikirimkan dari modul utama ke modul prosedur disebut dengan parameter nyata (actual prameter) dan parameter yang ada dan dituliskan pada judul prosedur disebut dengan parameter formal (formal parameter). Proses pengiriman data lewat parameter nyata ke parameter formal disebut dengan passing parameter. Parameter nyata dan parameter formal harus dengan tipe yang sama. Pada bahasa Pascal pengiriman parameter dapat dikirimkan secara nilai (by Value) atau secara acuan (by Reference).

Sintak penulisan prosedur dengan parameternya adalah : procedure Name (formal_parameter_list);

Parameter list terdiri dari sekumpulan parameter yang dipisahkan dengan tanda titik dua. param_group_1; param_group_2; ... ; param_group_n

Setiap parameter mempunyai bentuk identifier_1, identifier_2, ... , identifier_n : data_type

Dasar pemrograman/ Modul_09_SubProgram(Prosedur)

Perhatikan contoh dibawah ini : procedure Name (a, b : integer; c, d : real); begin a := 10; b := 2; writeln (a, b, c, d) end;

Asumsikan prosedur diatas dipanggil di program utama alpha := 30; Name (alpha, 3, 4, 5);

Pada saat kembali ke program utama, berapakah nilai variabel alpha? Apakah bernilai 30 atau 10? Untuk menjawab pertanyaan diatas, maka perlu diketahui cara pengiriman parameternya apakah secara nilai (by value) atau secara acuan (by reference).

9.4. Pengiriman Parameter secara Nilai (by value)

Bila parameter dikirim secara nilai , parameter formal di prosedur akan berisi nilai yang akan dikirimkan yang kemudian bersifat lokal di prosedur. Bila nilai parameter formal di prosedur tersebut berubah, tidak akan mempengaruhi nilai parameter nyata (nilai parameter nyata tetap, tidak berubah). Pengiriman secara nilai ini merupakan pengiriman searah, yaitu dari parameter nyata ke parameter formal, yang tidak dikirim balik dari parameter formal ke parameter nyata. Pengiriman parameter secara nilai ini juga dapat dikatakan dengan menyalin (copy) nilai variabel dan nilai itu diberikan ke variabel parameter. Prosedur bekerja pada salinan variabel, sehingga tidak mengubah parameter aktualnya.

Contoh:

Dasar pemrograman/ Modul_09_SubProgram(Prosedur)

Procedure tukar(A, B: integer); Var C: integer; Begin C:= A; A:= B; B:= C; Writeln (Nilai pertama = ,A); Writeln(Nilai Kedua = , B); End;

Var x,y : integer; Begin x:= 10; y:= 15; tukar(x,y); writeln(x = , x, y = ,y); end.

Hasil program: Nilai pertama = 15 Nilai Kedua = 10 x= 10 y=15

Berdasarkan program di atas nilai dari x diberikan kepada A dan nilai dari y diberikan kepada B. Nilai yang dipertukarkan adalah nilai A dan B yang terjadi di dalam prosedur tukar, sedangkan nilai x dan y yang berada di program utama tetap.

9.5. Pengiriman Parameter secara Acuan (byreference)


Bila pengiriman parameter secara acuan, maka perubahan-perubahan yang terjadi pada nilai parameter formal di prosedur akan memperngaruhi nilai parameter nyata. Parameterparameter ini disebut dengan variabel parameter serta dideklarasikan di deklarasi prosedur dengan menggunakan kata cadangan Var, Berikut format penulisannya:

Dasar pemrograman/ Modul_09_SubProgram(Prosedur)

Procedure nama_procedure (VAR identifier1, identifier2, ., identifier3: tipe data)

Identifier konstanta dan literal tidak dapat digunakan dalam parameter, karena kedua identifier tersebut tidak dapat berubah nilainya. Contoh: Procedure tukar_acuan(var A, B: integer); Var C: integer; Begin C:= A; A:= B; B:= C; Writeln (Nilai pertama = ,A); Writeln(Nilai Kedua = , B); End;

Var x,y : integer; Begin x:= 10; y:= 15; tukar_acuan(x,y); writeln(x = , x, y = ,y); end.

Hasil program: Nilai pertama = 15 Nilai Kedua = 10 x= 15 y=10

Berdasarkan program di atas terlihat bahwa pengiriman parameter secara acuan merupakan pengiriman dua arah, bolak-balik, sehingga perubahan nilai di parameter formal akan mempengaruhi nilai pada parameter nyata juga. Pada contoh di atas nilai dari variabel A dan B

Dasar pemrograman/ Modul_09_SubProgram(Prosedur)

yang telah dipertukarkan mempengaruhi nilai x dan y, sehingga nilai x dan y menjadi tertukar pula.

9.6. Tipe Parameter Formal


Tipe parameter formal yang dapat digunakan adalah berupa variabel atau konstanta. Tipe data sederhana , seperti integer, byte, real, char dan Boolean dapat langsung dipergunakan. Sedangkan tipe data kompleks seperti string, array dan record tidak dapat langsung dipergunakan tetapi harus dideklarasikan terlebih dahulu menggunakan Type.

Contoh untuk tipe data array:

Type Nilai= array[1..100] of integer; Procedure Arrayku(a: Nilai);

Contoh untuk tipe data string:

Type Kata=string[25]; Procedure Panjang_Kata(Nama: Kata);

Untuk pengiriman parameter string secara nilai, panjang parameter formal dan parameter nyata boleh tidak sama. Akan tetapi untuk untuk pengiriman parameter secara acuan panjang panjang string harus sama.

Latihan dan Pembahasan


1. Buatlah program untuk mencari nilai faktorial dan pangkat tiga dari sebuah nilai yang berupa bilangan bulat yang dimasukkan oleh pengguna. Program tersebut terdiri dari prosedur untuk mencari faktorial dan prosedur untuk mencari nilai pangkat tiga. Jawab:

Dasar pemrograman/ Modul_09_SubProgram(Prosedur)

Procedure Faktorial( n: Integer); Var i, Hasil: integer; Begin Hasil:=1; If( n<=0) then Exit; For i:= 2 to n do Hasil:= hasil * i; Writeln(n, Faktorial = , Hasil); End;

Procedure Pangkat_Tiga(A: integer); Var Hasil:integer; Begin Hasil:= A*A*A; Writeln(A, Pangkat Tiga = , Hasil); End;

Var X: integer; Begin Write(Masukkan Bilangan bulat : ); Readln(X); Faktorial(X); Pangkat_Tiga(X); End.

Tugas Mandiri:

Buatlah program Lingkaran, dimana program memiliki prosedur untuk mencari luas lingkaran, prosedur menghitung keliling lingkaran. Pada saat prosedur tersebut dipanggil akan langsung menampilkan nilai dari masing-masing prosedur.

===========

Dasar pemrograman/ Modul_09_SubProgram(Prosedur)

Referensi:

Jogiyanto, Turbo Pascal, Andi Offset, Yogyakarta, 1993

Thompson Susabda Ngoen, Pengantar Algoritma dengan Bahasa C, Salemba Teknika, Jakarta, 2004

Dasar pemrograman/ Modul_09_SubProgram(Prosedur)

10

You might also like