Friday 9 November 2012

Membuat Bintang dengan AWT


Masih memanfaatkan Abstracting Windowing, kali ini kita akan membuat shape bintang, dengan menggunakan grafik fill polygon yang ada pada Class Graphic.

Membuat shape bintang, kita membutuhkan 10 titik yang saling dihubungkan dengan garis. Lalu untuk mengisi warna di dalamnya, kita harus menggunakan fill, sehingga grafik yang digunakan adalah fillPolygon.
Dalam pembuatannya, dapat memilih apakah akan membuat bintang dari gabungan beberapa segitiga yang disatukan, atau hanya menggunakan satu polygon saja. Gabungan dari beberapa segitiga pun, memiliki beberapa cara, sehingga bisa didapatkan bentuk bintang utuh. Namun untuk kali ini, hanya akan dibahas membuat shape bintang hanya dengan satu polygon.

Berikut source code yang harus ditulis,

package bintang;

import java.awt.*;

/**
 *
 * @author nadin
 */
public class Bintang extends Panel{
    Bintang()
    {
         setBackground(new Color(0, 0, 0));
    }
   
    @Override
    public void paint(Graphics g){
        g.setColor (new Color(192, 192, 192));
        g.fillOval(-100, 250, 200, 200); //x, y,
        g.fillOval(80, 270, 120, 120);
        g.fillOval(160, 265, 190, 190);
        g.fillOval(310, 275, 100, 100);
        g.fillOval(380, 250, 140, 140);
        g.fillOval(500, 230, 200, 200);
        g.fillRect(0, 360, 700,300);
       
        g.setColor (new Color(255,128,0));
        int [] x = {125, 160, 100, 200, 250, 300, 400, 340, 375, 250};
        int [] y = {350, 235, 150, 150, 50, 150, 150, 235, 350, 300};
        g.fillPolygon(x, y, 10);
             
       
        g.setColor (Color.BLACK);
        g.drawArc(193, 180, 22, 22, 180, 180);
        g.drawArc(193, 179, 22, 22, 180, 180);
        g.drawArc(287, 180, 22, 22, 180, 180);
        g.drawArc(287, 179, 22, 22, 180, 180);

       
        g.setColor(Color.red);
        g.drawArc(240, 242, 24, 24, 180, 180);
        g.drawArc(240, 243, 24, 24, 180, 180);
        g.drawArc(240, 244, 24, 24, 180, 180);      
    }
   
    public static void main(String[] args) {
        Frame f1 = new Frame("Star");
        Bintang a = new Bintang();
        f1.add(a);
        f1.setSize(520, 520);
        f1.setVisible(true);
       
    }
}



Hasilnya :

Friday 19 October 2012

Membuat Kepala Kucing dengan AWT


Kali ini kita akan membuat kepala kucing masih dengan memanfaatkan AWT.  Penjelasan AWT telah dibahas pada posting sebelumnya.

Berikut Algoritma program yang akan kita buat :
>Membuat wajahnya yang berbentuk Oval (fillOval)
>Membuat 2 Polygon masing-masing 3 titik untuk telinganya (fillPolygon)
>Membuat mata berwarna putih –kanan dan kiri (fillOval)
>Membuat mata berwarna hitam – kanan dan kiri
>Membuat garis melengkung untuk membuat mulutnya (drawArc)
>Membuat sisi sisi mulutnya (drawArc)
>Membuat polygon segitiga untuk ballon (fllPolygon)
>Membuat ovale untuk ballon (fillOval)
>Menambahkan text yang akan berisi nama siswa (drawString)

Program ini hanya membutuhkan 1 class, mewarisi class Panel (extends Panel) dan override (mengubah isi) pada class Graphic.



package Kucing;


import java.awt.*;

public class Kucing extends Panel{
    Kucing()
    {
        setBackground(new Color(157, 201, 215));
    }
   
