Bab 1 Syntax and Control Flow

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

Dataset dummy yang akan digunakan :

No. Nama Usia Gaji Posisi Performa
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

1.2 Pernyataan Kondisional

Tentukan tingkat bonus berdasarkan kinerja karyawan :

  • Sangat Baik → 20% dari gaji
  • Baik → 10% dari gaji
  • Rata-rata → 5% dari gaji

Tugas Kita:

  • Tulis program dalam Python dan R untuk menghitung bonus setiap karyawan
  • Menampilkan output dalam format :

Name : Bagas, Bonus : 500


1.2.1 Python Code

# Dataset dummy
data_karyawan = [
    {"Nama": "Bagas", "Gaji": 5000, "Kinerja": "Bagus"},
    {"Nama": "Joan", "Gaji": 7000, "Kinerja": "Sangat bagus"},
    {"Nama": "Alya", "Gaji": 6500, "Kinerja": "Rata-rata"},
    {"Nama": "Dwi", "Gaji": 10000, "Kinerja": "Bagus"},
    {"Nama": "Nabil", "Gaji": 12000, "Kinerja": "Sangat bagus"}
]

# Kondisi untuk menghitung bonus karyawan
def hitung_bonus(gaji, kinerja):
    if kinerja == "Sangat bagus":
        return gaji * 0.2
    elif kinerja == "Bagus":
        return gaji * 0.1
    elif kinerja == "Rata-rata":
        return gaji * 0.05
    else:
        return 0  # Jika tidak ada yang cocok

# Menghitung bonus
for karyawan in data_karyawan:
    bonus = hitung_bonus(karyawan["Gaji"], karyawan["Kinerja"])
    
    # Menampilkan hasil
    print(f"Nama: {karyawan['Nama']}, Bonus: {int(bonus)}")

Output :

## Nama: Bagas, Bonus: 500
## Nama: Joan, Bonus: 1400
## Nama: Alya, Bonus: 325
## Nama: Dwi, Bonus: 1000
## Nama: Nabil, Bonus: 2400

1.2.2 R Code

# Dataset dummy
data_karyawan <- data.frame(
  Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
  Gaji = c(5000, 7000, 6500, 10000, 12000),
  Kinerja = c("Bagus", "Sangat bagus", "Rata-rata", "Bagus", "Sangat bagus"),
  stringsAsFactors = FALSE
)

# Kondisi untuk menghitung bonus
hitung_bonus <- function(gaji, kinerja) {
  if (kinerja == "Sangat bagus") {
    return(gaji * 0.2)
  } else if (kinerja == "Bagus") {
    return(gaji * 0.1)
  } else if (kinerja == "Rata-rata") {
    return(gaji * 0.05)
  } else {
    return(0)
  }
}

# Menghitung bonus
for (i in 1:nrow(data_karyawan)) {
  bonus <- hitung_bonus(data_karyawan$Gaji[i], data_karyawan$Kinerja[i])
  
  # Menampilkan hasil
  print(paste("Nama:", data_karyawan$Nama[i], ", Bonus:", as.integer(bonus)))
}

Output :

## Nama: Bagas, Bonus: 500
## Nama: Joan, Bonus: 1400
## Nama: Alya, Bonus: 325
## Nama: Dwi, Bonus: 1000
## Nama: Nabil, Bonus: 2400

1.3 Perulangan (For & While)

1.3.1 For Loop

  1. Menggunakan For Loop untuk membuat daftar karyawan dengan gaji lebih dari 6000.

1.3.1.1 Python Code

# Dataset dummy
data_karyawan = [
    {"Nama": "Bagas", "Gaji": 5000},
    {"Nama": "Joan", "Gaji": 7000},
    {"Nama": "Alya", "Gaji": 6500},
    {"Nama": "Dwi", "Gaji": 10000},
    {"Nama": "Nabil", "Gaji": 12000}
]

# Menggunakan for loop untuk menampilkan karyawan dengan gaji lebih dari 6000
for karyawan in data_karyawan:
    if karyawan["Gaji"] > 6000:
        print(f"Nama: {karyawan['Nama']}, Gaji: {karyawan['Gaji']}")

Output :

## Nama: Joan, Gaji: 7000
## Nama: Alya, Gaji: 6500
## Nama: Dwi, Gaji: 10000
## Nama: Nabil, Gaji: 12000

1.3.1.2 R Code

# Dataset dummy
data_karyawan <- data.frame(
  Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
  Gaji = c(5000, 7000, 6500, 10000, 12000),
  stringsAsFactors = FALSE
)

# Menggunakan for loop untuk menampilkan karyawan dengan gaji lebih dari 6000
for (i in 1:nrow(data_karyawan)) {
  if (data_karyawan$Gaji[i] > 6000) {
    
    print(paste("Nama:", data_karyawan$Nama[i], ", Gaji:", data_karyawan$Gaji[i]))
  }
}

Output :

## Nama: Joan, Gaji: 7000
## Nama: Alya, Gaji: 6500
## Nama: Dwi, Gaji: 10000
## Nama: Nabil, Gaji: 12000

1.3.2 While Loop

  1. Menggunakan While Loop untuk menampilkan karyawan hingga “Manajer” ditemukan.

1.3.2.1 Python Code

# Dataset dummy
data_karyawan = [
    {"Nama": "Bagas", "Posisi": "Staf"},
    {"Nama": "Joan", "Posisi": "Pengawas"},
    {"Nama": "Alya", "Posisi": "Staf"},
    {"Nama": "Dwi", "Posisi": "Manajer"},
    {"Nama": "Nabil", "Posisi": "Direktur"}
]

