1 Dataset
| ID | Nama | Usia | Gaji | Posisi | Kinerja |
|---|---|---|---|---|---|
| 1 | Bagas | 25 | 5000 | Staff | Bagus |
| 2 | Joan | 30 | 7000 | Supervisor | Sangat bagus |
| 3 | Alya | 27 | 6500 | Staff | Rata-rata |
| 4 | Dwi | 35 | 10000 | Manajer | Bagus |
| 5 | Nabil | 40 | 12000 | Direktur | Sangat bagus |
2 Conditional Statement
Tentukan tingkat bonus berdasarkan kinerja karyawan :
Sangat bagus => 20% gaji
Bagus => 10 % gaji
Rata-rata => 5% gaji
Tugas:
Tulis Program untuk menghitung bonus setiap karyawan
Menampilkan output dalam format ini : “Name: Bagas, Bonus: 500”
# Data karyawan
karyawan <- data.frame(
Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Gaji = c(5000, 7000, 6500, 10000, 12000),
Pertunjukan = c("Bagus", "Sangat bagus", "Rata-rata", "Bagus", "Sangat bagus")
)
# Aturan bonus berdasarkan kinerja
bonus_persen <- c("Sangat bagus" = 0.20, "Bagus" = 0.10, "Rata-rata" = 0.05)
# Menghitung bonus
karyawan$Bonus <- karyawan$Gaji * sapply(karyawan$Pertunjukan, function(x) bonus_persen[x])
# Menampilkan hasil
for (i in 1:nrow(karyawan)) {
cat(sprintf("Name: %s, Bonus: %d\n", karyawan$Nama[i], karyawan$Bonus[i]))
}
## Name: Bagas, Bonus: 500
## Name: Joan, Bonus: 1400
## Name: Alya, Bonus: 325
## Name: Dwi, Bonus: 1000
## Name: Nabil, Bonus: 2400
3 Loops (For & While)
3.1 Gunakan for loop untuk membuat daftar karyawan dengan gaji lebih dari 6000.
Hasil yang diharapkan:
Name: Joan, Salary: 7000
Name: Alya, Salary: 6500
Name: Dwi, Salary: 10000
Name: Nabil, Salary: 12000
# Data karyawan
karyawan <- data.frame(
Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Gaji = c(5000, 7000, 6500, 10000, 12000)
)
# Menampilkan karyawan dengan gaji lebih dari 6000
for (i in 1:nrow(karyawan)) {
if (karyawan$Gaji[i] > 6000) {
cat(sprintf("Name: %s, Salary: %d\n", karyawan$Nama[i], karyawan$Gaji[i]))
}
}
## Name: Joan, Salary: 7000
## Name: Alya, Salary: 6500
## Name: Dwi, Salary: 10000
## Name: Nabil, Salary: 12000
3.2 Gunakan While Loop untuk menampilkan karyawan hingga “Manejer” ditemukan.
Hasil yang diharapkan:
Name: Bagas, Position: Staff
Name: Joan, Position: Supervisior
Name: Alya, Position: Staff
Name: Dwi, Position: Manager
# Data karyawan
karyawan <- data.frame(
Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Posisi = c("Staf", "Supervisor", "Staf", "Manajer", "Direktur")
)
# Menampilkan karyawan hingga menemukan "Manajer"
i <- 1
while (i <= nrow(karyawan)) {
cat(sprintf("Name: %s, Position: %s\n", karyawan$Nama[i], karyawan$Posisi[i]))
if (karyawan$Posisi[i] == "Manajer") {
break
}
i <- i + 1
}
## Name: Bagas, Position: Staf
## Name: Joan, Position: Supervisor
## Name: Alya, Position: Staf
## Name: Dwi, Position: Manajer
3.3 Gunakan break untuk menghentikan loop ketika karyawan dengan gaji diatas 10000 ditemukan.
Hasil yang diharapkan:
Name: Bagas, Salary: 5000
Name: Joan, Salary: 7000
Name: Alya, Salary: 6500
Name: Dwi, Salary: 10000
# Data karyawan
karyawan <- data.frame(
Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Gaji = c(5000, 7000, 6500, 10000, 12000)
)
# Loop untuk menampilkan karyawan hingga gaji di atas 10000 ditemukan
for (i in 1:nrow(karyawan)) {
if (karyawan$Gaji[i] > 10000) {
break
}
cat(sprintf("Name: %s, Salary: %d\n", karyawan$Nama[i], karyawan$Gaji[i]))
}
## Name: Bagas, Salary: 5000
## Name: Joan, Salary: 7000
## Name: Alya, Salary: 6500
## Name: Dwi, Salary: 10000
3.4 Gunakan continue untuk melewati karyawan dengan kinerja rata-rata.
Hasil yang diharapkan:
Name: Bagas, Kinerja: Bagus
Name: Joan, Kinerja: Sangat bagus
Name: Dwi, Kinerja: Bagus
Name: Nabil, Kinerja: Sangat Bagus
(Alya dilewati karena kinerjanya “Rata-rata”)
# Data karyawan
karyawan <- data.frame(
Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Kinerja = c("Bagus", "Sangat bagus", "Rata-rata", "Bagus", "Sangat bagus")
)
# List untuk menyimpan karyawan yang dilewati
dilewati <- c()
# Loop untuk menampilkan karyawan dengan kinerja baik dan menyimpan yang dilewati
for (i in 1:nrow(karyawan)) {
if (karyawan$Kinerja[i] == "Rata-rata") {
dilewati <- c(dilewati, sprintf("%s dilewati karena kinerjanya \"Rata-rata\"", karyawan$Nama[i]))
next
}
cat(sprintf("Name: %s, Kinerja: %s\n", karyawan$Nama[i], karyawan$Kinerja[i]))
}
## Name: Bagas, Kinerja: Bagus
## Name: Joan, Kinerja: Sangat bagus
## Name: Dwi, Kinerja: Bagus
## Name: Nabil, Kinerja: Sangat bagus
# Menampilkan karyawan yang dilewati di bagian akhir
if (length(dilewati) > 0) {
cat("\n")
for (pesan in dilewati) {
cat(sprintf("%s\n", pesan))
}
}
##
## Alya dilewati karena kinerjanya "Rata-rata"