🐣Praktikum 1

Menghitung Nilai Faktorial dengan Algoritma Brute Force dan Divide Conquer

Pengantar

Perhatikan class diagram berikut,

Berdasarkan diagram class di atas, akan dibuat program class dalam Java. Untuk menghitung nilai faktorial suatu angka menggunakan 2 jenis algoritma, Brute Force dan Divide and Conquer. Jika digambarkan terdapat perbedaan proses perhitungan 2 jenis algoritma tersebut sebagai berikut,

Tahapan pencarian nilai faktorial dengan algoritma Brute Force,

Tahapan pencarian nilai faktorial dengan algoritma Divide Conquer,

Percobaan

  • Buat proyek baru dengan nama “BruteForceDivideConquer”.

  • Buatlah class baru dengan nama Faktorial.

  • Lengkapi class Faktorial dengan atribut dan method yang telah digambarkan di dalam diagram class di atas, sebagai berikut,

  • Tambahkan atribur nilai,

public int nilai
  • Tambahkan method faktorialBF(),

public int faktorialBF(int n) {
    int fakto = 1;
    for(int i=1; i<=n; i++){
        fakto = fakto * i;
    }
    return fakto;
}
  • Tambahkan method faktorialDC()

public int faktorialDC(int n) {
    if(n==1) {
        return 1;
    } else {
        int fakto = n * faktorialDC(n-1);
        return fakto;
    }
}
  • Buat sebuah main class dengan nama MainFaktorial. Gunakan kode berikut pada fungsi main-nya.

Scanner sc = new Scanner(System.in);
System.out.println("===================")'
System.out.println("Masukkan jumlah elemen yang ingin dihitung : ");
int elemen = sc.nextInt();
  • Buatlah array of objects pada fungsi main, kemudian inputkan beberapa nilai yang akan dicari nilai faktorialnya.

Faktorial[] fk = new Faktorial[elemen]

for(int i=0; i<elemen; i++) {
    fk[i] = new Faktorial();
    System.out.println("Masukkan nilai data ke-"+(i+1)+" : ");
    fk[i].nilai = sc.nextInt()
}
  • Tampilkan hasil pemanggilan method faktorialBF() dan faktorialDC().

System.out.println("=====================");
System.out.println("Hasil Faktorial dengan Brute Force");

for(int i=0; i<elemen; i++) {
    System.out.println("Faktorial dari nilai "+fk[i].nilai+" adalah "
        +fk[i].faktorialBF(fk[i].nilai));
}

System.out.println("=====================");
System.out.println("Hasil Faktorial dengan Divide and Conquer");

for(int i=0; i<elemen; i++) {
    System.out.println("Faktorial dari nilai "+fk[i].nilai+" adalah "
        +fk[i].faktorialDC(fk[i].nilai));
}

System.out.println("=====================");
  • Pastikan program berjalan dengan baik.

Verifikasi Hasil Percobaan

Jika program dapat berjalan dengan baik, hasil dari program akan serupa dengan gambar berikut,

Pertanyaan

  1. Jelaskan mengenai base line Algoritma Divide Conquer untuk melakukan pencarian nilai faktorial!

  2. Pada implementasi Algoritma Divide and Conquer Faktorial apakah lengkap terdiri dari 3 tahapan divide, conquer, combine? Jelaskan masing-masing bagiannya pada kode program!

  3. Apakah memungkinkan perulangan pada method faktorialBF() dirubah selain menggunakan for? Buktikan!

  4. Tambahkan pegecekan waktu eksekusi kedua jenis method tersebut!

  5. Buktikan dengan inputan elemen yang di atas 20 angka, apakah ada perbedaan waktu eksekusi?

Last updated