Pemograman Ilmu Data
Sintaksis dan Aliran Kontrol
1 KODE R
2 2.5 Praktikum
2.1 2.5.1 Tujuan
Menentukan tipe data variabel berikut dalam Python dan R:
| \[\text{Pengenal}\] | \[\text{Nama} \] | \[\text{Usia} \] | \[\text{Gaji} \] | \[\text{Posisi} \] | \[\text{Pertunjukan} \] |
|---|---|---|---|---|---|
| 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 |
2.1.1 Kode R
# Membuat dataset karyawan sebagai list of # Dataset karyawan dalam bentuk list of lists
employees <- list(
list(ID = 1, Name = "Bagas", Age = 25, Salary = 5000, Position = "Staff", Performance = "Good"),
list(ID = 2, Name = "Joan", Age = 30, Salary = 7000, Position = "Supervisor", Performance = "Very Good"),
list(ID = 3, Name = "Alya", Age = 27, Salary = 6500, Position = "Staff", Performance = "Average"),
list(ID = 4, Name = "Dwi", Age = 35, Salary = 10000, Position = "Manager", Performance = "Good"),
list(ID = 5, Name = "Nabil", Age = 40, Salary = 12000, Position = "Director", Performance = "Very Good")
)2.1.1.1 Penjelasan Kode
Data karyawan disimpan dalam bentuk list of lists.
Setiap karyawan direpresentasikan sebagai list yang berisi atribut seperti ID, Name, Age, Salary, Position, dan Performance.
2.1.2 Menaikkan Gaji Berdasarkan Performa
## Contoh 1: Penyesuaian gaji berdasarkan performa
for (i in seq_along(employees)) {
if (employees[[i]]$Performance == "Very Good") {
kenaikan <- employees[[i]]$Salary * 0.10
} else if (employees[[i]]$Performance == "Good") {
kenaikan <- employees[[i]]$Salary * 0.05
} else if (employees[[i]]$Performance == "Average") {
kenaikan <- employees[[i]]$Salary * 0.02
} else {
kenaikan <- employees[[i]]$Salary * 0.01
}
employees[[i]]$Salary <- employees[[i]]$Salary + kenaikan
cat(employees[[i]]$Name, ": Gaji baru =", employees[[i]]$Salary, "\n")
}## Bagas : Gaji baru = 5250
## Joan : Gaji baru = 7700
## Alya : Gaji baru = 6630
## Dwi : Gaji baru = 10500
## Nabil : Gaji baru = 13200
2.1.2.1 Penjelasan Kode
Loop for digunakan untuk menelusuri setiap karyawan.
Struktur if-else menentukan kenaikan gaji berdasarkan performa:
“Very Good” → Naik 10%
“Good” → Naik 5%
“Average” → Naik 2%
Lainnya → Naik 1%
- Gaji karyawan diperbarui dan ditampilkan
2.1.3 Mencari Karyawan dengan Posisi “Director”
##
## Contoh 2: Mencari posisi Director
index <- 1
while (index <= length(employees)) {
if (employees[[index]]$Position == "Director") {
cat("Found:", employees[[index]]$Name, "adalah Director\n")
break
}
index <- index + 1
}## Found: Nabil adalah Director
2.1.3.1 Penjelasan Kode
Loop while digunakan untuk mencari karyawan dengan posisi “Director”.
Jika ditemukan, nama karyawan akan dicetak, lalu loop berhenti menggunakan break.
Jika tidak ditemukan, index bertambah dan loop terus berjalan.
2.1.4 Melewati Pegawai dengan Posisi “Staff”
##
## Contoh 3: Filter non-staff
for (emp in employees) {
if (emp$Position == "Staff") {
next
}
cat(emp$Name, "(", emp$Position, ")\n")
}## Joan ( Supervisor )
## Dwi ( Manager )
## Nabil ( Director )
2.1.4.1 Penjelasan Kode
Loop for mengecek semua karyawan.
Jika posisi karyawan adalah “Staff”, perintah next akan melewatkan iterasi tersebut.
Karyawan dengan posisi selain “Staff” akan ditampilkan.
2.1.5 Mengelompokkan Karyawan Berdasarkan Usia
##
## Contoh 4: Kategori usia
for (emp in employees) {
if (emp$Age < 30) {
kategori <- "Muda"
} else if (emp$Age >= 30 & emp$Age < 40) {
kategori <- "Dewasa"
} else {
kategori <- "Senior"
}
cat(emp$Name, ":", kategori, "\n")
}## Bagas : Muda
## Joan : Dewasa
## Alya : Muda
## Dwi : Dewasa
## Nabil : Senior
2.1.5.1 Penjelasan Kode
Loop for digunakan untuk mengecek umur setiap karyawan.
if-else menentukan kategori usia:
< 30 tahun → “Muda”
30 – 39 tahun → “Dewasa”
>= 40 tahun → “Senior”
- Hasil kategori usia dicetak.
2.1.6 Mencari Karyawan dengan Gaji > 10K tapi Bukan “Director”
# 5. Mencari karyawan dengan gaji > 10K tapi bukan "Director"
cat("\nContoh 5: Cari karyawan dengan gaji > 10k tapi bukan Director\n")##
## Contoh 5: Cari karyawan dengan gaji > 10k tapi bukan Director
counter <- 1
while (counter <= length(employees)) {
emp <- employees[[counter]]
if (emp$Position == "Director") {
counter <- counter + 1
next
}
if (emp$Salary > 10000) {
cat(emp$Name, "memenuhi kriteria\n")
break
}
counter <- counter + 1
}## Dwi memenuhi kriteria
2.1.6.1 Penjelasan Kode
Loop while digunakan untuk mencari karyawan dengan gaji lebih dari 10.000.
Jika posisi karyawan adalah “Director”, maka akan dilewati menggunakan next.
Jika ditemukan karyawan dengan gaji > 10K, namanya akan dicetak dan loop berhenti dengan break.
Loop terus berjalan hingga menemukan karyawan yang sesuai atau semua data telah dicek.
2.2 kesimpulan
Kode ini menunjukkan berbagai teknik pemrograman dalam R, seperti:
Looping (for, while) untuk membaca data karyawan.
Conditional Statements (if-else) untuk menentukan kenaikan gaji dan kategori usia.
Break & Continue (next, break) untuk mengontrol alur perulangan.
Pengolahan Data dalam list of lists untuk menyimpan dan memanipulasi informasi karyawan.
2.3 2.5.2 Pernyataan Kondisional
2.3.1 Dataset Karyawan
# Dataset Karyawan
employees <- list(
list(ID = 1, Name = "Bagas", Age = 25, Salary = 5000, Position = "Staff", Performance = "Good"),
list(ID = 2, Name = "Joan", Age = 30, Salary = 7000, Position = "Supervisor", Performance = "Very Good"),
list(ID = 3, Name = "Alya", Age = 27, Salary = 6500, Position = "Staff", Performance = "Average"),
list(ID = 4, Name = "Dwi", Age = 35, Salary = 10000, Position = "Manager", Performance = "Good"),
list(ID = 5, Name = "Nabil", Age = 40, Salary = 12000, Position = "Director", Performance = "Very Good")
)2.3.1.1 Penjelasan Kode
employees adalah list yang berisi daftar karyawan.
Setiap karyawan direpresentasikan sebagai list yang berisi atribut seperti ID, Name, Age, Salary, Position, dan Performance.
Data ini akan digunakan untuk perhitungan bonus.
2.3.2
## Bonus Karyawan:
for (emp in employees) {
if (emp$Performance == "Very Good") {
bonus <- emp$Salary * 0.20 # 20% untuk performa Very Good
} else if (emp$Performance == "Good") {
bonus <- emp$Salary * 0.10 # 10% untuk performa Good
} else if (emp$Performance == "Average") {
bonus <- emp$Salary * 0.05 # 5% untuk performa Average
} else {
bonus <- 0 # Tidak ada bonus untuk performa lainnya
}
cat("Name:", emp$Name, ", Bonus:", format(bonus, nsmall = 2), "\n")
}## Name: Bagas , Bonus: 500.00
## Name: Joan , Bonus: 1400.00
## Name: Alya , Bonus: 325.00
## Name: Dwi , Bonus: 1000.00
## Name: Nabil , Bonus: 2400.00
2.3.2.1 Penjelasan Kode
cat(“Bonus Karyawan:”) → Menampilkan judul sebelum daftar bonus karyawan.
Loop for → Menelusuri setiap karyawan dalam list employees.
if-else → Menentukan besar bonus berdasarkan kategori performa:
“Very Good” → Bonus 20% dari gaji.
“Good” → Bonus 10% dari gaji.
“Average” → Bonus 5% dari gaji.
Kategori lainnya → Bonus 0.
format(bonus, nsmall = 2) → Menampilkan bonus dengan dua angka desimal untuk format yang lebih rapi.
cat() → Digunakan untuk mencetak hasil dengan format “Name: Nama, Bonus: Bonus”.
2.4 Kesimpulan
Kode ini menghitung bonus karyawan berdasarkan performa mereka dengan menggunakan:
Loop for untuk membaca semua karyawan.
Struktur if-else untuk menentukan besar bonus berdasarkan performa.
cat() untuk mencetak hasil dengan format yang rapi dan mudah dibaca.
2.5 2.5.3 Perulangan (For & While)
2.5.1 Gunakan for loop untuk membuat daftar karyawan dengan gaji lebih dari 6000
# Dataset Karyawan
employees <- list(
list(ID = 1, Name = "Bagas", Age = 25, Salary = 5000, Position = "Staff", Performance = "Good"),
list(ID = 2, Name = "Joan", Age = 30, Salary = 7000, Position = "Supervisor", Performance = "Very Good"),
list(ID = 3, Name = "Alya", Age = 27, Salary = 6500, Position = "Staff", Performance = "Average"),
list(ID = 4, Name = "Dwi", Age = 35, Salary = 10000, Position = "Manager", Performance = "Good"),
list(ID = 5, Name = "Nabil", Age = 40, Salary = 12000, Position = "Director", Performance = "Very Good")
)
# 1. Menampilkan karyawan dengan gaji lebih dari 6000
cat("Karyawan dengan gaji lebih dari 6000:\n")## Karyawan dengan gaji lebih dari 6000:
for (emp in employees) {
if (emp$Salary > 6000) {
cat("Name:", emp$Name, ", Salary:", emp$Salary, "\n")
}
}## Name: Joan , Salary: 7000
## Name: Alya , Salary: 6500
## Name: Dwi , Salary: 10000
## Name: Nabil , Salary: 12000
2.5.1.1 Penjelasan Kode
Loop for membaca semua data karyawan.
if (emp$Salary > 6000) mengecek apakah gaji karyawan lebih dari 6000.
Jika kondisi terpenuhi, nama dan gaji dicetak menggunakan cat().
2.5.2 Gunakan while loop untuk menampilkan karyawan hingga “Manager” ditemukan
# 2. Menampilkan karyawan hingga menemukan Manager
cat("\nMenampilkan karyawan hingga menemukan Manager:\n")##
## Menampilkan karyawan hingga menemukan Manager:
index <- 1
while (index <= length(employees)) {
emp <- employees[[index]]
cat("Name:", emp$Name, ", Position:", emp$Position, "\n")
if (emp$Position == "Manager") {
cat("(Stop here)\n") # Memberi tahu bahwa loop berhenti
break # Keluar dari loop setelah menemukan Manager
}
index <- index + 1
}## Name: Bagas , Position: Staff
## Name: Joan , Position: Supervisor
## Name: Alya , Position: Staff
## Name: Dwi , Position: Manager
## (Stop here)
2.5.2.1 Penjelasan Kode
while (index <= length(employees)) menjalankan loop selama indeks dalam batas panjang daftar.
cat() mencetak nama dan posisi karyawan.
Jika jabatan “Manager” ditemukan, teks “(Stop here)” ditampilkan, dan loop berhenti dengan break.
2.5.3 Gunakan break untuk menghentikan loop saat menemukan gaji > 10.000
# 3. Menampilkan karyawan hingga menemukan gaji di atas 10.000
cat("\nMenampilkan karyawan hingga menemukan gaji di atas 10.000:\n")##
## Menampilkan karyawan hingga menemukan gaji di atas 10.000:
for (emp in employees) {
if (emp$Salary > 10000) {
cat("(Stopped because", emp$Name, "has a salary above 10,000)\n")
break # Menghentikan loop setelah menemukan gaji > 10.000
}
cat("Name:", emp$Name, ", Salary:", emp$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)
2.5.3.1 Penjelasan Kode
Loop for membaca semua karyawan.
Jika gaji lebih dari 10.000, teks pemberhentian ditampilkan, dan loop berhenti dengan break.
Sebelum itu, semua karyawan dengan gaji di bawah 10.000 tetap ditampilkan.
2.5.4 Gunakan next untuk melewati karyawan dengan performa “Average”
# 4. Menampilkan karyawan dengan mengabaikan performa 'Average'
cat("\nMenampilkan karyawan dengan mengabaikan performa 'Average':\n")##
## Menampilkan karyawan dengan mengabaikan performa 'Average':
skipped <- "" # Variabel untuk menyimpan info karyawan yang dilewati
for (emp in employees) {
if (emp$Performance == "Average") {
skipped <- paste("(", emp$Name, "is skipped because the performance is 'Average')")
next # Lewati iterasi jika performa "Average"
}
cat("Name:", emp$Name, ", Performance:", emp$Performance, "\n")
}## 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')
2.5.4.1 Penjelasan Kode
Loop for membaca semua karyawan.
Jika performa “Average”, variabel skipped menyimpan teks bahwa karyawan dilewati.
next digunakan untuk melewati iterasi, sehingga data karyawan tersebut tidak dicetak.
Setelah loop selesai, teks skipped ditampilkan untuk memberi tahu siapa yang dilewati.
2.6 Kesimpulan
- Loop for untuk iterasi data:
Digunakan untuk menelusuri seluruh daftar karyawan.
Menerapkan kondisi untuk menyaring data, seperti menampilkan karyawan dengan gaji lebih dari 6000.
- Loop while untuk membaca data secara bertahap:
- Digunakan untuk menampilkan karyawan satu per satu hingga menemukan karyawan dengan jabatan “Manager”, lalu berhenti.
- Penggunaan break dalam loop:
Digunakan untuk menghentikan iterasi lebih awal ketika syarat tertentu terpenuhi.
Contoh: Jika ada karyawan dengan gaji lebih dari 10.000, loop langsung dihentikan.
- Penggunaan next untuk melewati iterasi:
- Digunakan untuk melewati karyawan dengan performa “Average”, sehingga mereka tidak ditampilkan dalam hasil akhir.