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