# Menggunakan while loop untuk menampilkan karyawan hingga menemukan "Manajer"
i = 0
while i < len(data_karyawan):
    karyawan = data_karyawan[i]
    print(f"Nama: {karyawan['Nama']}, Posisi: {karyawan['Posisi']}")
    
    # Berhenti jika "Manajer" ditemukan
    if karyawan["Posisi"] == "Manajer":
        break
    
    i += 1

Output :

## Nama: Bagas, Posisi: Staf
## Nama: Joan, Posisi: Pengawas
## Nama: Alya, Posisi: Staf
## Nama: Dwi, Posisi: Manajer

1.3.2.2 R Code

# Dataset dummy
data_karyawan <- data.frame(
  Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
  Posisi = c("Staf", "Pengawas", "Staf", "Manajer", "Direktur"),
  stringsAsFactors = FALSE
)

# Menggunakan while loop untuk menampilkan karyawan hingga menemukan "Manajer"
i <- 1
while (i <= nrow(data_karyawan)) {
  cat("Nama:", data_karyawan$Nama[i], ", Posisi:", data_karyawan$Posisi[i], "\n")
  
  # Berhenti jika "Manajer" ditemukan
  if (data_karyawan$Posisi[i] == "Manajer") {
    cat("(Stop here)\n")
    break
  }
  
  i <- i + 1
}

Output :

## Nama: Bagas , Posisi: Staf
## Nama: Joan , Posisi: Pengawas
## Nama: Alya , Posisi: Staf
## Nama: Dwi , Posisi: Manajer
## (Stop here)

1.3.3 Break

  1. Menggunakan Break untuk menghentikan loop ketika karyawan dengan gaji di atas 10.000 ditemukan

1.3.3.1 Python Code

# Dataset dummy
data_karyawan = [
    {"Nama": "Bagas", "Gaji": 5000},
    {"Nama": "Joan", "Gaji": 7000},
    {"Nama": "Alya", "Gaji": 6500},
    {"Nama": "Dwi", "Gaji": 10000},
    {"Nama": "Nabil", "Gaji": 12000}
]

# Menggunakan break untuk menghentikan ketika gaji di atas 10.000
for karyawan in data_karyawan:
    if karyawan["Gaji"] > 10000:
        print(f"(Stopped because {karyawan['Nama']} has a salary above 10,000)")
        break
    
    print(f"Nama: {karyawan['Nama']}, Gaji: {karyawan['Gaji']}")

Output

## Nama: Bagas, Gaji: 5000
## Nama: Joan, Gaji: 7000
## Nama: Alya, Gaji: 6500
## Nama: Dwi, Gaji: 10000
## (Stopped because Nabil has a salary above 10,000)

1.3.3.2 R Code

# Dataset dummy
data_karyawan <- data.frame(
  Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
  Gaji = c(5000, 7000, 6500, 10000, 12000),
  stringsAsFactors = FALSE
)

# Menggunakan break untuk menghentikan ketika gaji di atas 10.000
for (i in 1:nrow(data_karyawan)) {
  if (data_karyawan$Gaji[i] > 10000) {
    cat("(Stopped because", data_karyawan$Nama[i], "has a salary above 10,000)\n")
    break
  }
  
  cat("Nama:", data_karyawan$Nama[i], ", Gaji:", data_karyawan$Gaji[i], "\n")
}

Output

## Nama: Bagas , Gaji: 5000
## Nama: Joan , Gaji: 7000
## Nama: Alya , Gaji: 6500
## Nama: Dwi , Gaji: 10000
## (Stopped because Nabil has a salary above 10,000)

1.3.4 Continue

  1. Gunakan Continue untuk melewati karyawan dengan kinerja “Rata-rata”.

1.3.4.1 Python Code

# Dataset dummy
data_karyawan = [
    {"Nama": "Bagas", "Performa": "Bagus"},
    {"Nama": "Joan", "Performa": "Sangat bagus"},
    {"Nama": "Alya", "Performa": "Rata-rata"},
    {"Nama": "Dwi", "Performa": "Bagus"},
    {"Nama": "Nabil", "Performa": "Sangat bagus"}
]

# Menggunakan continue untuk melewati kinerja "Rata-rata"
skip = ""
for karyawan in data_karyawan:
    if karyawan["Performa"] == "Rata-rata":
        skip = f"({karyawan['Nama']} is skipped because the performance is 'Average')"
        continue
    
    print(f"Nama: {karyawan['Nama']}, Performance: {karyawan['Performa']}")

# Menampilkan informasi karyawan
if skip:
    print(skip)

Output

## Nama: Bagas, Performance: Bagus
## Nama: Joan, Performance: Sangat bagus
## Nama: Dwi, Performance: Bagus
## Nama: Nabil, Performance: Sangat bagus
## (Alya is skip because the performance is 'Average')

1.3.4.2 R Code

# Dataset dummy
data_karyawan <- data.frame(
  Nama = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
  Performa = c("Bagus", "Sangat bagus", "Rata-rata", "Bagus", "Sangat bagus"),
  stringsAsFactors = FALSE
)

# Menggunakan continue untuk melewati "Rata-rata"
skip <- ""
for (i in 1:nrow(data_karyawan)) {
  if (data_karyawan$Performa[i] == "Rata-rata") {
    skip <- paste("(", data_karyawan$Nama[i], "is skip because the performance is 'Average')")
    next
  }
  
  cat("Nama:", data_karyawan$Nama[i], ", Performance:", data_karyawan$Performa[i], "\n")
}

# Menampilkan informasi karyawan
if (skip != "") {
  cat(skip, "\n")
}

Output

## Nama: Bagas , Performance: Bagus
## Nama: Joan , Performance: Sangat bagus
## Nama: Dwi , Performance: Bagus
## Nama: Nabil , Performance: Sangat bagus
## ( Alya is skip because the performance is 'Average')