Showing posts with label DAA. Show all posts
Showing posts with label DAA. Show all posts

Sunday, January 20, 2013

PERBEDAAN PROGRAM DAN ALGORITMA


Program adalah kompulan instruksi komputer, sedangkan metode dan tahapan sistematis dalam program adalah algoritma. Program ini ditulis dengan menggunakan bahasa pemrograman. Jadi bisa kita sebut bahwa program adalah suatu implementasi dari bahasa pemrograman.
Beberapa pakar memberi formula bahwa:

Program = Struktur Data + Algoritma

Bagaimanapun juga struktur data dan algoritma berhubungan sangat erat pada sebuah program. Algoritma yang baik tanpa pemilihan struktur data yang tepat akan membuat program menjadi kurang baik, semikian juga sebaliknya. Pembuatan algoritma mempunyai banyak keuntungan diantaranya:
  • Pembuatan atau penulisan algoritma tidak tergantung pada bahasa pemrogramanmanapun, artinya penulisan algoritma independen dari bahasa pemrograman dankomputer yang mengeksekusinya.
  • Notasi algoritmik dapat diterjemahkan ke dalam berbagai bahasa pemrograman.
  • Apapun bahasa pemrogramannya, output yang akan dikeluarkan sama karena algoritmanya sama.

Beberapa hal yang perlu dalam membuat algoritma diperhatikan:
  • Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah. Deskripsi tersebut dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami.
  • Tidak ada notasi yang baku dalam penulisan teks algoritma seperti pada notasibahasa pemrograman. Notasi yang digunakan dalam menulis algoritma disebut notasi algoritmik.
  • Tiap orang dapat membuat aturan penulisan dan notasi algoritmik sendiri. Hal ini karena teks algoritma tidak sama dengan teks program. Namun supaya notasi algoritmik mudah ditranslasikan ke dalam notasi bahasa pemrograman tertentu, maka sebaiknya notasi algoritmik tersebut berkorespondensi dengan notasi bahasa pemrograman secara umum.
  • Notasi algoritmik bukan notasi bahasa pemrograman, karena itu pseudocode dalam notasi algoritmik tidak dapat dijalankan oleh komputer. Agar dapat dijalankan olehkomputer, pseudocode dalam notasi algoritmik harus ditranslasikan atau diterjemahkan ke dalam notasi bahasa pemrograman yang dipilih. Perlu diingat bahwa orang yang menulis program sangat terikat dalam aturan tata bahasanya dan spesifikasi mesin yang menjalankannya.
  • Algoritma sebenarnya digunakan untuk membantu kita dalam mengkonversikansuatu permasalahan ke dalam bahasa pemrograman.

Algoritma merupakan hasil pemikiran konseptual, supaya dapat dilaksanakan olehkomputer, algoritma harus ditranslasi ke dalam notasi bahasa pemrograman. Ada beberapa hal yang harus diperhatikan ketika translasi tersebut yaitu:
  1. Pendeklarasian variabel : Apakah bahasa pemrograman yang akan digunakan membutuhkan pendeklarasian variabel karena tidak semua bahasa pemrograman membutuhkannya.
  2. Pemilihan tipe data : Apabila bahasa pemrograman yang akan digunakan membutuhkan pendeklarasian variabel maka perlu dipertimbangkan pada saat pemilihan tipe data.
  3. Pemakaian instruksi-instruksi : Beberapa instruksi mempunyai kegunaan yang sama tetapi masing-masing memiliki kelebihan dan kekurangan yang berbeda.
  4. Aturan sintaks : Pada saat menulis program kita terikat dengan aturan sintaks dari bahasa pemrograman yang akan digunakan.
  5. Tampilan hasil : Pada saat membuat algoritma kita tidak memikirkan tampilan hasil yang akan disajikan. Hal-hal teknis ini kita perhatikan ketika mengkonversikannya menjadi program.
  6. Cara pengopersian compiler atau interpreter. Bahasa pemrograman yang digunakan termasuk kelompok compiler atau interpreter.

Beberapa persyaratan untuk membuat algoritma yang baik adalah:
  • Tingkat kepercayaannya tinggi (realibility). Hasil yang diperoleh dari proses harus berakurasi tinggi dan benar.
  • Pemrosesan yang efisien (cost rendah). Proses harus diselesaikan secepat mungkin dan frekuensi kalkulasi yang sependek mungkin.
  • Sifatnya general. Bukan sesuatu yang hanya untuk menyelesaikan satu kasus saja, tapi juga untuk kasus lain yang lebih general.
  • Bisa dikembangkan (expandable). Haruslah sesuatu yang dapat kita kembangkan lebih jauh berdasarkan perubahan requirement yang ada.
  • Mudah dimengerti. Siapapun yang melihat, dia akan bisa memahami algoritma anda. Susah dimengertinya suatu program akan membuat susah di-maintenance (dikelola).
  • Portabilitas yang tinggi (Portability). Bisa dengan mudah diimplementasikan di berbagai platform komputer.
