Tampilkan postingan dengan label Java. Tampilkan semua postingan
Tampilkan postingan dengan label Java. Tampilkan semua postingan

Bahasa pemrograman dan semicolon


Dalam pemrograman, setiap akhir dari suatu perintah atau syntax, pasti diakhiri dengan titik koma ( ;). Memang tidak semua bahasa pemrograman menggunakan hal tersebut. Ketika mulai belajar pemrograman, titik koma atau semicolon akan ditemukan. Akan tetapi, ketika ada pertanyaan, kenapa diakhiri dengan titik komat atau semicolon ??

Nah jawaban yang didengar kadang beragam. Ada yang menjawab, "Hmm, ya itu karena bahasa pemrogramannya" atau "Memang seperti itu aturannya". Jawaban ini bisa dianggap benar, namun kurang tepat.

Dahulu, ketika bahasa pemrograman dikembangkan. Diperlukan suatu tanda untuk mengakhiri suatu statement atau pernyataan. Jadi kita bisa memasukkan pernyataan yang sangat panjang, sehingga menggunakan banyak baris dan jangan lupa dikakhiri dengan seicolon. Dahulu ketika harga memori sangatlah mahal dan pemprosesannya juga lama, maka program dibagi menjadi statement atau pernyataan terpisah. Maka digunakan suatu tanda untuk menandakan akhir dari statement itu. Setelah dicoba beberapa tanda, hal ini memunculkan kontradiksi dengan bahasa manusia. Contoh jika menggunakan koma ( , ) programmer bisa saja bingung antara bahasa pemrograman dan bahasa yang ia gunakan sehari-hari. Jika menggunakan titik ( . ) juga muncul kontradiksi karena seperti yang kita tau, tipe data real menggunakan titik walaupun dalam kesehariannya kita menggunakan koma untuk bilangan real atau desimal.

Maka diputuskan untuk menggunakan tanda semicolon atau titik koma. 

sumber : stackoverflow

Project java part 3 (final)


Hai, cukup memakan waktu untuk project ini selesai di-finalkan. Hal ini juga dipengaruhi berbagai faktor untuk menulis artikel. Sebelum melanjutkan ke bawah, pastikan kalian sudah membaca part 1 dan part 2. Karena tanpa kedua part sebelumnya tadi maka project tidak akan selesai. Nah langsung saja, buatlah class baru dalam package yang sama dengan class StructTree dan beri nama Tree. Nama yang digunakan haruslah Tree karena kode dibawah ditulis dalam kelas Tree. Setelah membuat class baru tersebut, silahkan copy kode dibawah kedalam class Tree.
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.awt.event.ActionEvent;
import javax.swing.JTextField;
import java.awt.Font;
import java.awt.SystemColor;
import java.awt.Color;
import java.awt.Cursor;

import javax.swing.SwingConstants;
import javax.swing.JTextArea;
import javax.swing.JLabel;
import javax.swing.UIManager;


public class Tree {

    private JFrame frame;
    private JTextArea tampil;
    private JTextField number;
    private JTextField level;
    private JTextField daun;
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Tree window = new Tree();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public Tree() {
        initialize();
    }
    /**
     * Initialize the contents of the frame.
     */
       