    @Override
    public void paint(Graphics g){   
        super.paint(g);
   
        g.setColor (new Color(215, 107, 0));
        g.fillOval(200, 90, 260, 190);
       
        g.setColor (new Color(215, 107, 0));
        int []x = {220, 230, 290};
        int []y = {140, 60, 130};
        g.fillPolygon(x, y, 3);
       
        g.setColor (new Color(215, 107, 0));
        int []x1 = {370, 430, 445};
        int []y1 = {140, 60, 160};
        g.fillPolygon(x1, y1, 3);
       
        g.setColor (new Color(43, 95, 172));
        int []x2 = {130, 150, 195};
        int []y2 = {140, 110, 160};
        g.fillPolygon(x2, y2, 3);
        g.fillOval(12, 52, 190, 100);
       
        g.setColor(Color.WHITE);
        g.fillOval(270, 130, 30,43);
        g.fillOval(360, 130, 30,43);
       
        g.setColor(Color.BLACK);
        g.fillOval(272, 143, 27, 27);
        g.fillOval(362, 143, 27, 27);
        g.drawArc(252, 110, 150, 150, 190, 170);
       
        g.drawLine(393, 183, 408, 183);
        g.drawLine(243, 196, 258, 196);
        g.setFont(new Font("Lucida Handwriting", Font.BOLD, 14));
        g.drawString("Nadiyah NF", 45, 90);
        g.drawString("XII RPL 4", 55, 120);
       
    }
   
public static void main(String[] args) {
        Frame f1 = new Frame("Hello Mundo");
        Kucing h1 = new Kucing();
        f1.add(h1);
        f1.setSize(600, 400);
        f1.setVisible(true);
}}



Hasilnya :




AWT (Abstract Windowing Toolkit)


Garis Besar tentang AWT
The Java Foundation Class (JFC) termasuk koleksi dari API dimana dapat mempermudah pengembangan aplikasi JAVA GUI. JFC
termasuk diantara 5 bagian, yaitu AWT dan Swing (bagian utama) dan Java2D, Accessibility, dan Drag dan Drop (bagian lainnya)
AWT dan Swing menyediakan komponen GUI yang dapat digunakan dalam membuat aplikasi
Java dan Applet. Disini kita akan tidak akan dulu membahas tentang Applet. Beberapa komponen AWT ditulis dengan native code

Class Penting AWT
class penting yang telah disediakan oleh AWT adalah sebagai berikut


Grafik dalam Class Graphic
Berikut adalah beberapa method grafik yang dapat ditemukan jika kita melakukan Override superclass Graphic


Constructor Color
Constructor Color yang akan sering digunakan yaitu Constructor Color yang memiliki parameter nilai integer pada RGBnya, :
Color(int r, int g, int b);

Namun, hubungan dengan class Color juga memiliki Constructor yang lainnya, yaitu :


*untuk penjelasan dan penggunaannya akan diberikan pada contoh pembuatan program

-------------------------------------

Program : Membuat Bentuk wajah menggunakan fungsi-fungsi pada AWT

Algoritma Program :

>Menentukan warna background (setBackground)
>Membuat bulatan untuk wajah (FillOval)
>Membuat mata berwarna putih kanan dan kiri (FillOval)
>Membuat mata berwarna hitam kanan dan kiri (FillOval)
>Membuat hidung (FillOval)
>Membuat garis setengah lingkaran untuk mulut (drawArc)
>Membuat garis sebagai pembatas antara space atas (wajah), dan bawah (nama) - (drawLine)
>Menambahkan nama siswa di space bawah (drawString)
Pada method main
>Membuat framenya, dengan ukuran disesuaikan

Kita hanya butuh 1 class untuk program ini, dengan mewariskan class Panel, dan override Graphic
Penulisan program untuk membuat bentuk wajah yang terdiri dari mata, hidung, dan mulut adalah sebagai berikut.


AWT_face.java


package awt_face;

import Example.example;
import java.awt.*;


/**
 *
 * @author nadin
 */
public class AWT_face extends Panel{
   
       AWT_face()
    {
        setBackground(new Color(0, 255, 57));
    }
   
