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