Syntax and Control Flow
Programming Data Science
1. Tujuan Praktikum
- Untuk memahami dan menerapkan Conditional statments
- Menerapkan looping untuk menganalisis dataset
Dengan menggunakan dataset dummy ini :
| PENGENAL | Nama | Usia | Gaji | Posisi | Kinerja |
|---|---|---|---|---|---|
| 1 | Bagas | 25 | 5000 | Staf | Baik |
| 2 | Joan | 30 | 7000 | Pengawas | Sangat baik |
| 3 | Alya | 27 | 6500 | Staf | Rata-rata |
| 4 | Dwi | 35 | 10000 | Manajer | Baik |
| 5 | Nabil | 40 | 12000 | Direktur | Sangat baik |
2. Pernyataan Kondisional
Tentukan tingkat bonus berdasarkan kinerja karyawan
- Sangat baik -> 20% dari gaji
- Baik -> 10% dari gaji
- Rata - rata -> 5% dari gaji
2.1 Tulis program untuk menghitung bonus tiap karyawan
# Dataset karyawan
nama <- c("Bagas", "Joan", "Alya", "Dwi", "Nabil")
usia <- c(25, 30, 27, 35, 40)
gaji <- c(5000, 7000, 6500, 10000, 12000)
posisi <- c("Staf", "Pengawas", "Staf", "Manajer", "Direktur")
kinerja <- c("Baik", "Sangat baik", "Rata - rata", "Baik", "Sangat baik")
# Fungsi menghitung bonus berdasarkan kinerja
Hasil_Bonus <- function(kinerja, gaji) {
if (kinerja == "Sangat baik") {
return(gaji * 0.2) # Bonus 20% untuk kinerja "Sangat baik"
} else if (kinerja == "Baik") {
return(gaji * 0.1) # Bonus 10% untuk kinerja "Baik"
} else if (kinerja == "Rata - rata") {
return(gaji * 0.05) # Bonus 5% untuk kinerja "Rata-rata"
} else {
return(0) # Tidak ada bonus untuk kategori lain
}
}
# Menghitung bonus untuk setiap karyawan
Bonus <- numeric(length(nama))
for (i in 1:length(nama)) {
Bonus[i] <- Hasil_Bonus(kinerja[i], gaji[i]) # Menggunakan fungsi untuk menghitung bonus
}
# Menampilkan hasil dengan format rapi
for (i in 1:length(nama)) {
cat(sprintf("Nama: %s, Bonus: %d\n", nama[i], Bonus[i]))
}## Nama: Bagas, Bonus: 500
## Nama: Joan, Bonus: 1400
## Nama: Alya, Bonus: 325
## Nama: Dwi, Bonus: 1000
## Nama: Nabil, Bonus: 2400
3. Loop (for and While)
3.1 Gunakan for loop untuk membuat daftar karyawan dengan gaji lebih dari 6000.
# Dataset
nama <- c("Bagas", "Joan", "Alya", "Dwi", "Nabil")
Usia <- c(25, 30, 27, 35, 40)
gaji <- c(5000, 7000, 6500, 10000, 12000)
Posisi <- c("Staf", "Pengawas", "Staf", "Manajer", "Direktur")
kinerja <- c("Baik", "Sangat Baik", "Rata - rata", "Baik", "Sangat Baik")
for (i in 1:length(nama)) {
if (gaji[i] > 6000) { # Jika gaji lebih dari 6000
cat(sprintf("Name: %s, Salary: %d\n", nama[i], gaji[i])) # Maka print
}
}## Name: Joan, Salary: 7000
## Name: Alya, Salary: 6500
## Name: Dwi, Salary: 10000
## Name: Nabil, Salary: 12000
3.2 Gunakan while loop untuk menampilkan karyawan hingga “Manajer” ditemukan.
# Dataset
Nama <- c("Bagas", "Joan", "Alya", "Dwi", "Nabil")
Usia <- c(25, 30, 27, 35, 40)
Gaji <- c(5000, 7000, 6500, 10000, 12000)
Posisi <- c("Staf", "Pengawas", "Staf", "Manajer", "Direktur")
Kinerja <- c("Baik", "Sangat Baik", "Rata - rata", "Baik", "Sangat Baik")
# membuat inisial variabel untuk iterasi
i <- 1
# Loop hingga menemukan "Manager"
while (i <= length(nama)) { # mengulang sampai jumlah pada Nama terpenuhi
cat(sprintf("Name: %s, Position: %s\n", Nama[i], Posisi[i])) # Mencetak nama dan posisi karyawan
if (Posisi[i] == "Manajer") { # jika terdapat posisi manajer maka loop akan berhenti
cat("(Stop here)\n")
break # Berhenti untuk iterasi selanjutnya
}
i <- i + 1 # Menambah nilai indeks untuk iterasi selanjutnya
# Jika tidak ditambahkan, nilai i akan tetap 1 dan menyebabkan program berjalan tanpa henti.
}## Name: Bagas, Position: Staf
## Name: Joan, Position: Pengawas
## Name: Alya, Position: Staf
## Name: Dwi, Position: Manajer
## (Stop here)
3.3 Gunakan break untuk menghentikan loop ketika karyawan dengan gaji di atas 10.000 ditemukan.
# Dataset
Nama <- c("Bagas", "Joan", "Alya", "Dwi", "Nabil")
Usia <- c(25, 30, 27, 35, 40)
Gaji <- c(5000, 7000, 6500, 10000, 12000)
Posisi <- c("Staf", "Pengawas", "Staf", "Manajer", "Direktur")
Kinerja <- c("Baik", "Sangat Baik", "Rata-rata", "Baik", "Sangat Baik")
# Loop hingga menemukan gaji > 10.000
i <- 1
while (i <= length(Nama)) {
if (Gaji[i] > 10000) {
cat(sprintf("(Berhenti: %s memiliki gaji di atas 10.000)\n", Nama[i]))
break # Hentikan loop jika gaji > 10.000
}
cat(sprintf("Nama: %s, Gaji: %d\n", Nama[i], Gaji[i]))
i <- i + 1 # Increment indeks
}## Nama: Bagas, Gaji: 5000
## Nama: Joan, Gaji: 7000
## Nama: Alya, Gaji: 6500
## Nama: Dwi, Gaji: 10000
## (Berhenti: Nabil memiliki gaji di atas 10.000)
3.4 Gunakan continue untuk melewati karyawan yang kinerja “Rata - rata”
# Dataset
Nama <- c("Bagas", "Joan", "Alya", "Dwi", "Nabil")
Usia <- c(25, 30, 27, 35, 40)
Gaji <- c(5000, 7000, 6500, 10000, 12000)
Posisi <- c("Staf", "Pengawas", "Staf", "Manajer", "Direktur")
Kinerja <- c("Baik", "Sangat baik", "Rata - rata", "Baik", "Sangat baik")
# Mengecek apakah kinerja karyawan pada indeks ke-i adalah "Rata - rata"
for (i in 1:length(nama)) {
if (kinerja[i] == "Rata - rata") {
next # Jika ada kinerja "Rata - rata", lewati iterasi ini dan lanjut ke berikutnya
}
cat(sprintf("Name: %s, Salary: %d, Performance: %s\n", nama[i], gaji[i], kinerja[i])) # Jika Kinerja buka "Rata-rata", maka: Cetak nama, gaji dan kinerja karyawan ke-i.
}## Name: Bagas, Salary: 5000, Performance: Baik
## Name: Joan, Salary: 7000, Performance: Sangat Baik
## Name: Dwi, Salary: 10000, Performance: Baik
## Name: Nabil, Salary: 12000, Performance: Sangat Baik