    public void paint(Graphics n){
        n.setFont(new Font("Times New Roman", Font.BOLD, 17));
        n.drawString("Nadiyah NF", 20, 330);
        n.drawString("XII RPL 4", 290, 330);
       
        n.setColor (Color.ORANGE);
        n.fillOval(90, 40, 210, 210);
       
        n.setColor(Color.WHITE);
        n.fillOval(140, 90, 30,43);
        n.fillOval(210, 90, 30,43);
       
        n.setColor(Color.BLACK);
        n.fillOval(144, 110, 23, 23);
        n.fillOval(214, 110, 23, 23);
        n.drawLine(20, 300, 370, 300); //xi, x2, y1, y2       
       
        n.setColor(new Color(255, 128, 255));
        n.fillOval(180, 150, 21, 21);
       
        n.setColor (Color.MAGENTA);
        n.drawArc(166, 150, 50, 50, 180, 180);

        
        }
    public static void main(String[] args) {
        Frame f1 = new Frame("Hello AWT");
        AWT_face h1 = new AWT_face();
        f1.add(h1);
        f1.setSize(400, 400);
        f1.setVisible(true);
    }
}



Hasilnya :





Saturday 29 September 2012

Algoritma Sorting Nama Absen

Berikut program implementasi Algoritma Sotring nama, yang akan bekerja dengan algoritma sebagai berikut :

  • Membaca input dari keyboard untuk index;
  • Program akan meminta inputan nama sesuai dengan index yang kita masukkan sebelumnya;
  • Semua data yang telah diinput akan disorting;
  • Program akan menampilkan hasil sortingnya;
  • Program akan menampilkan jumlah siswa yang kita input;
  • Program akan menampilkan Nama absen siswa teratas;
  • Program akan menampilkan Nama absen siswa terbawah.

Berikut kode program yang harus ditulis


Sort_Nama.java

package sort_nama;

//import package Bufferreader dan InputStreamReader
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;

/**
 *
 * @author nadin
 */
public class Sort_Nama {
public static void main(String[] args) throws Exception
            
    {
        BufferedReader inp = new BufferedReader(new InputStreamReader(System.in));
        //berfungsi untuk menginstansiasi class BufferedReader menjadi objek kata
        System.out.print("Jumlah nama yang akan diinput : ");
        int idx = Integer.parseInt(inp.readLine());
        //membaca input dari keyboard

        String [] data = new String[idx]; //instansiasi, mendeklarasikan data bertype String, dan itu merupakan array.
        //panjang arraynya yaitu adalah idx, dimana idx merupakan nilai yang telah kita input sebelumnya
        String temp; //mendeklarasikan variabel temp bertype String
        Scanner input = new Scanner(System.in);

        for(int i=0;i<idx;i++) //pengulangan untuk memasukkan nama sebanyak idx
        {
            System.out.print("Nama " +(i+1)+" adalah: ");
            data[i]=input.next(); //membaca input dari keyboard
        }

        for(int x=1;x<idx;x++) //mengulang selama nilai i lebih kecil dari idx
        { 
            for(int y=0;y<x;y++)
            { 
                if(data[y].compareTo(data[y+1])>0) 
                { 
                    temp=data[y]; //menginisialisasi temp (temporary data), nilainya yaitu sama dengan data[y]
                    data[y]=data[y+1]; //insisialisasi bahwa data pada index y nilainya akan menjadi data pada index y+1
                    data[y+1]=temp; //inisilasiasi bahwa data berindex y+1 nilainya akan menjadi nilai variabel temp
                } 
            } 
        }
            System.out.println("");
            System.out.println("Urutan Absen :");

        for(int i=0;i<idx;i++) //diulang selama i lebih kecil dari nilai idx
        {
            System.out.println((i+1)+". "+ data[i]); //menampilkan nomor urut dan urutan input yang telah disorting
        }
        
        System.out.println("\nJumlah Siswa : " + idx);
        System.out.println("Absen teratas : " + data[0]); //menampilkan absen teratas
        System.out.println("Absen terbawah : " + data[idx-1]); //menampilkan absen terbawah
    }
}

  
Output dari program :


Download source code disini.

Program "Piramida Satu"

Program ini merupakan implementasi dari struktur kontrol pengulangan for. Yang dimana dalam program ini kita akan membuat piramida penjumlahan angka 1.

Algoritma Program :

  • Program meminta user menginputkan sebuah data bertype integer;
  • Data tersebut adalah menjadi acuan berapa baris piramida yang akan dioutputkan, dan program akan mencetak output, sekaligus menjumlahkannya.

