# Algoritma dan Pemrograman, Array dan Method

**URL:** <https://sorumatik.co/t/algoritma-dan-pemrograman-array-dan-method/664411>\
**Category:** YKS TYT\
**Created:** [Haziran 1, 2026, 8:12öö UTC](https://sorumatik.co/t/algoritma-dan-pemrograman-array-dan-method/664411 "2026-06-01T08:12:22Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![media\_dishubsumsel](https://sorumatik.co/user_avatar/sorumatik.co/media_dishubsumsel/32/62303_2.png) [@media\_dishubsumsel](https://sorumatik.co/u/media_dishubsumsel)\
**Post date:** [Haziran 1, 2026, 8:12öö UTC](https://sorumatik.co/t/algoritma-dan-pemrograman-array-dan-method/664411/1 "2026-06-01T08:12:22Z")

</div>

Buatlah Program Sederhana menggunakan Operator, IF dan Array dengan kasus berikut:  
Pada sebuah perusahaan dengan tiga golongan Karyawan, yaitu:

1. Jika Golongan A: Gaji Rp. 5.000.000

2. Jika Golongan B: Gaji Rp. 6.500.000

3. Jika Golongan C: Gaji Rp. 9.500.000

Gaji setiap golongan disimpan pada Array Gaji,

1. Jika di Input Goloangan “A” maka akan mengambil Gaji pada Array 0

2. Jika di Input Goloangan “B” maka akan mengambil Gaji pada Array 1

3. 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:

1. Jika Karyawan lembur 1 Jam maka gaji lemburnya 30% (array lembur) dari Gaji Pokok dari Array Gaji sesuai Golongan

2. Jika Karyawan lembur 2 Jam maka gaji lemburnya 32% (array lembur) dari Gaji Pokok dari Array Gaji sesuai Golongan

3. Jika Karyawan lembur 3 Jam maka gaji lemburnya 34% (array lembur) dari Gaji Pokok dari Array Gaji sesuai Golongan

4. Jika Karyawan lembur 4 Jam maka gaji lemburnya 36% (array lembur) dari Gaji Pokok dari Array Gaji sesuai Golongan

5. Jika Karyawan lembur \>= 5 Jam maka gaji lemburnya 38% (array lembur) dari Gaji Pokok dari Array Gaji sesuai Golongan.

---

<div class="post-metadata">

**Author:** ![Egitim\_Danismani](https://sorumatik.co/user_avatar/sorumatik.co/egitim_danismani/32/86791_2.png) [@Egitim\_Danismani](https://sorumatik.co/u/Egitim_Danismani)\
**Post date:** [Haziran 1, 2026, 8:12öö UTC](https://sorumatik.co/t/algoritma-dan-pemrograman-array-dan-method/664411/2 "2026-06-01T08:12:41Z")

</div>

## 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]

1. [Struktur Kode Program](#kode-program)
2. [Penjelasan Komponen Array](#penjelasan-array)
3. [Tabel Perbandingan Gaji Pokok](#tabel-gaji)
4. [Tabel Persentase Lembur](#tabel-lembur)
5. [Pertanyaan Umum (FAQ)](#faq)

* * *

### 1. Struktur Kode Program

Berikut adalah implementasi menggunakan bahasa pemrogaman **Java** :

```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?

---

<div class="post-metadata">

**Author:** ![media\_dishubsumsel](https://sorumatik.co/user_avatar/sorumatik.co/media_dishubsumsel/32/62303_2.png) [@media\_dishubsumsel](https://sorumatik.co/u/media_dishubsumsel)\
**Post date:** [Haziran 1, 2026, 8:39öö UTC](https://sorumatik.co/t/algoritma-dan-pemrograman-array-dan-method/664411/3 "2026-06-01T08:39:31Z")

</div>

berikan sumber referensi terkait persoalan tersebut

---

<div class="post-metadata">

**Author:** ![Egitim\_Danismani](https://sorumatik.co/user_avatar/sorumatik.co/egitim_danismani/32/86791_2.png) [@Egitim\_Danismani](https://sorumatik.co/u/Egitim_Danismani)\
**Post date:** [Haziran 1, 2026, 8:39öö UTC](https://sorumatik.co/t/algoritma-dan-pemrograman-array-dan-method/664411/4 "2026-06-01T08:39:40Z")

</div>

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]

1. [Referensi Dokumentasi Resmi](#dokumentasi-resmi)
2. [Buku Teks Akademik](#buku-teks)
3. [Materi Kursus Pemrograman](#materi-kursus)
4. [Tabel Komponen Teoretis](#tabel-teori)
5. [Pertanyaan Umum (FAQ)](#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?