    private void initialize() {
        frame = new JFrame("Binary Tree");
        frame.setBounds(100, 100, 450, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);
        frame.setResizable(false);
       
        StructTree mytree = new StructTree();
       
        JButton btnInsert = new JButton("Insert");
        btnInsert.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        btnInsert.setForeground(Color.BLACK);
        btnInsert.setBackground(SystemColor.controlHighlight);
        btnInsert.setFont(new Font("MS Reference Sans Serif", Font.PLAIN, 12));
        btnInsert.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                int tambah;
                try{
                    tambah = Integer.parseInt(number.getText());
                    if(mytree.level(mytree.root)-1<5){
                        if(mytree.find(tambah)==null){
                            mytree.insert(tambah);
                        }
                        else{
                            JOptionPane.showMessageDialog(null, "Angka sudah dimasukkan");
                        }
                    }
                    else{
                        JOptionPane.showMessageDialog(null, "Level maksimum 5");
                    }
                   
                    // Create a stream to hold the output
                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    PrintStream ps = new PrintStream(baos);
                    // IMPORTANT: Save the old System.out!
                    PrintStream old = System.out;
                    // Tell Java to use your special stream
                    System.setOut(ps);
                    // Print some output: goes to your special stream
                    mytree.print();
                    // Put things back
                    System.out.flush();
                    System.setOut(old);
                    // Show what happened
                    String tree = baos.toString();
                   
                    tampil.setText(tree);
                    level.setText(Integer.toString(mytree.level(mytree.root)-1));
                    daun.setText(Integer.toString(mytree.nbDaun(mytree.root)));
                   
                } catch(Exception e){
                    JOptionPane.showMessageDialog(null, "Input tidak valid");
                    number.setText("");
                }
            }
        });
        btnInsert.setBounds(307, 59, 117, 37);
        frame.getContentPane().add(btnInsert);
       
        JButton btnDelete = new JButton("Delete");
        btnDelete.setForeground(Color.BLACK);
        btnDelete.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        btnDelete.setBackground(SystemColor.controlHighlight);
        btnDelete.setFont(new Font("MS Reference Sans Serif", Font.PLAIN, 12));
        btnDelete.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg1) {
                int kurang;
                try{
                    kurang = Integer.parseInt(number.getText());
                   
                    if(mytree.level(mytree.root)-1>0){
                        if(mytree.find(kurang)!=null){
                            mytree.hapus(mytree.root,kurang);
                        }
                        else{
                            JOptionPane.showMessageDialog(null, kurang+" Tidak ada di dalam tree");
                        }
                    }
                    else{
                        JOptionPane.showMessageDialog(null, "Tidak bisa menghapus node akar");
                        number.setText("");
                    }
                   
                    // Create a stream to hold the output
                    ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
                    PrintStream ps2 = new PrintStream(baos2);
                    // IMPORTANT: Save the old System.out!
                    PrintStream old2 = System.out;
                    // Tell Java to use your special stream
                    System.setOut(ps2);
                    // Print some output: goes to your special stream
                    mytree.print();
                    // Put things back
                    System.out.flush();
                    System.setOut(old2);
                    // Show what happened
                    String tree = baos2.toString();
                   
                    tampil.setText(tree);
                    level.setText(Integer.toString(mytree.level(mytree.root)-1));
                    daun.setText(Integer.toString(mytree.nbDaun(mytree.root)));
                   
                } catch(Exception e1){
                    JOptionPane.showMessageDialog(null, "Input tidak valid");
                    number.setText("");
                }
            }
        });
        btnDelete.setBounds(307, 107, 117, 37);
        frame.getContentPane().add(btnDelete);
       
        JButton btnSearch = new JButton("Search");
        btnSearch.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg2) {
                int cari;
                try{
                    cari = Integer.parseInt(number.getText());
                    if(mytree.find(cari)!=null){
                        JOptionPane.showMessageDialog(null, cari+" Ada di dalam tree");
                    }
                    else{
                        JOptionPane.showMessageDialog(null, cari+" Tidak ada di dalam tree");
                    }
                } catch(Exception e2){
                    JOptionPane.showMessageDialog(null, "Input tidak valid");
                    number.setText("");
                }
            }
        });
        btnSearch.setForeground(Color.BLACK);
        btnSearch.setBackground(SystemColor.controlHighlight);
        btnSearch.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        btnSearch.setFont(new Font("MS Reference Sans Serif", Font.PLAIN, 12));
        btnSearch.setBounds(307, 155, 117, 37);
        frame.getContentPane().add(btnSearch);
       
        tampil = new JTextArea();
        tampil.setBackground(Color.WHITE);
        tampil.setDisabledTextColor(Color.WHITE);
        tampil.setEditable(false);
        tampil.setFont(new Font("MS Reference Sans Serif", Font.PLAIN, 11));
        tampil.setBounds(10, 11, 287, 203);
        frame.getContentPane().add(tampil);
        tampil.setColumns(10);
        tampil.setLineWrap(true);
       
        number = new JTextField();
        number.setHorizontalAlignment(SwingConstants.CENTER);
        number.setBackground(SystemColor.text);
        number.setForeground(Color.BLACK);
        number.setFont(new Font("MS Reference Sans Serif", Font.PLAIN, 12));
        number.setBounds(307, 11, 117, 37);
        frame.getContentPane().add(number);
        number.setColumns(10);
       
        JButton btnClose = new JButton("Close");
        btnClose.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg3) {
                String ObjButtons[] = {"Yes","No"};
                int pilihan = JOptionPane.showOptionDialog(null,"Apakah Anda Yakin Ingin keluar ?","Message",JOptionPane.DEFAULT_OPTION,JOptionPane.QUESTION_MESSAGE,null,ObjButtons,ObjButtons[1]);
                if(pilihan == 0){
                    JOptionPane.showMessageDialog(null,"Credit :\nMUHAMMAD JUNDANA AB  - 24010314130069\nGALIH DEA PRATAMA           - 24010314130080\nHAFIDH AULIA WIRANDI       - 24010314130095\nMUHAMMAD WAGE JULI S - 24010314130114 ");
                    System.exit(0);
                }
            }
        });
        btnClose.setForeground(Color.BLACK);
        btnClose.setBackground(SystemColor.controlHighlight);
        btnClose.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
        btnClose.setFont(new Font("MS Reference Sans Serif", Font.PLAIN, 12));
        btnClose.setBounds(307, 212, 117, 37);
        frame.getContentPane().add(btnClose);
       
        JLabel lblLevel = new JLabel("Level                :");
        lblLevel.setBounds(10, 225, 86, 14);
        frame.getContentPane().add(lblLevel);
       
        level = new JTextField();
        level.setBorder(null);
        level.setBackground(UIManager.getColor("Button.background"));
        level.setBounds(100, 222, 22, 20);
        frame.getContentPane().add(level);
        level.setColumns(10);
       
        JLabel lblDaun = new JLabel("Jumlah daun :");
        lblDaun.setBounds(10, 245, 86, 14);
        frame.getContentPane().add(lblDaun);
       
        daun = new JTextField();
        daun.setBorder(null);
        daun.setBackground(UIManager.getColor("Button.background"));
        daun.setBounds(100, 242, 22, 20);
        frame.getContentPane().add(daun);
        daun.setColumns(10);
    }
}