Program memanfaatkan satu package (contoh : piramida_satu), dan satu class (Piramida_satu.java)

Berikut source code yang harus ditulis:


Piramida_satu.java

package piramida_satu;
import java.util.Scanner; //import package untuk membaca input dari keyboard

/**
 *
 * @author nadin
 */
public class Piramida_satu {
    public static void main(String[] args) {
        System.out.print("Masukkan jumlah bilangan : ");
        
        Scanner input = new Scanner(System.in);
        //instansiasi class Scanner menjadi variabel bernama input
        int idx = input.nextInt(); //input untuk menentukkan berapa banyaknya baris yang akan menjadi output
        
        for(int hasil=1; hasil<=idx; hasil++) //akan terus diulang sampai variabel hasil bernilai sama dengan variabel idx(yg diinputkan)
        {
            System.out.print("1");
            for(int i=1; i<hasil ; i++){
                //kembali melakukan pengulangan, kali ini yang ditampilkan adalah '+1', akan berhenti apabila i yang telah diinisialisasi bernilai sama dengan, atau lebih besar dari variabel 'hasil' (yang mana, nilai dari variabel hasil didapatkan dari for sebelumnya)
                System.out.print("+1");
            }
            System.out.println("="+hasil); // menampilkan hasil dari deretan angka satu yang berderet
        }
    }
}


Output dari program :

Download source code disini.

Program Implementasi Algoritma Sorting (Insertion Sort)

Berikut merupakan program implementasi dari ALGORITMA SORTING - Insertion Sort yang akan bekerja dengan algoritma :

  • Membaca input dari keyboard;
  • Memberikan pilihan Y atau T, jika user menginputkan Y, maka akan kembali membaca input, jika yang diinputkan adalah T, maka membaca input dari keyboard akan berhenti;
  • Semua bilangan yang diinput akan disorting;
  • Bilangan yang dimasukkan akan diseleksi bilangan terkecilnya, dan ditampilkan;
  • Bilangan yang dimasukkan akan diseleksi bilangan terbesarnya, dan ditampilkan;
  • Dari semua bilangan yang telah diinputkan, dihitung rata-ratanya, dan ditampilkan

Program ini memanfaatkan satu package (dalam Project ini, package bernama studikasus_algo) dan dua buah class (dalam Project ini, class masing-masing bernama StudiKasus_Algo.java dan Select.java)

Berikut souce code yang harus ditulis dari program tersebut;


StudiKasus_Algo.java

package studikasus_algo; //Studi kasus 22 September 2012 INSERTION SORT

import java.util.Scanner; //import untuk input dari keyboard

/**
 *
 * @author nadin
 */
public class StudiKasus_Algo {
    
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        int input[] = new int[100], index = 0;
        //deklarasi 
        String ulang; //berfungsi untuk menanyakan pada user, 
        
        for (int i = 0; i < input.length; i++) {
            
            System.out.print("Masukkan angka ke "+(i+1)+" : ");
            input[i] = in.nextInt();
            //membaca input dari keyboard, dan dimasukkan dalam array input
            
            System.out.print("     (?) Masukkan lagi?(Y/T)");
            ulang = in.next();
            if (ulang.equals("Y")) {
                //for akan diteruskan jika yang diinput adalah Y
                continue;}
              if (ulang.equals("T")){
                  //jika yang diinput adalah T, maka akan keluar dari looping
                  break;
            }}
        
        input = Select.insertionsort(input); //memanggil method untuk insertion sorting
        
        System.out.println("\nBILANGAN TERKECIL\t: " + input[index]);
        int u = 99;
        for(u=99; input[u]==0; u--)
        //pengulan ini berfungsi untuk menjumlahkan seluruh nilai yang ada pada array input[]
        {
            continue; //meneruskan pada seleksi for berikutnya
        }
        System.out.println("BILANGAN TERBESAR\t: "+input[u]);
        
        double ave = 0; //menginisialisasi ave (rata-rata) dengan nilai 0, type double
        
        for (int i=0; input[i]!=0; i++) 
        {
            if(input[i] != 0){
            ave = ave + input[i]; // 
            index++;}
        }
       ave = ave / index; //menghitung ave dengan cara membagi nilai pada variabel ave dengan 
       System.out.println("Rata-Rata\t\t: " + ave); //menampilkan nilai variabel ave 
    }
}



