🖥️
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
  • Pecobaan
  • Verifikasi Hasil Percobaan
  • Pertanyaan
  1. Dasar Struktur Data
  2. Job Sheet 3: Brute Force & Divide Conquer

Praktikum 2

Menghitung Hasil Pangkat dengan Algoritma Brute Force dan Divide Conquer

Pengantar

Pada praktikum ini kita akan membuat program untuk menghitung nilai pangkat suatu angka menggunakan 2 jenis algoritma, yaitu, brute force dan divide conquer.

Pecobaan

  • Pada direktori proyek "BruteForceDivideConquer" buatlah kelas baru bernama "Pangkat".

  • Tambahkan atribut berikut,

public int nilai, pangkat;
  • Buatlah sebuah method dengan nama pangkatBF().

public int pangkatBF(int a, int n) {
    int hasil = 1;
    for (int i = 0; i < n; i++) {
        hasil = hasil * a;
    }
    return hasil;
}
  • Buatlah method lain dengan nama pangkatDC().

public int pangkatDC(int a, int n) {
    if(n==0) {
        return 1;
    } else {
        if(n%2==1) {
            return (pangkatDC(a, n/2)*pangkatDC(a, n/2)*a);
        } else {
            return (pangkatDC(a, n/2)*pangkatDC(a, n/2));
        }
    }
}
  • Perhatikan apakah sudah tidak ada kesalahan yang muncul dalam pembuatan class Pangkat.

  • Selanjutnya buat class baru yang di dalamnya terdapat method main. Class tersebut dapat dinamakan MainPangkat. Tambahkan kode pada class main untuk menginputkan jumlah nilai yang akan dihitung pangkatnya.

Scanner sc = new Scanner(System.in);
System.out.println("======================");
System.out.println("Masukkan jumlah elemen yang ingin dihitung : ");
int elemen = sc.nextInt();
  • Selanjutnya digunakan untuk instansiasi array of objects. Di dalam kode berikut ditambahkan proses pengisian beberapa nilai yang akan dipangkatkan sekaligus dengan pemangkatnya.

Pangkat[] png = new Pangkat[elemen];

for(int i=0; i<elemen; i++) {
    png[i] = new Pangkat();
    System.out.println("Masukkan nilai yang akan dipangkatkan ke-"+(i+1)+" : ");
    png[i].nilai = sc.nextInt();
    System.out.println("Masukkan nilai pemangkat ke-"+(i+1)+" : ");
    png[i].pangkat = sc.nextInt();
}
  • Kemudian panggil method pangkatBF() dan pangkatDC().

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

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

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

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

System.out.println("=====================");

Verifikasi Hasil Percobaan

Pastikan output dari program serupa dengan gambar berikut,

Pertanyaan

  • Pada method pangkatDC() terdapat potongan kode sebagai berikut,

if(n%2==1) {
  return (pangkatDC(a, n/2)*pangkatDC(a, n/2)*a);
} else {
  return (pangkatDC(a, n/2)*pangkatDC(a, n/2));
}

Apa maksud dari potongan kode tersebut?

  • Apakah tahap combine sudah termasuk dalam kode tersebut? Tunjukkan!

PreviousPraktikum 1NextTugas Praktikum

Last updated 1 year ago

📚
📚
🐥
Hasil Percobaan Program Pangkat dengan Brute Force dan Divide Conquer