Deret Fibonacci Rekursif dan Non-Rekursif dengan Java

February 1, 2010 14 comments
Dari beberapa artikel sebelumnya pada algoritma fibonacci rekursif dan fibonacci non-rekursif, kita tahu bagaimana merumuskan deret bilangan fibonacci dengan algoritma logika yang kita miliki. Sekarang akan dibahas pnerapan algoritma tersebut ke dalam programming java. Pertama mari kita lihat source code java untuk deret bilangan fibonnaci rekursif. Source codenya seperti di bawah ini :

/**
 *
 * @author Goes Redy
 */
public class Fibonacci {
    public static int fibbon(int x){
        if (x<=0 || x<=1){
            return x;
        }
        else{
            return fibbon(x-2)+fibbon(x-1);
        }
    }
    public static void main(String[]args){
        int n=10;
        for (int i=0;i<n;i++){
            System.out.print(fibbon(i)+" ");
        }
    }
}

Code di atas mengeluarkan nilai dari setiap alamatnya pada array. Jika for pada code java di atas dihilangkan, maka kita akan mendapatkan satu nilai saja dari setiap alamat yang kita ketikkan pada pemanggilan rekursifnya. Jadi for tersebut diperlukan agar bilangan fibonacci tersebut dikeluarkan dari bilangan pertama sampai ke deret yang kita inginkan secara berurutan.

Kedua, mari kita bahas untuk algoritma yang non-rekursif. Cara ini relatif lebih baik, karena penggunaan memorynya jauh sekali lebih hemat untuk penggunaan data yang banyak. Sedikit memory tentunya jauh lebih cepat. Contoh sourcodenya adalah seperti di bawah ini :

/**
 *
 * @author Goes Redy
 */
public class Fibonacci {
    public static void main(String[]args){
    int a=0,b=1;
    int n = 10; // input deret fibonacci
    for (int i=1;i<=n;i++){
      System.out.print(a+" ");
      a=a+b;
      b=a-b;
    }
  }
}

Bisa langsung dilihat pada sourcecode tersebut hampir sama dengan algoritmanya. Algoritmanya bisa dibilang sangat efektif karena menghabiskan source sesuai kebutuhannya, jadi bisa dibilang efesien bukan.
Hasilnya akan sama saja, cuma berbeda cara saja. Hasilnya sebagai berikut :

Categories: Programming Tags:

Deret Bilangan Fibonacci Non-Rekursif

January 30, 2010 4 comments
Seperti sudah dibahas sebelumnya, deret bilangan Fibonacci adalah deret yang setiap sukunya dihasilkan dari penjumlahan dua suku sebelumnya. Jadi misalkan dua angka sebelumnya angka 0 dan 1, maka deret berikutnya adalah 0 + 1 = 1. Banyak sekali kegunaan dari bilangan fibonacci ini.
Dalam matematika, deret fibonacci didefinisikan sebagai berikut:

F(n) = F(n-1) + F(n-2)
F(0) = 0
F(1) = 1

Berbeda dengan sebelumnya, sekarang implementasi definisi matematika tadi akan kita terapkan dengan looping dengan algoritma yang lebih dinamis karena nilai setiap variabelnya akan terus selalu berubah sampai suatu kondisi yang ditentukan. Algoritmanya adalah seperti di bawah ini :

function Fibonacci (input n:integer) → integer
{fungsi untuk mencari deretan sebuah bilangan fibonacci}
kamus :
   i, a, b : integer
algoritma :
   a = 0
   b = 1
   for i = 1 to n do
      a = a + b
      b = a - b
   endfor
   Fibonacci ← a

Algoritma ini lebih susah dimengerti memang kelihatannya, tapi jika kita lihat lagi algoritma ini memiliki langkah pencarian yang lebih pendek daripada algoritma yang rekursif, jadi lebih efesien.

Categories: Algorithm Tags:

Deret Bilangan Fibonacci Rekursif

January 30, 2010 2 comments
Deret bilangan Fibonacci adalah deret yang setiap sukunya dihasilkan dari penjumlahan dua suku sebelumnya. Jadi misalkan dua angka sebelumnya angka 0 dan 1, maka deret berikutnya adalah 0 + 1 = 1. Banyak sekali kegunaan dari bilangan fibonacci ini.
Dalam matematika, deret fibonacci didefinisikan sebagai berikut:

F(n) = F(n-1) + F(n-2)
F(0) = 0
F(1) = 1

Dari definisi di atas cukup menjelaskan bagaimana bilangan fibonacci itu sebenarnya. Dalam dunia komputer dapat kita buat algoritmanya seperti berikut :

