Fungsi Matematika Dasar

Calista Donna 'Aaqilah

25082010133

Pararel C


package pkg.fungsimatematikadasar;

public class FungsiMatematikaDasar {


    // 1. Penjumlahan Dua Bilangan

    public static double tambah(double a, double b) {

        return a + b;

    }


    // 2. Pengurangan Dua Bilangan

    public static double kurang(double a, double b) {

        return a - b;

    }


    // 3. Perkalian Dua Bilangan

    public static double kali(double a, double b) {

        return a * b;

    }


    // 4. Pembagian Dua Bilangan

    public static double bagi(double a, double b) {

        if (b == 0) {

            // Menangani pembagian dengan nol

            throw new IllegalArgumentException("Pembagi tidak boleh nol.");

        }

        return a / b;

    }


    // 5. Perpangkatan (a^n) - Hanya untuk n integer positif/nol

    public static long pangkat(int basis, int eksponen) {

        if (eksponen < 0) {

            // Contoh sederhana, asumsikan eksponen non-negatif

            throw new IllegalArgumentException("Eksponen harus non-negatif untuk fungsi ini.");

        }

        long hasil = 1;

        // Menggunakan loop

        for (int i = 0; i < eksponen; i++) {

            hasil *= basis;

        }

        return hasil;

    }


    // 6. Faktorial (n!)

    public static long faktorial(int n) {

        if (n < 0) {

            throw new IllegalArgumentException("Bilangan harus non-negatif.");

        }

        long hasil = 1;

        // Menggunakan loop

        for (int i = 2; i <= n; i++) {

            hasil *= i;

        }

        return hasil;

    }


    // 7. Nilai Mutlak (Absolute Value)

    public static double nilaiMutlak(double x) {

        // Menggunakan if/else case

        if (x < 0) {

            return -x;

        } else {

            return x;

        }

    }


    // 8. Pembulatan ke Bawah (Floor)

    public static int bulatkanKeBawah(double x) {

        int hasil = (int) x;

        // Jika bilangan negatif dan ada desimal (misal -3.5, hasil: -3, harusnya -4)

        if (x < 0 && x != hasil) {

            hasil--;

        }

        return hasil;

    }


    // 9. Mencari Nilai Minimum dari Array

    public static int cariMinimum(int[] data) {

        if (data == null || data.length == 0) {

            throw new IllegalArgumentException("Array data tidak boleh kosong.");

        }

        int min = data[0];

        // Menggunakan loop dan perbandingan (if)

        for (int i = 1; i < data.length; i++) {

            if (data[i] < min) {

                min = data[i];

            }

        }

        return min;

    }


    // 10. Jumlah Deret Aritmatika (Sum of Arithmetic Series)

    // S_n = n/2 * (2*a + (n-1)*d)

    public static long jumlahDeretAritmatika(int sukuPertama, int beda, int jumlahSuku) {

        if (jumlahSuku <= 0) {

            return 0;

        }

        // Formula sederhana: n/2 * (2*a + (n-1)*d)

        // Kita gunakan perkalian dan pembagian sederhana

        long nilaiDalamKurung = (2L * sukuPertama) + ((long)(jumlahSuku - 1) * beda);

        return ((long)jumlahSuku * nilaiDalamKurung) / 2;

    }

    

    // 11. (Ekstra) Mencari Sisa Pembagian (Modulo)

    public static int modulo(int a, int b) {

        if (b == 0) {

            throw new IllegalArgumentException("Pembagi tidak boleh nol.");

        }

        int hasil = a / b;

        return a - (hasil * b);

    }

    

    // Metode main untuk menguji semua fungsi

    public static void main(String[] args) {

        System.out.println("--- Uji Fungsi Matematika Kustom ---");

        

        System.out.println("1. Tambah (5.5 + 4.5): " + tambah(5.5, 4.5));

        System.out.println("2. Kurang (10.0 - 3.2): " + kurang(10.0, 3.2));

        System.out.println("3. Kali (6.0 * 7.0): " + kali(6.0, 7.0));

        System.out.println("4. Bagi (20.0 / 4.0): " + bagi(20.0, 4.0));


        try {

            System.out.println("5. Pangkat (2^5): " + pangkat(2, 5)); // 32

        } catch (IllegalArgumentException e) {

            System.out.println("Pangkat error: " + e.getMessage());

        }


        try {

            System.out.println("6. Faktorial (5!): " + faktorial(5)); // 120

        } catch (IllegalArgumentException e) {

            System.out.println("Faktorial error: " + e.getMessage());

        }

        

        System.out.println("7. Nilai Mutlak (-7.8): " + nilaiMutlak(-7.8));

        System.out.println("8. Bulatkan Ke Bawah (-3.5): " + bulatkanKeBawah(-3.5)); // -4


        int[] dataMin = {4, 1, 9, 0, 5};

        System.out.println("9. Cari Minimum {4, 1, 9, 0, 5}: " + cariMinimum(dataMin)); // 0

        

        // Suku Pertama=2, Beda=3, Jumlah Suku=4 -> 2 + 5 + 8 + 11 = 26

        System.out.println("10. Jumlah Deret Aritmatika (a=2, b=3, n=4): " + jumlahDeretAritmatika(2, 3, 4)); // 26

        

        System.out.println("11. Modulo (10 % 3): " + modulo(10, 3)); // 1

    }

}












Comments