public class SimulasiStep {
    public static void main(String[] args) {
        System.out.println("[main] mulai, memanggil hitungGaji(40, 25000)");
        int gaji = hitungGaji(40, 25000);
        System.out.println("[main] step over: gaji = " + gaji);
        System.out.println("[main] selesai");
    }

    static int hitungGaji(int jam, int tarif) {
        System.out.println("  [step in] masuk hitungGaji: jam=" + jam
                + ", tarif=" + tarif);

        int pokok = jam * tarif;
        System.out.println("  [step over] pokok = " + pokok);

        int lembur = hitungLembur(5, tarif);
        System.out.println("  [step over] lembur = " + lembur);

        System.out.println("  [step out] hitungGaji mengembalikan "
                + (pokok + lembur));
        return pokok + lembur;
    }

    static int hitungLembur(int jam, int tarif) {
        System.out.println("    [step in] masuk hitungLembur: jam=" + jam);
        int hasil = jam * tarif * 2;
        System.out.println("    [step out] hitungLembur mengembalikan " + hasil);
        return hasil;
    }
}
