title: “Pembahasan Pertemuan 11” author: “Nining Rahmayanti” date: “2026-11-06” output: html_document # PEMBAHASAN PERTEMUAN 11
lat_x <- c(12, 7, 19, 7, 25)
print(lat_x)
## [1] 12 7 19 7 25
seq_boolean <- function(x, target) {
if (anyNA(x) || length(target) != 1 || is.na(target)) {
stop("Input tidak boleh mengandung NA")
}
ketemu <- FALSE
posisi <- NA
for (i in seq_along(x)) {
if (x[i] == target) {
ketemu <- TRUE
posisi <- i
break
}
}
return(posisi)
}
print(seq_boolean(lat_x, 7))
## [1] 2
Hasil: Posisi 2. Variabel ketemu berubah menjadi TRUE ketika elemen kedua diperiksa.
seq_tanpa_boolean <- function(x, target) {
if (anyNA(x) || length(target) != 1 || is.na(target)) {
stop("Input tidak boleh mengandung NA")
}
for (i in seq_along(x)) {
if (x[i] == target) {
return(i)
}
}
return(NA)
}
print(seq_tanpa_boolean(lat_x, 8))
## [1] NA
print(seq_tanpa_boolean(numeric(), 8))
## [1] NA
Hasil: Keduanya menghasilkan NA karena target tidak ditemukan dan larik kosong tidak memiliki elemen.
seq_terurut <- function(x, target) {
if (anyNA(x) || is.unsorted(x)) {
stop("Data harus terurut menaik")
}
for (i in seq_along(x)) {
if (x[i] == target) {
return(i)
}
if (x[i] > target) {
break
}
}
return(NA)
}
print(seq_terurut(c(5, 10, 15, 20, 25), 12))
## [1] NA
Hasil: NA. Pencarian berhenti ketika menemukan angka 15 karena lebih besar dari target 12.
seq_sentinel <- function(x, target) {
if (anyNA(x) || length(target) != 1 || is.na(target)) {
stop("Input tidak boleh mengandung NA")
}
data_asli <- x
x_tambah <- c(x, target)
for (i in seq_along(x_tambah)) {
if (x_tambah[i] == target) {
if (i <= length(data_asli)) {
return(i)
} else {
return(NA)
}
}
}
}
lat_awal <- lat_x
print(seq_sentinel(lat_x, 99))
## [1] NA
print(identical(lat_x, lat_awal))
## [1] TRUE
Hasil: NA dan TRUE. Sentinel berada pada posisi 6 dan data asli tidak berubah.
print(match(7, lat_x))
## [1] 2
print(which(lat_x == 7))
## [1] 2 4
Hasil: Match menghasilkan 2, sedangkan which menghasilkan posisi 2 dan 4.
print(
tryCatch(
seq_boolean(c(12, NA, 19), 19),
error = function(e) conditionMessage(e)
)
)
## [1] "Input tidak boleh mengandung NA"
Hasil: Fungsi menolak data yang mengandung NA karena tidak memenuhi ketentuan masukan.