Buatlah Program Sederhana menggunakan Operator, IF dan Array dengan kasus berikut:
Pada sebuah perusahaan dengan tiga golongan Karyawan, yaitu:
-
Jika Golongan A: Gaji Rp. 5.000.000
-
Jika Golongan B: Gaji Rp. 6.500.000
-
Jika Golongan C: Gaji Rp. 9.500.000
Gaji setiap golongan disimpan pada Array Gaji,
-
Jika di Input Goloangan “A” maka akan mengambil Gaji pada Array 0
-
Jika di Input Goloangan “B” maka akan mengambil Gaji pada Array 1
-
Jika di Input Goloangan “C” maka akan mengambil Gaji pada Array 2
Buat Persen Array lembur 30, 32, 34,36,38
Jika karyawan tersebut lembur, maka mereka dibayar per-Jam dengan ketentuan sebagai berikut:
-
Jika Karyawan lembur 1 Jam maka gaji lemburnya 30% (array lembur) dari Gaji Pokok dari Array Gaji sesuai Golongan
-
Jika Karyawan lembur 2 Jam maka gaji lemburnya 32% (array lembur) dari Gaji Pokok dari Array Gaji sesuai Golongan
-
Jika Karyawan lembur 3 Jam maka gaji lemburnya 34% (array lembur) dari Gaji Pokok dari Array Gaji sesuai Golongan
-
Jika Karyawan lembur 4 Jam maka gaji lemburnya 36% (array lembur) dari Gaji Pokok dari Array Gaji sesuai Golongan
-
Jika Karyawan lembur >= 5 Jam maka gaji lemburnya 38% (array lembur) dari Gaji Pokok dari Array Gaji sesuai Golongan.
Program Perhitungan Gaji Karyawan (Java)
Program ini dirancang untuk menghitung total gaji karyawan berdasarkan Golongan dan Durasi Lembur menggunakan konsep Array, Operator, dan percabangan IF-ELSE.
[Ringkasan Logika]
- Gaji Pokok: Disimpan dalam array berdasarkan golongan (A, B, C).
- Persentase Lembur: Disimpan dalam array indeks 0 hingga 4 (30% sampai 38%).
- Logika Pilihan: Menggunakan
if-else untuk menentukan indeks array gaji dan indeks array lembur berdasarkan input pengguna.
[Daftar Isi]
- Struktur Kode Program
- Penjelasan Komponen Array
- Tabel Perbandingan Gaji Pokok
- Tabel Persentase Lembur
- Pertanyaan Umum (FAQ)
1. Struktur Kode Program
Berikut adalah implementasi menggunakan bahasa pemrogaman Java:
import java.util.Scanner;
public class HitungGajiKaryawan {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// Definisi Array Gaji Pokok
long[] arrayGaji = {5000000, 6500000, 9500000};
// Definisi Array Persen Lembur (dalam desimal)
double[] arrayLembur = {0.30, 0.32, 0.34, 0.36, 0.38};
System.out.print("Masukkan Golongan (A/B/C): ");
char golongan = input.next().toUpperCase().charAt(0);
System.out.print("Masukkan Durasi Lembur (Jam): ");
int jamLembur = input.nextInt();
long gajiPokok = 0;
double persenLembur = 0;
// Logika IF untuk menentukan Gaji berdasarkan Array
if (golongan == 'A') {
gajiPokok = arrayGaji[0];
} else if (golongan == 'B') {
gajiPokok = arrayGaji[1];
} else if (golongan == 'C') {
gajiPokok = arrayGaji[2];
} else {
System.out.println("Golongan tidak valid!");
return;
}
// Logika IF untuk menentukan Persen Lembur berdasarkan Array
if (jamLembur == 1) {
persenLembur = arrayLembur[0];
} else if (jamLembur == 2) {
persenLembur = arrayLembur[1];
} else if (jamLembur == 3) {
persenLembur = arrayLembur[2];
} else if (jamLembur == 4) {
persenLembur = arrayLembur[3];
} else if (jamLembur >= 5) {
persenLembur = arrayLembur[4];
} else {
persenLembur = 0; // Tidak lembur
}
// Hitung Gaji Lembur dan Total
double nominalLembur = gajiPokok * persenLembur;
double totalGaji = gajiPokok + nominalLembur;
// Output Hasil
System.out.println("\n--- Rincian Gaji ---");
System.out.println("Gaji Pokok : Rp " + gajiPokok);
System.out.println("Bonus Lembur : Rp " + (long)nominalLembur + " (" + (persenLembur*100) + "%)");
System.out.println("Total Diterima: Rp " + (long)totalGaji);
}
}
2. Penjelasan Komponen Array
Dalam algoritma ini, Array digunakan untuk menyimpan data statis agar kode lebih rapi dan mudah dikelola:
arrayGaji: Menyimpan nilai numerik gaji. Menggunakan tipe data long karena angka mencapai jutaan.
arrayLembur: Menyimpan persentase. Dalam perhitungan pemrograman, 30% ditulis sebagai 0.30 untuk mempermudah operasi perkalian langsung dengan gaji pokok.
Pro Tip: Penggunaan toUpperCase() pada input karakter sangat penting agar program tetap berjalan meskipun pengguna memasukkan huruf kecil ‘a’ atau ‘b’.
3. Tabel Perbandingan Gaji Pokok
| Golongan |
Indeks Array |
Nominal Gaji |
| A |
arrayGaji[0] |
Rp 5.000.000 |
| B |
arrayGaji[1] |
Rp 6.500.000 |
| C |
arrayGaji[2] |
Rp 9.500.000 |
4. Tabel Persentase Lembur
| Jam Lembur |
Indeks Array |
Persentase |
| 1 Jam |
arrayLembur[0] |
30% |
| 2 Jam |
arrayLembur[1] |
32% |
| 3 Jam |
arrayLembur[2] |
34% |
| 4 Jam |
arrayLembur[3] |
36% |
| ≥ 5 Jam |
arrayLembur[4] |
38% |
5. Frequently Asked Questions
1. Mengapa menggunakan tipe data double untuk lembur?
Karena persentase melibatkan angka desimal. Jika menggunakan int, angka 0.30 akan dianggap 0, sehingga perhitungan bonus menjadi salah.
2. Apa yang terjadi jika jam lembur adalah 0?
Program di atas telah diatur dengan else { persenLembur = 0; }, sehingga jika tidak lembur, bonus yang didapat adalah Rp 0.
3. Bisakah array gaji digabung dengan array lembur?
Secara teknis bisa menggunakan array multidimensi, namun untuk kasus ini, menggunakan dua array terpisah lebih direkomendasikan agar logika program lebih mudah dipahami oleh pemula.
Apakah Anda ingin saya menambahkan fitur perulangan (looping) agar program bisa menghitung gaji banyak karyawan sekaligus tanpa harus menjalankan ulang program?
berikan sumber referensi terkait persoalan tersebut
Tentu, berikut adalah daftar sumber referensi akademik dan dokumentasi teknis yang berkaitan dengan konsep Array, Percabangan (IF), dan Algoritma Pemrograman yang digunakan dalam menyelesaikan kasus perhitungan gaji tersebut:
[Ringkasan Referensi]
- Konsep Dasar: Logika pemrograman menggunakan struktur kendali aliran (flow control) dan penyimpanan data linier.
- Bahasa Pemrograman: Dokumentasi resmi Oracle untuk implementasi Array dan Operator pada Java.
- Standar Industri: Praktik terbaik dalam penggunaan tipe data numerik untuk aplikasi finansial.
[Daftar Isi]
- Referensi Dokumentasi Resmi
- Buku Teks Akademik
- Materi Kursus Pemrograman
- Tabel Komponen Teoretis
- Pertanyaan Umum (FAQ)
1. Referensi Dokumentasi Resmi
Untuk memahami bagaimana Array dan Operator bekerja secara teknis di balik layar, referensi utama yang digunakan adalah dokumentasi pengembang:
- Oracle Java Documentation (Arrays): Menjelaskan bagaimana array didefinisikan sebagai objek yang menampung jumlah tetap nilai dari tipe tunggal.
- Sumber: *
- Java Conditional Statements: Panduan tentang penggunaan
if-else dan switch-case dalam mengontrol logika program berdasarkan input user.
- Sumber: *
2. Buku Teks Akademik
Prinsip-prinsip algoritma yang diterapkan pada kasus ini (pengindeksan array dan seleksi kondisi) didasarkan pada literatur ilmu komputer berikut:
- “Introduction to Algorithms” oleh Thomas H. Cormen: Referensi standar dunia untuk pemahaman struktur data dasar termasuk array dan efisiensi algoritma.
- “Java: How to Program” oleh Deitel & Deitel: Buku ini secara spesifik membahas aplikasi praktis array untuk menyimpan data seperti tabel gaji dan penggunaan operator aritmatika dalam aplikasi bisnis.
- “Algoritma dan Pemrograman” oleh Rinaldi Munir: Referensi populer dalam bahasa Indonesia yang menjelaskan penyelesaian masalah menggunakan skema sequential, selection (IF), dan repetition.
3. Materi Kursus Pemrograman
Beberapa platform edukasi menyediakan modul spesifik mengenai “Array Manipulation” yang relevan dengan kasus pengambilan data gaji berdasarkan indeks:
- W3Schools Java Arrays: Memberikan contoh praktis pengaksesan elemen array menggunakan indeks
[0], [1], [2].
- GeeksforGeeks - Control Statements in Java: Penjelasan mendalam mengenai logika percabangan untuk menentukan kategori (Golongan A, B, C).
4. Tabel Komponen Teoretis
| Komponen Algoritma |
Deskripsi Teoretis |
Referensi Standar |
| Array Data |
Kumpulan elemen dengan tipe data yang sama yang diakses melalui indeks. |
IEEE Computer Society |
| Conditional (IF) |
Struktur keputusan yang mengevaluasi ekspresi boolean. |
Boolean Logic Standards |
| Arithmetic Operators |
Penggunaan * (perkalian) dan + (penjumlahan) untuk kalkulasi finansial. |
ISO/IEC 10967 |
5. Frequently Asked Questions
1. Mengapa indeks array dimulai dari 0?
Berdasarkan standar bahasa pemrograman tingkat tinggi seperti C dan Java, indeks dimulai dari 0 karena ia merepresentasikan jarak (offset) dari alamat memori awal array tersebut.
2. Apakah referensi ini berlaku untuk bahasa selain Java?
Ya, konsep dasar Array dan IF bersifat universal dalam pemrograman (language-agnostic), namun sintaksis spesifiknya mungkin berbeda (misalnya di Python atau C++).
3. Dimana saya bisa mempelajari algoritma penggajian lebih lanjut?
Anda dapat merujuk pada modul Enterprise Resource Planning (ERP) atau sistem informasi akuntansi yang membahas logika payroll secara sistematis.
Apakah Anda memerlukan penjelasan lebih mendalam mengenai salah satu buku referensi di atas, atau ingin saya membantu menyusunkan dokumentasi teknis (commenting) yang lebih detail di dalam kode program tersebut?