Praktikum
Tabel data
| ID | Name | Age | Salary | Position | Performance |
|---|---|---|---|---|---|
| 1 | Bagas | 25 | 5000 | Staff | Good |
| 2 | Joan | 30 | 7000 | SuperVisor | Very Good |
| 3 | Alya | 27 | 6500 | Staff | Average |
| 4 | Dwi | 35 | 10000 | Manager | Good |
| 5 | Nabil | 40 | 12000 | Director | Very Good |
1. Conditial Statement
# Data karyawan dalam bentuk data frame
karyawan <- data.frame(
nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
gaji = c(5000, 7000, 6500, 10000, 12000),
kinerja = c("Bagus", "Sangat bagus", "Rata-rata", "Bagus", "Sangat bagus")
)
# Fungsi untuk menghitung bonus berdasarkan kinerja
hitung_bonus <- function(gaji, kinerja) {
if (kinerja == "Sangat bagus") {
return(gaji * 0.20)
} else if (kinerja == "Bagus") {
return(gaji * 0.10)
} else { # Rata-rata
return(gaji * 0.05)
}
}
# Menghitung bonus untuk setiap karyawan dan menampilkannya tanpa desimal
for (i in 1:nrow(karyawan)) {
bonus <- as.integer(hitung_bonus(karyawan$gaji[i], karyawan$kinerja[i]))
cat(sprintf("Name: %s, Bonus: %d\n", karyawan$nama[i], bonus))
}## Name: Bagas, Bonus: 500
## Name: Joan, Bonus: 1400
## Name: Alya, Bonus: 325
## Name: Dwi, Bonus: 1000
## Name: Nabil, Bonus: 2400
2. Loops (For & While)
2.1. Use a for loop to list employees with a salary greater than 6000.
# Data karyawan dalam bentuk data frame
karyawan <- data.frame(
nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
gaji = c(5000, 7000, 6500, 10000, 12000),
posisi = c("Staff", "Supervisor", "Staff", "Manager", "Director"),
kinerja = c("Good", "Very Good", "Average", "Good", "Very Good")
)
# Menggunakan for loop untuk menampilkan karyawan dengan gaji > 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
2.2. Use a while loop to display employees until a “Manager” is found.
# Data karyawan dalam bentuk data frame
karyawan <- data.frame(
nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
gaji = c(5000, 7000, 6500, 10000, 12000),
posisi = c("Staff", "Supervisor", "Staff", "Manager", "Director"),
kinerja = c("Good", "Very Good", "Average", "Good", "Very Good")
)
# Menggunakan while loop untuk menampilkan karyawan hingga menemukan "Manager"
i <- 1
while (i <= nrow(karyawan)) {
if (karyawan$posisi[i] == "Manager") {
cat(sprintf("Name: %s, Position: %s (Stop here)\n", karyawan$nama[i], karyawan$posisi[i]))
break
}
cat(sprintf("Name: %s, Position: %s\n", karyawan$nama[i], karyawan$posisi[i]))
i <- i + 1
}## Name: Bagas, Position: Staff
## Name: Joan, Position: Supervisor
## Name: Alya, Position: Staff
## Name: Dwi, Position: Manager (Stop here)
2.3. Use break to stop the loop when an employee with a salary above 10,000 is found
# Data karyawan dalam bentuk data frame
karyawan <- data.frame(
nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
gaji = c(5000, 7000, 6500, 10000, 12000),
posisi = c("Staff", "Supervisor", "Staff", "Manager", "Director"),
kinerja = c("Good", "Very Good", "Average", "Good", "Very Good")
)
# Menggunakan for loop dengan break untuk berhenti saat gaji > 10,000
for (i in 1:nrow(karyawan)) {
if (karyawan$gaji[i] > 10000) {
cat(sprintf("(Stopped because %s has a salary above 10,000)\n", karyawan$nama[i]))
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
## (Stopped because Nabil has a salary above 10,000)
2.4. Use continue to skip employees with “Average” performance
# Data karyawan dalam bentuk data frame
karyawan <- data.frame(
nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
gaji = c(5000, 7000, 6500, 10000, 12000),
posisi = c("Staff", "Supervisor", "Staff", "Manager", "Director"),
kinerja = c("Good", "Very Good", "Average", "Good", "Very Good")
)
# Menggunakan for loop dengan continue untuk melewati karyawan dengan kinerja "Average"
for (i in 1:nrow(karyawan)) {
if (karyawan$kinerja[i] == "Average") {
cat("(Alya is skipped because the performance is \"Average\")\n")
next
}
cat(sprintf("Name: %s, Performance: %s\n", karyawan$nama[i], karyawan$kinerja[i]))
}## Name: Bagas, Performance: Good
## Name: Joan, Performance: Very Good
## (Alya is skipped because the performance is "Average")
## Name: Dwi, Performance: Good
## Name: Nabil, Performance: Very Good
LS0tDQp0aXRsZTogIlByYWt0aWt1bSINCmF1dGhvcjogDQogIC0gIlphaW4gSXFiYWwgU2FwdXRyYSBOSU0gNTIyNDAwMjQiDQpkYXRlOiAgIkp1bWF0LCAyMS8wMi8yMDI1Ig0Kb3V0cHV0Og0KICBybWRmb3JtYXRzOjpyZWFkdGhlZG93bjogICANCiAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQ0KICAgIHRodW1ibmFpbHM6IHRydWUNCiAgICBsaWdodGJveDogdHJ1ZQ0KICAgIGdhbGxlcnk6IHRydWUNCiAgICBudW1iZXJfc2VjdGlvbnM6IGZhbHNlDQogICAgbGliX2RpcjogbGlicw0KICAgIDNkZl9wcmludDogInBhZ2VkIg0KICAgIGNvZGVfZm9sZGluZzogInNob3ciDQogICAgY29kZV9kb3dubG9hZDogeWVzDQotLS0NCg0KPGltZyBzcmM9IkZvdG8uanBnIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7IHdpZHRoOjMwMHB4OyBtYXJnaW46IGF1dG87Ij4NCg0KIyBUYWJlbCBkYXRhDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShrbml0cikNCg0KIyBEYXRhIGZyYW1lIHVudHVrIHRhYmVsDQpkYXRhIDwtIGRhdGEuZnJhbWUoDQogIGBJRGAgPSBjKDEsIDIsIDMsIDQsIDUpLA0KICBgTmFtZWAgPSBjKCJCYWdhcyIsICJKb2FuIiwgIkFseWEiLCAiRHdpIiwgIk5hYmlsIiksDQogIGBBZ2VgID0gYygyNSwgMzAsIDI3LCAzNSwgNDApLA0KICBgc2FsYXJ5YCA9IGMoNTAwMCwgNzAwMCwgNjUwMCwgMTAwMDAsIDEyMDAwKSwNCiAgYHBvc2l0aW9uYCA9IGMoIlN0YWZmIiwgIlN1cGVyVmlzb3IiLCAiU3RhZmYiLCAiTWFuYWdlciIsICJEaXJlY3RvciIpLA0KICBgcGVyZm9ybWFuY2VgID0gYygiR29vZCIsICJWZXJ5IEdvb2QiLCAiQXZlcmFnZSIsICJHb29kIiwgIlZlcnkgR29vZCIpDQopDQoNCiMgQ2V0YWsgdGFiZWwNCmthYmxlKGRhdGEsIGNvbC5uYW1lcyA9IGMoIklEIiwgIk5hbWUiLCAiQWdlIiwgIlNhbGFyeSIsICJQb3NpdGlvbiIsICJQZXJmb3JtYW5jZSIpKQ0KYGBgDQoNCiMgMS4gQ29uZGl0aWFsIFN0YXRlbWVudA0KDQpgYGB7ciwgbWVzc2FnZT1GQUxTRX0NCiMgRGF0YSBrYXJ5YXdhbiBkYWxhbSBiZW50dWsgZGF0YSBmcmFtZQ0Ka2FyeWF3YW4gPC0gZGF0YS5mcmFtZSgNCiAgbmFtYSA9IGMoIkJhZ2FzIiwgIkpvYW4iLCAiQWx5YSIsICJEd2kiLCAiTmFiaWwiKSwNCiAgZ2FqaSA9IGMoNTAwMCwgNzAwMCwgNjUwMCwgMTAwMDAsIDEyMDAwKSwNCiAga2luZXJqYSA9IGMoIkJhZ3VzIiwgIlNhbmdhdCBiYWd1cyIsICJSYXRhLXJhdGEiLCAiQmFndXMiLCAiU2FuZ2F0IGJhZ3VzIikNCikNCg0KIyBGdW5nc2kgdW50dWsgbWVuZ2hpdHVuZyBib251cyBiZXJkYXNhcmthbiBraW5lcmphDQpoaXR1bmdfYm9udXMgPC0gZnVuY3Rpb24oZ2FqaSwga2luZXJqYSkgew0KICBpZiAoa2luZXJqYSA9PSAiU2FuZ2F0IGJhZ3VzIikgew0KICAgIHJldHVybihnYWppICogMC4yMCkNCiAgfSBlbHNlIGlmIChraW5lcmphID09ICJCYWd1cyIpIHsNCiAgICByZXR1cm4oZ2FqaSAqIDAuMTApDQogIH0gZWxzZSB7ICAjIFJhdGEtcmF0YQ0KICAgIHJldHVybihnYWppICogMC4wNSkNCiAgfQ0KfQ0KDQojIE1lbmdoaXR1bmcgYm9udXMgdW50dWsgc2V0aWFwIGthcnlhd2FuIGRhbiBtZW5hbXBpbGthbm55YSB0YW5wYSBkZXNpbWFsDQpmb3IgKGkgaW4gMTpucm93KGthcnlhd2FuKSkgew0KICBib251cyA8LSBhcy5pbnRlZ2VyKGhpdHVuZ19ib251cyhrYXJ5YXdhbiRnYWppW2ldLCBrYXJ5YXdhbiRraW5lcmphW2ldKSkgIA0KICBjYXQoc3ByaW50ZigiTmFtZTogJXMsIEJvbnVzOiAlZFxuIiwga2FyeWF3YW4kbmFtYVtpXSwgYm9udXMpKQ0KfQ0KYGBgDQoNCiMgMi4gTG9vcHMgKEZvciAmIFdoaWxlKQ0KDQojIyAyLjEuIFVzZSBhIGZvciBsb29wIHRvIGxpc3QgZW1wbG95ZWVzIHdpdGggYSBzYWxhcnkgZ3JlYXRlciB0aGFuIDYwMDAuDQoNCmBgYHtyLCBtZXNzYWdlPUZBTFNFfQ0KIyBEYXRhIGthcnlhd2FuIGRhbGFtIGJlbnR1ayBkYXRhIGZyYW1lDQprYXJ5YXdhbiA8LSBkYXRhLmZyYW1lKA0KICBuYW1hID0gYygiQmFnYXMiLCAiSm9hbiIsICJBbHlhIiwgIkR3aSIsICJOYWJpbCIpLA0KICBnYWppID0gYyg1MDAwLCA3MDAwLCA2NTAwLCAxMDAwMCwgMTIwMDApLA0KICBwb3Npc2kgPSBjKCJTdGFmZiIsICJTdXBlcnZpc29yIiwgIlN0YWZmIiwgIk1hbmFnZXIiLCAiRGlyZWN0b3IiKSwNCiAga2luZXJqYSA9IGMoIkdvb2QiLCAiVmVyeSBHb29kIiwgIkF2ZXJhZ2UiLCAiR29vZCIsICJWZXJ5IEdvb2QiKQ0KKQ0KDQojIE1lbmdndW5ha2FuIGZvciBsb29wIHVudHVrIG1lbmFtcGlsa2FuIGthcnlhd2FuIGRlbmdhbiBnYWppID4gNjAwMA0KZm9yIChpIGluIDE6bnJvdyhrYXJ5YXdhbikpIHsNCiAgaWYgKGthcnlhd2FuJGdhamlbaV0gPiA2MDAwKSB7DQogICAgY2F0KHNwcmludGYoIk5hbWU6ICVzLCBTYWxhcnk6ICVkXG4iLCBrYXJ5YXdhbiRuYW1hW2ldLCBrYXJ5YXdhbiRnYWppW2ldKSkNCiAgfQ0KfQ0KYGBgDQoNCiMjIDIuMi4gVXNlIGEgd2hpbGUgbG9vcCB0byBkaXNwbGF5IGVtcGxveWVlcyB1bnRpbCBhICJNYW5hZ2VyIiBpcyBmb3VuZC4NCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0V9DQojIERhdGEga2FyeWF3YW4gZGFsYW0gYmVudHVrIGRhdGEgZnJhbWUNCmthcnlhd2FuIDwtIGRhdGEuZnJhbWUoDQogIG5hbWEgPSBjKCJCYWdhcyIsICJKb2FuIiwgIkFseWEiLCAiRHdpIiwgIk5hYmlsIiksDQogIGdhamkgPSBjKDUwMDAsIDcwMDAsIDY1MDAsIDEwMDAwLCAxMjAwMCksDQogIHBvc2lzaSA9IGMoIlN0YWZmIiwgIlN1cGVydmlzb3IiLCAiU3RhZmYiLCAiTWFuYWdlciIsICJEaXJlY3RvciIpLA0KICBraW5lcmphID0gYygiR29vZCIsICJWZXJ5IEdvb2QiLCAiQXZlcmFnZSIsICJHb29kIiwgIlZlcnkgR29vZCIpDQopDQoNCiMgTWVuZ2d1bmFrYW4gd2hpbGUgbG9vcCB1bnR1ayBtZW5hbXBpbGthbiBrYXJ5YXdhbiBoaW5nZ2EgbWVuZW11a2FuICJNYW5hZ2VyIg0KaSA8LSAxDQp3aGlsZSAoaSA8PSBucm93KGthcnlhd2FuKSkgew0KICBpZiAoa2FyeWF3YW4kcG9zaXNpW2ldID09ICJNYW5hZ2VyIikgew0KICAgIGNhdChzcHJpbnRmKCJOYW1lOiAlcywgUG9zaXRpb246ICVzIChTdG9wIGhlcmUpXG4iLCBrYXJ5YXdhbiRuYW1hW2ldLCBrYXJ5YXdhbiRwb3Npc2lbaV0pKQ0KICAgIGJyZWFrDQogIH0NCiAgY2F0KHNwcmludGYoIk5hbWU6ICVzLCBQb3NpdGlvbjogJXNcbiIsIGthcnlhd2FuJG5hbWFbaV0sIGthcnlhd2FuJHBvc2lzaVtpXSkpDQogIGkgPC0gaSArIDENCn0NCmBgYA0KDQojIyAyLjMuIFVzZSBicmVhayB0byBzdG9wIHRoZSBsb29wIHdoZW4gYW4gZW1wbG95ZWUgd2l0aCBhIHNhbGFyeSBhYm92ZSAxMCwwMDAgaXMgZm91bmQNCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0V9DQojIERhdGEga2FyeWF3YW4gZGFsYW0gYmVudHVrIGRhdGEgZnJhbWUNCmthcnlhd2FuIDwtIGRhdGEuZnJhbWUoDQogIG5hbWEgPSBjKCJCYWdhcyIsICJKb2FuIiwgIkFseWEiLCAiRHdpIiwgIk5hYmlsIiksDQogIGdhamkgPSBjKDUwMDAsIDcwMDAsIDY1MDAsIDEwMDAwLCAxMjAwMCksDQogIHBvc2lzaSA9IGMoIlN0YWZmIiwgIlN1cGVydmlzb3IiLCAiU3RhZmYiLCAiTWFuYWdlciIsICJEaXJlY3RvciIpLA0KICBraW5lcmphID0gYygiR29vZCIsICJWZXJ5IEdvb2QiLCAiQXZlcmFnZSIsICJHb29kIiwgIlZlcnkgR29vZCIpDQopDQoNCiMgTWVuZ2d1bmFrYW4gZm9yIGxvb3AgZGVuZ2FuIGJyZWFrIHVudHVrIGJlcmhlbnRpIHNhYXQgZ2FqaSA+IDEwLDAwMA0KZm9yIChpIGluIDE6bnJvdyhrYXJ5YXdhbikpIHsNCiAgaWYgKGthcnlhd2FuJGdhamlbaV0gPiAxMDAwMCkgew0KICAgIGNhdChzcHJpbnRmKCIoU3RvcHBlZCBiZWNhdXNlICVzIGhhcyBhIHNhbGFyeSBhYm92ZSAxMCwwMDApXG4iLCBrYXJ5YXdhbiRuYW1hW2ldKSkNCiAgICBicmVhaw0KICB9DQogIGNhdChzcHJpbnRmKCJOYW1lOiAlcywgU2FsYXJ5OiAlZFxuIiwga2FyeWF3YW4kbmFtYVtpXSwga2FyeWF3YW4kZ2FqaVtpXSkpDQp9DQpgYGANCg0KIyMgMi40LiBVc2UgY29udGludWUgdG8gc2tpcCBlbXBsb3llZXMgd2l0aCAiQXZlcmFnZSIgcGVyZm9ybWFuY2UNCg0KYGBge3IsIG1lc3NhZ2U9RkFMU0V9DQojIERhdGEga2FyeWF3YW4gZGFsYW0gYmVudHVrIGRhdGEgZnJhbWUNCmthcnlhd2FuIDwtIGRhdGEuZnJhbWUoDQogIG5hbWEgPSBjKCJCYWdhcyIsICJKb2FuIiwgIkFseWEiLCAiRHdpIiwgIk5hYmlsIiksDQogIGdhamkgPSBjKDUwMDAsIDcwMDAsIDY1MDAsIDEwMDAwLCAxMjAwMCksDQogIHBvc2lzaSA9IGMoIlN0YWZmIiwgIlN1cGVydmlzb3IiLCAiU3RhZmYiLCAiTWFuYWdlciIsICJEaXJlY3RvciIpLA0KICBraW5lcmphID0gYygiR29vZCIsICJWZXJ5IEdvb2QiLCAiQXZlcmFnZSIsICJHb29kIiwgIlZlcnkgR29vZCIpDQopDQoNCiMgTWVuZ2d1bmFrYW4gZm9yIGxvb3AgZGVuZ2FuIGNvbnRpbnVlIHVudHVrIG1lbGV3YXRpIGthcnlhd2FuIGRlbmdhbiBraW5lcmphICJBdmVyYWdlIg0KZm9yIChpIGluIDE6bnJvdyhrYXJ5YXdhbikpIHsNCiAgaWYgKGthcnlhd2FuJGtpbmVyamFbaV0gPT0gIkF2ZXJhZ2UiKSB7DQogICAgY2F0KCIoQWx5YSBpcyBza2lwcGVkIGJlY2F1c2UgdGhlIHBlcmZvcm1hbmNlIGlzIFwiQXZlcmFnZVwiKVxuIikNCiAgICBuZXh0DQogIH0NCiAgY2F0KHNwcmludGYoIk5hbWU6ICVzLCBQZXJmb3JtYW5jZTogJXNcbiIsIGthcnlhd2FuJG5hbWFbaV0sIGthcnlhd2FuJGtpbmVyamFbaV0pKQ0KfQ0KYGBg