Syntax & Flow
Data Science Programming
1 Objective
- Understand and implement conditional statements
(if, if-else, if-elif-else).
- Apply loops (for loop, while loop, break, continue) to analyze a dataset.
ID | Name | Age | Salary | Position | Performance |
---|---|---|---|---|---|
1 | Bagas | 25 | 5000 | Staff | Good |
2 | Joan | 30 | 7000 | Supervisor | Very Good |
3 | Alya | 27 | 6500 | Staff | Average |
4 | Dwi | 35 | 10000 | Manager | Good |
5 | Nabil | 40 | 12000 | Director | Very Good |
2 Conditional Statements
Determine bonus levels based on employee performance:
- Very Good → 20% of salary
- Good → 10% of salary
- Average → 5% of salary
2.1 Task:
Write a program to calculate each employee’s bonus.
Display the output in this format:
"Name: Bagas, Bonus: 500"
# Data karyawan
employees <- data.frame(
Name = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Salary = c(5000, 7000, 6500, 10000, 12000),
Performance = c("Good", "Very Good", "Average", "Good", "Very Good"),
stringsAsFactors = FALSE
)
# Fungsi untuk menghitung bonus menggunakan if-else
calculate_bonus <- function(salary, performance) {
if (performance == "Very Good") {
bonus <- salary * 0.2 # Jika kinerjanya "very good", maka bonus nya 20%
} else if (performance == "Good") {
bonus <- salary * 0.1 # Jika kinerjanya "good", maka bonus nya 10%
} else if (performance == "Average") {
bonus <- salary * 0.05 # Jika kinerjanya "average", maka bonus nya 5%
} else {
bonus <- 0 # Jika kategori lain, bonus 0
}
return(bonus)
}
# Menghitung dan menampilkan bonus
for (i in 1:nrow(employees)) {
bonus <- calculate_bonus(employees$Salary[i], employees$Performance[i])
cat(sprintf("Name: %s, Bonus: %d\n", employees$Name[i], bonus))
}
## Name: Bagas, Bonus: 500
## Name: Joan, Bonus: 1400
## Name: Alya, Bonus: 325
## Name: Dwi, Bonus: 1000
## Name: Nabil, Bonus: 2400
Program diatas menggunakan “if-then-else” untuk memberikan bonus pada karyawan sesuai dengan kinerja-nya masing masing. Jika kinerja karyawan adalah “very good”, maka bonus yang didapat adalah sebesar 20%. Jika kinerja karyawan adalah “good”, maka bonus yang didapat adalah sebesar 10%. Jika kinerja karyawan adalah “average”, maka bonus yang didapat adalah sebesar 5%.
3 Loops (For & While)
3.1 Use a for loop to list employees with a salary greater than 6000.
Expected Output:
Name: Joan, Salary: 7000
Name: Alya, Salary: 6500
Name: Dwi, Salary: 10000
Name: Nabil, Salary: 12000
# memuat data karyawan sebagai data frame
employees <- data.frame(
Name = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Salary = c(5000, 7000, 6500, 10000, 12000)
)
# Menggunakan for loop untuk mencetak karyawan dengan gaji lebih dari 6000
for (i in 1:nrow(employees)) {
if (employees$Salary[i] > 6000) {
cat("Name:", employees$Name[i], ", Salary:", employees$Salary[i], "\n")
}
}
## Name: Joan , Salary: 7000
## Name: Alya , Salary: 6500
## Name: Dwi , Salary: 10000
## Name: Nabil , Salary: 12000
program diatas menggunakan “for-loop” untuk menampilkan list yang berisikan karyawan dengan gaji (salary) yang lebih besar dari 6000, dijelaskan dalam hasil adalah Joan, Alya, Dwi, dan Nabil
3.2 Use a while loop to display employees until a “Manager” is found.
Expected Output:
Name: Bagas, Position: Staff
Name: Joan, Position: Supervisor
Name: Alya, Position: Staff
Name: Dwi, Position: Manager (Stop here)
# memuat data karyawan sebagai data frame
employees <- data.frame(
Name = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Position = c("Staff", "Supervisor", "Staff", "Manager", "Director")
)
# Inisialisasi variabel indeks
i <- 1
# Menggunakan while loop untuk mencetak karyawan sampai menemukan "Manager"
while (i <= nrow(employees)) {
if (employees$Position[i] == "Manager") {
cat("Name:", employees$Name[i], ", Position:", employees$Position[i], "(Stop here)\n")
break
} else {
cat("Name:", employees$Name[i], ", Position:", employees$Position[i], "\n")
}
i <- i + 1
}
## Name: Bagas , Position: Staff
## Name: Joan , Position: Supervisor
## Name: Alya , Position: Staff
## Name: Dwi , Position: Manager (Stop here)
Program diatas menggunakan “while-loop” untuk menampilkan karyawan hingga muncul “manager”. Dengan cara di masukan awal data mengenai nama karyawan dan posisi nya (position), lalu digunakan “while” untuk melakukan pengulangan, disertai dengan “if” untuk menandakan kondisi bahwa “manager” sudah ditemukan atau tidak.
3.3 Use
break
to stop the loop when an employee with a salary above
10,000 is found.
Expected Output:
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)
# membuat data frame dari karyawan (employees) dengan salary-nya
employees <- data.frame(
Name = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Salary = c(5000, 7000, 6500, 10000, 12000)
)
# Loop through employees
for (i in 1:nrow(employees)) {
name <- employees$Name[i]
salary <- employees$Salary[i]
if (salary > 10000) {
cat("(Stopped because", name, "has a salary above 10,000)\n")
break # Stop/hentikan loop saat salary > 10,000
}
cat("Name:", name, ", Salary:", salary, "\n")
}
## 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)
Program diatas menggunakan “for-looping” untuk menampilkan seluruh karyawan beserta gaji nya (salary), lalu digunakan “break” untuk menghentikan loop saat gaji (salary) sudah melebihi 10.000.
3.4 Use
continue
to skip employees with “Average”
performance.
Expected Output:
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")
# membuat data frame dati karyawan (employees) dengan kinerjanya
employees <- data.frame(
Name = c("Bagas", "Joan", "Alya", "Dwi", "Nabil"),
Performance = c("Good", "Very Good", "Average", "Good", "Very Good")
)
# Loop pada employees
for (i in 1:nrow(employees)) {
name <- employees$Name[i]
performance <- employees$Performance[i]
if (performance == "Average") {
cat("(", name, "is skipped because the performance is 'Average')\n")
next # melewati employees dengan kinerja "Average"
}
cat("Name:", name, ", Performance:", performance, "\n")
}
## Name: Bagas , Performance: Good
## Name: Joan , Performance: Very Good
## ( Alya is skipped because the performance is 'Average')
## Name: Dwi , Performance: Good
## Name: Nabil , Performance: Very Good
Program diatas menggunakan “for-loop” untuk menampilkan list karyawan beserta kinerjanya, lalu digunakan continue (“next” untuk R) untuk melewati karyawan dengan kinerja “average”.