Praktikum 2
Pemrograman Sains Data I
2.5 Praktikum
2.5.1 Objective
- Memahami dan menerapkan pernyataan kondisional (if, if-else, if-elif-else).
- Terapkan loop (for loop, while loop, break, continue) untuk menganalisis himpunan data.
Gunakan dataset dummy berikut ini
ID | Nama | Umur | Gaji | Posisi | Performa |
---|---|---|---|---|---|
1 | Bagas | 25 | 5000 | Staff | Baik |
2 | Joan | 30 | 7000 | Supervisor | Sangat Baik |
3 | Alya | 27 | 6500 | Staff | Rata-rata |
4 | Dwi | 35 | 10000 | Manager | Baik |
5 | Nabil | 40 | 12000 | Director | Sangat Baik |
library(knitr)
data <- data.frame(
ID = c(1, 2, 3, 4, 5),
Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Umur = c(25, 30, 27, 35, 40),
Gaji = c(5000, 7000, 6500, 10000, 12000),
Posisi = c("Staff", "Supervisor", "Staff", "Manager", "Director"),
Performa = c("Baik", "Sangat Baik", "Rata-rata", "Baik", "Sangat Baik")
)
kable(data)
ID | Nama | Umur | Gaji | Posisi | Performa |
---|---|---|---|---|---|
1 | Bagas | 25 | 5000 | Staff | Baik |
2 | Joan | 30 | 7000 | Supervisor | Sangat Baik |
3 | Alya | 27 | 6500 | Staff | Rata-rata |
4 | Dwi | 35 | 10000 | Manager | Baik |
5 | Nabil | 40 | 12000 | Director | Sangat Baik |
2.5.2 Conditional Statements
Tentukan tingkat bonus berdasarkan kinerja karyawan: - Sangat Baik -> 20% dari gaji - Baik -> 10% dari gaji - Rata-rata -> 5% dari gaji
Tugas Anda: - Tulis program dalam Python dan R untuk menghitung bonus setiap karyawan. - Menampilkan output dalam format ini:
“Name: Bagas, Bonus: 500”
# Data lengkap
data <- data.frame(
ID = c(1, 2, 3, 4, 5),
Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Umur = c(25, 30, 27, 35, 40),
Gaji = c(5000, 7000, 6500, 10000, 12000),
Posisi = c("Staff", "Supervisor", "Staff", "Manager", "Director"),
Performa = c("Baik", "Sangat Baik", "Rata-rata", "Baik", "Sangat Baik")
)
# Menghitung bonus dan menampilkan output
for (i in 1:nrow(data)) {
if (data$Performa[i] == "Sangat Baik") {
bonus <- data$Gaji[i] * 0.2
} else if (data$Performa[i] == "Baik") {
bonus <- data$Gaji[i] * 0.1
} else {
bonus <- data$Gaji[i] * 0.05
}
cat(sprintf("Name: %s, Bonus: %d\n", data$Nama[i], as.integer(bonus)))
}
## Name: Bagas, Bonus: 500
## Name: Joan, Bonus: 1400
## Name: Alya, Bonus: 325
## Name: Dwi, Bonus: 1000
## Name: Nabil, Bonus: 2400
2.5.3 Loops (For & While)
2.5.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 lengkap
data <- data.frame(
ID = c(1, 2, 3, 4, 5),
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(data)) {
if (data$Gaji[i] > 6000) {
cat(sprintf("Name: %s, Salary: %d\n", data$Nama[i], data$Gaji[i]))
}
}
## Name: Joan, Salary: 7000
## Name: Alya, Salary: 6500
## Name: Dwi, Salary: 10000
## Name: Nabil, Salary: 12000
2.5.3.2 Gunakan while loop untuk menampilkan karyawan hingga “Manajer” ditemukan.
Hasil yang Diharapkan:
Name: Bagas, Position: Staff
Name: Joan, Position: Supervisor
Name: Alya, Position: Staff
Name: Dwi, Position: Manager (Stop here)
# Data lengkap
data <- data.frame(
ID = c(1, 2, 3, 4, 5),
Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Posisi = c("Staff", "Supervisor", "Staff", "Manager", "Director")
)
# Menggunakan while loop untuk menampilkan hingga "Manager" ditemukan
i <- 1
while (i <= nrow(data)) {
if (data$Posisi[i] == "Manager") {
cat(sprintf("Name: %s, Position: %s (Stop here)\n", data$Nama[i], data$Posisi[i]))
break
}
cat(sprintf("Name: %s, Position: %s\n", data$Nama[i], data$Posisi[i]))
i <- i + 1
}
## Name: Bagas, Position: Staff
## Name: Joan, Position: Supervisor
## Name: Alya, Position: Staff
## Name: Dwi, Position: Manager (Stop here)
2.5.3.3 Gunakan break untuk menghentikan loop ketika karyawan dengan gaji di atas 10.000 ditemukan.
Hasil yang Diharapkan:
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)
# Data lengkap
data <- data.frame(
ID = c(1, 2, 3, 4, 5),
Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Gaji = c(5000, 7000, 6500, 10000, 12000)
)
# Menggunakan for loop dengan break
for (i in 1:nrow(data)) {
if (data$Gaji[i] > 10000) {
cat(sprintf("(Stopped because %s has a salary above 10,000)\n", data$Nama[i]))
break
}
cat(sprintf("Name: %s, Salary: %d\n", data$Nama[i], data$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.5.3.4. Gunakan lanjutkan untuk melewati karyawan dengan kinerja “Rata-rata”.
Hasil yang Diharapkan:
Name: Bagas, Performance: Good
Name: Joan, Performance: Very Good
Name: Dwi, Performance: Good
Name: Nabil, Performance: Very Good
(Alya is skipped because the performance is “Average”)
# Data lengkap
data <- data.frame(
ID = c(1, 2, 3, 4, 5),
Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Performa = c("Good", "Very Good", "Average", "Good", "Very Good")
)
# Menggunakan for loop dengan next (setara dengan continue di Python)
skipped <- ""
for (i in 1:nrow(data)) {
if (data$Performa[i] == "Average") {
skipped <- data$Nama[i] # Simpan nama karyawan yang dilewati
next
}
cat(sprintf("Name: %s, Performance: %s\n", data$Nama[i], data$Performa[i]))
}
## Name: Bagas, Performance: Good
## Name: Joan, Performance: Very Good
## Name: Dwi, Performance: Good
## Name: Nabil, Performance: Very Good
# Menampilkan pesan bahwa Alya dilewati
cat(sprintf("(%s is skipped because the performance is \"Average\")\n", skipped))
## (Alya is skipped because the performance is "Average")