Fungsi, Prosedur, dan Pengenalan Iterative Programming Pada handout ini akan dijelaskan tentang fungsi, prosedur, dan pengenalan iterative programming. Fungsi dan prosedur merupakan fasilitas yang dapat digunakan untuk mempermudah pembuatan suatu program. 1 Fungsi dan Prosedur Fungsi dan prosedur merupakan fasilitas yang disediakan oleh bahasa pemrograman dan dapat digunakan untuk mempermudah pembuatan suatu program. Fungsi utama dari penggunaan “fungsi” atau “prosedur” adalah bagaimana beberapa perintah pada program yang dilakukan berulang-ulang dapat dipisahkan menjadi suatu primitif tertentu sehingga jika ingin menggunakan beberapa perintah tersebut si pembuat program hanya tinggal memanggil fungsi yang telah dibuat sebelumnya. Berikut merupakan ilustrasi dari fungsi pada suatu program. Gambar 1: Ilustrasi dari fungsi pada suatu program 1 Dalam bahasa yang lain, fungsi dapat dikatakan sebagai dekomposisi dari suatu program dimana setiap dekomposisi menghasilkan suatu blok program yang mempunyai tugas dan fungsi tertentu serta spesifik. Selain itu, fungsi merupakan abstraksi dari suatu blok program, artinya orang yang memakai fungsi tersebut tidak perlu mengetahui bagaimana fungsi tersebut bekerja tetapi si pemakai hanya perlu tahu apa masukan dari fungsi tersebut dan apa keluaran dari fungsi tersebut. Dalam dunia programming, jika Anda menggunakan fungsi sebagai tool untuk mempermudah pembuatan program maka Anda telah memakai paham yang bernama functional programming. Artinya, program yang Anda buat terbentuk dari kode program utama dan beberapa fungsi pendukung yang diperlukan. Lalu apa bedanya antara fungsi dan prosedur dalam functional programming? 1.1 Perbedaan Fungsi dan Prosedur Dalam kamus bahasa indonesia, kata prosedur mempunyai makna ”metode langkah demi langkah secara pasti dalam memecahkan suatu masalah”. Dengan mengadopsi arti tersebut, maka bisa dipastikan prosedur dalam suatu bahasa pemrograman merupakan deretan perintah yang digunakan untuk memecahkan suatu permasalahan dengan masukan tertentu. Yang membedakan antara suatu prosedur dengan suatu fungsi dalam sebuah program adalah masukan dan keluarannya. Pada prosedur, tidak ada keluaran sedangkan pada fungsi ada keluaran yang nantinya dapat selanjutnya diolah lagi. 1.1.1 Prosedur dan Fungsi dalam Python Prosedur dan fungsi mempunyai deklarasi sintak yang sama pada bahasa pemrograman python yaitu dengan menggunakan keyword def. Yang perlu diingat adalah nama variabel yang digunakan untuk masukan dari fungsi jangan digunakan untuk proses yang dilakukan dalam fungsi karena jika nilai variabel tersebut akan diisi dengan nilai terakhir dari proses yang dilakukan. Lebih baik mendeklarasikan variabel baru yang khusus digunakan untuk proses dalam fungsi tersebut. Berikut merupakan beberapa contoh deklarasi fungsi dan prosedur dalam python. # contoh dari fungsi def tambah_fungsi(a, b): c = a + b return c # contoh dari prosedur def tambah_prosedur(a, b): c = a + b print "Hasil Penjumlahan = ",c 2 # contoh fungsi dengan keluaran lebih dari dua parameter def kecap(a, b, c): bb = (b**2) - (4*a*c) b1 = (-b - math.sqrt(bb)) / (2*a) b2 = (-b + math.sqrt(bb)) / (2*a) return [b1, b2] # contoh cara memanggil fungsi dengan keluaran lebih dari satu kecap1, kecap2 = kecap(2, 10, 2) 2 Iterative Programming Iterative programming merupakan salah satu metode pemecahan suatu permasalahan dengan menebak solusi dari permasalahan yang sedang diselesaikan. Iterative programming identik dengan algoritma brute-force, yaitu algoritma akan melakukan pengecekan untuk setiap nilai yang mungkin untuk suatu permasalahan. Pada awal kuliah, Anda telah disajikan suatu metode iterative programming yaitu mencari akar kuadrat dari suatu bilangan, untuk lebih jelas algoritmanya akan disajikan kembali sebagai berikut 00 01 02 03 start; menebak G jika Gˆ2 = X stop return G else G = (G + (X/G))/2 ulangi 00 Pada contoh tersebut, program pada saat berjalan pertama kali akan menebak solusi dari persmasalahan kemudian melakukan verifikasi apakah tebakan tersebut merupakan solusi dari masalah tersebut. Jika hasil tebakan tersebut merupakan solusi dari permasalahan maka program berhenti dan telah menemukan solusi tetapi jika bukan merupakan solusi maka program akan mengupdate hasil tebakan tersebut dengan rumus tertentu dan melakukan verifikasi kembali. Langkah-langkah tersebut terus dilakukan sampai program menemukan solusi dari permasalahan. Kita akan memodifikasi algoritma dari square root menjadi lebih simpel dan mudah dimengerti. Berikut merupakan algoritma yang dituliskan langsung dalam bahasa python. #Find the square root of a perfect square x = 16 ans = 0 while ans*ans <= x: ans = ans + 1 print ans 3 Contoh diatas menghasilkan keluaran berupa angka 4, namun bagaimana jika variabel x kita ganti dengan bilangan bulat yang lebih kecil dari nol? Apa keluaran dari program? Tentu saja program akan memberikan keluaran angka 0 yang merupakan jawaban yang tidak diinginkan. Oleh karena itu, ada suatu konsep pemrograman yang bernama defensive programming. 3 Defensive Programming Defensive programming adalah suatu konsep programming yang memperhatikan aspek user dan metode yang digunakan. Sebagai contoh, pada kode program sebelumnya kita telah melihat program yang menghitung akar dari suatu angka. Pada kode tersebut, jika variabel x diganti menjadi bilangan negatif maka program akan memberikan jawaban yang tidak diinginkan. Untuk itu, kita perlu memeriksa nilai x terlebih dahulu apakah sudah sesuai dengan yang kita inginkan. Berikut merupakan perubahan kode program yang dilakukan. x = input("Masukan suatu bilangan = ") ans = 0 if x >= 0: while ans*ans < x: ans = ans + 1 print ’ans =’, ans if ans*ans != x: print x, ’is not a perfect square’ else: print ans else: print x, ’is a negative number’ Pada kode program, dipastikan bahwa masukan dari user adalah bilangan bulat positif dan merupakan bilangan yang bila diakarkan menghasilkan nilai yang merupakan bilangan bulat pula. Konsep defensive programming sangat penting dalam proses pembuatan program untuk menghindari banyak bug pada program ketika akan dipasarkan dan juga mempermudah programmer karena tidak perlu memperbaiki kode program karena memiliki bug. 4