Pemrograman Modular Memecah persoalan menjadi subsub persoalan yaitu
Pemrograman Modular • Memecah persoalan menjadi sub-sub persoalan yaitu subprogram • memungkinkan pemrogram memanggil kembali subprogram yang telah didefinisikannya setiap kali diperlukan dalam program tersebut • Pemrogram tidak perlu mendefinisikan sekumpulan instruksi berulang-ulang
Ilustrasi Program Utama Subprogram 1 Subprogram 2 Subprogram 3
Penyimpanan Subprogram • Dalam file yang sama dengan program utama • Dalam file yang terpisah
Tipe Subprogram • Prosedur • Fungsi
Variabel Lokal dan Variabel Global • Variabel Lokal – Dideklarasikan dalam subprogram – Hanya dikenali secara lokal dalam sebuah subprogram – tidak dapat dipanggil, diakses dan diubah oleh subprogram yang lain, bahkan oleh program utama • Variabel Global – Dideklarasikan dalam program utama – dapat dipanggil, diakses dan diubah oleh subprogram apapun yang terdapat dalam program tersebut
Parameter • Parameter formal – parameter input – parameter output – parameter input/output • Parameter Aktual
Prosedur
Prosedur • Sederetan instruksi algoritma yang diberi nama yang akan melakukan tujuan tertentu • Struktur : – Spesifikasi – Deklarasi – Badan Prosedur
Procedure terdefinisi • Fungsi yang sudah diberikan oleh sistem dan tinggal dipakai • Contoh : – Procedure date
Notasi Algoritma PROCEDURE <nama_prosedur> (input <daftar parameter input>, output <daftar parameter output>){parameter formal} {I. S. : [kondisi awal] F. S. : [kondisi akhir/hasil yang diharapkan]} BEGIN {sekumpulan instruksi dalam prosedur} ENDPROCEDURE
Pemanggilan Prosedur <nama_prosedur>{parameter aktual}
Contoh 1 : Procedure luas_segiempat {Menghitung luas segiempat IS : panjang dan lebar sembarang FS : luas segiempat ditampilkan} Kamus Data panjang, luas, lebar : real Begin input(panjang, lebar) luas panjang*lebar output(luas) End
Contoh 2 : Algoritma Panggil Kamus Data procedure luas_segiempat {menghitung luas segiempat} Begin luas_segiempat {pemanggilan procedure} End
Contoh 2 PROCEDURE luas_segiempat (input p, l: integer, output hasil: integer) {menghitung luas segi empat I. S. : panjang dan lebar berisi bilangan F. S. : luas berisi nilai luas segiempat} BEGIN hasil p * l ENDPROCEDURE
Contoh 2 : VAR panjang, lebar, luas: integer BEGIN Input (panjang, lebar) {meminta inputan 2 nilai} {pemanggilan prosedur luas_segiempat} luas_segiempat(panjang, lebar, luas) Output(luas) {menampilkan luas} END
Parameter Masukan • Nilai parameter aktual diisikan ke dalam parameter formal yang bersesuaian
Contoh Procedure dengan Parameter Masukan: Procedure Satu(input x, y : integer) {contoh prosedur dengan parameter formal berupa parameter masukan IS : nilai x dan y sudah terdefinisi FS : nilai x dan ya masing-masing dinaikkan satu lalu ditampilkan} Kamus Data {tidak ada} Begin x x+1 y y+1 output(x, y) End
Program Utama Algoritma X {contoh program utama yang memanggil prosedur Satu} Kamus Data a, b : real procedure Satu(input x, y : integer) Begin Satu(4, 10) {Satu dipanggil pertama kali} input(a, b) Satu(a, b) {Satu dipanggil kedua kali} Satu(a+5, 17) {Satu dipanggil ketiga kali} End
Parameter Keluaran • Nama parameter aktual di dalam program pemanggil menggantikan nama parameter formal yang bersesuaian di dalam prosedur
Contoh Procedure dengan Parameter Keluaran : Procedure tiga(input x : integer, output y : real) {contoh prosedur dengan parameter formal berjenis parameter keluaran IS : nilai x sudah terdefinisi FS : nilai x ditambah 1 lalu hasilnya dikali 3 dan disimpan ke dalam y} Kamus Data {tidak ada} Begin x x+1 y x*3 End
Program Utama Algoritma Y Kamus data a, b : integer procedure tiga(input x : integer, output y : integer) Begin tiga(4, b) {pemanggilan tiga pertama kali} output(b) input(a) tiga(a, b) output(b) {pemanggilan tiga kedua kali} tiga(a+5, b) {pemanggilan tiga ketiga kali} output(b) End
Parameter Masukan/Keluaran • Mengakomodasi baik masukan dari dan keluaran ke blok program pemanggil • Informasi dikirim dua arah • Bila parameter aktual diubah nilainyadi dalam badan prosedur, maka sesudah pemanggilan prosedur, nilai parameter di aktual di titik pemanggilan pun berubah
Contoh Procedure dengan Parameter Masukan/Keluaran : Procedure Empat(input/output x, y : integer) {menambahkan nilai x dan y masing-masing dengan 4 IS : x dan y sudah berisi nilai FS : nilai x dan y bertambah masing-masing 4 lalu ditampilkan} Kamus Data {tidak ada} Begin x x+5 y y+4 write(‘nilai x dan y di akhir prosedur Empat: ’) write(‘x=‘, x) write(‘y=‘, y) End
Program Utama Algoritma Y Kamus data a, b : integer procedure Empat(input/output x, y : integer) Begin a 15 b 10 output(‘nilai a dan b sebelum pemanggilan : ’) output(‘ a = ‘, a) output(‘ b = ‘, b) Empat(a, b) output(‘nilai a dan b sebelum pemanggilan : ’) output(‘ a = ‘, a) output(‘ b = ‘, b) End
Buatlah sebuah prosedur untuk persoalan di bawah ini ! • Menentukan nilai maksimum diantara dua buah bilangan • Menentukan sebuah nilai termasuk ganjil atau genap • Menukar dua buah bilangan • Menghitung rata-rata N buah bilangan bulat • Menghitung nilai diskon 20% • Menentukan nilai mahasiswa (A-E)
Fungsi
Fungsi • Modul program yang memberikan/mengembalikan (return) sebuah nilai dari tipe tertentu (tipe dasar atau tipe bentukan) • Dalam pembuatan sebuah fungsi, pemrogram harus mendefinisikan: – Nama fungsi – Tipe data yang dibuat/ dihasilkan oleh fungsi – Daftar parameter yang menyatakan data yang diperlukan oleh fungsi – Satu atau lebih instruksi yang melakukan perhitungan • Instruksi terakhir harus merupakan perintah untuk mengirimkan nilai/data keluaran dari fungsi ke program utama (bagian program yang memanggilnya).
Fungsi terdefinisi • Fungsi yang sudah diberikan oleh sistem dan tinggal dipakai • Contoh : – Fungsi konversi tipe data – Fungsi matematik
Notasi Algoritma FUNCTION nama_fungsi (daftar_parameter) tipe_data_hasil BEGIN {instruksi dalam fungsi} hasil ENDFUNCTION
Pemanggilan Fungsi 1. <nama_variabel> nama_fungsi(<daftar_parameter>) 2. Output(nama_fungsi(<daftar_param eter>)) 3. If nama_fungsi(<daftar_parameter>) < 0 then. . . 4. z 2*nama_fungsi(<daftar_paramete r>)
Contoh : Buatlah fungsi untuk menghasilkan f(x)=2 x 2+5 x-8 Function f(input x : real) real {mengembalikan nilai f(x)=2 x 2+5 x-8} Kamus Data {tidak ada} Begin (2*x*x) + (5*x) - 8 End
Contoh : Algoritma Panggil Kamus Data x, y : real Begin input(x) y f(x) {pemanggilan pertama} output(y) output(‘jika x=3 maka ‘, f(3)) {pemanggilan kedua} End
Fungsi atau Prosedur ? • Fungsi digunakan apabila modul program mengembalikan sebuah nilai • Prosedur digunakan bila modul menghasilkan efek netto dari (satu atau) sekumpulan aksi
Konversi Fungsi ke Prosedur dan sebaliknya • Fungsi dapat dikonversi menjadi prosedur dengan cara menyatakan nilai yang dikembalikan (return value) oleh fungsi sebagai parameter keluaran pada prosedur • Prosedur yang memiliki sebuah parameter keluaran dapat ditulis sebagai fungsi dengan cara menyatakan parameter keluaran sebagai return value dari fungsi
Fungsi ke Prosedur ? ? ? Function maks(input a, b : integer) integer {mencari nilai terbesar antara a dan b IS : a dan b sudah ditentukan FS : mengembalikan nilai terbesar antara a dan b} Kamus Data {tidak ada} Begin if a > b then a else b endif End
Prosedur ke Fungsi ? ? ? Procedure tiga(input x : integer, output y : real) {contoh prosedur dengan parameter formal berjenis parameter keluaran IS : nilai x sudah terdefinisi FS : nilai x ditambah 1 lalu hasilnya dikali 3 dan disimpan ke dalam y} Kamus Data {tidak ada} Begin x x+1 y x*3 End
Buatlah fungsi untuk persoalan berikut ! • F(x) = 5 x 2 + 10 x + 6 • Menentukan nilai kuadrat diantara dua buah bilangan • Menentukan sebuah nilai termasuk ganjil atau genap • Menghitung rata-rata N buah bilangan bulat • Menghitung nilai diskon 20% • Menentukan nilai mahasiswa (A-E)
Latihan • Buatlah prosedur yang membaca nilai dari 5 orang mahasiswa ! • Buat fungsi yang akan menampilkan nilai dari 5 mahasiswa tersebut ! • Buatlah program utama yang memanggil fungsi dan prosedur di atas !
Terimakasih! Wassalam…
- Slides: 40