Minggu, 04 Desember 2011

SEBUAH PERSEMBAHAN

Alhamdulillah semenjak pertama mengenal bahasa pemrograman, saya merasa sekarang ini saya menjadi semangat unutk mendalaminya. dari dulu selalu terbayanga oleh saya bahwa bahasa pemrograman itu susah. ketika di semester II kemauan untuk mendalami bahasa pemrograman ini khususnya bahasa java, karena kendala pengajar yang tidak kunjung hadir untuk memberi pengajaran. dan hal itu yang membuat semangat saya menurun. tetapi dengan matakuliah pemrograman visual ini saya menjadi lebih semangat untuk kembali belajar. 

terima kasih

KONEKSI

NETBEANS TO MY SQL

Berikut adalah langkah-langkah mengkoneksikan DB mysql ke Netbeans
1. Buka netbeans klik tab Services.
2. Klik kana pada DataBase lalu pilih Register MySql Server
3. Laluisi Hostname : localhost
               Server Port Number : 3306
                Administrator User Name : root
                Administrator Passwor : //jika ada
                Lalu Klik Oke
Jika Konek kita bisa melihat table yang sudah dibuat
Untuk bisa mengkoneksikan pada saat menjalankan program perlu ditambahkan componen pada Libarry Klik  kanan pilih Add Jar/Floder pada tab Projects dengan nama mysql-connector-java-5.1.7-bin.java

ini Source unutk Koneksi Db
public class Koneksi {
    static String driver ="com.mysql.jdbc.Driver";
    static String database ="jdbc:mysql://localhost:3306/sib";  // sib itu nama Databasenya
    static String user ="root";
    static String pass ="123";// Jika ada passwordnya

}

KAJIAN 4

Action Listener
ActionListener digunakan untuk mendengarkan action dari event :
● Klik terhadap JButton
● Pemilihan menu item
● Penekanan tombol enter dalam JTextField
Method dalam ActionListener hanya satu yaitu actionPerformed yang menerima argumen object ActionEvent. ActionEvent berisi informasi-informasi penting ketika Action event terjadi, termasuk tombol modifiers apa yang sedang ditekan. Tombol modifiers antara lain : CTRL, ALT, META dan SHIFT. Method untuk menentukan
tombol modifiers apa yang sedang aktif adalah getModifiers. Method getActionCommand digunakan untuk mengambil command

Mouse Listener dan Mouse Motion Listener
MouseListener mendengarkan interaksi mouse terhadap komponen swing. MouseListener dapat didaftarkan pada semua komponen swing. MouseListener mendengarkan event :
● mousePressed : event ini terjadi ketika user menekan salah satu tombol mouse diatas komponen swing.
● mouseReleased : setelah tombol ditekan, komponen swing akan menerima pelepasan tombol mouse. Tetapi jika tombol mouse dilepaskan pada saat pointer mouse tidak berada diatas komponen swing, maka event ini tidak akan terjadi.
● mouseClicked : event ini muncul ketika user melakukan click tombol mouse diatas komponen swing.
● mouseEntered : ketika mouse memasuki area diatas komponen swing, event ini akan dipicu.
● mouseExited : muncul ketika mouse akan meninggalkan area diatas komponen swing. Ketika user menekan tombol mouse (click), event mousePressed dibuat, kemudian mouseReleased dan akhirnya mouseClicked muncul terakhir. MouseMotionListener juga dapat didaftarkan sebagai listener pada
semua komponen swing. MouseMotionListener dipisahkan dari MouseListener karena penanganan event mouseMove yang lebih berat dan intensif. MouseMotionListener mendengarkan dua event:
● mouseMoved : terjadi ketika user menggerakkan mouse diatas komponen swing
● mouseDragged : terjadi ketika user menekan tombol mouse sekaligus menggerakkanya diatas komponen swing. Semua method diatas menerima argumen berupa class MouseEvent. Method getClickCount digunakan untuk menentukan jumlah click yang terjadi dalam waktu yang berdekatan. Method getClickCount juga digunakan untuk menentukan apakah klik yangterjadi adalah single klik atau double klik.

KAJIAN 3

LAYOUT MANAGER

