Buatlah pernyataan pengulangan untuk menampilkan nilai ganjil
di antara 1 sampai dengan 25. Gunakan pernyataan if untuk
memeriksa apakah suatu bilangan adalah ganjil.
Bilangan ganjil (odd number) adalah bilangan bulat yang
tidak habis dibagi 2, artinya apabila bilangan tersebut dibagi 2 akan
menghasilkan sisa 1. Dalam R, operator modulo %% digunakan
untuk menghitung sisa hasil bagi suatu bilangan. Ekspresi
i %% 2 menghasilkan nilai 0 apabila i adalah
bilangan genap, dan menghasilkan nilai 1 apabila i adalah
bilangan ganjil. Oleh karena itu, kondisi i %% 2 != 0
bernilai TRUE jika dan hanya jika i adalah
bilangan ganjil.
Perulangan for digunakan untuk mengiterasi setiap
bilangan bulat dari 1 hingga 25 secara berurutan. Pada setiap iterasi,
pernyataan if memeriksa kondisi keganjilan; apabila kondisi
terpenuhi, bilangan tersebut dicetak menggunakan fungsi
cat.
## Bilangan ganjil antara 1 sampai 25:
## 1 3 5 7 9 11 13 15 17 19 21 23 25
Output menampilkan 13 bilangan ganjil: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, dan 25. Proses kerjanya sebagai berikut:
Perulangan for menginisialisasi variabel
i mulai dari 1 dan bertambah 1 pada setiap iterasi hingga
mencapai 25, sehingga total iterasi adalah 25 kali.
Pada setiap iterasi, pernyataan if (i %% 2 != 0)
mengevaluasi apakah sisa bagi i terhadap 2 tidak sama
dengan 0.
Apabila kondisi bernilai TRUE (bilangan ganjil),
fungsi cat(i, "") mencetak nilai i diikuti
spasi tanpa berpindah baris.
Apabila kondisi bernilai FALSE (bilangan genap),
blok if dilewati dan tidak ada yang dicetak — iterasi
langsung berlanjut ke nilai i berikutnya.
Perintah cat("\n") di akhir berfungsi memindahkan
kursor ke baris baru setelah semua bilangan ganjil selesai
dicetak.
Sebagai contoh: ketika i = 4, maka
4 %% 2 = 0, kondisi != 0 bernilai
FALSE, sehingga angka 4 tidak dicetak. Ketika
i = 5, maka 5 %% 2 = 1, kondisi
!= 0 bernilai TRUE, sehingga angka 5
dicetak.
Buatlah vektor v yang berisi 20 nilai normal
acak yang dibangkitkan dengan fungsi rnorm. Selanjutnya
tuliskan pernyataan pengulangan untuk mengalikan nilai elemen ke-i dari
v dengan nilai elemen ke-i dari v, yaitu
v(i) × v(i). Perkalian dilakukan untuk i = 1, 2, …, 5.
Kemudian tampilkan hasil perkalian tersebut untuk setiap nilai
i.
Fungsi rnorm(n) membangkitkan sebanyak n
nilai acak yang berdistribusi normal standar, yaitu
distribusi normal dengan nilai rata-rata (μ) = 0 dan simpangan baku (σ)
= 1. Setiap kali rnorm dipanggil tanpa
set.seed, nilai yang dihasilkan akan berbeda-beda karena
bersifat acak. Perintah set.seed(42) digunakan untuk
mengunci titik awal pembangkitan bilangan acak (random seed),
sehingga hasil yang diperoleh selalu sama dan dapat direproduksi oleh
siapa pun.
Perkalian v[i] * v[i] secara matematis setara dengan
\(v_i^2\) (kuadrat dari elemen ke-i),
karena sebuah bilangan dikalikan dengan dirinya sendiri menghasilkan
kuadratnya. Perulangan for (i in 1:5) membatasi operasi
hanya pada lima elemen pertama vektor v.
# Membangkitkan vektor v dengan 20 nilai normal acak
set.seed(42) # agar hasil dapat direproduksi
v <- rnorm(20)
cat("Isi vektor v (20 nilai acak normal):\n")
print(v)## Isi vektor v (20 nilai acak normal):
## [1] 1.37095845 -0.56469817 0.36312841 0.63286260 0.40426832 -0.10612452
## [7] 1.51152200 -0.09465904 2.01842371 -0.06271410 1.30486965 2.28664539
## [13] -1.38886070 -0.27878877 -0.13332134 0.63595040 -0.28425292 -2.65645542
## [19] -2.44046693 1.32011335
cat("\nHasil perkalian v[i] x v[i] untuk i = 1 sampai 5:\n")
for (i in 1:5) {
hasil <- v[i] * v[i]
cat(sprintf("v[%d] x v[%d] = %.6f x %.6f = %.6f\n",
i, i, v[i], v[i], hasil))
}##
## Hasil perkalian v[i] x v[i] untuk i = 1 sampai 5:
## v[1] x v[1] = 1.370958 x 1.370958 = 1.879527
## v[2] x v[2] = -0.564698 x -0.564698 = 0.318884
## v[3] x v[3] = 0.363128 x 0.363128 = 0.131862
## v[4] x v[4] = 0.632863 x 0.632863 = 0.400515
## v[5] x v[5] = 0.404268 x 0.404268 = 0.163433
Vektor v berisi 20 nilai acak berdistribusi normal
standar yang dicetak menggunakan print(v), memperlihatkan
nilai-nilai seperti 1.3710, -0.5647, 0.3631, dan seterusnya. Tanda
negatif pada beberapa elemen adalah wajar karena distribusi normal
standar memiliki rentang nilai dari -∞ hingga +∞ dengan mayoritas nilai
berada di antara -3 dan 3.
Proses kerja perulangan untuk menghasilkan output perkalian adalah sebagai berikut:
Perulangan for (i in 1:5) mengiterasi nilai
i dari 1 hingga 5 (5 iterasi).
Pada setiap iterasi, nilai v[i] diambil menggunakan
indeks [i], kemudian dikalikan dengan dirinya sendiri:
hasil <- v[i] * v[i].
Fungsi sprintf memformat output agar nilai
ditampilkan dengan 6 angka desimal dan dalam susunan yang rapi:
v[i] x v[i] = (nilai) x (nilai) = hasil.
Perlu diperhatikan bahwa perkalian bilangan negatif dengan
dirinya sendiri menghasilkan bilangan positif, misalnya,
v[2] = -0.564698, sehingga
(-0.564698) × (-0.564698) = 0.318884.
Setelah mempelajari materi sesi ini, buatlah 2 contoh Program R serta lampirkan hasil output R tersebut.
whileProgram ini menghitung nilai faktorial dari suatu bilangan bulat
positif menggunakan perulangan while. Faktorial dari n
didefinisikan sebagai \(n! = 1 \times 2 \times
3 \times \cdots \times n\). Sebagai contoh, \(7! = 1 \times 2 \times 3 \times 4 \times 5 \times
6 \times 7 = 5040\).
# Menghitung faktorial suatu bilangan menggunakan while
n <- 7
f <- 1
i <- 1
while (i <= n) {
f <- f * i
i <- i + 1
}
cat(sprintf("Faktorial dari %d adalah: %d! = %d\n", n, n, f))## Faktorial dari 7 adalah: 7! = 5040
Output yang dihasilkan adalah:
Faktorial dari 7 adalah: 7! = 5040.
Proses kerja program:
Variabel f diinisialisasi dengan nilai 1 sebagai
nilai identitas perkalian (mengalikan dengan 1 tidak mengubah
nilai).
Variabel i dimulai dari 1 sebagai pencacah yang
sekaligus menjadi faktor pengali.
Perulangan while (i <= n) berjalan selama
i masih kurang dari atau sama dengan n (= 7).
Setiap iterasi mengalikan f dengan nilai i
saat itu, lalu i dinaikkan 1.
Iterasi berjalan: f = 1×1 = 1 ->
f = 1×2 = 2 -> f = 2×3 = 6 ->
f = 6×4 = 24 -> f = 24×5 = 120 ->
f = 120×6 = 720 ->
f = 720×7 = 5040.
Ketika i menjadi 8 (melampaui n = 7),
kondisi i <= n bernilai FALSE dan
perulangan berhenti. Nilai akhir f = 5040 adalah hasil
\(7!\).
if...elseProgram ini mengklasifikasikan nilai ujian mahasiswa ke dalam
kategori huruf (A, B, C, D, atau E) menggunakan pernyataan
if...else bertingkat (nested if…else) di dalam
perulangan for.
# Data nilai ujian mahasiswa
nama <- c("Andi", "Budi", "Citra", "Dini", "Eko")
nilai <- c(85, 72, 60, 45, 91)
cat("Hasil Klasifikasi Nilai Mahasiswa:\n")
cat(sprintf("%-10s %-6s %-6s\n", "Nama", "Nilai", "Grade"))
cat(strrep("-", 28), "\n")
for (i in 1:length(nama)) {
n <- nilai[i]
if (n >= 80) {
grade <- "A"
} else if (n >= 70) {
grade <- "B"
} else if (n >= 60) {
grade <- "C"
} else if (n >= 50) {
grade <- "D"
} else {
grade <- "E"
}
cat(sprintf("%-10s %-6d %-6s\n", nama[i], n, grade))
}## Hasil Klasifikasi Nilai Mahasiswa:
## Nama Nilai Grade
## ----------------------------
## Andi 85 A
## Budi 72 B
## Citra 60 C
## Dini 45 E
## Eko 91 A
Proses kerja program:
nama dan nilai dibuat berisi
data 5 mahasiswa.sprintf dengan format %-10s (string
rata kiri 10 karakter) dan %-6d (integer rata kiri 6
karakter) digunakan untuk menghasilkan tampilan tabel yang rapi.for (i in 1:length(nama)) mengiterasi setiap
mahasiswa dari indeks 1 hingga 5.n <- nilai[i] diperiksa
melalui kondisi if...else bertingkat secara berurutan dari
atas ke bawah:
n >= 80 -> Grade A (Andi: 85, Eko: 91)n >= 70 -> Grade B (Budi: 72)n >= 60 -> Grade C (Citra: 60)n >= 50 -> Grade D (tidak ada yang memenuhi)else -> Grade E (Dini: 45, tidak memenuhi semua
kondisi di atas)n >= 50 tidak terpenuhi dan program masuk ke blok
else.Hardhono, A.P., Suhartono, dan Sitanggang, I.S. 2022. Komputer 1 - Modul 9: Pengendalian eksekusi program (Edisi 2). Tangerang Selatan: Universitas Terbuka. https://pustaka.ut.ac.id/lib/sats4111-komputer-i-edisi-2/
Venables, W.N., Smith, D.M. and R Development Core Team. 2026. An Introduction to R: Notes on R: A Programming Environment for Data Analysis and Graphics, Version 4.7.0. https://cran.usk.ac.id/doc/manuals/r-devel/R-intro.pdf
Wickham, H. and Grolemund, G. 2017. R for Data Science. O’Reilly Media. https://r4ds.had.co.nz