Select.java

package studikasus_algo;

/**
 *
 * @author nadin
 */
public class Select {

    public static int[] insertionsort(int[] data) {
        for (int i = 0; i < data.length && data[i] != 0; i++) {
            int j = i, tmp = data[i];
            while ((j > 0) && (data[j - 1] > tmp)) {
                data[j] = data[j - 1];
                j--;
            }
            data[j] = tmp;
        }
        return data;
    }
}


Output dari Program :

Download source code disini.

Sunday 2 September 2012

Membuat Kalkulator Sederhana

Kali ini kita akan membuat sebuah kalkulator sederhana, tetapi belum berbasis GUI (Graphic User Interface).


Masalah :
Berikut masalah yang harus kita selesaikan
Buatlah sebuah program dengan menggunakan bahasa java dengan  algoritma dan ketentuan berikut ini

Program Kalkulator Sederhana
Tools yang digunakan : Teks Editor (Notepad, Wordpad, Notepad++, Komodo, etc)




Penyelesaian :
Membuat class bernama kalkulator_simple.java

package kalkulator_console;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 *
 * @author nadin
 */
public class kalkulator_simple {
    public static void main(String[] args) {
        BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in));
        //mendeklarasikan sebuah variabel bernama dataIn dengan tipe class BufferedReader

        String in = ""; //in akan menjadi variabel inputan dari keyboard
        
        try{
            System.out.println("Masukkan ekspresi : ");
            in = dataIn.readLine(); //menjalankan perintah dataIn.readLine() untuk mengambil inout dari user dan memasukkannya pada variabel bernama in
                                      
            }catch(IOException e){
                System.out.print("gagal membaca keyboard!");
            }

        String all[] = in.split(" "); //untuk memisahkan String in berdasarkan spasi
        String var[] = new String[3]; //membatasi jumlah angka yang akan dihitung, hanya 3
        String op[] = new String[2]; //membatasi jumlah operator, hanya boleh 2
       
        double vardou[] = new double[3]; // dari string ke double
        int idxvar = 0; //hasil jumlah angka
        int idxop = 0 ; //hasil jumlah op

        for(int i =0;i<all.length;i++) //looping sebanyak index char dari hasil castingnya dari String
        {
            if((all[i].equals("+")) || (all[i].equals("-")) || (all[i].equals("*")) || (all[i].equals("/")))
                //menyeleksi mana yang termasuk ke dalam operator
        {
            op[idxop] = all[i];
            idxop++;
        }
            else //yang tidak termasuk operator, char tersebut masuk dalam var
        {
            var[idxvar] = all[i];
            idxvar++;
        }
        }
            double hasil = 0; //mendeklarasikan variable hasil type data double dan menginisialisasinya dengan 0

       
        for(int k=0;k<var.length;k++) //looping sebanyak jumlah var (jumlah var telah diseleksi pada looping sebelumnya)
        {
            vardou[k] = Double.parseDouble(var[k]); //untuk mengubah variabel var dari String menjadi double
        }

        hasil = vardou[0]; //mengganti nilai variabel hasil jadi nilai variabel vardou index 0

        int idxvardou = 1; //inisialisasi idxvardou
       
        for(int l =0 ; l < op.length;l++) //looping sebanyak jumlah op
        {
            if(op[l].equals("+")) //membandingkan array char op dengan operator +
            {
            hasil = hasil + vardou[idxvardou]; //mengganti nilai hasil menjadi hasil ditambah dengan vardou pada idxvardou
            }
                else if (op[l].equals("-"))
                {
                hasil = hasil - vardou[idxvardou];
                }
                    else if (op[l].equals("*"))
                    {
                    hasil = hasil * vardou[idxvardou];    
                    }
                        else if (op[l].equals("/"))
                        {
                        hasil = hasil / vardou[idxvardou];    
                        }
            idxvardou++; //menambahkan indexvardou (indexnya) karena akan masuk ke looping kembali.
        }
       
        System.out.println("\nOutput");
        System.out.println(hasil);

    }
}



Saat dirunning, hasilnya seperti ini

Output Program


Download file .class
Download file .jar