You are on page 1of 25
BAB VI Fungsi Function can define a relation, like “Wisdom is a function of age” ~ hetps://www.python-course.eu/- Tujuan Pembelajaran: Setelah mendapatkan materi ini diharapkan pembaca dapat : a A. Mengetahui dan memahami konsep fungsi dalam pemrograman, Mengetahui dan memahami ragam dan kegunaan fungsi, Memahami konsep variabel lokal dan global dalam kaitannya dengan fungsi, Mampu menyelesaikan permasalahan pemrograman dengan memanfaatkan fungsi dan menuliskannya dalam lingkungan kerja bahasa pemrograman Python. Fungsi, Parameter dan Argumen Program disusun dari komposisi fungsi, variabel dan data. Fungsi dapat diartikan sebagai suatu kumpulan pernyataan yang saling terkait yang berfungsi melakukan tugas atau tujuan tertentu (Klein, 2018). Dengan adanya fungsi, program memungkinkan untuk dipecah menjadi bagian-bagian yang lebih kecil (smaller) dan modular. Hal ini menyebabkan fungsi bersifat reusable atau dapat digunakan kembali, di bagian mana pun dalam suatu program. Oleh karena itu fungsi sering diartikan sebagai bagian program yang dapat dipanggil secara berulang. Fungsi yang digunakan kembali dapat disimpan sebagai modul (module). Dari penjelasan di atas, secara umum, dalam program fungsi bermanfaat untuk : 1. Membagi program besar menjadi bagian-bagian yang lebih kecil (smaller) dan modular (standar) sehingga mudah dikembangkan lebih lanjut. 2. Bagian-bagian yang lebih kecil tersebut bersifat reusable yang memungkinkan untuk dipanggil kembali secara berulang-ulang. 3. Saat program berkembang menjadi besar dan kompleks, fungsi membantu agar program lebih mudah dikelola dan diorganisasikan. Pendefinisian dan pemanggilan fungsi Fungsi didefinisikan dan dipanggil dengan cara sebagai berikut (Wang, 2019): def nama_fungsi(p1, p2, ...) blok_pernyataan di mana p1, p2 adalah parameter atau formal parameter Setalah didefinisikan, fungsi harus dipanggil dengan cara sebagai berikut: nama_fungsi(al, a2, ..) di mana a1, a2 adalah argumen atau aktual parameter Fungsi merupakan bagian alur program yang dikelola dengan konstruksi sebagai berikut: def nana_fungsi( ) + Gambar 6.1. Konstruksi Fungsi dalam Alur Program Parameter dan Argumen Parameter adalah bagian fungsi yang dapat diubah atau parameter adalah suatu variabel dalam suatu fungsi, sedangkan argumen adalah angka aktual yang ditugaskan dalam fungsi (Wang, 2019). Dengan kata lain, parameter adalah nama variabelnya sedangkan argumen adalah datanya. Parameter dan argumen harus sesuai secara posisi. Perhatikan contoh berikut ini. Contoh 6.1. Fungsi tanpa parameter: def pesan( ): print ("Hari ini tanggal 17 Agustus, Selamat Hari Kemerdekaan. Merdeka !") pesan() Hasil: Hari ini tanggal 17 Agustus, Selamat Hari Kemerdekaan. Merdeka ! Contoh 6.2. Fungsi dengan parameter: def vol_balok(p, 1, t): '"Pungsi mencari luas balok''' print (p*l*t) vol_balok(15, 5,10) Hasil : 750 Penjelasan contoh 6.2 sebagai berikut: posisi def adalah keyword yang digunakan untuk mendefinisikan fungsi. Nama fungsi adalah vol_balok() yang didefinisikan dengan def vol_balok(). Pernyataan dengan awalan “” adalah docstring yang berfungsi sebagai dokumentasi, yang menyediakan informasi berkaitan dengan fungsi yang dimaksud. Pernyataan vol_balok( ) adalah cara pemanggilan fungsi. Bertindak sebagai parameter atau variabel fungsi adalah p, |, t, dan bertindak sebagai argumen atau data dari variabel adalah 15, 5, 10. Parameter dan argumen hendaknya berada dalam yang bersesuaian. Namun_ tidak menutup kemungkinan, parameter memiliki nilai_ tertentu (nilai default). Perhatikan contoh berikut: Contoh 6.3. Fungsi dengan nilai default: def vol_balok(p, 1=5, t=10): '''Pungsi mencari luas balok''! print (p*l*t) vol_balok (15) Selain parameter dengan nilai default, terdapat pula keadaan di mana parameter menampung variabel yang berisi sejumlah variabel. Dalam contoh berikut *namanya dan *val berfungsi sebagai parameter yang menampung sejumlah variabel. Contoh 6.4. Fungsi dengan sejumlah parameter yang tidak diketahui def peserta (*namanya) : “"Fungsi untuk sejumlah urutan nama’ # nama beserta argumen for nama in namanya: print ("Hai", nama) peserta("Any", "Budi", "Citra", "Dina") Hasil Hai Any Hai Budi Hai Citra Hai Dina Contoh 6.5. Fungsi dengan parameter yang menampung sejumlah variabel: def penjumlahan(a, b, *var): ‘''pungsi untuk = menjumlahkan — sejumlah variabel''' x = atb y= 0 for n in var: yeytn total =x+y print (total) penjumlahan (5, 10,15,20,25,30, 35, 40,45, 50) Hasil : 275 Pada contoh 6.4, variabel a =5, b = 10. Data selain 5 dan 10, yaitu 15, 20, 25, 30, 35, 40, 45 dan 50 masuk dalam fungsi penjumlahanQ) melalui parameter *var. Secara umum terdapat dua macam fungsi yang dipergunakan dalam program yaitu 1. & Fungsi built-in atau fungsi dari standar pustaka (library) Fungsi yang didefinisikan sendiri oleh pengguna (user defined functions) Penjelasan masing-masing fungsi diuraikan pada bagian B dan C berikut ini. B. — Fungsi Built-in Fungsi built-in adalah fungsi yang telah ditetapkan oleh bahasa pemrograman, berupa semacam keyword yang memiliki kegunaan untuk melakukan eksekusi aktivitas tertentu. Contoh fungsi built-in dalam Python adalah print(), abs(), format( ), input( ), len( }, pow( ), round(), slice( ) dsb. Terdapat 68 built-in function dari Python 3.6, lihat lampiran 2. Selain menyediakan fungsi built-in seperti print( ) dsb, bahasa pemrograman Python menyediakan beragam modul yang berisi fungsi-fungsi built-in untuk tujuan tertentu. Sebagai contoh, Python menyediakan modul seperti math, numpy, scipy, matplotlib dil. Tiap modu! memuat fungsi-fungsi tertentu. Modul math menyediakan akses ke beragam fungsi matematika seperti fungsi trigonometri, fungsi logaritma, fungsi sudut dsb, sedangkan modul numpy menyediakan fungsi untuk pengelolaan struktur data dasar, implementasi array dan matrik-multi dimensi. Contoh 66 dan 67 menunjukkan penggunaan konstanta Pie (7) dalam modul math. Contoh pemanfaatan modul numpy dapat dilihat pada Latihan 6.3 Contoh 6.6. Konstanta z dari modu! math import math math. pi Hasil 3.141592653589793 Contoh 6.7. Konstanta 7 dan fungsi pangkat 2 dari modul math untuk menghitung luas lingkaran # Menghitung luas lingkaran import math jari_jari - 7 luas = math.pi * math.pow(jari_jari,2) print (format (1uas, '.2£")) Hasil : 153.94 C. Fungsi User-defined User-defined Functions adalah fungsi yang didefinisikan sendiri oleh pengguna untuk melakukan tugas tertentu yang dikehendaki. Fungsi ini dapat digunakan kembali dan dapat disimpan sebagai modul (module). Ketika menjadi modul, fungsi user-defined ini dapat menjadi fungsi pustaka (library) yang dapat dipanggil oleh pengguna atau program yang lain. Adapun manfaat penggunaan fungsi user-defined adalah: 1. Memecah program yang kompleks sehingga mudah diorganisasikan dan dipelihara, 2. Bagian-bagian program selanjutnya dapat dipanggil kembali secara berulang, 3. Secara teknis, dalam suatu proyek pengembangan program, suatu program besar memungkinkan untuk dikerjakan dengan berbagai sejumlah personil. Berikut beberapa contoh fungsi yang didefinisikan sendiri oleh pengguna. Contoh 6.8. Fungsi untuk bertukar data def tukar(a, b): '''Pungsi untuk menukar data''' tampungan = 4 a=b b = tampungan print (a, ) a= 25 b = 50 print (a, b) tukar(a, b) Hasil : 25 50 50 25 Contoh 6.9. Fungsi untuk menentukan genap-ganjil def genap_canjil(z): '''punged untuk menentukan genap-ganjil''! if (282 0): print ("Genap") else: print ("Ganji") genap_ganjil(10) genap_ganjil(21) Hasi Genap Ganjil Contoh 6.10. Penggunaan fungsi user-defined untuk konversi suhu dari Celsius ke Fahrenheit, Kelvin dan Reamur. det def def def det def input_suhu(): suhu = float (input ("Masukkan suhu : return suhu ubah_fahrenheit (t): £= 9/5 * t + 32 return £ ubah_kelvin(t) : k=t + 273.15 return k ubah_reamur (t) : rm 4/5 *t return © tampil_suhu(£, k, ©): print ("Tampilkan suhu print ("Tampilkan suhu : print ("Tampilkan suhu : ",r) utama(): nput_suhu () bah_fahrenheit (t) bah_kelvin(t) r=ubah_reamur (t) tampil_suhu(f, k, x) utama () Hasil : Masukkan suhu : 100.0 Tampilkan suhu : 212.0 Tampilkan suhu : 373.15 Tampilkan suhu : 80.0 Penjelasan contoh 6.10 sebagai berikut: D. Terdapat 6 fungsi yaitu input_suhu( J, ubah_fahrenheit( ), ubah_kelvin( J, ubah_reamur( J, tampil_suhuC ), dan utama(). def input_suhu() merupakan fungsi tanpa parameter dengan satu nilai balik (return value). def ubah_fahrenheit() merupakan fungsi dengan sebuah parameter, dengan perilaku melakukan perubahan nilai t menjadi f melalui formula 9/5 *t + 32 def ubah_kelvin() merupakan fungsi dengan sebuah parameter, dengan perilaku melakukan perubahan nilai t menjadi k melalui formula t + 273.15 def ubah_reamur() merupakan fungsi dengan sebuah parameter, dengan perilaku melakukan perubahan nilai t menjadi r melalui formula 4/5 * t def tampilsuhuQ) merupakan fungsi dengan tiga parameter f, k, r yang bertugas menampilkan nilai f, k dan r. utama() adalah fungsi pemanggil. Fungsi ini memproses penginputan, kemudian mengubah (ubah_fahrenheit, ubah_kelvin, ubah_reamur) dan menampilkan. Pemanggilan Fungsi dan Modul Fungsi sering diartikan sebagai bagian program yang dapat dipanggil berulang ulang. Fungsi yang digunakan kembali dapat disimpan sebagai modul (module). Terdapat 3 macam cara pemanggilan modul, yaitu : 1. Pemanggilan secara langsung Pemanggilan secara langsung dilakukan dengan cara memanggil modul yang berisi fungsi-fungsi yang sudah disimpan dalam suatu file (modul), Dalam Python, file modul untuk menempatkan fungsi disimpan dengan ekstensi -py. Sebagai contoh, ikuti pembuatan program berikut ini: a. Buat file text baru (pilih opsi Text File). Buka terlebih dahulu Jupyter Notebook. Mulailah membuat file baru. Saat klik tombol New, pilih Text File, seperti terlihat pada gambar 6.2 berikut ini: Spyier to © Gambar 6.2. Pembuatan File dengan Jenis Text File b. Talis program berikut ini: def luas_balok(p, 1, t): "''Luas = 2*(p*ltp*ttl*t)''" luas = 2*(p*l + p*t + 1*t) print("Luas = ",luas) def def def def keliling balok(p, 1, t): ''Keliling = 4(p+l+t)''' keliling - 4*(p + 1 + t) print("Keliling = ", keliling) volume_balok(p, 1, t): ''tvolume=p*l*t ''* volume = p*l*t print ("Volume = ",volume) input_balok()+ panjang = float(input("Masukkan panjang ")) lebar = float (input("Masukkan lebar :")) tinggi = float (input ("Masukkan tinggi :")) return panjang, lebar, tinggi utama () : a, by ¢ = input_balok() luas_balok(a, b, ¢) keliling_balok(a, b, c) volume_balok(a, by ¢) utama() Gambar 6.3. Sejumlah Fungsi dalam Program cc. Simpan dengan nama hitungan_balok py Gambar 6.4. Simpan dalam File hitungan_balokpy 4. Buat file baru, panggil modul hitungan_balok py Pemanggilan modul untuk penggunaan kembali dilakukan dengan cara sebagai berikut: $run nama_modul Contoh : run hitungan_balok.py SQ BAS WR Cw lc tn [4]: Xrun bitungan_batok.py asubhan panjang +20 Masukban Leoar '5 Gambar 65. Pemanggilan Modul hitungan_balok.py 2. Pemanggilan dengan cara import Dengan contoh seperti nomor 1, lakukan penyimpanan Text File dengan nama balokcpy yang berisi program berikut: def luas_balokip, 1, t): ' huas = 2+ (ptltp*ttitty luas = 2*(p*l + p*t + 1*t) print ("Luas = ",luas) def keliling_balok(p, 1, t): '''Keliling = 4(p+l+t)''! keliling = 4*(p + 1 + t) print ("Keliling = ", keliling) def volume_balok(p, 1, t): '''volume=p*l*t ''" volume = p*l*t print ("Volume = ",volume) Kemudian buat file Jupyter baru dan buat program berikut: Contoh 6.11. # Menggunakan modul balok import balok def input_balok(): panjang = float (input("Masukkan panjang ")) lebar = float (input("Masukkan lebar tinggi = float (input ("Masukkan tinggi : return panjang, lebar, tinggi a, b, ¢ = input_balok() balok.volume_balok(a, b, c) balok.luas_balok(a, b, c) balok.keliling_balok(a, b, ¢) Hasil: Masukkan panjang :20 Masukkan lebar Masukkan tinggi :10 Volume = 1000.0 Luas = 700.0 Keliling = 140.0 Tampak dalam contoh 6.11, diperlukan pemanggilan modul balok.py dengan penulisan sebagai berikut: import balok Pemanggilan ini akan menjadikan fungsi-fungsi dalam modul balokpy yaitu keliling balok(), luas_balok(Q) dan volume_balok() memungkinkan untuk dipanggil dan digunakan. Pemanggilan modul semacam ini dapat pula dilakukan terhadap modul yang sudah disediakan Python seperti modul matematika yaitu import math pada contoh 6.7. 3. Pemanggilan dengan from ... import * Selain pemanggilan dengan run dan import, cara pemanggilan berikut ini juga dapat digunakan. Pada Jupyter buat file baru dan tuliskan program berikut: Contoh 6.12. # Menggunakan modul balok from balok import * def input_balok(): panjang = float (input("Masukkan panjang any lebar = float (input ("Masukkan lebar :")) tinggi = float (input ("Masukkan tinggi :")) return panjang, lebar, tinggi a, b, ¢ = input_balok() volume_balok(a, b, ¢) luas_balok(a, b, ¢) keliling balok(a, b, c) Hasil: Masukkan panjang :20 Masukkan lebar Masukkan tinggi : Volume = 1000.0 Luas = 700.0 Keliling = 140.0 Konstruksi from balok import * berarti memanggil modul balok dan semua fungsi yang ada di dalamnya, sehingga pada penggunaannya nanti pemanggilan tidak perlu dilakukan dengan format balok.volume_balok(a, b, c) tetapi cukup ditulis volume_balok(a, b, C) E. _Variabel Lokal dan Variabel Global Berdasarkan ruang lingkup kerja dalam fungsi, variabel dibedakan menjadi variabel lokal dan variabel global. Variabel yang dideklarasikan di luar fungsi disebut variabel global, sedangkan variabel yang dideklarasikan di dalam fungsi disebut variabel lokal. Ruang lingkup kerja menjadikan variabel seakan memiliki masa hidup (lifetime) yang membatasi saat kapan variabel bisa digunakan/diakses dan kapan variabel tidak bisa digunakan. Perhatikan contoh berikut: Contoh 6.13, Variabel lokal def variabelku(): var_lok dalam fungsi" print (var_lok) print (var_glo) ni variabel lokal, berada di var_glo fungsi variabelku() Ini variabel global, berada di luar Hasil : Ini variabel lokal, berada di dalam fungsi Ini variabel global, berada di luar fungsi Pada contoh 6.13, var_glo adalah variabel global dan var_lok adalah variabel lokal. Sebagai varaibel global, var_glo dapat diakses dari dalam fungsi, dengan perintah print(var_glo). Sebaliknya var_lok sebagai varaibel lokal hanya bisa diakses saat berada dalam fungsi. Setelah setelah keluar dari fungsi, variabel lokal, var_lok, tidak dapat diakses lagi. Lihat contoh 6.16. Untuk memahami lebih lanjut sifat variabel lokal dan variabel global, perhatikan uraian dan contoh berikut ini: a. Jika variabel lokal dan variabel global didefinisikan dengan nama yang sama maka jika keduanya dipanggil dari dalam fungsi, hanya variabel lokal yang akan dieksekusi. Contoh 6.14. def variabelku(): var_l ="Ini variabel lokal, berada di dalam fungsi" print (var_1) var_l = "Ini variabel global, berada di luar fungsi" variabelku() Hasil Ini variabel lokal, berada di dalam fungsi Oleh karena itu, guna mengantisipasi kesalahan, tidak disarankan membuat variabel global dan variabel lokal dengan nama yang sama. b. Namun jika pendefinisian variabel lokal dan global tetap dilakukan dengan nama yang sama, tambahkan kata kunci “global” pada variabel global saat diakses dalam fungsi, guna menghindari kesalahan. Contoh 6.15. def variabelku(): global var_1 print (var_1) var_l ="Ini variabel lokal, berada di dalam fungsi" print (var_1) var_l = "Ini variabel global, berada di luar fungsi" variabelku () Hasil : Ini variabel global, berada di luar fungsi Ini variabel lokal, berada di dalam fungsi c. Variabel lokal tidak dapat dipanggil dari luar fungsi. Lihat contoh 6.13. Setelah fungsi dijalankan, maka variabel lokal akan selesai bekerja. Seandainya variabel lokal dipanggil di luar fungsi maka akan terjadi pesan kesalahan seperti contoh 6.16 berikut ini: Contoh 6.16. def variabelku(): var_lok ="Ini variabel lokal, berada di dalam fungsi" print (var_lok) print (var_glo) var_glo = "Ini variabel global, berada di luar fungsi variabelku() print (var_lok) Hasil : Ini variabel lokal, berada di dalam fungsi Ini variabel global, berada di luar fungsi NameError Traceback (most recent call last) in 6 var_glo = "Ini variabel global, berada di luar fungsi" 7 variabelku () ----> 8 print (var_lok) NameError: name 'var_lok' is not defined F. Fruitful Function dan Nilai Balik (Return Value) Fruitful Function adalah fungsi yang memberikan nilai balik (return value) kepada pemanggil fungsi. Sementara fungsi yang tidak memberikan nilai balik disebut prosedur atau dalam Python cukup disebut fungsi saja atau non-fruitfiul function (Downey, 2012). Dalam program, fruitful function ini dinyatakan dengan pernyataan return. Penggunaan pernyataan return dalam fungsi menyebabkan pernyataan dalam fungsi keluar (exi¢) dari fungsi dan memberikan nilai balik kepada pemanggil. Perhatikan contoh berikut: Contoh 6.17. def penjumlahan(p, gq, r): return (p+q+r) penjumlahan (10, 35, 50) Hasil : 95 Contoh 6.18. def penjumlahan(p, q, r): jum = ptgtr return jum penjumlahan (10, 35,50) Hasil : 95 Berkaitan dengan return, jika pernyataan return tidak diikuti- ekspresi_ nilai balik maka tidak ada nilai_ yang dikembalikan pada pemanggilan fungsi. Contoh 6.19. def penjumlahan(p, q, r): jum = ptatr return penjumlahan (10,35,50) Hasil : sekusi program ini tidak akan memberikan hasil. Bandingkan dengan contoh 6.20. Contoh 6.20. def penjumlahan(p, gq, r): jum = ptqtr return hasil = penjumlahan(10,35,50) print("Hasilnya = ", hasil) Hasil : Hasilnya = None Saat menggunakan pernyataan “return” dalam fungsi, maka pernyataan setelah return tidak dijalankan. Perhatikan contoh 6.21 berikut init Contoh 6.21. def penjumlahan(p, q, 1): return (ptgtr) print ("Jumlah =", p+q+r) penjumlahan (10, 35,50) Hasil : 95 Pada contoh 6.21, nilai “95” merupakan nilai balik dari hasil pemanggilan fungsi yaitu pernyataan return(p+q+r). Sedangkan pernyataan setelah return dalam fungsi yaitu, print("Jumlah =", p+qir), tidak dijalankan. Dalam Python, pernyataan hasil semacam ini, penjumlahan(10,35,50), dapat ditampilkan. Untuk memperjelas, lihat contoh 6.22. Contoh 6.22. def penjumlahan(p, q, r): return (ptgtr) print ("Jumlah =", p+qtr) jum = penjumlahan (10, 35,50) print ("Hasil = ", jum) Hasil : Hasil = 95 Nilai balik dengan banyak variabel (Multiple Return Value) Pada pengelolaan data tertentu, fungsi dapat mengembalikan sejumlah nilai bali. Perhatikan contoh 6.23 berikut ini: Contoh 6.23. def op_aritmatika(a, b): jumlah = a +b kurang = a - b kali =a*b bagi = a/b return kurang, kali, jumlah, bagi op_aritmatika(20, 5) Hasil : (15, 100, 25, 4.0) Sejumlah nilai balik dari fungsi dapat disimpan dalam sejumlah variabel yang bersesuaian seperti contoh berikut: Contoh 6.24. def op_aritmatika(a, b): jumlah = a +b kurang = a - b kali = a*b bagi - a/b xeturn kurang, kali, jumlah, bagi Pr G ©, 5 = op_aritmatika(20, 5) print ("Hasil Pengurangan=",p) print ("Hasil Perkalian: print ("Hasil Penjumlahai print ("Hasil Pembagian: Hasil : Hasil Pengurangan- 15 Hasil Perkalian= 100 Hasil Penjumlahan= 25 Hasil Pembagian= 4.0

You might also like