Task Week 2 Programming Science Data
2.5 Praktikum
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.
| PENGENAL | Nama | Usia | Gaji | Posisi | Pertunjukan |
|---|---|---|---|---|---|
| 1 | Bagas | 25 | 5000 | Staf | Bagus |
| 2 | Joan | 30 | 7000 | Pengawas | Sangat bagus |
| 3 | Alya | 27 | 6500 | Staf | Rata-rata |
| 4 | Dwi | 35 | 10000 | Manajer | Bagus |
| 5 | Nabil | 40 | 12000 | Direktur | Sangat bagus |
2.5.2 Pernyataan Kondisional
Tentukan tingkat bonus berdasarkan kinerja karyawan:
- Sangat Baik -> \(20\)% dari gaji
- Baik -> \(10\)% dari gaji
- Rata-rata -> \(5\)% dari gaji
Tugas:
- Tulis program dalam Python dan R untuk menghitung bonus setiap karyawan.
- Menampilkan output dalam format ini: “Name: Bagas, Bonus: 500”
# Dataset Dummy
data <- data.frame(
Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Gaji = c(5000, 7000, 6500, 10000, 12000),
Pertunjukan = c("Bagus", "Sangat bagus", "Rata-rata", "Bagus", "Sangat bagus")
)
# Fungsi untuk menghitung bonus
hitung_bonus <- function(gaji, pertunjukan) {
if (pertunjukan == "Sangat bagus") {
return(gaji * 0.2)
} else if (pertunjukan == "Bagus") {
return(gaji * 0.1)
} else if (pertunjukan == "Rata-rata") {
return(gaji * 0.05)
} else {
return(0)
}
}
# Menampilkan hasil
for (i in 1:nrow(data)) {
bonus <- hitung_bonus(data$Gaji[i], data$Pertunjukan[i])
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 Perulangan (For & While)
- 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\)
- 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)
- 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 abohe 10.000)
- 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”)
Pedoman Pengajuan:
- Kirimkan kode Python dan R Anda menggunakan Google colab dan Rpubs.
- Pastikan output ditampilkan dengan benar.
- Tambahkan komentar dalam kode untuk menjelaskan logika anda.
Data Dummy
# Membuat dataset dummy menggunakan data frame
data <- data.frame(
Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Gaji = c(5000, 7000, 6500, 10000, 12000),
Posisi = c("Staf", "Pengawas", "Staf", "Manajer", "Direktur"),
Pertunjukan = c("Bagus", "Sangat bagus", "Rata-rata", "Bagus", "Sangat bagus")
)1. For Loop
Karyawan dengan gaji lebih dari \(6000\)
# Membuat dataset dummy dengan kolom Nama, Gaji, Posisi, dan Pertunjukan
data <- data.frame(
Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Gaji = c(5000, 7000, 6500, 10000, 12000),
Posisi = c("Staf", "Pengawas", "Staf", "Manajer", "Direktur"),
Pertunjukan = c("Bagus", "Sangat bagus", "Rata-rata", "Bagus", "Sangat bagus")
)
# Loop untuk mencetak karyawan dengan gaji lebih dari 6000
cat("1. Daftar karyawan dengan gaji lebih dari 6000:\n")## 1. Daftar karyawan dengan gaji lebih dari 6000:
for (i in 1:nrow(data)) { # Iterasi melalui setiap baris dalam dataset
if (data$Gaji[i] > 6000) { # Mengecek apakah gaji lebih dari 6000
cat(sprintf("Name: %s, Salary: $%d\n", data$Nama[i], data$Gaji[i])) # Menampilkan output
}
}## Name: Joan, Salary: $7000
## Name: Alya, Salary: $6500
## Name: Dwi, Salary: $10000
## Name: Nabil, Salary: $12000
2. While Loop
Menampilkan karyawan hingga “Manajer” ditemukan
# Loop while untuk menampilkan karyawan sampai posisi "Manajer" ditemukan
cat("2. Menampilkan karyawan hingga 'Manajer' ditemukan:\n")## 2. Menampilkan karyawan hingga 'Manajer' ditemukan:
i <- 1 # Inisialisasi variabel indeks
while (i <= nrow(data)) { # Loop akan berjalan selama i masih dalam rentang jumlah baris dataset
cat(sprintf("Name: %s, Position: %s\n", data$Nama[i], data$Posisi[i])) # Menampilkan nama dan posisi
if (data$Posisi[i] == "Manajer") { # Jika posisi adalah "Manajer", hentikan loop
cat("(Stop here)\n") # Menampilkan pesan pemberhentian
break # Menghentikan perulangan
}
i <- i + 1 # Menambah indeks untuk iterasi berikutnya
}## Name: Bagas, Position: Staf
## Name: Joan, Position: Pengawas
## Name: Alya, Position: Staf
## Name: Dwi, Position: Manajer
## (Stop here)
3. Break
Hentikan saat gaji di atas \(10.000\) ditemukan
# Loop dengan break untuk menghentikan saat gaji lebih dari 10.000 ditemukan
cat("3. Hentikan loop saat gaji di atas 10.000 ditemukan:\n")## 3. Hentikan loop saat gaji di atas 10.000 ditemukan:
for (i in 1:nrow(data)) { # Iterasi melalui setiap baris dataset
if (data$Gaji[i] > 10000) { # Mengecek apakah gaji lebih dari 10.000
cat(sprintf("(Stopped because %s has a salary above 10,000)\n", data$Nama[i])) # Menampilkan alasan berhenti
break # Menghentikan perulangan
}
cat(sprintf("Name: %s, Salary: $%d\n", data$Nama[i], data$Gaji[i])) # Menampilkan nama dan gaji
}## 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. Continue
Lewati karyawan dengan kinerja “Rata-rata”
# Loop dengan continue untuk melewati karyawan dengan kinerja "Rata-rata"
cat("4. Lewati karyawan dengan kinerja 'Rata-rata':\n")## 4. Lewati karyawan dengan kinerja 'Rata-rata':
for (i in 1:nrow(data)) { # Iterasi melalui setiap baris dataset
if (data$Pertunjukan[i] == "Rata-rata") { # Jika kinerja adalah "Rata-rata"
next # Melewati iterasi ini dan lanjut ke iterasi berikutnya
}
cat(sprintf("Name: %s, Performance: %s\n", data$Nama[i], data$Pertunjukan[i])) # Menampilkan nama dan kinerja
}## Name: Bagas, Performance: Bagus
## Name: Joan, Performance: Sangat bagus
## Name: Dwi, Performance: Bagus
## Name: Nabil, Performance: Sangat bagus