980 likes | 1.49k Views
Procedure dan Function dalam Bahasa Pascal. Mata Kuliah Algoritma dan Pemrograman I Oleh: Anis Cherid, MTI. Universitas Mercu Buana Fakultas Teknik Industri Program Studi Teknik Informatika. Pemrograman Modular. Program yang baik dibuat secara MODULAR.
E N D
Procedure dan Function dalam Bahasa Pascal Mata Kuliah Algoritma dan Pemrograman I Oleh: Anis Cherid, MTI Universitas Mercu Buana Fakultas Teknik Industri Program Studi Teknik Informatika http://www.mercubuana.ac.id
Pemrograman Modular • Program yang baikdibuatsecara MODULAR. • Program yang dibuatsecara MODULAR artinya: program utamadibagi-bagimenjadibeberapa unit ataubeberapa subprogram yang berdirisendiri. http://www.mercubuana.ac.id
Keuntungan Pemrograman Modular • Ukuran program kecil • Mudah melakukan pemeliharaan program (program maintenance) • Code reuse • Pembagian tugas http://www.mercubuana.ac.id
Subprogram dalam Bahasa Pascal • Dalam Bahasa Pascal, subprogram terdiri dari 2 jenis, yaitu Procedure dan Function • Procedure: subprogram yang tidak mengembalikan nilai secara otomatis. • Function: subprogram yang mengembalikan sebuah nilai secara otomatis. http://www.mercubuana.ac.id
Ukuran Program Kecil (1) Program penghasil 1 buah nada pada speaker PC uses windos; var frekuensi, durasi:integer; divisor:word; h, m, s, cs : word; waktuMulai, waktuSekarang: real; begin frekuensi:= 440; durasi:= 1000; {*** awal bagian yang menghasilkan nada pada speaker ***} port[$43] := $b6; divisor := $120000 div frekuensi; port[$42] := divisor and $FF; port[$42] := divisor shr 8; port[$61] := port[$61] or 3; GetTime(h, m, s, cs); waktuMulai := h*3600 + m*60 + s + (cs/100); repeat GetTime(h,m,s,cs); waktuSekarang := h*3600 + m*60 + s + (cs/100); until waktuSekarang - waktuMulai > durasi/1000; port[$61] := port[$61] and not 3; {*** akhir bagian yang menghasilkan nada pada speaker ***} end. http://www.mercubuana.ac.id
Ukuran Program Kecil (2) uses windos; var frekuensi, durasi:integer; divisor:word; h, m, s, cs : word; waktuMulai, waktuSekarang: real; begin frekuensi:= 440; durasi:= 1000; {*** awal bagian yang menghasilkan nada pada speaker ***} port[$43] := $b6; divisor := $120000 div frekuensi; port[$42] := divisor and $FF; port[$42] := divisor shr 8; port[$61] := port[$61] or 3; GetTime(h, m, s, cs); waktuMulai := h*3600 + m*60 + s + (cs/100); repeat GetTime(h,m,s,cs); waktuSekarang := h*3600 + m*60 + s + (cs/100); until waktuSekarang - waktuMulai > durasi/1000; port[$61] := port[$61] and not 3; {*** akhir bagian yang menghasilkan nada pada speaker ***} end. Bagian yang menentukan frekuensi dan durasi nada yang akan dibunyikan (2 baris) http://www.mercubuana.ac.id
Ukuran Program Kecil (3) uses windos; var frekuensi, durasi:integer; divisor:word; h, m, s, cs : word; waktuMulai, waktuSekarang: real; begin frekuensi:= 440; durasi:= 1000; {*** awal bagian yang menghasilkan nada pada speaker ***} port[$43] := $b6; divisor := $120000 div frekuensi; port[$42] := divisor and $FF; port[$42] := divisor shr 8; port[$61] := port[$61] or 3; GetTime(h, m, s, cs); waktuMulai := h*3600 + m*60 + s + (cs/100); repeat GetTime(h,m,s,cs); waktuSekarang := h*3600 + m*60 + s + (cs/100); until waktuSekarang - waktuMulai > durasi/1000; port[$61] := port[$61] and not 3; {*** akhir bagian yang menghasilkan nada pada speaker ***} end. Bagian yang menghasilkan bunyi pada speaker PC (12 baris) http://www.mercubuana.ac.id
Ukuran Program Kecil (4) Program penghasil 2 buah nada pada speaker PC uses windos; var frekuensi, durasi:integer; divisor:word; h, m, s, cs : word; waktuMulai, waktuSekarang: real; begin frekuensi:= 440; durasi:= 1000; {*** awal bagian yang menghasilkan nada pada speaker ***} ………… ………… {*** akhir bagian yang menghasilkan nada pada speaker ***} frekuensi:= 466; durasi:= 1000; {*** awal bagian yang menghasilkan nada pada speaker ***} ………… ………… {*** akhir bagian yang menghasilkan nada pada speaker ***} end. http://www.mercubuana.ac.id
Ukuran Program Kecil (5) Bagian penghasil Nada ke-1 (14 baris) uses windos; var frekuensi, durasi:integer; divisor:word; h, m, s, cs : word; waktuMulai, waktuSekarang: real; begin frekuensi:= 440; durasi:= 1000; {*** awal bagian yang menghasilkan nada pada speaker ***} ………… ………… {*** akhir bagian yang menghasilkan nada pada speaker ***} frekuensi:= 466; durasi:= 1000; {*** awal bagian yang menghasilkan nada pada speaker ***} ………… ………… {*** akhir bagian yang menghasilkan nada pada speaker ***} end. http://www.mercubuana.ac.id
Ukuran Program Kecil (6) uses windos; var frekuensi, durasi:integer; divisor:word; h, m, s, cs : word; waktuMulai, waktuSekarang: real; begin frekuensi:= 440; durasi:= 1000; {*** awal bagian yang menghasilkan nada pada speaker ***} ………… ………… {*** akhir bagian yang menghasilkan nada pada speaker ***} frekuensi:= 466; durasi:= 1000; {*** awal bagian yang menghasilkan nada pada speaker ***} ………… ………… {*** akhir bagian yang menghasilkan nada pada speaker ***} end. Bagian penghasil Nada ke-2 (14 baris) http://www.mercubuana.ac.id
Ukuran Program Kecil (7) Program penghasil: 1 BUAH LAGU, atau 100 BUAH NADA uses windos; var frekuensi, durasi:integer; divisor:word; h, m, s, cs : word; waktuMulai, waktuSekarang: real; begin BAGIAN PENGHASIL NADA 1 BAGIAN PENGHASIL NADA 2 BAGIAN PENGHASIL NADA 3 BAGIAN PENGHASIL NADA 4 ……… ……… ……… BAGIAN PENGHASIL NADA 50 BAGIAN PENGHASIL NADA 51 ……… ……… ……… BAGIAN PENGHASIL NADA 99 BAGIAN PENGHASIL NADA 100 end. 100 nada × 14 baris = 1400 baris ??? http://www.mercubuana.ac.id
Memperkecil Ukuran Program begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program {* awal bagian nada *} ………… {*akhir bagian nada *} begin frekuensi:= 440; durasi:= 1000; frekuensi:= 466; durasi:= 1000; end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program {* awal bagian nada *} ………… {*akhir bagian nada *} begin frekuensi:= 440; durasi:= 1000; frekuensi:= 466; durasi:= 1000; end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program {* awal bagian nada *} ………… {*akhir bagian nada *} begin frekuensi:= 440; durasi:= 1000; frekuensi:= 466; durasi:= 1000; end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program {* awal bagian nada *} ………… {*akhir bagian nada *} begin frekuensi:= 440; durasi:= 1000; frekuensi:= 466; durasi:= 1000; end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program {* awal bagian nada *} ………… {* akhir bagian nada *} begin frekuensi:= 440; durasi:= 1000; frekuensi:= 466; durasi:= 1000; end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program procedure bunyi (frekuensi, durasi:integer); var ……; begin {* awal bagian nada *} ………… {*akhir bagian nada *} end; begin frekuensi:= 440; durasi:= 1000; frekuensi:= 466; durasi:= 1000; end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program procedure bunyi (frekuensi, durasi:integer); var ……; begin {* awal bagian nada *} ………… {*akhir bagian nada *} end; begin frekuensi:= 440; durasi:= 1000; frekuensi:= 466; durasi:= 1000; end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program procedure bunyi (frekuensi, durasi:integer); var ……; begin {* awal bagian nada *} ………… {*akhir bagian nada *} end; begin frekuensi:= 440; durasi:= 1000; frekuensi:= 466; durasi:= 1000; end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program procedure bunyi (frekuensi, durasi:integer); var ……; begin {* awal bagian nada *} ………… {*akhir bagian nada *} end; begin frekuensi:= 440; durasi:= 1000; frekuensi:= 466; durasi:= 1000; end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program procedure bunyi (frekuensi, durasi:integer); var ……; begin {* awal bagian nada *} ………… {*akhir bagian nada *} end; begin frekuensi:= 466; durasi:= 1000; end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program procedure bunyi (frekuensi, durasi:integer); var ……; begin {* awal bagian nada *} ………… {*akhir bagian nada *} end; begin bunyi (440, 1000); frekuensi:= 466; durasi:= 1000; end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program procedure bunyi (frekuensi, durasi:integer); var ……; begin {* awal bagian nada *} ………… {*akhir bagian nada *} end; begin bunyi (440, 1000); frekuensi:= 466; durasi:= 1000; end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program procedure bunyi (frekuensi, durasi:integer); var ……; begin {* awal bagian nada *} ………… {*akhir bagian nada *} end; begin bunyi (440, 1000); frekuensi:= 466; durasi:= 1000; end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program procedure bunyi (frekuensi, durasi:integer); var ……; begin {* awal bagian nada *} ………… {*akhir bagian nada *} end; begin bunyi (440, 1000); frekuensi:= 466; durasi:= 1000; end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program procedure bunyi (frekuensi, durasi:integer); var ……; begin {* awal bagian nada *} ………… {*akhir bagian nada *} end; begin bunyi (440, 1000); end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program procedure bunyi (frekuensi, durasi:integer); var ……; begin {* awal bagian nada *} ………… {*akhir bagian nada *} end; begin bunyi (440, 1000); bunyi (466, 1000); end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program procedure bunyi (frekuensi, durasi:integer); var ……; begin {* awal bagian nada *} ………… {*akhir bagian nada *} end; begin bunyi (440, 1000); bunyi (466, 1000); end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. http://www.mercubuana.ac.id
Memperkecil Ukuran Program procedure bunyi (frekuensi, durasi:integer); var ……; begin {* awal bagian nada *} ………… {*akhir bagian nada *} end; begin bunyi (440, 1000); bunyi (466, 1000); end. begin frekuensi:= 440; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} frekuensi:= 466; durasi:= 1000; {* awal bagian nada *} ………… {*akhir bagian nada *} end. 28 baris 14 baris http://www.mercubuana.ac.id
Ketentuan Membuat Procedure dalam Bahasa Pascal procedure Abc(); begin end; • Diletakkan sebelum program utama begin end. http://www.mercubuana.ac.id
Ketentuan Membuat Procedure dalam Bahasa Pascal uses wincrt; procedure hapusBaris; var i:integer; begin GotoXY(1, WhereY); for i:=1 to 80 do write(' '); end; begin GotoXY(1,1); Writeln('Baris Satu'); Writeln('Baris Dua'); Writeln('Baris Tiga'); GotoXY(1,1); {ke baris 1} hapusBaris; GotoXY(1,3); {ke baris 3} hapusBaris; end. • Tanpa Parameter http://www.mercubuana.ac.id
Ketentuan Membuat Procedure dalam Bahasa Pascal procedure cetakBintang(x:integer); begin while (x>0) do begin write('*'); x:=x-1; end; end; var i:integer; begin for i:=1 to 5 do begin cetakBintang(i); writeln; end; end. • Satu buah parameter masukan http://www.mercubuana.ac.id
Ketentuan Membuat Procedure dalam Bahasa Pascal • Lebih dari satu buah parameter masukan, satu jenis parameter masukan. Uses windos; procedure bunyi(frekuensi, durasi : integer); begin {--- silakan lihat contoh program di awal modul ---} end; begin bunyi(440, 1000); bunyi(466, 1000); end. http://www.mercubuana.ac.id
Ketentuan Membuat Procedure dalam Bahasa Pascal • Lebih dari satu buah parameter masukan, lebih dari satu jenis parameter masukan. procedure cetakString(s:string; posisi:integer); begin if posisi=2 then GotoXY ((80-length(s)) div 2, WhereY) else if posisi=3 then GotoXY (80-length(s), WhereY) else GotoXY (1, WhereY); writeln (s); end; begin cetakString('Cetak rata kiri', 1); cetakString('Cetak di tengah', 2); cetakString('Cetak rata kanan', 3); end. http://www.mercubuana.ac.id
Ketentuan Membuat Procedure dalam Bahasa Pascal Uses wincrt; procedure dekompDetik(x:longint; var jam, menit, detik:integer); begin jam := x div 3600; x := x mod 3600; menit := x div 60; detik := x mod 60; end; var j,m,d:integer; begin dekompDetik(86399, j, m, d); writeln('86399 detik sama ', 'dengan ',j,' jam ',m, ' menit ',d,' detik'); end. • Satu buah parameter masukan dan tiga buah parameter keluaran http://www.mercubuana.ac.id
Ketentuan Membuat Procedure dalam Bahasa Pascal • Satu buah parameter masukan/keluaran Uses wincrt; procedure lipatGanda (var x:integer); begin x := x * 2; end; var bil:integer; begin bil:=4; lipatGanda(bil); writeln(bil); end. http://www.mercubuana.ac.id
Function dalam Bahasa Pascal http://www.mercubuana.ac.id
nama function nilai yang dikembalikan Function dalam Bahasa Pascal Tipe data dari nilai yang dikembalikan double • Ketentuan Membuat Function: • Sama dengan ketentuan membuat procedure • Ditambah : • Function harus menyertakan tipe data dari nilai yang dikembalikan. • Function harus menyertakan baris instruksi yang mengembalikan nilai Baris instruksi yang mengembalikan nilai http://www.mercubuana.ac.id
Function dalam Bahasa Pascal PEMANGGILAN FUNCTION YANG BENAR: writeln (xpangkaty(2,4):2:0); writeln (xpangkaty(5+3, 2):2:0); writeln xpangkaty(xpangkaty(5,2), 2):3:0); http://www.mercubuana.ac.id
Function dalam Bahasa Pascal PEMANGGILAN FUNCTION YANG SALAH: xpangkaty (2,4); Pemanggilan function tidak boleh berupa statement yang berdiri sendiri i:= xpangkaty (8,2); Nilai yang dikembalikan function bertipe double, sehingga tidak bisa disimpan dalam variabel i yang bertipe integer writeln (xpangkaty(9)); Function xpangkaty memiliki 2 buah parameter masukan, tetapi dipanggil hanya dengan menggunakan 1 buah argumen http://www.mercubuana.ac.id
Function dalam Bahasa Pascal • Function/procedure mempermudah pemeliharaan program (program maintenance), karena: • Meskipun algoritma dalam function/procedure berubah, algoritma dalam program utama tidak perlu diubah • Syarat: • Tidak boleh mengubah jumlah dan jenis parameter function/procedure http://www.mercubuana.ac.id
Mempermudah Pemeliharaan 1 pangkat 2 = 1 2 pangkat 2 = 4 3 pangkat 2 = 9 4 pangkat 2 = 16 5 pangkat 2 = 25 1 pangkat 0 = 1 2 pangkat 0 = 2 3 pangkat 0 = 3 http://www.mercubuana.ac.id
Mempermudah Pemeliharaan 1 pangkat 2 = 1 2 pangkat 2 = 4 3 pangkat 2 = 9 4 pangkat 2 = 16 5 pangkat 2 = 25 1 pangkat 0 = 1 2 pangkat 0 = 2 3 pangkat 0 = 3 BUG !!! http://www.mercubuana.ac.id
Mempermudah Pemeliharaan http://www.mercubuana.ac.id
Mempermudah Pemeliharaan http://www.mercubuana.ac.id