1 Pendahuluan

Iterasi dan looping sangat penting dalam pemrograman untuk melakukan eksekusi perintah secara berulang.

Iterasi adalah proses eksekusi berulang pada suatu blok kode dalam pemrograman selama kondisi tertentu terpenuhi atau hingga kondisi penghentian tercapai. Dengan iterasi, pengembang dapat mengotomatisasi tugas-tugas repetitif tanpa menulis kode yang sama berulang kali secara manual. Iterasi diimplementasikan melalui mekanisme perulangan (loop), tetapi juga dapat dilakukan secara implisit melalui fungsi-fungsi vektorisasi.

Struktur Looping:
1. for loops
2. while loops
3. repeat-until loops

Sumber : Unikom


2 Penerapan Looping di R

2.1 1. For Loop

for (i in 1:5) {
    print(paste("Iterasi ke-", i))
}
## [1] "Iterasi ke- 1"
## [1] "Iterasi ke- 2"
## [1] "Iterasi ke- 3"
## [1] "Iterasi ke- 4"
## [1] "Iterasi ke- 5"

2.1.1 Flowchart For Loop

Berikut adalah flowchart sederhana yang menggambarkan alur kerja for loop:

## Warning: package 'DiagrammeR' was built under R version 4.3.3

2.2 2. While Loop

i <- 1
while (i <= 5) {
    print(paste("Iterasi ke-", i))
    i <- i + 1
}
## [1] "Iterasi ke- 1"
## [1] "Iterasi ke- 2"
## [1] "Iterasi ke- 3"
## [1] "Iterasi ke- 4"
## [1] "Iterasi ke- 5"

2.2.1 Flowchart While Loop

Berikut adalah flowchart sederhana yang menggambarkan alur kerja while loop:

Catatan:
Flowchart for dan while loop memang tampak mirip karena keduanya melakukan proses iterasi dengan pengecekan kondisi sebelum eksekusi blok kode. Perbedaannya, pada for loop inisialisasi, kondisi, dan increment biasanya ditulis dalam satu baris, sedangkan pada while loop increment dilakukan di dalam blok kode secara eksplisit. Namun, secara alur logika, keduanya serupa sehingga flowchart-nya hampir sama.

2.3 3. Repeat Loop

i <- 1
repeat {
    print(paste("Iterasi ke-", i))
    i <- i + 1
    if (i > 5) {
        break
    }
}
## [1] "Iterasi ke- 1"
## [1] "Iterasi ke- 2"
## [1] "Iterasi ke- 3"
## [1] "Iterasi ke- 4"
## [1] "Iterasi ke- 5"

2.3.1 Flowchart Repeat Loop

Berikut adalah flowchart sederhana yang menggambarkan alur kerja repeat loop:

3 Studi Kasus

Di sebuah rumah sakit umum, seorang dokter spesialis penyakit dalam bertugas memantau suhu tubuh 30 pasien rawat inap setiap hari selama 7 hari berturut-turut. Pemantauan ini penting untuk mendeteksi gejala demam atau tanda awal infeksi, khususnya pada pasien pascaoperasi dan pasien rentan.

Untuk mengolah dan menganalisis data suhu harian tersebut secara efisien, dokter meminta bantuan kepada staff IT rumah sakit. Staff IT diminta menggunakan bahasa pemrograman R untuk melakukan berbagai analisis berbasis data suhu tubuh tersebut.

Secara khusus, staff IT diminta untuk:

  1. Menghitung rata-rata suhu tubuh setiap pasien selama 7 hari.
  2. Menemukan pasien pertama yang mengalami demam ringan (≥37.5°C) selama 4 hari atau lebih.
  3. Menghitung jumlah pasien yang tidak pernah demam selama seminggu, dan menghentikan pencarian setelah menemukan minimal 10 pasien

3.1 Simulasi Data Suhu

# Set seed agar data reproducible (hasil sama saat diulang)

set.seed(123)

# Simulasi suhu berdistribusi normal (mean = 36.9, sd = 0.4) sebanyak 7 hari

suhu <- matrix(round(rnorm(30 * 7, mean = 36.9, sd = 0.4), 2), nrow = 30, ncol = 7)
colnames(suhu) <- paste("Hari", 1:7)
rownames(suhu) <- paste("Pasien", 1:30)