Contoh Algoritma Kehiudpan Sehari-hari



Read More

Mencari Bilangan Faktorial Menggunakan Pemrograman JAVA


Dalam matematika, faktorial dari bilangan asli n adalah hasil perkalian antara bilangan bulat positif yang kurang dari atau sama dengan n. Faktorial ditulis sebagai n! dan disebut n faktorial. Sebagai contoh, 7! adalah bernilai 7×6×5×4×3×2×1 = 5040.

Berikut Flowchart Untuk Mencari bilangan Faktorial




Berikut Source Code untuk Mencari Bilangan Faktorial

public class Faktorial {
    public static void main(String [ ] args) {

String hasilX=" ";
boolean angka=false;
int hasil=1;
int f = 0;


while (!angka) {
    try {
     f=Integer.parseInt(JOptionPane.showInputDialog("Masukkan Angka : "));

    angka=true;
    } catch (Exception e) {
    JOptionPane.showMessageDialog(null,"Bukan Angka");
    }
 }
     for(int i=f;i>=1;i--) {
    
    hasil=hasil*i;
    if (1<i)
    hasilX=hasilX+i + " x ";
    else
    hasilX= hasilX+i ;
    }
     
JOptionPane.showMessageDialog(null,"Hasil dari "+f+"! adalah "+hasilX +" = " +hasil);
System.exit(0);
}
}


output :







Source Code Dapat Di Download Disini

Read More

Saturday, January 19, 2013

Mencari Bilangan Prima Menggunakan Pemrograman JAVA

Bilangan prima termasuk bilangan yang cukup unik, kita sudah mempelajari bilangan ini sejak masuk sekolah dasar.  

Beberapa referensi yang penulis dapat menyatakan bahwa bilangan prima merupakan bilangan positif yang hanya bisa dibagi oleh tepat 2 pembagi, yaitu angka 1 dan angka tersebut sendiri. Ada juga yang menyatakan sebagai suatu bilangan yang hanya bisa dibagi oleh dirinya sendiri tanpa menyertakan angka 1. 


Contoh: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97 dan seterusnya.


Dalam logika pemrograman, kita cuma perlu memperhatikan mulai angka 2 dan seterusnya. Angka 0 jelas tidak mungkin, karena bilangan ini dibagi angka berapapun akan menghasilkan angka 0. Dan angka 1 juga kita abaikan saja, sebab angka 1 hanya bisa dibagi oleh dirinya sendiri, padahal bilangan prima itu syarat utamanya bisa dibagi oleh 2 bilangan natural yang nyata, yaitu angka 1 dan dirinya sendiri. (Note: bisa dibagi ini dalam artian menghasilkan bilangan bulat positif, bukan bilangan pecahan.)
Berikutnya akan penulis ilustrasikan contoh pembagiannya, dimana kita sepakati bahwa angka pembagi tidak melibatkan angka 1.

2: hanya bisa dibagi 2.
3: hanya bisa dibagi 3.
4: bisa dibagi 2 dan 4 (lebih dari 1 pembagian, maka tidak termasuk bilangan prima).
5: hanya bisa dibagi 5.
6: bisa dibagi 2,3, dan 6 (bukan bilangan prima).
Dan seterusnya.

Misalkan diketahui sebuah bilangan X, bagaimana cara menentukan bahwa bilangan X itu termasuk bilangan prima atau bukan?

Asumsi: X adalah bilangan yang lebih besar dari 2
Berarti bilangan-bilangan yang akan menjadi pembagi adalah mulai angka 2sampai X-1.
Jika bilangan X bisa dibagi oleh minimal salah satu dari bilangan-bilangan mulai 2 sampai X-1, maka dapat dikatakan bahwa bilangan X adalah bukan bilangan prima.

Contoh: 9 Bilangan sebagai pembagi adalah 2 3 4 5 6 7 8
Untuk mengetahui bahwa suatu bilangan bisa dibagi atau tidak, paling mudah kita menggunakan bantuan mod, yang menyatakan sisa hasil bagi. Jika sisa hasil bagi 0 berarti bisa dibagi.

Kembali ke contoh.

