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')