Setelah kode diatas di copy, silahkan di compile dan lihat hasilnya. Yap sebuah program desktop berhasil kalian buat.


Jika ingin mencoba programnya saja, bisa download disini : tree
Cek terus project-project yang akan saya buat. Terimaksih semoga bermanfaat.

Project java part 2


Setelah kita mempersiapkan apa yang perlu di persiapkan pada Project java part 1. Kali ini masuk ke kodingan dari project yang akan dibuat. Postingan kali ini penulis share kodenya meskipun ada warning yang didapat namun tidak berpengaruh terhadap hasil dari project. Kode dibawah adalah kode  untuk struktur data tree, namun belum untuk tampilan desktop karena kode untuk struktur tree cukup panjang. Pada kode juga terdapat dokumentasi yang bisa membantu untuk memahami kode ini. Garis besarnya struktur tree bisa melakukan insert, search dan delete, sedangkan lainnya hanya tambahan untuk informasi pada tree.

Nah, bagaimana menggunakan kode dibawah ? Cukup simpel lho !. Buatlah file project pada IDE eclipse atau Klik File > new > Java Project, akan muncul suatu jendela, cukup isikan nama project dan klik finish. Akan muncul file project yang dibuat tadi di tab kiri eclipse. Buka file project tersebut, pada folder src klik kanan > new > package dan klik finish setelah memasukkan nama package pada jendela yang muncul. Selanjutnya adalah membuat class, klik kanan pada package yang dibuat tadi pilih new dan pilih class, perlu diperhatikan disini nama class yang dimasukka haruslah StructTree ,berbeda dengan pemberian nama project dan nama package, untuk menggunakan kode dibawah haruslah menggunakan nama class yang ada pada kode. Klik finish dan paste kode dibawah kedalam class yang baru saja dibuat. Nah class StructTree siap untuk digunakan, selanjutnya adalah membuat interface dari project tersebut yang akan dijelaskan pada postingan berikutnya.
import java.util.*;

