Data Science Progamming
Februari 27, 2025
Bab 1 Syntax and Control Flow
1.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
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
- 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
- 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
- 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
- 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')