Modul 5: Fungsi
Capaian Pembelajaran Mata Kuliah
Mampu menggunakan elemen-elemen pemrograman, yaitu fungsi, I/O, dan tipe data buatan sendiri untuk membuat program sederhana berbasis teks.
Materi
Apa Itu Fungsi?
Fungsi adalah sebuah program kecil yang menerima input dan menghasilkan output. Kita sudah menggunakan beberapa fungsi di modul-modul sebelumnya, yaitu
print()input()type()range()
Contohnya, dalam gambar berikut, fungsi print() menerima 2 input dan menghasilkan 1 output,
yaitu None.

Catatan
Fungsi print() menghasilkan output berupa nilai yang disebut None.
None artinya tidak ada nilai.
Catatan
Di gambar terlihat ada yang namanya side effect.
Ini adalah efek yang disebabkan fungsi ketika mengubah atau melakukan sesuatu
di luar dirinya. Dalam hal ini, fungsi print() mencetak string ke terminal
Sebuah fungsi, dapat menerima nol, satu, atau lebih dari satu input. Sementara, sebuah fungsi hanya dapat mengeluarkan satu output. Jika kita ingin sebuah fungsi mengeluarkan beberapa nilai, nilai-nilai tersebut harus kita bungkus dalam data yang bisa menampung banyak nilai, seperti menggunakan list.
Secara umum, untuk menggunakan sebuah fungsi, kita tuliskan seperti berikut.

Simbol arg1 dan arg2 disebut sebagai argumen.
Argumen adalah nilai yang kita masukkan ke fungsi sebagai input.
Selain argumen, ada juga istilah parameter.
Parameter adalah variabel yang menampung argumen.
Urutan argumen harus sesuai urutan parameter.
Dari mana fungsi berasal?
Fungsi berasal dari 3 sumber.
- Bawaan Python, contohnya fungsi
print()dan jugatype() - Berasal dari modul yang kita import. Misalnya fungsi
randint()dari modulrandom - Kita buat sendiri
Misalkan, kita ingin membuat suatu fungsi yang tugasnya menentukan sebuah integer itu ganjil atau genap. Spesifikasinya sebagai berikut.
- Nama fungsi:
genap - Input: integer
- Output:
TrueatauFalse - Fungsi:
- Jika input genap, output =
True - Jika input ganjil, output =
False
- Jika input genap, output =
Untuk membuatnya, kita tuliskan kode berikut.
Sintaks pembuatan suatu fungsi adalah sebagai berikut.
- Diawali dengan kata kunci
def. genapadalah nama fungsi.angkadalam tanda kurung adalah parameter, yaitu variabel yang menampung input.- Kata kunci
returnmenandai nilai yang dikeluarkan fungsi sebagai output.

Setelah membuat fungsi genap, cara menggunakannya adalah sebagai berikut.
Misal kita diminta membuat program yang outputnya seperti berikut.

Maka, kita buat programmnya seperti berikut. Pertama, kita buat dulu definisi fungsinya.
Selanjutnya, kita gunakan atau panggil fungsi tersebut
di program utama kita.
Di program berikut, fungsi genap kita panggil di baris 8.
Ekspresi genap(n) di baris 8 disederhanakan menjadi True jika n genap
sehingga statemen if genap(n): berubah menjadi if True:.
Catatan
Fungsi harus didefinisikan sebelum digunakan.
Coba
-
Buatlah fungsi yang spesifikasinya sebagai berikut.
- Nama:
kata - Input: integer
- Output: "ganjil" atau "genap"
- Fungsi:
- Jika input ganjil, output = "ganjil" (string).
- Jika input genap, output = "genap" (string).
- Nama:
-
Gunakan fungsi
katauntuk membuat program yang outputnya seperti berikut.