function Fibonacci (input n:integer) → integer
{fungsi untuk mencari deretan sebuah bilangan fibonacci}
algoritma :
   if n = 0 then
      Fibonacci ← 0
   else
      if n = 1 then
         Fibonacci ← 1
      else
         Fibonacci ← Fibonacci(n-1)+Fibonacci(n-2)
      endif
   endif

Algoritma ini sangat sederhana dan kelihatannya mudah dimengerti, tapi setelah coba dijalankan algoritma ini akan memberatkan kita karena resource yang diperlukannya sangat besar dan lama pula.

Categories: Algorithm Tags:

Cara Install Bali Simbar di Office 2007

January 24, 2010 37 comments

Pada Artikel kali ini, saya akan coba membahas bagaimana cara install font Bali Simbar di Office 2007 dengan baik. Banyak kadang – kadang fungsi dari Bali Simbar yang tidak berfungsi di Office 2007. Seperti Ctrl+S misalnya tidak mau mengeluarkan huruf gempelan ‘sa’ tapi malah pemberitahuan, atau malah template milik Bali Simbar yang tidak jalan karena adanya macro pada Office 2007.
Mari sekarang kita bahas bagaimana cara install Bali Simbar yang baik di Office 2007.

  1. Pertama, sudah pasti siapkan dulu font Bali Simbarnya. Kalau belum silahkan download di sini, kemudian extract.
  2. Kedua, installah fontnya terlebih dahulu. Seperti install font biasa melalui Control Panel → Font.
  3. Ketiga, letakkan template “bali-b.dot” di folder tempat template Office, seperti saya di C:\Users\%UserName%\AppData\Roaming\Microsoft\Templates. Sebenarnya template ini dapat ditaruh dimana saja asalkan dapat diakses nantinya oleh office.
  4. Keempat, bukalah Ms. Word, kemudian cari “Word Options” pada menu utama.
  5. Kelima, pilih Add Ins pada jendela Word Options kemudian sorot bagian “manage” pada bagian bawah, pilih Templates kemudian Go.
  6. Keenam, pada jendela templates pilih Add, kemudian carilah dimana anda menempatkan file template “bali-b.dot” kemudian pilih lalu ok pada jendela templates.
  7. Ketuju, masuk kembali ke Word Options kemudian cari Trust Center kemudian pilih Trust Center Setting. Lalu pada jendela Trust Center pilih Macro Setting kemudian pilih Enable all macros.

Kemudian, matikan Ms. Word. Jika anda ingin memulai menulis aksara Bali dengan Ms. word, janganlah membuka langsung dari Ms. Word, karena akan memerlukan penyetingan lagi. Bukalah Ms. Word dengan membuka atau mendouble klik pada file “bali-b.dot” maka anda akan langsung bisa memakainya untuk menulis aksara Bali. Untuk file yang sudah tersimpan dapat dibuka saja langsung karena template yang digunakan sudah didaftarkan tadi pada saat penyetingan pada Ms. Word.

Categories: Tutorial Tags:

Program untuk Perhitungan Silinder dengan Java

January 20, 2010 Leave a comment

Pada artikel sebelumnya telah dibahas implementasi perhitungan matematika dengan java. Perhitungan yang akan dibahas pada artikel ini adalah tentang perhitungan silinder. Dimana silinder itu sendiri merupakan bangun ruang tiga dimensi yang dibentuk oleh dua buah lingkaran identik yang sejajar dan sebuah persegi panjang yang mengelilingi kedua lingkaran tersebut. Kedua lingkaran disebut sebagai alas dan tutup tabung serta persegi panjang yang menyelimutinya disebut sebagai selimut tabung. Beberapa perhitungan yang akan diimplementasikan di sini adalah perhitungan luas alas, selimut, permukaan, dan volume dari silinder tersebut. Sebagimana diketahui luas alas silinder merupakan luas lingkarannya, sedangkan luas selimutnya adalah luas persegi atau persegi panjang yang menyelimutinya dan luas permukaannya didapat dari luas lingkarannya ditambahkan dengan luas persegi atau persegi panjang yang menyelimutinya serta Volumenya didapatkan dengan mengalikan luas lingkaran atas atau bawahnya dengan lebar dari selimutnya atau tinggi silindernya(h).

Sourcodenya dapat dilihat sebagai berikut :

import javax.swing.*;
/**
 *
 * @author Goes Redy
 */
public class Silinder {
    public static void main(String[] args) {
        System.out.println("Program untuk perhitungan silinder :");
        String jari = "";
        jari = JOptionPane.showInputDialog("Masukkan jari - jarinya : ");
        int r=Integer.parseInt(jari);
        String tinggi = "";
        tinggi = JOptionPane.showInputDialog("Masukkan tingginya : ");
        int h=Integer.parseInt(tinggi);
	System.out.println ("Jari-jari = "+(r)+", tinggi = "+(h));
        System.out.println ("Luas alas = "+((3.14*r*r)*2));
        System.out.println ("Luas selimut = "+(2*3.14*r*h));
        System.out.println ("Luas permukaannya = "+(((3.14*r*r)*2)+(2*3.14*r*h)));      
        System.out.println ("Volumenya = "+((3.14*r*r)*h)); 
    }
}