9 mod 2 = 1 (hasil bukan 0, artinya tidak habis/bisa dibagi), lanjutkan,
9 mod 3 =0 (sudah cukup untuk menyimpulkan bahwa 9 adalah bukan bilangan prima.)
Tidak perlu kita uji dengan membagi 9 dengan angka 4 dan seterusnya.
Contoh lain: 11
11 mod 2 = 1
11 mod 3 = 2
11 mod 4 = 3
11 mod 5 = 1
11 mod 6 = 5
11 mod 7 = 4
11 mod 8 = 3
11 mod 9 = 2
11 mod 10 = 1

Tidak ada yang menghasilkan angka 0, berarti 11 termasuk bilangan prima. 

Flowchart Untuk Program mencari Bilangan Prima Sebagai Berikut :


Source Code Program Pencarian Bilangan Prima

public class Prima {
    public static void main(String[] args){
        {
       //initialisasi variabel4
       String angka[]={"0","1","2","3","4","5","6","7","8","9"};
       String inputan="";
       boolean hasil = false;
       boolean prima=false;
       String genap_ganjil="";

       int nilai = 0; //memasukan inputan berupa tipe int

       boolean lompat=false;
       boolean cekAngka=false;
       //end initialisasi
      
        //objek buffered reader untuk inputan
        InputStreamReader keyreader=new InputStreamReader(System.in);
        BufferedReader input=new BufferedReader(keyreader);
        //end objek
        try {
        System.out.print("Input -> ");
        inputan=input.readLine();
         } catch (Exception e) {
         }
        
         //int panjang=inputan.length();
        
         for (int i=0;i<inputan.length();i++){
           if (lompat)break;
           char chr= inputan.charAt(i);
                for (int j=0;j<angka.length;j++){
                if (chr==angka[j].charAt(0))
                   {
                    cekAngka=true;
                    lompat=false;
                    break;
                   }else{
                       
                        }
                    if (j==angka.length-1);
                        cekAngka=false;
                        lompat=true;
                }
         }

        if (!cekAngka)
             System.out.print("Output -> Bukan Bilangan"+"\n");
        else
        {
        nilai=Integer.valueOf(inputan.toString());
        //memeriksa bilangan itu ganjil atau genap
        if (nilai%2==0)genap_ganjil=" Genap ";  
        else genap_ganjil=" Ganjil ";

        if (nilai==2)prima=true;
        else
        {
           for(int i = 2; i <= nilai ; i++) {
                                                if(nilai % i == 0) {
                        if (nilai==i){prima=true;break;}
                        else
                        break;
                         }
                     }

        }

        if (prima)
        System.out.print("Output -> Benar, "+inputan.toString() + " adalah bilangan"+genap_ganjil+ "dan Prima"+"\n");
        else{
        if (nilai%2!=0)genap_ganjil=" Genap ";else genap_ganjil=" Ganjil ";
        System.out.print("Output -> Bukan Prima dan bukan"+genap_ganjil+ "\n");
       
        } 
        }
    }
    }
}



OUTPUT :


Jika Kita Menginputkan Yang Benar



Jika Kita menginputkan Bilangan Yang salah



SOURCE CODE DAPAT DI DOWNLOAD DISINI

Read More

SORTING


Pengertian Algoritma Pengurutan (sorting)
Sorting merupakan suatu proses untuk menyusun kembali humpunan obyek menggunakan aturan tertentu. Sorting disebut juga sebagai suatu algoritma untuk meletakkan kumpulan elemen data kedalam urutan tertentu berdasarkan satu atau beberapa kunci dalam tiap-tiap elemen. Pada dasarnya ada dua macam urutan yang biasa digunakan dalam suatu proses sorting:

  1. urut naik (ascending) : Mengurutkan dari data yang mempunyai nilai paling kecil sampai paling besar 
  2. urut turun (descending) : Mengurutkan dari data yang mempunyai nilai paling besar sampai paling kecil.

Mengapa harus melakukan sorting data? Ada banyak alasan dan keuntungan dengan mengurutkan data. Data yang terurut mudah untuk dicari, mudah untuk diperiksa, dan mudah untuk dibetulkan jika terdapat kesalahan. Data yang terurut dengan baik juga mudah untuk dihapus jika sewaktu-waktu data tersebut tidak diperlukan lagi. Selain itu, dengan mengurutkan data maka kita semakin mudah untuk menyisipkan data atapun melakukan penggabungan data.

Metode-metode sorting yang akan saya bahas kali ini meliputi:

  1. Insertion Sort (Metode Penyisipan)
  2. Selection Sort (Metode Seleksi)
  3. Bubble sort(Metode Gelembung)
  4. Shell Sort (Metode Shell)
  5. Quick Sort (Metode Quick)
  6. Merge Sort (Metode Penggabungan)

Disini Saya Sudah Membuat Source Code Sorting Sederhana Menggunakan Bahasa Pemrograman Java, Yang dapat di download DISINI
Read More