Fungsi dengan Banyak Parameter
Masih ingat dengan istilah positional argument dan keyword argument di pembahasan Modul 1? Saat menggunakan atau memanggil fungsi, kita dapat menuliskan argumennya sebagai berikut (baris 11 dan 12).
Angka 5 dan 7 di baris 11 dan 12 disebut sebagai keyword argument
karena kita input dengan menuliskan parameternya (keyword).
Sementara, di baris 10, angka 5 dan 7 kita inputkan sebagai positional argument
karena kita tuliskan tanpa disertai parameternya (posisi menentukan
bahwa 5 masuk ke a dan 7 masuk ke b).
Kita bisa membuat argumen default untuk sebuah fungsi sehingga saat memanggil fungsi tersebut, kita tidak perlu menuliskan argumennya.
Di kode tersebut, "cm2" adalah default argument sehingga saat memanggil
fungsi luas_segitiga, kita tidak perlu menginputkan argument-nya (baris 7).
Masih ingat dengan parameter end dan sep dalam fungsi print()?
Yap, betul, keduanya adalah parameter dengan default argument.
Argumen defaultnya masing-masing adalah end="\n" dan sep=" ".
Coba
Buatlah fungsi dengan spesifikasi sebagai berikut.
- Nama:
print_karakter - Input:
n(integer), karakters(string) - Output: string
- Fungsi: mengeluarkan string yang terdiri dari karakter
ssebanyakn
Contoh, jika dipanggil print_karakter(5, "%") akan mengoutputkan data
berupa string "%%%%%".
Catatan
Fungsi ini mengoutputkan data dan bukan mencetaknya ke terminal.
Jika ingin mencetak ke terminal, outputnya harus disimpan dalam variabel
dan variabel ini diinputkan ke fungsi print.
Mengimpor Fungsi dari File Lain
Kita bisa menulis definisi fungsi di file tersendiri sehingga fungsi tersebut dapat digunakan
program lain. Misalkan kita simpan fungsi print_karakter di file bernama karakter.py.
Untuk menggunakannya dari file lain, fungsi print_karakter harus diimpor terlebih dahulu.
Catatan
Sintaks untuk mengimpor fungsi dari sebuah file adalah:
File yang diimpor harus berada di direktori yang sama dengan file yang mengimpor.Coba
Tuliskan dua fungsi berikut di satu file dengan nama aritmatika.py.
| aritmatika.py | |
|---|---|
Buat file baru dengan nama kalkulator.py. Lalu lengkapi
program penjumlahan berikut.
| kalkulator.py | |
|---|---|
Variable Scopes
Salah satu aspek yang sangat penting dalam pembuatan fungsi adalah cakupan sebuah variabel. Sebagai contoh, tuliskan kode berikut dan jalankan.
Adakah yang aneh? Variabel x tidak pernah didefinisikan.
Akan tetapi, ketika kita menjalankan program tersebut, tidak
terjadi error. Kenapa?
Bandingkan dengan program berikut.
Apakah program ini error?Bagaimana dengan program berikut.
Bagian kode yang merupakan definisi sebuah fungsi, tidak akan dieksekusi sebelum
fungsi itu dipanggil. Oleh karena itu, variabel x yang belum didefinisikan
tidak menyebabkan error, karena memang bagian kode tersebut belum dijalankan.
Di kode terakhir, program tidak error karena definisi x ada di baris 4
meskipun x pertama kali dituliskan di baris 2.
Dengan kata lain, variabel x yang berasal dari luar fungsi dapat dibaca di dalam
fungsi.
Penting
Variabel yang didefinisikan di luar fungsi, dapat dibaca di dalam fungsi.
Sekarang, perhatikan kode berikut.
Apa yang terjadi saat program dijalankan?
Penting
Variabel yang didefinisikan di dalam fungsi, tidak dapat dibaca dari luar fungsi.
Terakhir, coba perhatikan kode berikut.
Penting
Variabel di luar fungsi, dapat dibaca dari dalam fungsi. Akan tetapi, jika di dalam fungsi ada variabel dengan nama yang sama, variabel di luar fungsi itu akan tertutupi (shadowed). Hal ini disebut dengan variable shadowing.
Tugas Praktikum
-
Lengkapi kode berikut sehingga fungsi
kuadratmengembalikan nilai kuadrat dari argumennya. -
Buatlah fungsi yang menerima sebuah string lalu mengembalikan jumlah karakter dalam string tersebut. Jangan gunakan fungsi bawaan
len(). -
Sebuah robot berada di koordinat x = 0 dan y = 0. Buatlah 4 fungsi:
maju()untuk menambah x satu satuan,mundur()untuk mengurangi x satu satuan,kanan()untuk menambah y satu satuan, dankiri()untuk mengurangi y satu satuan. Gunakan kerangka program berikut. -
Ubahlah kode di nomor sebelumnya. Jadikan keempat fungsi menjadi satu fungsi bernama
gerak(x, y, arah)yang menerima posisi robot dan arah gerak sebagai argumen. Misal, cara memanggilnya adalahgerak(x, y, "maju") -
Buat program kalkulator dengan menu sebagai berikut. Setiap operasi dibuat sebagai fungsi tersendiri.