- PERTEMUAN 7 – SUB PROGRAM LOGIKA DAN ALGORITMA - PERTEMUAN 7 – SUB PROGRAM
Pengantar Program yang besar perlu dipecah menjadi program kecil. Tiap sub program disebut Modul. Dirancang oleh programmer atau developer program. Disebut Teknik Pemrograman Modular. Beberapa pemrograman menyebut modul dengan sebutan : Routine Prosedur Fungsi Terdapat proses utama, yang berfungsi untuk menggabungkan modul yang ada.
Bagan Cara Kerja Sub Program Modul Utama Modul 1 A1 A2 A3 Call Modul 1 A4 A5 Call Modul 2 A6 A7 A8 M11 M12 M13 M14 Modul 2 M21 M22 M23 M24
Contoh Prosedur (1) Procedure Hitung_Luas_Lingkaran {Menghitung nilai luas lingkaran dari masukan jari-jari di program utama} Deklarasi Luas:Real Const phi =22/7 Deskripsi Luas phi*r*r write(Luas)
Contoh Prosedur (2) Procedure Hitung_Keliling_Lingkaran {Menghitung nilai keliling lingkaran dari masukan jari-jari di program utama} Deklarasi Keliling:Real Const phi =22/7 Deskripsi Keliling 2*phi*r write(Keliling)
Contoh Prosedur (3) Procedure Hitung_Keliling_Luas_Lingkaran {Menghitung nilai keliling dan Luas lingkaran} Deklarasi r:Real Procedure Hitung_Luas_Lingkaran Procedure Hitung_Keliling_Lingkaran Deskripsi read(r) Hitung_Luas_Lingkaran Hitung_Keliling_Lingkaran
LATIHAN SOAL Tuliskan procedure untuk menentukan nilai terbesar antara 2 buah variabel bil bulat, A dan B. Nilai terbesar dicetak ke layar. Buatlah masing-masing procedur untuk menghitung luas dan volume balok dari daftar menu sederhana. dimana L balok = 6 x s x s V balok = s x s x s
Parameter Masukan (Input Parameter) Parameter yang nilainya berlaku sebagai masukan untuk procedure yang dipanggil. Biasa disebut parameter nilai (value parameter atau parameter by value)
Contoh Parameter Masukan Procedure TentukanMaksimum (Input A,B:Integer) {Menentukan nilai terbesar dari 2 buah variabel A dan B. Nilai A dan B dibaca terlebih dahulu} Deklarasi Maks :Integer Deskripsi If (A>B) then Maks A Else Maks B Endif Write(Maks) Algoritma Utama {Algoritma utama untuk memanggil TentukanMaksimum} X, Y :Integer Procedure TentukanMaksimum (Input A,B :Integer) read(X,Y) TentukanMaksimum(X,Y)
Parameter Keluaran (Output Parameter) Parameter yang menampung keluaran yang dihasilkan oleh procedure. Parameter keluaran dideklarasikan di dalam header prosedur, seperti parameter masukan.
Contoh Parameter Keluaran Procedure TentukanMaksimum (Input A,B:Integer, Output Maks : integer) {Menentukan nilai terbesar dari 2 buah variabel A dan B. Nilai A dan B dibaca terlebih dahulu} Deklarasi {tidak ada} Deskripsi If (A>B) then Maks A Else Maks B Endif Algoritma Utama {Algoritma utama untuk memanggil TentukanMaksimum} X, Y, Z :Integer Procedure TentukanMaksimum (Input A,B :Integer, Output Hasil:integer) read(X,Y) TentukanMaksimum(X,Y,Z) write(Z)
Parameter Masukan/Keluaran Procedure TentukanMaksimum (I/O A,B:integer) {Menentukan nilai terbesar dari 2 buah variabel A dan B. Nilai A dan B dibaca terlebih dahulu} Deklarasi tukar:integer Deskripsi If (A<B) then tukar A A B B tukar Endif Algoritma Utama {Algoritma utama untuk memanggil TentukanMaksimum} X, Y, :Integer read(X,Y) TentukanMaksimum(X,Y) write(A)
Fungsi Program yang memberikan/mengembalikan sebuah nilai (return) dari tipe tertentu. Dalam nama fungsi terdapat sebuah nilai, seperti halnya sebuah variabel. Biasanya berupa kata kerja. Format Pembuatan Fungsi : Functio NamaFungsi(daftar parameter) Tipe Data {Bagian nama fungsi} Deklarasi {Pendeklarasian kamus data} Deskripsi {Bagian algoritma Utama} Return (nilai)
Contoh Fungsi Function HitungFaktorial(input x : integer) integer Deklarasi Hasil:integer Deskripsi Hasil 1 {menghitung nilai Hasil} For i N downto 1 do hasil=hasil*I Endfor Return(hasil) Algoritma Menghitung nilai e {Menghitung nilai e} A, n ,r temp:integer Function HitungFaktorial(input x:integer) integer read(n) exp1 for i 1 to n do expexp+1/HitungFaktorial(i) write(exp)
LATIHAN 7 Tuliskan Fungsi untuk mendeteksi tipe suatu segitiga, apakah termasuk : Segitiga siku-siku Segitiga sama sisi Segitiga sama kaki Segitiga sembarang Jika dimasukkan dari keyboard panjang sisi-sisinya a,b,c (type real) dan outputnya berupa type segitiga