Seperti yang bisa dilihat pada sourcecode di atas, beberapa rumus yang langsung diterapkan pada java. Pada luas permukaannya rumusnya kelihatan panjang karena luas alas dan luas selimutnya tidak disimpan dalam sebuah variabel jadi mesti dibuat semuanya. Padahal jika anda menyimpannya dalam variabel, kita hanya akan perlu menambahkannya saja.
Hasilnya :

Categories: Programming Tags:

Program untuk Perhitungan Bola dengan Java

January 20, 2010 Leave a comment

Dalam artikel ini kita akan membahas tentang perhitungan pada bola. Bola merupakan bangun ruang tiga dimensi yang dibentuk oleh tak hingga lingkaran berjari-jari sama panjang dan berpusat pada satu titik yang sama. Implementasi java terhadap perhitungan terhadap bola di sini akan dibahas tentang luas permukaan dan volume bola. Sebagaimana diketahui Luas permukaan bola dalam matematika adalah Lp = 4πr² dan volumenya adalah V = 4/3 πr³.

Sourcecodenya dapat dilihat sebagai berikut :

import javax.swing.*;
/**
 *
 * @author Goes Redy
 */
public class Bola {
    public static void main(String[] args) {
        System.out.println("Program untuk perhitungan bola :");
        String jari = "";
        jari = JOptionPane.showInputDialog("Masukkan Jari - jarinya : ");
        int r=Integer.parseInt(jari);
	System.out.println ("Jari-jari = "+(r));
        System.out.println ("Luas permukaannya = "+((3.14*r*r)*4));      
        System.out.println ("Volumenya = "+(((3.14*r*r*r)*4)/3)); 
    }
}

Seperti pada kode – kode sebelumnya, di sini juga kita pakai inputan. Pada kode ini kita sesuaikan dengan rumus asli matematikanya. Lihat saja antara kode dan rumus matematikanya di atas, cuma beda masalah penempatan variabelnya saja.

Hasil :

Categories: Programming Tags:

Program untuk Perhitungan Balok dengan Java

January 20, 2010 Leave a comment

Dalam beberapa artikel sebelumnya telah dibahas implementasi perhitungan matematika dengan java. Pada artikel ini pula akan membahas hal tersebut kembali tetapi untuk perhitungan pada balok. Balok adalah bangun ruang tiga dimensi yang dibentuk oleh tiga pasang persegi atau persegi panjang, dengan paling tidak satu pasang diantaranya berukuran berbeda. Balok yang dibentuk oleh enam persegi sama dan sebangun disebut sebagai kubus. Beberapa perhitungan yang akan diimplementasikan di sini adalah perhitungan luas permukaan, keliling, panjang diagonal ruang, dan volume balok tersebut.

Sourcodenya dapat diimplementasikan sebagai berikut :

import javax.swing.*;
/**
 *
 * @author Goes Redy
 */
public class Balok {
    public static void main(String[] args) {
        System.out.println("Program untuk perhitungan balok :");
        String panjang = "";
        panjang = JOptionPane.showInputDialog("Masukkan panjangnya : ");
        int p=Integer.parseInt(panjang);
        String lebar = "";
        lebar = JOptionPane.showInputDialog("Masukkan lebarnya : ");
        int l=Integer.parseInt(lebar);
        String tinggi = "";
        tinggi = JOptionPane.showInputDialog("Masukkan tingginya : ");
        int t=Integer.parseInt(tinggi);
        double dr = Math.sqrt((p*p)+(l*l)+(t*t));
        System.out.println ("Panjang = "+(p)+", Lebar = "+(l)+", Tinggi = "+(t));
        System.out.println ("Kelilingnya = "+((p*4)+(l*4)+(t*4)));
        System.out.println ("Luas permukaannya = "+(((p*l)+(p*t)+(l*t))*2));
        System.out.println ("Panjang diagonal ruangnya = "+dr);
        System.out.println ("Volumenya = "+(p*l*t));
    }
}

Penjelasan :

Seperti dapat dilihat di atas, terdapat juga permintaan input seperti kode – kode sebelumnya. Tidak ada hal yang begitu menyulitkan kelihatannya karena hanya tinggal mengali – ngalikan saja, kecuali pada pencarian panjang diagonal ruang yaitu dr = Math.sqrt((p*p)+(l*l)+(t*t)); yang memakai pengakaran karena memakai teorema Phitagoras untuk mencarinya.

Hasil :

Categories: Programming Tags: