. .

TUGAS & LATIHAN:  Bahasa Pemrograman JAVA Netbeans IDE SEGITIGA PASCAL'S 

Posted by CHRISTIANTO D,WIBOWO | D3MI-2016 STMIK BUMI GORA On Selasa, Desember 13, 2016 No comments

TUGAS dan LATIHAN. Artikel post Tugas dan Latihan ini sengaja ditulis disini dimana sebagai mahasiswa pasti mendapat perintah dari dosen untuk melakukan penerapan dari penyerapan ilmu yang didapat di ruang kampus, dengan waktu yang terbatas, hasil dan penerapan kadang jauh sangat dari sempurna, tiba di rumah, coba lagi tugas-tugas tersebut dibantu tutor-tutor online membuat tugas-tugas tersebut "mendekati" kesempurnaan, oleh sebab itu saya membagi kembali apa yang sudah saya pelajari dan serap dengan penerapan pada TUGAS dan LATIHAN ini, dan bisa juga bermanfaat bagi kita semua.

Dan kali ini TUGAS DAN LATIHAN kita adalah ; BUATLAH JAVA PROGRAM YANG MAMPU MENCETAK SEGITIGA PASCAL DENGAN 3 CARA :
  1. Pascal's triangle using loops | segitiga Pascal menggunakan loop.
  2. Pascal's triangle as binomial coefficients | segitiga Pascal sebagai koefisien binomial
  3. Generating Pascal's triangle using recursion | Menghasilkan segitiga Pascal menggunakan rekursi
Memahami bagaimana segitiga Pascal dibangun akan lebih mudah dengan mempertimbangkan gambar berikut yang menunjukkan enam baris pertama dari segitiga Pascal.
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
Setiap baris diawali dan diakhiri dengan angka 1. Angka yang berikutnya diperoleh dengan menjumlahkan dua angka yang terletak langsung di atas baris angka sebelumnya dengan angka yang mengikutinya.
Jadi, dalam usaha untuk menemukan angka-angka di baris n segitiga, kita perlu nilai-nilai baris (n-1). Mari kita mengatakan bahwa kita telah menghitung baris keempat - 1 3 3 1. Sekarang, baris kelima memiliki lima unsur - 1 4 6 4 1. Elemen pertama dan elemen terakhir - 1. Elemen yang tersisa akan (1 + 3), (3 + 3), (3 + 1) = 4, 6, 4. Jadi, baris kelima lengkap akan 1 4 6 4 1
1. Segitiga Pascal Menggunakan loop
Pertama kita akan melihat bagaimana untuk menghasilkan (unformatted = sudah diformat) segitiga Pascal menggunakan pernyataan perulangan sederhana - simple looping statements. Kita mempunyai dua array int, bernama currentRow dan previousRow. Awalnya, previousRow akan dijalankan dengan {1} - isi baris pertama dari segitiga Pascal. Setelah itu, kita memiliki loop yang loop counter, yang kemudian berjalan dari 2 sampai n di mana n adalah jumlah baris yang ingin kita tampilkan/cetak. Pada iterasi, kita mewakilkan jumlah baris yang kita ingin cetak. currentRow akan dijalankan dengan berbagai i (loop counter) elemen dengan yang pertama dan elemen terakhir dari array set ke '1'. Berikutnya, kita memiliki sebuah loop dalam - inner loop yang bertugas untuk menghitung unsur currentRow. Untuk melakukannya, loop counter, j berjalan dari 0 sampai i-3. Angka-angka dalam array previousRow di indeks j dan j + 1 ditambahkan dan hasilnya disimpan di indeks j + 1 dari currentRow. Ketika inner loop keluar, currentRow akan diisi. Nilai-nilai yang tersimpan dalam currentRow dicetak dan previousRow ditugaskan dengan currentRow  sehingga dapat digunakan dalam iterasi berikutnya dari loop luar - outer loop.

Dengan Algoritma ilustrasi diatas kita sudah dapat membuat Java Program lengkap yang mengambil input n dari pengguna dan mencetak n baris pertama dari segitiga Pascal :
// @uthor CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
package pascaltriangel;
import java.util.Scanner;
public class PascalTriangel {

    public static void print(int n) {
       int[] previousRow;
       int[] currentRow = {1};
       printArray(currentRow);
       previousRow = currentRow;
       for (int i = 2; i <= n; i++) {
           currentRow = new int[i];
           currentRow[0] = 1;
           currentRow[i - 1] = 1;
           for (int j = 0; j <= i - 3; j++) {
               currentRow[j + 1] = previousRow[j] + previousRow[j + 1];
           }
           printArray(currentRow);
           previousRow = currentRow;
       }
   }
    
    public static void printArray(int[] array) {
       for (int i = 0; i < array.length; i++) {
           System.out.print(array[i] + " ");
       }
       System.out.println();
   }
    public static void main(String[] args) {
    System.out.println("CHRISTIANTO 'GEMBLONG' DHARMA WIB0WO LEARN JAVA");
    System.out.println("MENCETAK NOMOR SEGITIGA PASCAL");
    System.out.println("------------------------------");
   
       Scanner scanner = new Scanner(System.in);
       System.out.print("Masukkan Jumlah Baris Yang Segitiga Pascal Harus Cetak: ");
       int row = scanner.nextInt();
       print(row);
    }   
}

2. Segitiga Pascal Sebagai Koefisien Binomial.
Segitiga Pascal juga dapat divisualisasikan sebagai koefisien binomial dalam perluasan (x + y) n dimana n adalah deretan segitiga Pascal, dengan baris berlabel mulai dari n = 0. Menggunakan pengamatan ini, kita dapat menghitung nilai dalam segitiga Pascal dengan aplikasi langsung dari rumus nCk - nCk formula. Sekarang, baris akan diberi label dari n = 0 dan elemen-elemen dalam satu baris akan diberi label dari k = 0. Menggunakan skema penomoran ini, unsur berturut-turut n dan di posisi k dapat dihitung sebagai :
nCk = n!/(k! * (n-k)! )
Dengan Algoritma formulasi tersebut, kita sudah dapat membuat Java Program lengkap yang mengambil input n dari pengguna dan mencetak n baris pertama dari segitiga Pascal :
/// @uthor CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
package pascaltriangelbinomial;
import java.util.Scanner;
public class PascalTriangelBinomial {
   public static void print(int row) {
       for (int n = 0; n < row; n++) {
           for (int k = 0; k <= n; k++) {
               System.out.print(nCk(n, k) + " ");
           }
           System.out.println();
       }
   }
   public static int nCk(int n, int k) {
       int numerator = fact(n);
       int denominator = fact(k) * fact(n - k);
       int result = (int) (numerator / denominator);
       return result;
   }
   public static int fact(int num) {
       int result = 1;
       for (int i = 1; i <= num; i++) {
           result = result * i;
       }
       return result;
   }
    public static void main(String[] args) {
    System.out.println("CHRISTIANTO 'GEMBLONG' DHARMA WIB0WO LEARN JAVA");
    System.out.println("MENCETAK NOMOR SEGITIGA PASCAL");
    System.out.println("------------------------------");
       Scanner scanner = new Scanner(System.in);
       System.out.print("Masukkan Jumlah Baris Yang Segitiga Pascal Harus Cetak: ");
       int row = scanner.nextInt();
       print(row);
    }   
}

3. Menghasilkan Segitiga Pascal Menggunakan Rekursi
Menghitung nilai dari posisi tertentu pada segitiga menggunakan hasil perhitungan sebelumnya, masalah ini juga bisa diselesaikan dengan menggunakan rekursi. Angka pada posisi baris i dan kolom j akan direpresentasikan sebagai pascal (i, j) dengan I dan j mulai dari 0. Akan ada dua basis conditionswhich terkait dengan elemen-elemen yang pertama dan terakhir, yang selalu sama dengan '1'. Kedua kondisi dapat dinyatakan sebagai :
pascal ( i, 0 ) = 1
pascal ( i, i ) = 1
Berikut adalah rumus rekursif digunakan untuk menghitung elemen yang tersisa :
pascal ( i, j ) = pascal ( i - 1 , j -1 ) + pascal ( i - 1 , j )
Dengan Algoritma formulasi rekursi -  RECURSIVE FORMULA tersebut, kita sudah dapat membuat Java Program lengkap yang mengambil input n dari pengguna dan mencetak n baris pertama dari segitiga Pascal :
/// @uthor CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
package pascaltrianglerecursive;
import java.util.Scanner;
public class PascalTriangleRecursive {

    public static void print(int row) {
       for (int n = 0; n < row; n++) {
           for (int k = 0; k <= n; k++) {
               System.out.print(nCk(n, k) + " ");
           }
           System.out.println();
       }
   }

   public static int nCk(int n, int k) {
       int numerator = fact(n);
       int denominator = fact(k) * fact(n - k);
       int result = (int) (numerator / denominator);
       return result;
   }

   public static int fact(int num) {
       int result = 1;
       for (int i = 1; i <= num; i++) {
           result = result * i;
       }
       return result;
   }

   public static void main(String[] args) {
    System.out.println("CHRISTIANTO 'GEMBLONG' DHARMA WIB0WO LEARN JAVA");
    System.out.println("MENCETAK NOMOR SEGITIGA PASCAL");
    System.out.println("------------------------------");
       Scanner scanner = new Scanner(System.in);
       System.out.print("Masukkan Jumlah Baris Yang Segitiga Pascal Harus Cetak: ");
       int row = scanner.nextInt();
       print(row);
   }
}
Lengkap sudah 3 cara membuat Java Program untuk Pascals Triangle, Happy Learn Matte !!!

0 komentar:

Posting Komentar