Data Science Programming

Practicum 2

Mohammad Riyadh

Syntax and Control flow

2.5.1 Tujuan

  1. Memahami dan menerapkan pernyataan kondisional (if, if-else, if-elif-else).

  2. 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