class Node{
    int data;
    Node left;
    Node right;
    Node(int x){
        this.data = x;
    }
}

class StructTree{
    Node root;

    /**
     * Mengecek apakah tree masih kosong
     **/
    boolean isEmpty(){
        return (root == null);
    }
   
    boolean isHaveChild(Node localRoot){
        if(localRoot.left!=null || localRoot.right!=null){
            return true;
        }
        else{
            return false;
        }
    }
    /**
     * Memasukkan suatu nilai ke dalam tree.
     * Jika nilai tersebut lebih kecil dari nilai node, maka bergerak ke kiri terus
     * hingga menjadi child, begitu juga sebaliknya.
     **/
    void insert(int input){
        Node temp = new Node(input);
        if (isEmpty())
            root = temp;
        else {
            Node cursor = root,
                 parent = null;
            while (cursor != null){
                parent = cursor;
                if (input < cursor.data)
                    cursor = cursor.left;
                else
                    cursor = cursor.right;
            }
            /**
             * Menambahkan Node baru pada kiri/kanan Node parent bergantung
             * pada nilai input dan nilai yang disimpan Node parent
             */
            if (input < parent.data){
                parent.left = temp;
                return;
            }
            else {
                parent.right = temp;
                return;
            }
        }
    }
    /**
     * Mencari suatu nilai dalam tree berdasarkan prinsip :
     * Selama belum menemukan nilai yang sama,
     * Jika nilai yang dicari lebih kecil dari nilai yang disimpan dalam Node
     * maka bergerak ke left Child begitu juga sebaliknya.
     **/
    Node find(int key){
        Node cursor = root;
        while (cursor != null){
            if (cursor.data == key)
                return cursor;
            else if (key < cursor.data)
                cursor = cursor.left;
            else
                cursor = cursor.right;
        }
        return null;
    }
   
    Node minValue(Node localRoot) {
        if (localRoot.left == null)
              return localRoot;
        else
              return minValue(localRoot.left);
    }
    Node maxValue(Node localRoot) {
        if (localRoot.right == null)
              return localRoot;
        else
              return maxValue(localRoot.right);
    }
   
    boolean isLeftChild = true;
   
    boolean hapus(Node localRoot, int key){
        Node current = localRoot;
        Node parent = localRoot;
       
        while (current.data != key) {
            parent = current;
            if (key < current.data) {
                isLeftChild = true;
                current = current.left;
            } else {
                isLeftChild = false;
                current = current.right;
            }
            if (current == null) {
                return false;
            }
        }
        if(current.data == key){
            if(current.left != null){
                int x = current.data =  maxValue(current.left).data;
                hapus(current.left,x);
            }
            else if(current.right != null){
                int x = current.data = minValue(current.right).data;
                hapus(current.right,x);
            }
            else if(current.left==null && current.right==null){
                if(parent != current){
                    if(isLeftChild){
                        parent.left = null;
                    }
                    else{
                        parent.right = null;
                    }
                }
                else{
                    if(isLeftChild){
                        Node s = find(current.data);
                        if(s.left != null){
                            find(maxValue(s.left).data).left = null;
                        }
                        else{
                            find(minValue(s.right).data).right = null;
                        }
                    }
                    else{
                        Node s = find(current.data);
                        if(s.left != null){
                            find(maxValue(s.left).data).left = null;
                        }
                        else{
                            find(minValue(s.right).data).right = null;
                        }
                    }
                }
            }
            return true;
        }
        else{
            return false;
        }
    }
   
