Data Science Programming
Practicum 2
Syntax and Control flow
2.5.1 Tujuan
Memahami dan menerapkan pernyataan kondisional (if, if-else, if-elif-else).
Terapkan loop (for loop, while loop, break, continue) untuk menganalisis himpunan data.
berikut merupakan dataset dummy berikut ini:
## ID Name Age Salary Position Performance
## 1 1 Bagas 25 5000 Staff Good
## 2 2 Joan 30 7000 Supervisor Very Good
## 3 3 Alya 27 6500 Staff Average
## 4 4 Dwi 35 10000 Manager Good
## 5 5 Nabil 40 12000 Director Very Good
## Dataset telah disimpan sebagai 'employees.csv'
2.5.2 Peryataan Kondisional
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”
# Dataset
employees <- data.frame(
Name = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Age = c(25, 30, 27, 35, 40),
Salary = c(5000, 7000, 6500, 10000, 12000),
Position = c("Staff", "Supervisor", "Staff", "Manager", "Director"),
Performance = c("Good", "Very Good", "Average", "Good", "Very Good")
)
# Menghitung bonus berdasarkan performa
cat("Bonus Calculation:\n")
## Bonus Calculation:
for (i in 1:nrow(employees)) {
if (employees$Performance[i] == "Very Good") {
bonus <- 0.2 * employees$Salary[i]
} else if (employees$Performance[i] == "Good") {
bonus <- 0.1 * employees$Salary[i]
} else {
bonus <- 0.05 * employees$Salary[i]
}
cat(sprintf("Name: %s, Bonus: %d\n", employees$Name[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 Perulangan (For & While)
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
# Membuat dataset
employees <- data.frame(
Name = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Salary = c(5000, 7000, 6500, 10000, 12000)
)
# Menampilkan pegawai dengan gaji lebih dari 6000
cat("Employees with Salary > 6000:\n")
## Employees with Salary > 6000:
for (i in 1:nrow(employees)) {
if (employees$Salary[i] > 6000) {
cat(sprintf("Name: %s, Salary: %d\n", employees$Name[i], employees$Salary[i]))
}
}
## Name: Joan, Salary: 7000
## Name: Alya, Salary: 6500
## Name: Dwi, Salary: 10000
## Name: Nabil, Salary: 12000
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)
# Membuat dataset
employees <- data.frame(
Name = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Position = c("Staff", "Supervisor", "Staff", "Manager", "Director")
)
# Menampilkan pegawai sampai menemukan "Manager"
cat("Displaying employees until a Manager is found:\n")
## Displaying employees until a Manager is found:
i <- 1
while (i <= nrow(employees)) {
cat(sprintf("Name: %s, Position: %s\n", employees$Name[i], employees$Position[i]))
if (employees$Position[i] == "Manager") {
break
}
i <- i + 1
}
## Name: Bagas, Position: Staff
## Name: Joan, Position: Supervisor
## Name: Alya, Position: Staff
## Name: Dwi, Position: Manager
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
# Membuat dataset
employees <- data.frame(
Name = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Salary = c(5000, 7000, 6500, 10000, 12000)
)
# Berhenti saat gaji di atas 10.000 ditemukan
cat("Stopping loop when Salary > 10,000 is found:\n")
## Stopping loop when Salary > 10,000 is found:
for (i in 1:nrow(employees)) {
cat(sprintf("Name: %s, Salary: %d\n", employees$Name[i], employees$Salary[i]))
if (employees$Salary[i] > 10000) {
cat("(Stopped because salary is above 10,000)\n")
break
}
}
## Name: Bagas, Salary: 5000
## Name: Joan, Salary: 7000
## Name: Alya, Salary: 6500
## Name: Dwi, Salary: 10000
## Name: Nabil, Salary: 12000
## (Stopped because salary is above 10,000)
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”)
# Membuat dataset
employees <- data.frame(
Name = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Performance = c("Good", "Very Good", "Average", "Good", "Very Good")
)
# Melewati pegawai dengan performa "Average"
cat("Skipping employees with 'Average' performance:\n")
## Skipping employees with 'Average' performance:
for (i in 1:nrow(employees)) {
if (employees$Performance[i] == "Average") {
next
}
cat(sprintf("Name: %s, Performance: %s\n", employees$Name[i], employees$Performance[i]))
}
## Name: Bagas, Performance: Good
## Name: Joan, Performance: Very Good
## Name: Dwi, Performance: Good
## Name: Nabil, Performance: Very Good