Layout manager bertugas menyusun komponen - komponen  (button, label, checkbox, dll) di dalam suatu container (panel, frame, dll). Layout manager juga menentukan posisi dan ukuran setiap komponen di dalam container. Proses ini akan berbeda untuk setiap class layout yang digunakan. AWT dan Swing memiliki beberapa layout manager standar yang penggunaannya seringkali dikombinasikansesuai situasi dan kebutuhan kita. 
  • FlowLayout merupakan layout manager yang simpel. FlowLayout juga menyusun komponen berdasarkan ukuran default masing-masing, dengan posisi mulai dari kiri ke kanan dan dari atas ke bawah di dalam container yang digunakan. FlowLayout dapat memiliki “row justification”: LEFT, CENTER, atau RIGHT serta “padding” horizontal/vertical. Secara default, flow layout menggunakan justification CENTER. Artinya, semua komponen akan disimpan di posisi tengah-tengah. FlowLayout merupakan default untuk JPanel. contoh : 
                JPanel panel1 = new JPanel();
                panel1.setLayout(new FlowLayout());

  • GridLayout menempatkan komponen dengan urutan dari kiri ke kanan dan dari atas ke bawah. GridLayout akan memaksa setiap komponen untuk menempati space container yang kosong serta membagi rata ukuran space tersebut. contoh :
                 frame.add(panel1);
                 frame.add(panel2);
                 frame.setLayout(newGridLayout(2, 1));

  • BorderLayout menyusun komponen berdasarkan lokasi geografis: NORTH, SOUTH, EAST, WEST, and CENTER. Secara optional, kita dapat juga memberikan paddingdi antara komponen. BorderLayout merupakan layout default untuk JWindow dan JFrame. Karena setiap komponen diasosiasikan dengan suatu arah geografis, akibatnya layout ini hanya dapat menangani maksimal 5 komponen. contoh :
                  JPanel p = new JPanel( );
                  p.add(new JButton("North"));
                  this.add(p, BorderLayout.NORTH);

         dan seterusnya cukup copy paste kemudian rubah "north" sesuai dengan mata angin
  • GridBagLayout merupakan layaout manager yang sangat fleksibel. Layout ini memampukan kita untuk memposisikan komponen relatif terhadap komponen lainnya berdasarkan constraint tertentu. Dengan menggunakan GridBagLayout, kita dapat menciptakan layout apapun juga, tanpa batas. Komponen disusun pada koordinat tertentu pada sebuah grid yang disebut “logical coordinate”. Logical coordinate berarti bahwa koordinat suatu komponen ditentukan oleh sekumpulan komponen lainnya. Baris dan kolom dari grid tersebut bersifat “stretch” yang bergantung pada sizedan constraintyang dimilikinya. contoh :
                  constraints = newGridBagConstraints( );
      this.setLayout(new GridBagLayout( ));
      intx, y; this.addGB(new JButton("North"), x = 1, y = 0);
      this.addGB(new JButton("West"), x = 0, y = 1);
      this.addGB(new JButton("Center"), x = 1, y = 1);
      this.addGB(newJButton("East"), x = 2, y = 1);
      this.addGB(new JButton("South"), x = 1, y = 2);
  • Box Layout Javax.swingmemiliki beberapa tambahan layout manager lagi, salah satunya adalah: BoxLayout. Layout manager ini sangat berguna untuk membuat toolbarssederhana atau vertical button bars. Cara kerjanya sangat sederhana yaitu menempatkan komponen dalam satu baris atau satu kolom. Untuk mempermudah penggunaan BoxLayout, Swing menyediakan sebuah kelas yang bernama Boxyaitu sebuah container yang secara otomatismemiliki BoxLayout manager. contoh :
     Container box = Box.createHorizontalBox( );
     box.add(Box.createHorizontalGlue( ));
     box.add(new JButton("In the"));
  • CardLayout merupakan layout manager yang mampu menciptakan efek “tumpukan” komponen. Artinya, layout ini tidak memposisikan komponen di lokasi-lokasi tertentu di dalam kontainer, melainkan menampilkannya satu demi satu. contoh :
               CardLayout cards = new CardLayout( );
    public Card( ) {
   setLayout(cards);
   ActionListener listener = newActionListener( ) {
   public void actionPerformed(ActionEvent e) {
   cards.next(Card.this);
   }
   };
  JButton button;
  button = new JButton("one");
  button.addActionListener(listener);
  add(button, "one");
  button = newJButton("two"); .





KAJIAN 2

KOMPONEN SWING
  1. Panel merupakan turunan dari Container Class. Sebuah frame atau window tanpa titlebar, menubar tidak termasuk border. Superclass dari applet class.
  2. Dialog merupakan turunan dan korespondensi pada dialog class dalam package AWT. Biasanya digunakan untuk menginformasikan sesuatu kepada pengguna atau prompt pengguna untuk input.
  3. Container merupakan abstract Subclass dari Component Class. Sebuah komponen yang dapat menampung komponen yang lainnya.

     

KAJIAN 1

PENGENALAN JAVA
Java adalah bahasa pemrograman tingkat tinggi yang berorientasi objek kemudian program java tersusun dari bagian yang disebut kelas. Kelas - kelas ini terdiri atas metode - metode yang melakukan pekerjaan dan mengembalikan informasi setelah melakukan tugasnya. Kelas - kelas ini diorganisasikan menjadi sekelompok yang disebut paket (package). Kelas merupakan satu - satunya cara menyatakan bagian eksekusi program, tidak ada cara lain. Pada Java program javac untuk mengkompilasi file kode sumber Java menjadi kelas-kelas bytecode. File kode sumber mempunyai ekstensi *.java. Kompilator javac menghasilkan file bytecode kelas dengan ekstensi *.class. Interpreter merupakan modul utama sistem Java yang digunakan aplikasi Java dan menjalankan program bytecode Java.

Grafical User Interface (GUI) adalah salah satu kemampuan Java dalam mendukung dan memanage antarmuka berbasis grafis. Tampilan grafis yang akan ditampilkan terhubung dengan program serta tempat penyimpanan data. Elemen dasar di Java untuk membangun tampilan berbasis grafis terdiri dari  dua paket yaitu AWT dan Swing. Dengan AWT, dapat membuat window, menggambar, memanipulasi gambar, dan komponen seperti Button, Scrollbar, Checkbox, TextField, dan menu pull-down. Penggunaan komponen AWT ditandai dengan adanya instruksi : import java.awt.*; 

Swing merupakan perbaikan kelemahan di AWT. Kelas swing menyediakan komponen alternatif terhadap AWT. Contohnya kelas JButton swing menyediakan fungsionalitas lebih banyak dibanding kelas Button. Selain itu  komponen swing umumnya diawali dengan huruf “J”, misalnya JButton, JTextField, JFrame, JLabel, JTextArea, JPanel, dan sebagainya. Teknologi swing menggunakan dan memperluas gagasan-gagasan AWT. Sementara, penggunaan komponen Swing ditandai dengan adanya instruksi : import javax.swing.*;

Eclipse : Eclipse adalah sebuah IDE (Integrated Development Environment) untuk mengembangkan perangkat lunak dan dapat dijalankan di semua platform (platform-independent). Berikut ini adalah sifat dari Eclipse:
  1. Multi-platform: Target sistem operasi Eclipse adalah Microsoft Windows, Linux, Solaris, AIX, HP-UX dan Mac OS X.
  2. Mulit-language: Eclipse dikembangkan dengan bahasa pemrograman Java, akan tetapi Eclipse mendukung pengembangan aplikasi berbasis bahasa pemrograman lainnya, seperti C/C++, Cobol, Python, Perl, PHP, dan lain sebagainya.
  3. Multi-role: Selain sebagai IDE untuk pengembangan aplikasi, Eclipse pun bisa digunakan untuk aktivitas dalam siklus pengembangan perangkat lunak, seperti dokumentasi, test perangkat lunak, pengembangan web, dan lain sebagainya. 
Eclipse pada saat ini merupakan salah satu IDE favorit dikarenakan gratis dan open source, yang berarti setiap orang boleh melihat kode pemrograman perangkat lunak ini. Selain itu, kelebihan dari Eclipse yang membuatnya populer adalah kemampuannya untuk dapat dikembangkan oleh pengguna dengan komponen yang dinamakan plug-in.



Senin, 03 Januari 2011

ALGORITMA PENCARIAN


Proses pencarian adalah menemukan data tertentu di dalam sekumpulan data yang bertipe sama (tipe dasar atau tipe bentukan). jika kita ingin mengubah data atau menghapus data langkah pertama adalah mencari data jika data yang kita cari tentu data itu bisa dihapus atau diedit. 
Penggunaan Pencarian :
  1. Proses pencarian seringkali diperlukan pada saat program perlu mengubah atau menghapus nilai tertentu (sebelum bisa mengubah atau menghapus, perlu mencari dulu apakah nilai tersebut ada dalam kumpulan nilai tersebut).
  2. Penyisipan data ke dalam kumpulan data (perlu dimulai dengan pencarian apakah data tersebut telah ada sehingga terhindar dari duplikasi data). 
Berikut saya jelaskan metode pencarian yang saya pahami : 
  1. Pencarian Beruntun (Sequencial Search)
  2. Pencarian Bagi Dua ( Binary Search)
  • Pencarian Sekuensial : Proses membandingkan setiap elemen larik (array) satu persatu dengan nilai yang dicari secara beruntun, mulai dari elemen pertama sampai elemen yang dicari sudah ditemukan, atau sampai seluruh elemen sudah diperiksa .
  • Keunggulan :
  1. Algoritma pencarian sekuensial ini cocok untuk pencarian nilai tertentu pada sekumpulan data      terurut maupun tidak. 
  2. Keunggulan algoritma ini adalah dalam mencari sebuah nilai dari sekumpulan kecil data.
  3. Termasuk algoritma yang sederhana dan cepat karena tidak memerlukan proses persiapan data (misalnya: pengurutan).
  • Pencarian Biner : Pencarian biner adalah proses mencari data dengan membagi data atas dua bagian secara terus menerus sampai elemen yang dicari sudah ditemukan, atau indeks kiri lebih besar dari indeks kanan .  
  • Keungggulan :Algoritma ini lebih efisien daripada algoritma pencarian sekuensial, tetapi pencarian ini mempunyai syarat yaitu bahwa kumpulan data yang harus dilakukan pencarian harus sudah terurut terlebih dahulu, baik terurut secara menaik (ascendant) atau menurun (descendant).
  • Penggunaan Pencarian Biner
Pencarian dalam data terurut bermanfaat misalnya pada penyimpanan data dengan beberapa komponen, program dapat mencari sebuah indeks terurut. Setelah menemukan indeks yang dicari, program dapat membaca data lain yang bersesuaian dengan indeks yang ditemukan tersebut.  

Catatan : Algoritma pencarian sequential dapat digunakan untuk data yang acak maupun terurut.
Jika dilihat dari sisi kinerja dan efisiensi : untuk kasus terburuk (data tidak ditemukan), algoritma pencarian sequential akan sebanding dengan jumlah data.


  • ALGORITMA PENCARIAN LAIN :

Pencarian sekuensial dan pencarian biner merupakan algoritma pencarian dasar yang termasuk dalam kelompok pencarian daftar (list search). Terdapat pula beberapa algoritma lain yang termasuk pula dalam kelompok pencarian daftar, antara lain:
  • Pencarian Interpolasi :
Melakuan pencarian lebih baik dari biner pada lirik berukuran besar dengan   distribusi seimbang, tapi waktu pencariannya buruk.Algoritma pencarian interpolasi memiliki kerumitan dalam hal perhitungan untuk menentukan posisi rekaman yang akan diperiksa berikutnya dibandingkan dengan pencarian biner tetapi algoritma pencarian interpolasi memiliki kinerja yang baik untuk rekaman-rekaman yang memiliki kunci yang mendekati seragam.
  • Pencarian Grover :
Melakukan pencarian dalam waktu singkat, yang merupakan pengembangan dari pencarian linier biasa pada lirik dengan elemen tidak berurut.
Pada persoalan pencarian dengan exhaustive search, diberikan suatu fungsi f(x),x=0,1...(N-1), dimana f(x)
adalah fungsi yang akan selalu menghasilkan 0 untuk semua x,kecuali satu nilai x yang akan menghasilkan 1. Tujuan dari persoalan ini adalah mencari nilai x sehingga f(x) = 1. Ide dasar dari algoritma pencarian kuantum (algoritma Grover) adalah misalkan ada N buah status yang berkorespondensi dengan N item dalam suatu daftar tak terurut. Peluang untuk setiap status, bahwa status tersebut adalah yang dicari dalam daftar tersebut adalah 1/N. Dengan prinsip mekanika kuantum, dimungkinkan untuk meningkatkan nilai peluang status yang dicari karena pengaruh status yang lain (status yang bukan status yang dicari), sehingga pada akhirnya status yang dicari akan memiliki nilai peluang tertinggi. Prinsip mekanika kuantum juga memungkinkan untuk berada dalam lebih dari satu status, dan melakukan lebih dari satu komputasi dalam waktu yang bersamaan. Pada pencarian dengan probabilitas pada komputer klasik, peluang untuk status yang dicari akan meningkat sebesar 1/N setiap kali iterasi pada kalang for, sehingga dengan iterasi sebanyak N kali, akan ditemukan solusi dengan nilai peluang tertinggi.
  • CONTOH PENCARIAN SEKUENSIAL
 {
int i = 0;
bool ditemukan = false;
while ((!ditemukan) && (i < Max))
{
if(Data[i] == x)
ditemukan = true;
else
i++;
}
if(ditemukan)
return i;
else
return -1;
}


  • CONTOH PENCARIAN BINER
Int data[10] = {1,3,4,7,12,25,40,65,78,90}; //variabel global

int binary_search(int cari)
{
int l,r,m;
int n = 10;
l = 0;
r = n-1;
int ketemu = 0;
while(l<=r && ketemu==0)
     { m = (l+r)/2;
if( data[m] == cari )
         ketemu = 1;
else if (cari < data[m])
         r = m-1;
else l = m+1; }
if(ketemu == 1)
        return 1;
else return 0; }
void main()
{ clrscr();
int cari,hasil;
cout<<"masukkan data yang ingin dicari = "; cin>>cari;
hasil = binary_search(cari);
if(hasil == 1)
{
cout<<"Data ada!"<
}
else
if(hasil == 0)
cout<<"Data Tidak ada!"<
getch();
}