Prodi : Teknik Informatika

Lembaga : UIN Maulana Malik Ibrahim Malang

Fungsi

Fungsi merupakan sekumpulan instruksi atau statement yang dapat melakukan tugas khusus. Sebagai contoh fungsi perkalian untuk menyelesaikan operasi perkalian, fungsi pemangkatan hanya untuk operasi pemangkatan, dll.

Pada R terdapat 2 jenis fungsi, yaitu: build in fuction dan user define function. build in fnction merupakan fungsi bawaan R saat pertama kita menginstall R. Contohnya adalah mean(), sum(), ls(), rm(), dll. Sedangkan user define fuction merupakan fungsi-fungsi yang dibuat sendiri oleh pengguna.

Fungsi-fungsi buatan pengguna haruslah dideklarasikan (dibuat) terlebih dahulu sebelum dapat dijalankan. Pola pembentukan fungsi adalah sebagai berikut:

function_name <- function(argument_1, argument_2, ...){
  function body
}

Catatan:

  • function_name : Nama dari fungsi R. R akan menyimpan fungsi tersebut sebagai objek

  • argument_1, argument_2, … : Argument bersifat opsional (tidak wajib). Argument dapat digunakan untuk memberi inputan kepada fungsi

  • function body : Merupakan inti dari fungsi. Fuction body dapat terdiri atas 0 statement (kosong) hingga banyak statement.

  • return : Fungsi ada yang memiliki output atau return value ada juga yang tidak. Jika fungsi memiliki return value maka return value dapat diproses lebih lanjut

Berikut adalah contoh penerapan user define function:

# Fungsi tanpa argument
bilang <- function(){
  print("Hello World!!")
}

# Print
bilang()

## [1] "Hello World!!"

# Fungsi dengan argumen
tambah <- function(a,b){
  print(a+b)
}

# Print
tambah(5,3)

## [1] 8

# Fungsi dengan return value
kali <- function(a,b){
  return(a*b)
}

# Print
kali(4,3)

Debugging

Debugging adalah proses mendeteksi dan menghapus bug atau potential error dalam kode yang dapat menyebabkan sistem tidak dapat berfungsi dengan baik atau crash. Bug sendiri berarti cacat atau kesalahan pada suatu program yang menyebabkan hasil yang tidak sesuai atau tidak terduga.

Biasanya, bug muncul karena adanya kesalahan yang dibuat dari desain program dan source code yang digunakan oleh programmer. Dengan proses debugging ini, maka programmer atau developer akan memastikan bahwa sistem terbebas dari bug sehingga dapat berjalan sesuai dengan spesifikasi yang sudah ditetapkan atau diinginkan.

Berikut beberapa contoh kesalahan atau error yang biasa ditemukan dalam pembuatan kode, yaitu seperti

  • Syntax error

  • Logic Errors

  • Runtime Errors

  • Menggunakan variabel name yang salah di tempat yang salah

  • Memanggil fungsi yang salah, dan lain-lain.

Dalam pengembangan program software, debugging merupakan proses multistep. Di dalamnya mencakup beberapa aktivitas mulai dari mengidentifikasi error atau bug, menemukan sumber bug, dan memperbaiki bug agar program terbebas dari kesalahan. Berikut tahapan yang dilalui dalam proses debugging.

Langkah-langkah dalam Debugging

Untuk mengetahui lebih dalam mengenai apa itu debugging, berikut beberapa tahap atau langkah yang perlu dilakukan. Secara garis besar, berikut langkah-langkah yang akan dilakukan programmer untuk melakukan debugging.

1. Mengidentifikasi error

Programmer akan mengidentifikasi kesalahan yang ada pada sistem yang dikembangkan. Programmer harus bisa menemukan actual error agar perbaikan dapat dilakukan dengan tetap sasaran.

2. Menemukan lokasi error

Setelah mengidentifikasi kesalahan dengan benar, maka tahap selanjutnya adalah memeriksa kode untuk menemukan lokasi dimana error tersebut muncul atau berada.

3. Menganalisis error

Pada tahap ini, programmer akan menganalisis kode yang menimbulkan error. Tahap ini dilakukan untuk mengetahui apakah error yang ada dapat menimbulkan kesalahan di tempat yang lain, serta memastikan apakah ada resiko kerusakan yang muncul saat dilakukan perbaikan.

Bug yang ada pada sistem tidak hanya merusak fungsionalitas yang dimilikinya namun juga dapat menyebabkan kesalahan pada area yang lain. Oleh karena itu, efek tersebut juga perlu dianalisis untuk mengantisipasi peningkatan jumlah bug dalam sistem yang sedang dikembangkan.

4. Membuktikan hasil analisis

Setelah menganalisis actual error, programmer perlu menemukan kemungkinan error yang muncul dalam aplikasi. Pada tahap ini, programmer akan melakukan automated testing.

5. Melakukan perbaikan

Tahap terakhir adalah memperbaiki semua error dan memeriksa apakah semuanya berjalan dengan baik.

Untuk lebih memahami proses debugging, berikut penulis sajikan contoh error pada suatu fungsi dapat terjadi:

f1 <- function(x){
  xsq <- x^2
  xsqminus4 <- xsq - 4
  print(xsqminus4)
  log(xsqminus4-4)
}

f1(6:1)

## [1] 32 21 12  5  0 -3

## Warning in log(xsqminus4 - 4): NaNs produced

## [1] 3.332 2.833 2.079 0.000   NaN   NaN

Untuk mengecek error yang terjadi dari sintaks tersebut, kita dapat menggunakan fungsi debug(). Pembaca tinggal memasukkan nama fungsi kedalam fungsi debug(). Fungsi tersebut akan secara otomatis akan menampilkan hasil samping dari pengaplikasian fungsi f1() untuk melihat sumber atau tahapan dimana error mulai muncul.

debug(f1)
f1(1:6)

## debugging in: f1(1:6)
## debug at <text>#1: {
##     xsq <- x^2
##     xsqminus4 <- xsq - 4
##     print(xsqminus4)
##     log(xsqminus4 - 4)
## }
## debug at <text>#2: xsq <- x^2
## debug at <text>#3: xsqminus4 <- xsq - 4
## debug at <text>#4: print(xsqminus4)
## [1] -3  0  5 12 21 32
## debug at <text>#5: log(xsqminus4 - 4)

## Warning in log(xsqminus4 - 4): NaNs produced

## exiting from: f1(1:6)

## [1]   NaN   NaN 0.000 2.079 2.833 3.332

Berdasarkan hasil debugging, NaN (missing value) muncul pada tahapan debug ke-4 (pembaca dapat melakukan enter terus menerus sampai proses debug selesai). Hal ini disebabkan karena terdapat nilai negatif pada objek xsqminu4-4 yang selanjutnya dilakukan transformasi logaritmik. Untuk menghentikan proses debugging pembaca dapat mengetikkan undebug(f1).

REFERENSI

https://bookdown.org/moh_rosidi2610/Metode_Numerik/programmingandfunction.html#fungsi

https://www.logique.co.id/blog/2020/09/23/apa-itu-debugging/