PROSEDUR
MINGGU KE: 2 TUJUAN:
Mahasiswa dapat memahami penggunaan prosedur. Mahasiswa dapat membuat prosedur. Mahasiswa dapat memahami variabel lokal dan variabel global
TEORI PENGANTAR: Prosedur adalah modul program yang mengerjakan tugas/aktivitas yang spesifik dan menghasilkan suatu efek dengan membandingkan keadaan awal (K.Awal) dan keadaaan akhir (K.Akhir). Pendefinisian Prosedur Notasi algoritmik untuk mendefinisikan prosedur adalah: procedure NamaProsedur (deklarasi parameter, jika ada) {Spesifikasi prosedur, berisi penjelasan tentang apa yang dilakukan oleh prosedur ini K.Awal: keadaan sebelum prosedur dilaksanakan. K.Akhir: keadaan setelah prosedur dilaksanakan.} DEKLARASI {semua nama yang dipakai di dalam prosedur dan hanya berlaku lokal di dalam prosedur didefinisikan di sini} ALGORITMA: {badan prosedur, berisi urutan instruksi} Contoh 1: Prosedur yang membaca panjang alas dan tinggi segitiga, menghitung luas segitiga dengan rumus luas = (alas x tinggi)/2, dan mencetak luas segitiga tersebut. procedure HitungLuasSegitiga { Menghitung luas segitiga dengan rumus Luas = (alas x tinggi)/2} {K.Awal: sembarang} {K.Akhir: luas segitiga tercetak} DEKLARASI alas : real tinggi : real luas : real ALGORITMA read (alas, tinggi) luas (alas * tinggi)/2 write (luas)
Pemrograman Modular Rini Marwati – Matematika UPI
3
Pemanggilan Prosedur Prosedur bukan program yang berdiri sendiri, jadi ia tidak dapat dieksekusi secara langsung. Prosedur diakses dengan cara memanggil namanya dari program pemanggil dengan namanya saja: NamaProsedur Terkait prosedur HitungLuasSegitiga, maka program pemanggilnya adalah sebagai beriku: PROGRAM Segitiga {Menghitung luas N buah segitiga} DEKLARASI i, N : integer procedure HitungLuasSegitiga {Menghitung luas segitiga dengan rumus L = (alas x tinggi)/2} ALGORITMA: read (N) {tentukan banyaknya segitiga} for i 1 to N do HitungLuasSegitiga endfor Nama Global, Nama Lokal, dan Lingkup Nama-nama (konstanta, peubah, tipe, dan lain) yang dideklarasikan di dalam prosedur hanya “dikenal” di dalam badan prosedur yang bersangkutan, dikatakan lingkupnya lokal. Sedangkan nama-nama (konstanta, peubah, tipe, dan lain-lain) yang dideklarasikan di dalam program utama dikatakan lingkupnya global. Berikut ini modifikasi prosedur HitungLuasSegitiga dengan mengubah peubah alas dan tinggi dari peubah lokal menjadi peubah global Contoh 2: procedure HitungLuasSegitiga { Menghitung luas segitiga dengan rumus Luas = (alas x tinggi)/2} {K.Awal: sembarang} {K.Akhir: luas segitiga tercetak} DEKLARASI luas : real ALGORITMA luas (alas * tinggi)/2 write (luas) Dan program utama menjadi sebagai berikut PROGRAM Segitiga {Menghitung luas N buah segitiga} DEKLARASI Pemrograman Modular Rini Marwati – Matematika UPI
3
i, N : integer alas, tinggi : real procedure HitungLuasSegitiga {Menghitung luas segitiga dengan rumus L = (alas x tinggi)/2} ALGORITMA: read (N) {tentukan banyaknya segitiga} for i 1 to N do read (alas, tinggi) HitungLuasSegitiga endfor Perbandingan Contoh 1 dan Contoh 2 Contoh 1: Variabel lokal procedure HitungLuasSegitiga { Menghitung luas segitiga dengan rumus Luas = (alas x tinggi)/2} {K.Awal: sembarang} {K.Akhir: luas segitiga tercetak} DEKLARASI alas : real tinggi : real luas : real ALGORITMA read (alas, tinggi) luas (alas * tinggi)/2 write (luas) PROGRAM Segitiga {Menghitung luas N buah segitiga} DEKLARASI i, N : integer procedure HitungLuasSegitiga {Menghitung luas segitiga dengan rumus L = (alas x tinggi)/2} ALGORITMA: read (N) {tentukan banyaknya segitiga} for i 1 to N do HitungLuasSegitiga endfor
Contoh 2: Variabel global procedure HitungLuasSegitiga { Menghitung luas segitiga dengan rumus Luas = (alas x tinggi)/2} {K.Awal: sembarang} {K.Akhir: luas segitiga tercetak} DEKLARASI luas : real ALGORITMA luas (alas * tinggi)/2 write (luas)
PROGRAM Segitiga {Menghitung luas N buah segitiga} DEKLARASI i, N : integer alas, tinggi : real procedure HitungLuasSegitiga {Menghitung luas segitiga dengan rumus L = (alas x tinggi)/2} ALGORITMA: read (N) {tentukan banyaknya segitiga} for i 1 to N do read (alas, tinggi) HitungLuasSegitiga endfor
Apakah Menggunakan Peubah Global atau Peubah Lokal
Pemrograman Modular Rini Marwati – Matematika UPI
3
Bila suatu peubah digunakan di seluruh bagian program (termasuk dalam prosedur), maka peubah tersebut harus dideklarasikan global. Tetapi bila peubah tersebut hanya digunakan di dalam prosedur saja, maka nama peubah “sebaiknya” dideklarasikan sebagai peubah lokal.
Usahakan menggunakan peubah global sesedikit mungkin.
Prosedur yang baik adalah prosedur yang independen dari program pemanggilnya.
PRAKTIKUM: Program Delphi untuk Contoh 1 & Contoh 2: FORM
KOMPONEN
CODING:
Nama Edit1 Edit2 Button1 Edit3
Contoh 1 (Tanpa looping)
Tipe Edit Edit Button Edit
Properti Text: Blank Text: Blank Caption: Proses Text: Blank Contoh 2 (Tanpa looping)
unit Unit1;
unit Unit1;
interface
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Edit1: TEdit; Edit2: TEdit; Button1: TButton;
type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Edit1: TEdit; Edit2: TEdit; Button1: TButton;
Pemrograman Modular Rini Marwati – Matematika UPI
3
Edit3: TEdit; Label3: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
Edit3: TEdit; Label3: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
var Form1: TForm1;
implementation
implementation
{$R *.dfm}
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); procedure MenghitungLuasSegitiga; var alas,tinggi:integer; luas: real; begin alas:=StrToInt(Edit1.Text); tinggi:=StrToInt(Edit2.Text); luas:=(alas*tinggi)/2; Edit3.Text:=FloatToStr(luas); end; begin MenghitungLuasSegitiga; end;
procedure TForm1.Button1Click(Sender: TObject); var alas,tinggi:integer; luas:real; procedure MenghitungLuasSegitiga; begin luas:=(alas*tinggi)/2; end; begin alas:=StrToInt(Edit1.Text); tinggi:=StrToInt(Edit2.Text); MenghitungLuasSegitiga; Edit3.Text:=FloatToStr(luas); end;
end.
end.
TUGAS: 1. Buat algoritma dengan prosedure beserta parameter lokal untuk menghitung luas lingkaran. Buat juga program Delphinya. 2. Buat algoritma dengan prosedure beserta parameter global untuk menghitung luas lingkaran. Buat juga program Delphinya.
Pemrograman Modular Rini Marwati – Matematika UPI
3