Bab 4 Kondisi dan Perulangan

4.1 Tujuan Pembelajaran
CPMK 4
Mahasiswa mampu menganalisis konsep kondisi dan perulangan dalam bahasa R.
Sub-CPMK 4
Mahasiswa mampu menerapkan pengambilan keputusan dengan fungsi IF, IF-ELSE, SWITCH, perulangan dengan fungsi FOR, WHILE, REPEAT, dan mengelola perulangan dengan NEXT, RETURN, BREAK.
Deskripsi Isi Bahan Ajar
Bab 4 ini membahas tentang:
- Struktur Kontrol di R
- Kondisi IF
- Kondisi IF-ELSE
- Kondisi SWITCH
- Perulangan FOR
- Perulangan WHILE
- Perulangan REPEAT
- Pernyataan NEXT
- Pernyataan RETURN
- Pernyataan BREAK
Waktu Pembelajaran
Alokasi Waktu = 3 x 50 menit (3 SKS)
| Kegiatan | Alokasi Waktu |
|---|---|
| Ceramah dan Diskusi Interaktif | 50 menit |
| Praktik Kondisi dan Perulangan | 50 menit |
| Konsultasi Praktik R | 50 menit |
| Presentasi individu | 50 menit |
Petunjuk Penggunaan Bahan Ajar
Langkah-langkah pembelajaran.
Pelajari struktur kontrol di R, pengambilan keputusan dengan IF, IF-ELSE, SWITCH, perulangan dengan FOR, WHILE, REPEAT, dan pernyataan NEXT, RETURN, BREAK. Terapkan pengetahuan Anda pada contoh-contoh kasus yang telah disajikan secara individu kolaboratif. Konsultasikanlah kesulitan Anda selama praktik pada pengajar mata kuliah ini. Anda bisa bekerja dengan IDE RStudio secara offline maupun online.Sumber Belajar yang Dibutuhkan.
Laptop (Notebook), jaringan internet
Tujuan Akhir (Performance Objective)
Setelah menyelesaikan modul ini, mahasiswa mampu memahami struktur kontrol di R, pengambilan keputusan dengan IF, IF-ELSE, SWITCH, perulangan dengan FOR, WHILE, REPEAT, dan pernyataan NEXT, RETURN, BREAK di R.
4.2 Struktur Kontrol di R
Pada bab-bab sebelumnya, kita telah berinteraksi dengan tipe data R dan variabel. Sekarang kita akan menggunakannya untuk pengambilan keputusan melalui kondisi perulangan di R. Kita awali dengan mempelajari struktur dan sintaks yang mengatur aliran perulangan di program R.
Dalam bahasa R dan bahasa pemrograman lainnya, ada banyak kasus pekerjaan dimana kita membutuhkan komputer untuk melakukan komputasi perulangan untuk tujuan tertentu. Fungsi R seperti if dan switch bisa digunakan untuk melakukan kode program berbasis kondisi dalam bahasa lainnya juga. Salah satu karakteristik dari bahasa R adalah implementasi kondisi tervektorisasi seperti fungsi ifelse(). Pada bab ini, kita akan lebih sering menemukan pernyataan kondisional ini yang bisa ditulis oleh kita untuk melakukan perulangan kode.
Pengambilan keputusan (decision making) merupakan salah satu fitur utama yang bisa difasilitasi oleh bahasa pemrograman. Setiap bahasa pemrograman pasti memiliki fitur perulangan. Fitur ini memberikan fungsi untuk mengubah susunan eksekusi kode berdasarkan kondisi yang ditentukan. Struktur ini dapat menggunakan semua kombinasi yang mungkin satu sama lain untuk skenario pekerjaan berbeda dan implementasinya. Cara untuk mempelajari lebih lanjut tentang kombinasi dan hasilnya adalah dengan berlatih untuk membuat program tersebut.
R memberikan beberapa standar kontrol sebagai persyaratan. Sebuah ekspresi terdiri dari beberapa pernyataan yang dapat ditutup dalam kurung kurawal (bracket) {}. Ketika memungkinkan, kita lebih baik untuk menggunakan fungsi built-in R daripada menggunakan struktur kontrol. Hal ini memfasilitasi aliran eksekusi program yang dikontrol di dalam fungsi tersebut. Struktur kontrol mendefinisikan aliran program. Sebuah kebutusan kemudian dibuat setelah mengevaluasi variabel yang menjadi kriteria.
Terdapat banyak situasi dimana kita tidak ingin menjalankan satu sintaks setelah yang lain. Kita sebenanya harus mengendalikan aliran eksekusi program dan juga berarti bahwa kita hanya ingin menjalankan kode program ketika syarat dan kondisinya terpenuhi. Pada kasus tersebut, pernyataan aliran kontrol harus diimplementasikan dalam program R. Terdapat struktur umum tentang bagaimana aliran kontrol dapat dilakukan dengan menggunakan pernyataan kondisional dalam program R. Pernyataan decision-making juga bisa digunakan sebagai pernyataan pilihan.
Berikut ini adalah tabel pernyataan kontrol dalam R.
| Pernyataan | Deskripsi | Syntax |
|---|---|---|
IF |
Suatu blok pernyataan yang dieksekusi ketika kondisi boolean terpenuhi | if(kondisi boolean){ pernyatan eksekusi} |
IF-ELSE |
Terdapat dua jenis eksekusi. Ketika suatu kondisi boolean terpenuhi maka pernyataan pertama dieksekusi. Untuk kondisi lainnya (else) maka pernyataan kedua dieksekusi. | if(kondisi 1){ pernyataan1 } else if(kondisi 2) { } |
IF-ELSE-IF |
Penerapan lanjutan dari IF-ELSE ketika lebih banyak kondisi yang ingin digunakan. | if(kondisi 1){ pernyataan1 } else if(kondisi 2) { pernyataan2 } else if(kondisi 3) { pernyataan3 } else { pernyataan4 } |
SWITCH |
Evaluasi pernyataan terhadap banyak kasus untuk identifikasi blok kode yang dieksekusi. | switch(pernyataan, kasus_1, kasus_2, ... , kasus_N) |
FOR |
Perulangan tugas program dalam urutan tertentu sesuai kondisi yang telah ditentukan. | for(nilai dalam vektor){ pernyataan } |
WHILE |
R mengevaluasi kondisi perulangan. Perulangan while akan berjalan berulang sampai kondisi terpenuhi. | while(kondisi){ pernyataan } |
REPEAT |
Berfungsi di dalam perulangan (repeat, for, while) untuk memberhentikan iterasi dan kontrol di luar aliran loop. | repeat{ pernyataan ... ... if(kondisi){ break } } |
BREAK |
Berfungsi untuk mengulangi blok kode pernyataan lagi dan lagi. Pada perulangan repeat, tidak ada kondisi periksa untuk keluar dari perulangan. | break |
NEXT |
Melompat kepada kondisi yang berlaku untuk perulangan sekarang. Sintaks ini untuk “skip” iterasi sekarang tanpa mengganggunya. | next |
RETURN |
Membutuhkan beberapa fungsi untuk melakukan pemrosesan dan mengembalikan hasilnya. | return(kondisi) |
Selanjutnya kita akan mendiskusikan masing-masing pernyataan struktur kontrol di atas satu per satu secara singkat disertai dengan contoh penerapannya.
4.3 Kondisi IF
Salah satu pengambilan keputusan sederhana adalah fungsi IF. Fungsi ini mungkin familiar juga ketika kita menggunakan Microsoft Excel. Fungsi IF di R mengevaluasi nilai logika yaitu berupa sebuah vektor yang memiliki panjang 1. Kemudian fungsi IF akan mengeksekusi pernyataan berikutnya yang berlaku dalam vektor tersebut.
Syntax:
if(boolean_expression){
// here you can write your code, the statement only execute when your expression is TRUE
}
Jika kondisi Boolean dipenuhi (TRUE), blok kode di dalam pernyataan IF akan dieksekusi. Jika kondisi Boolean tidak dipenuhi (FALSE), blok kode setelah akhir dari pernyataan IF (setelah kurung kurawal) akan dieksekusi. Mari kita lihat contoh berikut.
Contoh:
## [1] "Value is 1" "Value is 2" "Value is 3" "Value is 4" "Value is 5"
## [6] "Value is 6" "Value is 7" "Value is 8" "Value is 9" "Value is 10"
## [1] "b is greater than a"
## 18 is a smaller number.
## The block is succesfully execute!
4.4 Kondisi IFELSE
Fungsi ifelse() dalam R digunakan untuk menjalankan satu atau dua fungsi lainnya yang diterapkan pada suatu vektor, tergantung pada nilai dari suatu kondisi logika.
Contoh:
## [1] 3 2 1 0 NA NA
4.5 Kondisi IF-ELSE
Kondisi IF-ELSE adalah sebuah pernyataan pengambilan keputusan dengan “IF” yang diikuti dengan pernyataan “ELSE”. Bagian pernyataan “ELSE” akan dijalankan ketika kondisi logika bernilai “FALSE”.
Syntax:
if(Boolean expression){
# here is the statement of "if" code
} else {
# here is the statement of "else" code
}
Contoh:
a <- 10
if(a < 20){
cat("Value of a is less than 20")
} else {
cat("Value of a is not less than 20")
}## Value of a is less than 20
x <- c("We","our", "learning","R","Programming","concepts")
if("R" %in% x) {
print("key is found")
} else {
print("key is not found")
}## [1] "key is found"
x <- 24
if (x < 18) {
print("Age is under 18")
if (x > 20) {
print("and above 10!")
} else {
print("but not above 10.")
}
} else {
print("Age is above 18.")
}## [1] "Age is above 18."
4.6 Kondisi SWITCH
Dalam R, fungsi SWITCH mengevaluasi nilai dari suatu variabel/ ungkapan apakah sama dengan beberapa nilai kasus untuk mengidentifikasi blok kode mana yang akan dieksekusi.
## [1] "Monday"
## [1] "Jazz"
## [1] "Lavi"
4.7 Perulangan FOR
Perulangan FOR digunakan untuk melakukan iterasi terhadap suatu vektor. Mirip seperti perulangan WHILE di bawah. Perbedaanya fungsi IF tidak memeriksa kondisi sebelum blok kode/ pernyataan dieksekusi, tetapi fungsi IF memeriksa kondisi setelah dilakukan eksekusi.
Syntax:
for(initialization; expression; statement){
// statements inside the body of the loop
}
Contoh:
## [1] "PHP"
## [1] "R"
## [1] "Python"
## [1] "Ruby"
## [1] "C++"
## [1] "C"
4.8 Perulangan WHILE
Mirip seperti perulangan FOR, perulangan WHILE bedanya adalah akan memeriksa kondisi logika sebelum menjalankan perulangan
Contoh:
## 3
## 5
## 7
## 9
## 11
## 13
## 15
## 17
## 19
## 21
## 23
## 25
4.9 Perulangan REPEAT
Perulangan REPEAT akan mengeksekusi blok kode sampai menemukan kondisi eksplisit untuk keluar perulangan dan berhenti. Iterasi perulangan tidak memiliki kontrol kondisi, oleh karena itu kita harus mendefinisikan kondisi eksplisit untuk memberhentikan perulangan. Kalau tidak, iterasi akan berulang sampai tak terhingga.
Syntax:
repeat{
\\ statements
}
Contoh:
## [1] "R Programming Language"
## [1] "R Programming Language"
## [1] "R Programming Language"
4.10 Pernyataan NEXT
Dalam R, fungsi NEXT berfungsi untuk melompati perulangan yang sedang berjalan ketika suatu kondisi terpenuhi. Ketika terdapat NEXT di dalam perulangan, komputer akan melompatinya dan melanjutkan perulangan sampai selesai. Fungsi NEXT tidak akan memberhentikan perulangan.
Syntax:
if(condition){
next
}
Contoh:
## [1] 1
## [1] 3
## [1] 4
## [1] 5
count <- 1
while(count<=10){
count <- count+1
if(count==6){
print("6 is skipped")
next
}
print("Inside Loop")
}## [1] "Inside Loop"
## [1] "Inside Loop"
## [1] "Inside Loop"
## [1] "Inside Loop"
## [1] "6 is skipped"
## [1] "Inside Loop"
## [1] "Inside Loop"
## [1] "Inside Loop"
## [1] "Inside Loop"
## [1] "Inside Loop"
4.11 Pernyataan RETURN
Ketika kita sedang membuat suatu fungsi (disini tidak akan dibahas detail, materi fungsi ada di 5) dan memproses perulangan, kita ingin mengembalikan nilai sesuai dengan input fungsi yang dimasukkan. Tugas pengembalian ini bisa dilakukan oleh pernyataan return() di dalam fungsi R dengan mengikuti sintaks di bawah ini.
Syntax:
return(expression)
Contoh:
Definisikan fungsi yang kita namakan sebagai check().
check <- function(x){
if(x<0){
result <- "Negative"
} else if (x>0) {
result <- "Positive"
} else {
result <- "Zero"
}
return(result)
}Kita gunakan fungsi check() dimana argumennya adalah numeric.
## [1] "Negative"
## [1] "Zero"
## [1] "Positive"
4.12 Pernyataan BREAK
Kita bisa menginterupsi atau memberhentikan eksekusi perulangan dengan pernyataan BREAK. Pernyataan ini sering digunakan dengan konstruksi kondisi IF-ELSE. Ketika pernyataan BREAK digunakan di dalam loop bersangkar, kita dapat memberhentikan perulangan yang sedang berlangsung sesuai dengan kondisi yang diinginkan.
Contoh:
## 1
## 3
## 5
## 7
## 9
## 11
## 13
Penjelasan: Pertama \(x=1\) karena \(x<y\) adalah TRUE maka perulangan WHILE dijalankan dan cat(x=1), "\n" dilakukan. Perulangan dilanjutkan dengan perhitungan x=x+2 dan iterasi berjalan terus menerus sampai kondisi BREAK terpenuhi yaitu x==15.
count <- 0
while(count<=10){
count <- count+1
cat("Loop is running at iteration", count, "\n")
if(count == 5){
break
}
}## Loop is running at iteration 1
## Loop is running at iteration 2
## Loop is running at iteration 3
## Loop is running at iteration 4
## Loop is running at iteration 5
Penjelasan: Pertama, variabel count bernilai 0. Perulangan WHILE dieksekusi dalam kondisi sampai kurang dari 10. Variabel count kemudian berjalan perulangannya dengan persamaan count+1 pada setiap iterasi satu per satu. Kemudian, kita memiliki pernyataan yang mengevaluasi apakah count sudah kurang dari 5, jika TRUE, maka perulangan berhenti. Setiap perulangan kita tampilkan cat() untuk merekam perulangan yang telah terjadi dalam setiap tahap.
4.13 Tugas (Project-Based Learning)
Kerjakanlah tugas berikut secara individu dan presentasikan hasilnya di akhir pembelajaran!
- Buatlah sebuah file R Notebook (.Rmd) untuk mengaplikasikan contoh kondisi, pernyataan, dan perulangan yang telah didemonstrasikan pada Bab 4 ini. Gunakan nama variabel, operator, nilai, dan angka yang berbeda sesuai dengan kreativitas Anda!
- Selain bereksperimen dengan kode R. Buatlah interpretasi terhadap setiap kode seolah-olah Anda menulis catatan pada R Notebook. Gunakan pemikiran sendiri untuk membuatnya. Presentasikan hasil Anda dan tugas .Rmd ini dikumpulkan pada Google Classroom dalam format .Rmd!
4.14 Rubrik Penilaian Pembelajaran
Nama Mahasiswa : NIM :
| Aspek | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| Aktivitas pemrograman | … | … | … | … |
| Kelancaran tugas | … | … | … | … |
| Kualitas pekerjaan | … | … | … | … |
| Keterbukaan masukan | … | … | … | … |
Definisi
- Aktivitas pemrograman mengukur keterlibatan mahasiswa dalam proses mengikuti pelajaran.
- Kelancaran tugas mengukur sejauh mana mahasiswa mampu mengikuti prosedur pemrograman yang telah dicontohkan dalam buku ini.
- Kualitas pekerjaan mengukur kemampuan mahasiswa dalam menggunakan komputernya untuk melakukan pemrograman dengan R.
- Keterbukaan masukan mengukur sejauh mana kualitas presentasi mahasiswa dan menerima masukan dan tanggapan dari temannya yang lain.
4.15 Penutup
Dalam bab ini, kita telah mempelajari berbagai macam cara untuk mengolah kondisi atau persyaratan dalam mengambil keputusan dengan IF dan IF-ELSE. Selain itu kita juga sudah mempelajari konsep perulangan dengan fungsi FOR, WHILE, REPEAT serta menerapkan beberapa pernyataan seperti NEXT, BREAK, RETURN dalam mengelola komputasi perulangan.