Syntax and Control Flow

Programming Data Science

awokwowk


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