SUBRUTIN
Pendahuluan Ada 2 macam subrutin yaitu prosedur dan fungsi. Mengapa memerlukan subrutin? Karena dalam program yang besar, akan lebih baik jika tugas tertentu dilakukan subrutin tertentu agar program menjadi lebih mudah dibaca. Dan juga pelacakan kesalahan program juga dapat dilacak.
Prosedur Bentuk umum: prosedur nama_prosedur ( parameter1; parameter2; ...) begin (pernyataan-pernyataan) end;
Fungsi Bentuk umum: function nama_fungsi ( parameter1; parameter2; ..); tipe kembalian begin {pernyataan-pernyataan} end;
Penjelasan Nama_prosedur dan nama_fungsi nama yang diberikan ke prosedur atau fungsi. Tipe kembalian adalah tipe dari data nilai yang dikembalikan oleh fungsi, Parameter1, parameter2, ... Merupakan informasi yang diberikan ke prosedur atau fungsi
Contoh prosedur dengan nama Prosedurku Procedure Prosedurku; begin {pernyataan-pernyataan} end;
Contoh fungsi dengan nama Fungsiku Function Fungsiku : integer; begin {pernyataan-pernyataan} end;
Contoh Subrutin dengan parameter procedure Coba (S : string); begin {pernyataan-pernyataan} end; Dalam memberikan parameter harus ditentukan tipe parameternya
Parameter untuk prosedur atau fungsi Procedure CobaLagi ( S : string; X : integer;); begin {pernyataan-pernyataan} end; Jika memerlukan beberapa parameter, masing-masing parameter dipisahkan dengan tanda titik koma
Untuk parameter yang sama -1 Function LagilagiCoba ( i, j : longint) : longint; begin {pernyataan-pernyataan} end; Karena memiliki 2 parameter yang sama yaitu i dan j bertipe longint , fungsi diatas memiliki tipe kembalian longint. Untuk mengembalikan nilai pada suatu fungsi, berikan nilai variabel yang bernama sama dengan nama fungsinya
Untuk parameter yang sama -2 Function LagilagiCoba ( i, j : longint) : longint; begin LagilagiCoba := i + j ; end;
Ketentuan penting Pemanggilan sebuah prosedur atau fungsi dilakukan dengan menyebut namanya Prosedurku; Bila terdapat parameter, letakkan parameter dalam tanda kurung Coba (‘pascal’); Memanggil prosedur Coba dengan parameter Pascal CobaLagi (‘Pascal’, 100); Untuk menangkap nilai kembalian dari sebuah fungsi harus menyediakan variabel x := LagilagiCoba (2,5);
Untuk menambahkan parameter dengan referensi, tambahkan kata kunci var didepan nama parameter. procedure Coba(var i,j: longint); begin i := 100; j := 200; end;
Penjelasan Nilai parameter i dan j masing-masing akan diubah menjadi 100 dan 200. Bila menghilangkan kata kunci var, nilai parameter i dan j tidak akan berubah setelah prosedur Coba dipanggil. Dengan kata lain, parameter i dan j hanya akan bernilai 100 dan 200 pada prosedur Coba saja
Sebuah prosedur atau fungsi dapat mendeklarasikan tipe, variabel atau konstanta lokal. var Global : integer; procedure Coba; begin Lokal : integer; end;
Contoh Soal -1 Tulislah fungsi untuk memangkatkan suatu bilangan real dengan bilangan real lainnya. Fungsi ini menerima dua parameter bertipe bilangan real dan mengembalikan bilangan real hasil pemangkatan dua parameter.
Contoh fungsi untuk melakukan fungsi pemangkatan else begin Pangkat := 0.0; writeln(‘Tidak dapat disele-saikan’); exit; end; end else if (x > 0.0 ) then z := exp (y * ln (x)); z := 0.0; Pangkat := z; function Pangkat (x,y : real) : real; var z : real; begin if (x < 0.0 ) then if ( Round (y) = y ) then if ( Round (y) mod 2 = 0) then z := exp (y * ln (-x)); else z := -exp (y * ln (-x)); end;
Contoh penggunaan fungsi pemangkatan var x,y : real; begin write (‘ Masukkan x : ‘); readln (x); write (‘Masukkan y : ‘); readln (y); writeln(‘ x ^ y : ‘ , Pangkat ( x , y ): 1:3); end;
Keluaran program Masukkan x : 3 Masukkan y : 4 x ^ y : 81.000 Masukkan x : -5 Masukkan y : -2 x ^ y : 0.040
Tulislah sebuah prosedur untuk menukar dua nilai variabel Tulislah sebuah prosedur untuk menukar dua nilai variabel. Sebagai contoh jika terdapat variabel a dan b, setelah pemanggilan prosedur, nilai a sama dengan b dan nilai b sama dengan a. Prosedur ini menerima parameter bertipe bilangan real: Temp b B a A temp
Contoh soal 2 Procedure Tukar (var a,b : real); var temp : real; begin temp := b; b:= a; a:= temp; end;
var a,b : integer; begin write ( ‘Masukkan a = ‘); readln(a); write ( ‘masukkan b=‘); readln(b); Tukar (a,b); writeln( ‘ a = ‘, a:1:3); writeln( ‘ b= ‘, b:1:3); end;
Masukkan a : 5 Masukkan b : 7 A = 7000 B=5000