Dosen Pengampu : Prof.Dr. Suhartono M.kom

Jurusan Teknik Informatika

Universitas Islam Negeri Maulana Malik Ibrahim Malang

Decision Making (Percabangan)

Decicion Making atau sering disebut sebagai if then else statement merupakan bentuk percabagan yang digunakan manakala kita ingin agar program dapat melakukan pengujian terhadap syarat kondisi tertentu.

Berikut Daftar Percabangan Pada Bahasa R :

if statement -> if statement hanya terdiri atas sebuah ekspresi Boolean, dan diikuti satu atau lebih statement
if…else statement -> if else statement terdiri atas beberapa buah ekspresi Boolean. Ekspressi Boolean berikutnya akan dijalankan jika ekspresi *Boolan sebelumnya bernilai FALSE
switch statement -> switch statement digunakan untuk mengevaluasi sebuah variabel beberapa pilihan

1. if statement

Pola if statement -> Condition -> True or False -> Condition Code 

Berikut adalah contoh penerapan if statement:

x <- c(1:5)
if(is.vector(x)){
  print("x adalah sebuah vector")
}
## [1] "x adalah sebuah vector"

2. if else statement

Pola dari if else statement -> Condition -> True (If code) or False (else code)

Berikut adalah contoh penerapan if else statement:

x <- c("Andi","Iwan", "Adi")
if("Rina" %in% x){
  print("Rina ditemukan")
} else if("Adi" %in% x){
  print("Adi ditemukan")
} else{
  print("tidak ada yang ditemukan")
}
## [1] "Adi ditemukan"

3. Switch Statement

Pola dari switch statement -> Condition -> code blok 1, code blok 2, code blok 3,.... -> code blok N

Berikut adalah contoh penerapan switch statement:

y = 3

x = switch(
  y,
  "Selamat Pagi",
  "Selamat Siang",
  "Selamat Sore",
  "Selamat Malam"
)

print(x)
## [1] "Selamat Sore"

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 function 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.

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)
## [1] 12

Debugging

Sering kali fungsi atau sintaks yang kita tulis menghasilkan error sehingga output yang kita harapkan tidak terjadi. Debugging merupakan langkah untuk mengecek error yang terjadi. Untuk lebih memahami proses debugging, berikut di 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.332205 2.833213 2.079442 0.000000      NaN      NaN
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.000000 2.079442 2.833213 3.332205

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.

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#loop