🖥️
JTI - Modul Praktikum: Algoritma dan Struktur Data
  • 👋Selamat Datang!
  • 🔰Refreshment
    • 🔰Job Sheet 1: Objek
    • 🔰Job Sheet 2 - Array of Objects
  • 📚Dasar Struktur Data
    • 📚Job Sheet 3: Brute Force & Divide Conquer
      • 🐣Praktikum 1
      • 🐥Praktikum 2
      • 🐔Tugas Praktikum
  • 🔍Job Sheet 4: Sorting dan Searching
    • 🧮Praktikum 1: Sorting
    • 🔭Praktikum 2: Searching
    • 📚Tugas Praktikum
  • 📈Struktur Data Linier
    • 🧮Job Sheet 5: Stack
      • 👔Praktikum 1
      • ♾️Praktikum 2
      • 📲Tugas Praktikum
    • ⛓️Job Sheet 6: Queue
      • 🧬Praktikum 1
      • 💸Praktikum 2
      • 💷Tugas
    • 🔗Job Sheet 7: Single Linked List
      • 📂Praktikum 1
      • 🗂️Praktikum 2
      • 🗃️Tugas
    • ➿Job Sheet 8: Doubly Linked List
      • 📕Praktikum 1
      • 📗Praktikum 2
      • 📘Praktikum 3
      • ✍️Tugas Praktikum
  • 🎆STRUKTUR DATA NON LINEAR
    • 🌳Job Sheet 9: Tree
      • 🌴Praktikum 1
      • 🎋Praktikum 2
      • 🎄Tugas
    • 🗺️Job Sheet 10: Graf
      • 🛣️Praktikum 1
      • 🛤️Praktikum 2
      • 🏔️Tugas
    • 🌏Job Sheet 11: Hash Table
      • 🌎Praktikum 1
      • 🌍Tugas
    • 🎄Job Sheet 12: Heap
      • 🌿Praktikum 1
      • 🎋Tugas
    • ⛰️Job Sheet 13: Java Collection
      • 🌄Praktikum 1
      • 🏔️Praktikum 2
      • 🗻Praktikum 3
      • 🌏Praktikum 4
      • 🌎Praktikum 5
      • 🌋Tugas Praktikum
  • 🧑‍🏫Kontributor
Powered by GitBook
On this page
  • Pengantar
  • Percobaan
  • Verifikasi Hasil Percobaan
  • Pertanyaan
  1. Dasar Struktur Data
  2. Job Sheet 3: Brute Force & Divide Conquer

Praktikum 1

Menghitung Nilai Faktorial dengan Algoritma Brute Force dan Divide Conquer

PreviousJob Sheet 3: Brute Force & Divide ConquerNextPraktikum 2

Last updated 1 year ago

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?

📚
📚
🐣
Class Diagram Faktorial
Tahapan Faktorial dengan Brute Force
Tahapan Faktorial dengan Divide Conquer
Hasil Percobaan