Kuliah 6 Pengantar Pemrograman Prosedur Kuliah 6 Pengantar Pemrograman
PROSEDUR Prosedur adalah suatu program yang terpisah dalam blok sendiri yang berfungsi sebagai seubprogram (program bagian). Prosedur diawali dengan kata cadangan PROCEDURE di dalam bagian deklarasi prosedur. Prosedur dipanggil dan digunakan di dalam blok program lainnya dengan menyebutkan judul prosedurnya. Bentuk penulisan : PROGRAM judul-program; PROCEDURE judul-prosedur; BEGIN ... END; .... END.
Contoh : PROGRAM prosedur; USES CRT; PROCEDURE garis; BEGIN WRITELN('----------------'); END; CLRSCR; garis; WRITELN('BELAJAR PROSEDUR'); READLN; END. Hasil : ------------------------------- BELAJAR PROSEDUR
Prosedur Prosedur dalam Pascal dapat berbentuk: nama_prosedur Prosedur dalam Pascal dapat berbentuk: Prosedur yang didefinisikan dan dibuat sendiri oleh progammer Prosedur yang telah disediakan oleh Pascal (Standard Procedure) Prosedur yang dibuat sendiri oleh programmer harus dideklarasikan terlebih dahulu di deklarasi prosedur.
Subroutine Mempermudah program 2 bentuk subroutine: Procedure (user-defined statements) Function (user-defined operators) Harus ditulis dalam bagian deklarasi
Procedure Procedure digunakan untuk melaksanakan tugas tertentu Contoh prosedur standar dalam pascal: Read( ); write( ); Tanpa parameter Writeln; Dengan parameter Read(num); writeln(‘Hello’);
Deklarasi Prosedur Prosedur merupakan bagian yang terpisah dari program dan dapat diaktifkan dimanapun di dalam program. Kata Kunci “Procedure” digunakan sebagai judul dari bagian deklarasi prosedur, diikuti oleh identifier yang merupakan nama dari prosedurnya dan secara optional dapat diikuti oleh kumpulan parameter yang diakhiri dengan titik koma.
Struktur Procedure Sama seperti sebuah program Pascal! Heading part Procedure drawLine; Const maxCol = 10; Var column : integer; Begin for column := 1 to maxCol do write(‘*’); writeln; End; Declaration part Statement part
Cara kerja Prosedur Procedure Tanpa Parameter Program gambar(input, output); Var I:integer; Procedure cetakBox; Begin writeln(‘------------’); writeln(‘- -’); End; Begin { program utama } writeln(‘Halo…..’); for I:= 1 to 10 do cetakBox; writeln(‘Bye’); End. Procedure Tanpa Parameter
Contoh Lain Prosedur procedure Coba; begin WriteLn (‘Saya adalah isi dari prosedur Coba’); end; {Program Utama} Begin Coba; End.
Prosedur Program draw; Var I:integer; Procedure drawLineStar; Const maxCol = 10; Var column : integer; Begin for column := 1 to maxCol do write(‘*’); writeln; End; Procedure drawLineT; write(‘T’); Begin{Main} for I:= 1 to 10 do drawLineStar; drawLineT; End. Prosedur Program draw; Var I:integer; Procedure drawLine; Const maxCol = 10; Var column : integer; Begin for column := 1 to maxCol do write(‘*’); writeln; End; Begin {Prog utama} for I := 1 to 10 do drawLine; End.
Program draw; Var I:integer; Procedure drawLineStar; Const maxCol = 10; Var column : integer; Begin for column := 1 to maxCol do write(‘*’); writeln; End; Procedure drawLineT; write(‘T’); Begin {Main} for I:= 1 to 10 do drawLineStar; drawLineT; End. Program drawnew; Var I :integer; ch : char; Procedure drawLine; Const maxCol = 10; Var column : integer; Begin for column := 1 to maxCol do write(ch); writeln; End; Begin {Main} for I:= 1 to 10 do begin ch := ‘*’; drawLine; end; ch := ‘T’; End.
Prosedur dengan Parameter Program drawnew; Var I :integer; ch : char; Procedure drawLine; Const maxCol = 10; Var column : integer; Begin for column := 1 to maxCol do write(ch); writeln; End; Begin {Main} for I:= 1 to 10 do begin ch := ‘*’; drawLine; end; ch := ‘T’; End. Program drawAgain; Var I :integer; Procedure drawLine(ch:char); Const maxCol = 10; Var column : integer; Begin for column := 1 to maxCol do write(ch); writeln; End; Begin {Main} for I:= 1 to 10 do drawLine(‘*’); drawLine(‘T’); End. Prosedur dengan Parameter
Parameter Formal Parameter Actual Parameter Program drawAgain; Var I :integer; column : integer; Procedure drawLine(ch:char); Const maxCol = 10; Var column : integer; Begin for column := 1 to maxCol do write(ch); writeln(I); I:= 8; End; column := 20; I := 3; drawLine(‘*’); drawLine(‘T’); writlen(column, I); End. Actual Parameter
Prosedur dengan parameter tipe parameter Parameter nilai [pengiriman dgn nilai] tanpa var Nilai dikirim ke prosedur Parameter variable [pengiriman dengan acuan] dengan var Mengirim dan menerima kembali nilai
Program contoh3(input,output); Var bil: integer; Procedure baca_input(var n:integer); Begin write(‘Masukkan sebuah bilangan’); readln(n); End; Procedure Cetak_hasil(hasil: integer); writleln(‘--------------------------’); writeln(‘Hasilnya adalah ’,hasil ); writeln(‘---------------------------’); baca_input(bil); bil := bil *10; Cetak_hasil(bil); End.
Parameter Prosedur dengan pengiriman Nilai procedure Create1(A,B:integer) procedure Create2(A:integer; B:integer); procedure Create3(A:real; B:integer); Prosedur dengan pengiriman Acuan procedure Draw1(var A,B:integer) procedure Draw2(var A:integer; var B:integer); procedure Draw3(var A:real; var B:integer); Tipe Gabungan procedure DrawAgain1(var A:integer; B:integer); procedure DrawAgain2(A,B:integer; var C:char);
SCOPE RULE Program contoh3(input,output); Var bil: integer; Procedure baca_input(var n:integer); Begin write(‘Please input a number’); readln(n); End; Procedure cetak_hasil(hasil: integer); writleln(‘-----------------------’); writeln(‘Hasilnya adalah’,hasil ); writeln(‘------------------------’); read_input(bil); bil := bil *10; cetak_hasil(bil); End. SCOPE RULE 1. bil baca_input cetak_hasil 2. n 3. hasil
Scope Rule I Ch column Define the scope of the following variable: Formal Parameter Program drawAgain; Var I :integer; column : integer; Procedure drawLine(ch:char); Const maxCol = 10; Var column : integer; Begin for column := 1 to maxCol do write(ch); writeln(I); I:= 8; End; column := 20; I := 3; drawLine(‘*’); drawLine(‘T’); writlen(column, I); End. Define the scope of the following variable: I Ch column Actual Parameter
Parameter dalam Prosedur Nilai di dalam suatu modul Program Pascal sifatnya LOKAL (hanya dapat digunakan pada modul atau unit program yg bersangkutan saja, tidak dapat digunakan pada modul/unit program yg lain) Untuk bersifat GLOBAL harus dideklarasikan di luar modul atau unit program.
Prosedur Memanggil Prosedur Di dalam suatu prosedur yang dbuat sendiri dapat memanggil prosedur lainnya. Contoh Procedure A1(B1 : Integer); Begin WriteLn (‘Nilai B = ‘, B1,’ ada di prosedure A1’); End; Procedure A2(B2 : Integer); WriteLn (‘Nilai B = ‘,B2,’ ada di prosedur A2’); A1(B2); Var X : Integer; X:= 5; A2(X); End.
Prosedur Tersarang Disebut Nested Procedure Prosedur yang berada di dalam prosedur yang lainnya.
Contoh prosedur tersarang Procedure pertama; Procedure Kedua; Begin WriteLn (‘Saya adalah prosedur kedua yg ada di dalam prosedur pertama’); End; Procedure Ketiga; WriteLn (Saya juga berada di dalam prosedur pertama, saya prosedur ketiga); Procedure Pertama; WriteLn (‘Saya Prosedur Pertama’); Kedua; Ketiga; {program utama} WriteLn (‘Saya PROGRAM UTAMA’); WriteLn; Kesatu; End.
Prosedur Memanggil Dirinya Sendiri Suatu prosedur yang memanggil atau menggunakan prosedur itu juga (recursion) Contoh : Var I : Integer; Procedure Ulang; Begin WriteLn (‘Saya Belajar Pascal’); I := I +1; If I < 10 Then Ulang; End; {program utama} I := 1;
Latihan Buatlah Procedure untuk menghitung Volume Kubus (V=r3) Buatlah Procedure untuk menghitung Volume Balok (V=p.l.t ) Buatlah Procedure untuk menghitung Volume Limas (V=1/3. La. t) Buatlah Procedure untuk menghitung Volume Selinder (V= π.r2.t )
Latihan Buat program untuk menghitung gaji harian PT. XYZ dengan ketentuan: Gaji pokok karyawan Rp. 20000/jam Bila karyawan bekerja lebih dari 7 jam/hari maka kelebihannya dihitung lembur yang besarnya 1.5 dari gaji pokok Untuk karyawan yang bekerja 8 jam/hari atau lebih akan mendapat tambahan uang makan sebesar Rp. 5000 Karyawan yang bekerja 9 jam/hari atau lebih akan mendapat uang transport lembur sebesar Rp. 4000 Program ini akan terdiri dari 4 buah prosedur : pokok, lembur, makan, jasa Input : NIP, Nama, Jumlah jam kerja
Latihan Output : LAPORAN GAJI HARIAN KARYAWAN PT. XYZ LAPORAN GAJI HARIAN KARYAWAN PT. XYZ Bulan : April 2011 -------------------------------------------------------------------------- NIP Nama Gaji Pokok Lembur Uang makan Transport Lembur
TUGAS Buatlah flowchart + program dengan menggunakan prosedur tanpa parameter, prosedur by value, dan prosedur parameter campur untuk menghitung luas sebuah segitiga! Buatlah flowchart + program dengan menggunakan prosedur by reference untuk menghitung faktorial suatu bilangan N. (35%) Buatlah flowchart + program pada Pascal yang menerima masukan berupa nilai integer atau angka dan menampilkan nilai tersebut dalam kata-kata, khusus angka positif. Mis Masukan : 24 Keluaran : Dua Puluh Empat Masukan : 1986 Keluaran : Seribu Sembilan Ratus Delapan Puluh Enam