    Node getParent(Node localRoot,int x){
        Node current = localRoot;
        Node parent = localRoot;
        while (current != null){
            if (current.data == x)
                return parent;
            else if (x < current.data){
                current = current.left;
            }
            else{
                parent = current;
                current = current.right;
            }
        }
        return null;
    }
   
    int nbDaun(Node localRoot){
        Node current = localRoot;
        if(current == null){
            return 0;
        }
        else{
            if((current.left==null) && (current.right==null)){
                return 1;
            }
            else{
                return nbDaun(current.left) + nbDaun(current.right);
            }
        }
    } 
   
    int level(Node localRoot){
        int u,v;
       
        if (localRoot == null){
            return 0;
        }
        u = level(localRoot.left);
        v = level(localRoot.right);
        if (u > v)
                return u+1;
        else return v+1;
    }
   
    void print() {
        Stack s = new Stack();
        s.push(root);
        int nBlanks = 32;
        boolean isRowEmpty = false;
        while (isRowEmpty == false) {
            Stack localStack = new Stack();
            isRowEmpty = true;
            for (int j = 0; j < nBlanks; j++) {
                System.out.print(' ');
            }
            while (!s.isEmpty()) {
                Node temp = (Node) s.pop();
                if (temp != null) {
                    System.out.print(temp.data);
                    localStack.push(temp.left);
                    localStack.push(temp.right);
                    if (temp.left != null || temp.right != null) {
                        isRowEmpty = false;
                    }
                } else {
                    System.out.print("  ");
                    localStack.push(null);
                    localStack.push(null);
                }
                for (int j = 0; j < nBlanks * 2 - 2; j++) {
                    System.out.print(' ');
                }
            }
            System.out.println();
            nBlanks /= 2;
            while (!localStack.isEmpty()) {
                s.push(localStack.pop());
            }
        }
    }
}

Project java part 1

 

Salah satu bahasa pemrograman berorientasi objek yaitu java. Java berada di peringkat pertama bahasa pemrograman populer versi spectrum.ieee.org  pada tahun 2015. Pada postingan kali ini penulis akan menjelaskan salah satu project yang pernah dibuat. Namun penjelasan project ini tidak hanya disatu postingan karena keterbatasan waktu penulis.

Project yang pernah penulis buat yaitu membuat program tree. Konsep tree sendiri bisa di search engine kesayangan kalian. Pada project ini digunakan IDE eclipse yang bisa di download pada link dibawah. Pada eclipse ditambahkan windows builder. Windows builder ini digunakan untuk membuat Graphic User Interface (GUI).

Jadi yang pertama adalah menginstal JRE, JRE singkatan dari Java Runtime Environment , ini diperlukan untuk menjalankan IDE eclipse. Silahkan download JRE pada situs oracle. Untuk cara penginstalannya tidaklah sulit. Intinya dengan memperhatikan perintah dan mengklik tombol next. Selanjutnya adalah menginstal eclipse, berikut langkah-langkahnya : 
  1. Download eclipse 32 bit atau 64 bit. Sesuaikan dengan pc yang kalian gunakan.
  2. Klik file installer eclipse yang berformat .exe. Maka akan muncul jendela penginstalan. Gantilah workspace jika diperlukan.
Nah setelah terinstal eclipse dan java di pc. Selanjutnya yaitu menambahkan windows builder pada eclispe tersebut. Dengan adanya windows builder kita tidak perlu membuat window secara manual, jadi tinggal drag dan drop bagian-bagian yang dibutuhkan ke jendela.

Cara menginstal windows builder di eclipse yaitu :
  1. Klik Help > Install New Software...
  2. Pada work with isikan : http://download.eclipse.org/releases/juno
  3. Kalian bisa menemukan Windows builder di bagian General Purpose Tools. Centang windows builder tersebut dan klik next.
Nah itu dia persiapan untuk project java ini. Untuk kode-nya di posting berikutnya akan dijelaskan. Silahkan berkomentar dibawah jika ingin berkomentar :)

Most Popular