algoritma pertemuan 6
DESCRIPTION
Fungsi dan Modular C++TRANSCRIPT
Algoritma &Pemrograman #6
by Ichsan Taufik, M.T.
Modular Programming• Pemrograman Modular adalah suatu teknik pemrograman di mana
program yang biasanya cukup besar dibagi-bagi menjadi beberapa bagian program yang lebih kecil sehingga kompleksitas program menjadi lebih kecil, masalah yang kompleks dapat lebih mudah diselesaikan, dan program menjadi lebih spesifik / terarah.
• Di dalam bahasa Pascal modul-modul yang berisi bagian program yang bersifat spesifik dapat dituangkan ke dalam suatu fungsi atau procedure.
• Fungsi/function atau prosedur/procedure adalah bagian dari program yang memiliki nama tertentu, digunakan untuk mengerjakan suatu pekerjaan tertentu, serta letaknya dipisahkan dari bagian program yang menggunakan fungsi atau prosedur tersebut.
• Beberapa bahasa pemrograman menamakan subprogram dengan sebutan sub-rutin (subroutine), modul, prosedur, atau fungsi.
Keuntungan Subprogram• Keuntungan menggunakan Subprogram:
– Program besar dapat dipisah menjadi program-program kecil.– Dapat dikerjakan oleh beberapa orang sehingga koordinasi mudah.– Kemudahan dalam mencari kesalahan-kesalahan karena alur logika
jelas dan kesalahan dapat dilokalisasi dalam suatu modul tertentu saja.
– Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa mengganggu program keseluruhan.
– Fungsi – fungsi menjadikan program mempunyai struktur yang jelas. Dengan memisahkan langkah – langkah detail ke satu atau lebih fungsi – fungsi, maka program utama akan menjadi lebih pendek, jelas dan mudah dimengerti. Hal seperti ini menunjukan suatu struktur program yang baik
Keuntungan Subprogram• Fungsi –fungsi yang dapat digunakan untuk menghindari
penulisan yang sama yang ditulis secara berulang – ulang. Langkah – langkah program yang sama dan sering digunakan berulang – ulang di program dapat dituliskan sekali saja secara terpisah dalam bentuk fungsi – fungsi. Selanjutnya bagian program yang membutuhkan langkah – langkah ini tidak perlu selalu menuliskannya, kita cukup memanggil fungsi – fungsi tersebut.– Mempermudah dokumentasi.– Reusability: Suatu fungsi dapat digunakan kembali oleh program atau
fungsi lain
Kategori Subprogram dalam Pascal
1. Standard Library Function• Yaitu fungsi-fungsi yang telah disediakan oleh Pascal dalam file-file
unitnya. Misalnya: clrscr, gotoxy(), textcolor()Untuk function ini kita harus mendeklarasikan terlebih dahulu library yang akan digunakan, yaitu dengan menggunakan reserved word: uses crt;
2. Programmer-Defined Function• Adalah function yang dibuat oleh programmer sendiri. Function ini
memiliki nama tertentu yang unik dalam program, letaknya terpisah dari program utama, dan bisa dijadikan satu ke dalam suatu library buatan programmer itu sendiri yang kemudian juga disertakan untuk penggunaanya.
• Terdapat dua bentuk subprogram dalam Pascal, yaitu: pertama Prosedur (Procedure) dan kedua fungsi (Function)
Pendefinisian Prosedur• Pendefinisian prosedur artinya menuliskan nama prosedur,
mendeklarasikan nama-nama konstanta, peubah dan tipe (jika ada), dan menjabarkan rangkaian aksi yang dilakukan.
• Pada dasarnya, struktur prosedur sama dengan struktur algoritma, yaitu ada bagian judul (header) yang terdiri atas nama prosedur dan deklarasi parameter (jika ada), bagian deklarasi untuk mengumumkan nama-nama, dan bagian algoritma yang disebut badan prosedur.
• Setiap prosedur mempunyai nama yang unik.• Nama prosedur sebaiknya diawali dengan kata kerja karena
prosedur berisi suatu aktivitas, misalnya : HitungLuas, Tukar, CariMaks, Inisialisasi, dan lain sebagainya.
Parameter• Nama-nama peubah yang dideklarasikan pada
bagian header prosedur.• Kebanyakan program memerlukan pertukaran
data/informasi antara prosedur (atau fungsi) dan titik dimana ia dipanggil.
• Penggunaan parameter menawarkan mekanisme pertukaran informasi tersebut.
• Tiap item data ditransfer antara parameter aktual dan parameter formal yang bersesuaian.
Parameter• Parameter Aktual (kadang-kadang disebut juga
argumen) adalah parameter yang disertakan pada waktu pemanggilan prosedur.
• Parameter Formal adalah parameter yang dideklarasikan di dalam bagian header prosedur itu sendiri.
• Ketika prosedur dipanggil, parameter aktual menggantikan parameter formal.
• Tiap-tiap paramater aktual berpasangan dengan parameter formal yang bersesuaian.
ParameterAturan yang harus diperhatikan dalam korespondensi
satu-satu antara parameter aktual dan parameter formal adalah:
1. Jumlah parameter aktual pada pemanggilan prosedur harus sama dengan jumlah parameter formal pada deklarasi prosedurnya.
2. Tiap parameter aktual harus bertipe sama dengan tipa parameter formal yang bersesuaian.
3. Tiap parameter aktual harus diekspresikan dalam cara yang taat-asas dengan parameter formal yang bersesuaian, bergantung pada pada jenis parameter formal.
Parameter
Terdapat tiga jenis parameter formal yang disertakan dalam prosedur:
1. Paramater masukan adalah parameter yang nilainya berlaku sebagai masukan untuk prosedur atau sering disebut parameter nilai (parameter by value).
2. Parameter keluaran adalah parameter yang menampung keluaran yang dihasilkan oleh prosedur.
3. Parameter masukan/keluaran adalah parameter yang berfungsi sebagai masukan sekaligus keluaran bagi prosedur tersebut.
Notasi Algoritma Prosedurprocedure NamaProcedure (deklarasi parameter, jika ada){spesifikasi prosedur, berisi penjelasan tentang apa yang dilakukan
oleh prosedur iniK. 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 disini}ALGORITMA:{badan prosedur, berisi urutan instruksi}
Contoh Prosedur dengan parameter masukan
Prosedur HitungLuasSegitiga (input alas, tinggi:real){Menghitung luas segitiga dengan rumus Luas=(alas x tinggi)/2K. Awal : alas dan tinggi sudah terdefinisi nilainya.K. Akhir : luas segitiga tercetak.}DEKLARASI luas : integerALGORITMA: luas (alas*tinggi)/2 write(luas)
Contoh Prosedur dengan parameter keluaran
Prosedur HitungLuasSegitiga (input alas, tinggi:real, output luas:real){Menghitung luas segitiga dengan rumus Luas=(alas x tinggi)/2K. Awal: alas dan tinggi sudah terdefinisi nilainyak. Akhir: luas berisi luas segitiga}DEKLARASI {tidak ada}ALGORITMA: luas (alas*tinggi)/2
Contoh prosedur dengan paramater masukan/keluaran
Procedure Inc(input/output x:integer){menaikkan nilai x sebesar 1.K. Awal: x sudah terdefinisi nilainya.K. Akhir: nilai x bertambah 1}DEKLARASI{tidak ada}ALGORITMA: x x + 1
PROGRAM Segitiga…HitLsSg3(a, t, L)…
procedure HitLsSg3(input alas, tinggi:real, output luas:real)
…luas (alas * tinggi)/2…
PROGRAM Cetak0Sampai10…Inc(x)…
procedure Inc(input/output x : integer)…x x + 1…
Cara Memanggil Prosedur• Tanpa Parameter
NamaProsedur;• Dengan Parameter
NamaProsedur(parameter aktual);
Nama Global, Lokal, dan Lingkup
• Nama-nama (konstanta, peubah, tipe, dll) yang dideklarasikan di dalam prosedur (termasuk parameter, jika ada) hanya “dikenal” di dalam prosedur tersebut dikatan lingkupnya (scope) “lokal”.
• Nama-nama (konstanta, peubah, tipe, dll) yang dideklarasikan di dalam program utama dikatakan lingkupnya (scope) “global”.
Peubah lokal atau global?• Keputusan apakah suatu peubah akan
dideklarasikan global atau lokal bergantung kepada penggunaan nama tersebut.
• Usahakanlah menggunakan peubah global sesedikit mungkin.
• Prosedur yang baik adalah prosedur yang independen dari program pemanggilnya. Pernyataan ini menyiratkan bahwa prosedur yang baik tidak menggunakan peubah-peubah global di dalam badan prosedurnya.
Latihan ProsedurProcedure HitungRatarata(input N:integer, output u:real){menghitung rata-rata N buah bilangan bulat dari piranti masukan}DEKLARASI x,k,jumlah : integerALGORITMA:
jumlah ← 0 {inisialisasi}for k ← 1 to N do read(x) jumlah ← jumlah+xendforu ← jumlah/N
Latihan ProsedurProcedure TambahEmpat(input/output x:integer, input y:integer){menambahkan nilai x dan y masing-masing dengan 4}DEKLARASI {tidak ada}ALGORITMA:
x ← x + 4 y ← y + 4write(‘Nilai x dan y di akhir prosedur TambahEmpat: ’)write(‘ x = ’,x)write(‘ y = ’,y)
Fungsi• Fungsi adalah subprogram yang
memberikan/mengembalikan (return) sebuah nilai dari tipe tertentu (tipe dasar atau tipe bentukan).
• Definisi fungsi di dalam program bersesuaian dengan definisi fungsi di dalam matematika.
• Contoh : f(x)= 2x2 +5x – 8, H(x,y) =3x-y+xy• Nilai yang diberikan oleh fungsi bergantung
pada masukan parameter
Pendefinisian fungsi• Struktur fungsi sama dengan struktur algoritma sudah dikenal: ada
bagian header yang berisi nama fungsi(beserta parameter masukan jika ada) dan spesifikasi tentang fungsi tersebut, bagian deklarasi, dan badan fungsi.
• Tipe menspesifikasikan tipe nilai yang diberikan oleh fungsi. Nilai yang diberikan oleh fungsi bertipe dasar maupun bertipe bentukan.
• Parameter formal selalu berjenis parameter masukan sehingga deklarasi nama parameter selalu diawali dengan kata input.
• Semua nama peubah/konstanta yang hanya berlaku di dalam fungsi saja diumumkan di bagian deklarasi. Nama yang didefinisikan di dalam bagian deklarasi fungsi hanya dikenal dan berlaku di dalam fungsi yang bersangkutan saja, fungsi lain atau program utama tidak dapat menggunakannya.
• Pernyataan return ekspresi di dalam fungsi bertujuan mengembalikan nilai yang dihasilkan oleh fungsi tersebut. Ekspresi dapat berupa konstanta, atau sebuah peubah, atau sebuah rumus.
Notasi Algoritma Fungsifunction NamaFungsi (input deklarasi parameter, jika ada) → tipe{spesifikasi fungsi, menjelaskan tentang apa yang dilakukan dan
yang dikembalikan oleh fungsi.}DEKLARASI{semua nama yang dipakai di dalam fungsi dan hanya berlaku lokal
di dalam fungsi didefinisikan disini}ALGORITMA:{badan fungsi, berisi urutan instruksi untuk menghasilkan nilai
yang akan dikembalikan oleh fungsi} return ekspresi {pengembalian nilai yang dihasilkan fungsi}
Contoh FungsiFunction F(input x:real) → real{mengembalikan nilai F(x)=2x2 + 5x -8, x R}DEKLARASI {tidak ada}ALGORITMA: return 2*x*x+ 5*x – 8
Contoh FungsiFunction H(input u,v,w:integer) → integer{mengembalikan nilai H(u,v,w)=2uv2 + 3vw + 10v}DEKLARASI {tidak ada}ALGORITMA: return 2*u*v*v+ 3*v*w + 10*v
Latihan FungsiFunction NamaBulan(input bln:integer)→string{mengembalikan nama bulan berdasarkan nomor bln}DEKLARASI {tidak ada}ALGORITMA: case bln
1: return ‘Januari’2: return ‘Februari’3: return ‘Maret’4: return ‘April’5: return ‘Mei’6: return ‘Juni’7: return ‘Juli’8: return ‘Agustus’9: return ‘September’10: return ‘Oktober’11: return ‘November’12: return ‘Desember’
endcase
Latihan FungsiFunction Maks(input a, b:integer)→integer{mengembalikan nilai terbesar dari a dan b}DEKLARASI {tidak ada}ALGORITMA:
If a>= b thenreturn a
elsereturn b
endif