# Tampilkan data suhu mingguan
suhu
##           Hari 1 Hari 2 Hari 3 Hari 4 Hari 5 Hari 6 Hari 7
## Pasien 1   36.68  37.07  37.05  37.30  36.95  37.22  36.47
## Pasien 2   36.81  36.78  36.70  37.12  36.52  37.21  37.41
## Pasien 3   37.52  37.26  36.77  37.00  36.70  37.03  36.76
## Pasien 4   36.93  37.25  36.49  36.65  36.80  36.50  36.55
## Pasien 5   36.95  37.23  36.47  37.44  37.64  36.85  36.81
## Pasien 6   37.59  37.18  37.02  36.66  36.64  36.79  36.82
## Pasien 7   37.08  37.12  37.08  37.77  36.99  37.13  37.34
## Pasien 8   36.39  36.88  36.92  37.51  36.93  36.75  36.93
## Pasien 9   36.63  36.78  37.27  36.81  36.52  37.29  37.20
## Pasien 10  36.72  36.75  37.72  36.49  36.87  36.75  36.70
## Pasien 11  37.39  36.62  36.70  36.62  37.48  37.32  36.99
## Pasien 12  37.04  36.82  35.98  37.00  37.08  36.48  36.77
## Pasien 13  37.06  36.39  37.30  36.80  36.92  36.40  36.94
## Pasien 14  36.94  37.77  36.62  36.76  36.73  38.20  36.54
## Pasien 15  36.68  37.38  36.62  36.52  36.08  36.73  36.38
## Pasien 16  37.61  36.45  37.31  36.88  37.35  37.02  37.70
## Pasien 17  37.10  36.74  36.79  36.59  36.32  37.15  37.14
## Pasien 18  36.11  36.71  36.41  36.23  37.20  36.71  36.40
## Pasien 19  37.18  37.21  36.97  36.75  37.66  37.11  36.66
## Pasien 20  36.71  36.87  36.84  37.27  36.32  37.05  36.43
## Pasien 21  36.47  37.00  36.90  36.67  37.18  36.81  37.78
## Pasien 22  36.81  36.89  37.05  37.14  36.80  36.93  37.42
## Pasien 23  36.49  36.88  36.75  36.25  36.27  36.89  36.79
## Pasien 24  36.61  37.45  37.16  36.88  36.29  37.75  37.12
## Pasien 25  36.65  36.81  36.81  37.11  36.26  36.60  36.73
## Pasien 26  36.23  37.51  37.03  37.02  36.69  36.46  36.71
## Pasien 27  37.24  36.28  37.34  36.94  36.32  36.92  36.58
## Pasien 28  36.96  37.13  37.07  36.64  37.18  37.02  36.66
## Pasien 29  36.44  36.95  36.77  36.56  37.74  37.07  37.56
## Pasien 30  37.40  36.99  37.36  36.49  36.39  36.72  36.88

3.2 Visualisasi Distribusi Data

suhu_vector <- as.vector(suhu)
hist(suhu_vector, breaks=15, probability=TRUE, col="skyblue",
     main="Distribusi Suhu Tubuh Pasien", xlab="Suhu (°C)")
lines(density(suhu_vector), col="darkblue", lwd=2)
abline(v=mean(suhu_vector), col="red", lty=2)

Grafik ini menyajikan distribusi suhu tubuh pasien, menampilkan bagaimana nilai suhu tersebar di antara kelompok pasien yang diamati. Bentuk histogram yang diikuti oleh kurva densitas berwarna biru tua jelas menunjukkan bahwa data suhu tubuh pasien cenderung berdistribusi normal (bell-shaped).

qqnorm(suhu_vector, main="Q-Q Plot Suhu Tubuh")
qqline(suhu_vector, col="red", lwd=2)

Berdasarkan plot Q-Q Suhu Tubuh,sebagian besar titik-titik data cukup mendekati garis lurus. Ini menunjukkan bahwa distribusi data suhu tubuh menyerupai distribusi normal. Namun, ada sedikit penyimpangan di kedua ujungnya, terutama di bagian atas (sekitar 38.0), di mana beberapa titik data berada sedikit di atas garis. Ini bisa mengindikasikan adanya beberapa individu dengan suhu tubuh yang sedikit lebih tinggi atau bahwa distribusi memiliki ekor kanan yang sedikit lebih berat dibandingkan dengan distribusi normal yang sempurna.

3.2.1 a) Rata-rata Suhu Tiap Pasien Menggunakan For Loop

rata_suhu <- numeric(nrow(suhu))
for (i in 1:nrow(suhu)) {
    rata_suhu[i] <- mean(suhu[i, ])
}

