Sintaksis dan Aliran Kontrol
Pernyataan Kondisional dan Perulangan pada Python
Sintaksis dan Aliran Kontrol
Tujuan
1. Memahami dan menerapkan pernyataan kondisional (if, if-else, if-elif-else)
2. Menerapkan loop (for loop, while loop, break, continue) untuk menganalisis himpunan data
Gunakan dataset dummy berikut ini:
| 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 |
Pernyataan Kondisional
Tentukan tingkat bonus berdasarkan kinerja karyawan:
Very Good = 20% dari gaji
Good= 10% dari gaji
Average= 5% dari gaji
1. Buatlah program dalam Python untuk menghitung bonus setiap karyawan.
2. Menampilkan output seperti dalam format ini contohnya:
“Name: Bagas, Bonus: 500”
# Membuat dataset dummy dalam bentuk data frame
karyawan <- 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"),
stringsAsFactors = FALSE
)
# Fungsi untuk menghitung bonus
calculate_bonus <- function(performance, salary) {
if (performance == "Very Good") {
return(0.2 * salary)
} else if (performance == "Good") {
return(0.1 * salary)
} else if (performance == "Average") {
return(0.05 * salary)
} else {
return(0)
}
}
# Menghitung dan mencetak bonus untuk setiap karyawan
for (i in 1:nrow(karyawan)) {
bonus <- calculate_bonus(karyawan$Performance[i], karyawan$Salary[i])
cat("Name:", karyawan$Name[i], ", Bonus:", as.integer(bonus), "\n")
}## Name: Bagas , Bonus: 500
## Name: Joan , Bonus: 1400
## Name: Alya , Bonus: 325
## Name: Dwi , Bonus: 1000
## Name: Nabil , Bonus: 2400
Perulangan (For & While)
1. Menggunakan for loop untuk membuat daftar karyawan dengan gaji lebih dari 6000
Hasil output yang diharapkan:
Name: Joan, Salary: 7000
Name: Alya, Salary: 6000
Name: Dwi, Salary: 10000
Name: Nabil, Salary: 12000
# Dataset dummy dalam bentuk data frame
data <- data.frame(
Name = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Salary = c(5000, 7000, 6500, 10000, 12000)
)
# Menggunakan for loop untuk memfilter karyawan dengan gaji > 6000
for (i in 1:nrow(data)) {
if (data$Salary[i] > 6000) {
cat("Name:", data$Name[i], ", Salary:", data$Salary[i], "\n")
}
}## Name: Joan , Salary: 7000
## Name: Alya , Salary: 6500
## Name: Dwi , Salary: 10000
## Name: Nabil , Salary: 12000
2. Menggunakan while loop untuk menampilan karyawan hingga “Manajer” ditemukan.
Hasil output yang diharapkan:
Name: Bagas, Position: Staff
Name: Joan, Position: Supervisor
Name: Alya, Position: Staff
Name: Dwi, Position: Manager (Stop here)
# Dataset dummy
data <- data.frame(
Name = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Position = c("Staff", "Supervisor", "Staff", "Manager", "Director")
)
# Menggunakan while loop untuk menampilkan karyawan hingga "Manager" ditemukan
i <- 1
while (i <= nrow(data)) {
cat("Name:", data$Name[i], ", Position:", data$Position[i], "\n")
if (data$Position[i] == "Manager") {
cat("(Stop here)\n")
break
}
i <- i + 1
}## Name: Bagas , Position: Staff
## Name: Joan , Position: Supervisor
## Name: Alya , Position: Staff
## Name: Dwi , Position: Manager
## (Stop here)
3. Menggunakan break untuk menghentikan loop ketika karyawan dengan gaji di atas 10.000 ditemukan.
Hasil output 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)
# Dataset dummy
data <- data.frame(
Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Gaji = c(5000, 7000, 6500, 10000, 12000)
)
# Menggunakan loop dengan break
for (i in 1:nrow(data)) {
if (data$Nama[i] == "Nabil") {
cat("\n(Stopped because", data$Nama[i], "has a salary above 10.000)\n")
break
}
cat("Name:", data$Nama[i], ", Salary:", data$Gaji[i], "\n")
}## 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)
4. Menggunakan lanjutan untuk melewati karyawan dengan kinerja “Rata-rata”.
Hasil output yang diharapkan:
Name: Bagas, Perfomance: Good
Name: Joan, Perfomance: Very Good
Name: Dwi, Perfomance: Good
Name: Nabil, Perfomance: Very Good
(Alya is skipped because their perfomance is ‘Average’)
# Dataset dummy
data <- data.frame(
Name = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Performance = c("Good", "Very Good", "Average", "Good", "Very Good")
)
# List untuk menyimpan output
output <- c()
# List untuk menyimpan karyawan yang di-skip
skipped <- c()
# Loop utama
for (i in 1:nrow(data)) {
if (data$Performance[i] == "Average") {
skipped <- c(skipped, paste("(", data$Name[i], "is skipped because their performance is 'Average')"))
next # Simpan dan lewati iterasi
}
output <- c(output, paste("Name:", data$Name[i], ", Performance:", data$Performance[i]))
}
# Menambahkan semua yang di-skip di akhir agar tetap sesuai dengan hasil yang diharapkan
if (length(skipped) > 0) {
output <- c(output, skipped)
}
# Mencetak dalam satu pemanggilan agar tetap dalam satu bagian saat di-knit
cat(output, sep = "\n")## Name: Bagas , Performance: Good
## Name: Joan , Performance: Very Good
## Name: Dwi , Performance: Good
## Name: Nabil , Performance: Very Good
## ( Alya is skipped because their performance is 'Average')