# Tampilkan rata-rata suhu tiap pasien dalam bentuk data frame
data.frame(Pasien = rownames(suhu), Rata_Suhu = rata_suhu)
##       Pasien Rata_Suhu
## 1   Pasien 1  36.96286
## 2   Pasien 2  36.93571
## 3   Pasien 3  37.00571
## 4   Pasien 4  36.73857
## 5   Pasien 5  37.05571
## 6   Pasien 6  36.95714
## 7   Pasien 7  37.21571
## 8   Pasien 8  36.90143
## 9   Pasien 9  36.92857
## 10 Pasien 10  36.85714
## 11 Pasien 11  37.01714
## 12 Pasien 12  36.73857
## 13 Pasien 13  36.83000
## 14 Pasien 14  37.08000
## 15 Pasien 15  36.62714
## 16 Pasien 16  37.18857
## 17 Pasien 17  36.83286
## 18 Pasien 18  36.53857
## 19 Pasien 19  37.07714
## 20 Pasien 20  36.78429
## 21 Pasien 21  36.97286
## 22 Pasien 22  37.00571
## 23 Pasien 23  36.61714
## 24 Pasien 24  37.03714
## 25 Pasien 25  36.71000
## 26 Pasien 26  36.80714
## 27 Pasien 27  36.80286
## 28 Pasien 28  36.95143
## 29 Pasien 29  37.01286
## 30 Pasien 30  36.89000

3.2.2 b) Menemukan Pasien Pertama yang Mengalami Demam ≥ 4 Hari dengan While Loop

Pada bagian ini, kita akan mencari pasien pertama yang mengalami demam ringan (suhu ≥ 37.5°C) selama minimal 4 hari dalam seminggu. Proses pencarian dilakukan menggunakan struktur perulangan while loop. Loop akan memeriksa setiap pasien satu per satu hingga menemukan pasien yang memenuhi kriteria tersebut, lalu proses pencarian dihentikan.

i <- 1
hasil <- NULL
while (i <= nrow(suhu)) {
    if (sum(suhu[i, ] >= 37.5) >= 4) {
        hasil <- paste("Pasien", i, "mengalami demam ≥ 4 hari")
        break
    }
    i <- i + 1
}
if (is.null(hasil)) {
    cat("Tidak ada pasien yang mengalami demam ≥ 4 hari\n")
} else {
    cat(hasil, "\n")
}
## Tidak ada pasien yang mengalami demam ≥ 4 hari

3.2.3 c) Mencari Lebih dari 10 Pasien yang Tidak Pernah Demam Menggunakan Repeat Loop

Pada bagian ini, kita akan mencari pasien yang tidak pernah mengalami demam (suhu ≤ 37.5°C) selama seminggu penuh. Proses pencarian dilakukan menggunakan struktur perulangan repeat loop dan akan berhenti setelah ditemukan minimal 10 pasien tanpa demam.

i <- 1
tanpa_demam <- 0
pasien_tanpa_demam <- c()
repeat {
    if (sum(suhu[i, ] > 37.5) == 0) {
        tanpa_demam <- tanpa_demam + 1
        pasien_tanpa_demam <- c(pasien_tanpa_demam, i)
    }
    if (tanpa_demam >= 10 || i >= nrow(suhu)) {
        break
    }
    i <- i + 1
}
cat("Jumlah pasien tanpa demam ditemukan:", tanpa_demam, "\n")
## Jumlah pasien tanpa demam ditemukan: 10
cat("Pasien tanpa demam ditemukan pada pasien ke:", pasien_tanpa_demam, "\n")
## Pasien tanpa demam ditemukan pada pasien ke: 1 2 4 9 11 12 13 15 17 18

3.3 Kesimpulan

  • Pada studi kasus pengukuran suhu tubuh pasien di rumah sakit, iterasi digunakan untuk menganalisis data temperatur pasien secara efektif.
  • Penggunaan for loop dalam mencari rata-rata suhu tubuh setiap pasien rawat inap selama 7 hari, dapat memberikan gambaran umum tentang kondisi kesehatan pasien dalam periode waktu kewaktu.
  • Penggunaan while loop dalam mencari pasien pertama yang mengalami demam (suhu ≥ 37.5°C) selama 4 hari/lebih dalam seminggu, dapat memungkinkan dokter untuk segera mengambil tindakan pada pasien tersebut.
  • Penggunaan repeat loop dalam menemukan 10 pasien yang tidak mengalami demam dalam satu seminggu penuh, dapat menunjukkan adanya stabilitas kondisi pasien tersebut.

4 Penutup

Pemahaman tentang struktur pengulangan di R adalah kunci dalam menyelesaikan masalah analisis data yang memerlukan pengulangan dan evaluasi berulang. Terdapat berbagai jenis struktur perulangan dalam bahasa pemrograman R, diantaranya yakni for loop, while loop, dan repeat loop. Setiap tipe struktur looping ini memiliki fungsi khusus dan metode penerapan yang berbeda. Masing-masing memiliki kegunaan dan cara kerja yang berbeda, namun semuanya berguna untuk melakukan eksekusi perintah secara berulang. Dengan memanfaatkan for loop, while loop, dan repeat loop, proses analisis data dapat dilakukan secara otomatis dengan lebih efisien dan sistematis. Sehingga dengan memahami konsep ini, anda dapat menulis kode yang lebih efisien dan terstruktur.

Dalam Tampilan Website bisa di akses disini: (https://rpubs.com/FahmaZuaf/iterasidanlooping)