Selamat Belajar !

Sabtu, 29 September 2012

Mengurutkan Nama menggunakan Insertion Sort

Soal :
- Menampilkan nama sesuai urutan alphabet
- Menampilkan absen 2 teratas, dan
- Menampilkan absen 2 terbawah

Jawaban :

file UrutanNama.java


public class UrutanNama {
    public static void main(String[] args) throws Exception
           
    {
        BufferedReader kata = new BufferedReader(new InputStreamReader(System.in)); // menginput nama dari keyboard menggunakan BufferedReader
        int a; // // mendeklarasikan variable bernama a yang tipe datanya integer
        System.out.print("Jumlah nama yang ingin di Inputkan: "); //menginput nama dari keyboard menggunakan BufferedReader
        a = Integer.parseInt(kata.readLine()); // mengkonversi variabel a yang bertipe data string menjadi Integer

        String[] Array; // array yang tipe datanya string
        Array=new String[a];
        String temp; // mendeklarasikan variabel temp yang tipe datanya String
        Scanner input=new Scanner(System.in); //menginstansiasi class scanner menjadi variabel yang bernama input

        for(int i=0;i<a;i++) //
        {
            System.out.print("Nama " +(i+1)+" adalah: ");
            Array[i]=input.next();
        }

        for(int x=1;x<a;x++)
        {
            for(int y=0;y<x;y++)
            {
            if(Array[y].compareTo(Array[y+1])>0)
            //membandingkan dan mengurutkan abjad
            {
            temp=Array[y];//
            Array[y]=Array[y+1];//
            Array[y+1]=temp; //
            }
            }
        }
        // output mengurutkan nama
            System.out.println("");
            System.out.println("Nama berdasarkan urutannya "); // menampilkan hasil nama yang telah terurut

        for(int i=0;i<a;i++){
        System.out.println((i+1)+". "+ Array[i]);
        }
        // output jumlah siswa, absen 2 teratas dan absen 2 terbawah
        System.out.println("Jumlah siswa : " + a);
        System.out.println("Absen 2 teratas : " + Array[1]); // menampilkan hasil nama 2 teratas
        System.out.println("Absen 2 terbawah : " + Array[a-2]); // menampilkan hasil nama 2 terbawah
      
}
}


Berikut Hasilnya :






Silahkan

Minggu, 09 September 2012

Static Methods

Kita menggunakan static method untuk mengakses static variable studentCount.

public class StudentRecord
{
private static int studentCount;
public static int getStudentCount(){
return studentCount;
}
}

dimana,
public - Menjelaskan bahwa method ini dapat diakses dari object luar class
static - Method ini adalah static dan pemanggilannya menggunakan
[namaclass].[namaMethod]. Sebagai contoh :
studentRecord.getStudentCount
Int - Tipe return dari method. Mengindikasikan method tersebut harus
mempunyai return value berupa integer
public - Menjelaskan bahwa method ini dapat diakses dari object luar class
getStudentCount - Nama dari method
() - Method ini tidak memiliki parameter apapun

Pada deklarasi di atas, method getStudentCount() akan selalu menghasilkan return value 0
jika kita tidak mengubah apapun pada kode program untuk mengatur nilainya. Kita akan
membahas pengubahan nilai dari studentCount pada pembahasan constructor.

Petunjuk Penulisan Program :
1. Nama method harus dimulai dengan huruf kecil
2. Nama method harus berupa kata kerja
3. Gunakan dokumentasi sebelum mendeklarasikan sebuah method. Anda dapat
Menggunakan JavaDoc.

Sumber : J.E.N.I.

Multiple Return Statements

Anda dapat mempunyai banyak return values pada sebuah method selama mereka tidak
pada blok program yang sama. Anda juga dapat menggunakan konstanta disamping
variabel sebagai return value.

Sebagai contoh, perhatikan method berikut ini :

public String getNumberInWords( int num ){
String defaultNum = "zero";
if( num == 1 ){
return "one"; //mengembalikan sebuah konstanta
}
else if( num == 2){
return "two"; //mengembalikan sebuah konstanta
}
// mengembalikan sebuah variabel
return defaultNum;
}

Sumber : J.E.N.I.

Mutator Methods

Bagaimana jika kita menghendaki object lain untuk mengubah data? Yang dapat kita
lakukan adalah membuat method yang dapat memberi atau mengubah nilai variable dalam
class, baik itu berupa instance maupun static. Method semacam ini disebut dengan mutator
methods. Sebuah mutator method umumnya tertulis set<namaInstanceVariabel>.

Mari kita perhatikan salah satu dari implementasi mutator method :

public class StudentRecord
{
private String name;
:
:
public void setName( String temp ){
name = temp;
}
}

dimana,
public - Menjelaskan bahwa method ini dapat dipanggil object luar class
void - Method ini tidak menghasilkan return value
setName - Nama dari method
(String temp) - Parameter yang akan digunakan pada method
Pernyataan berikut :

name = temp;

mengidentifikasi nilai dari temp sama dengan name dan mengubah data pada instance
variable name.

Perlu diingat bahwa mutator methods tidak menghasilkan return value. Namun berisi
beberapa argumen dari program yang akan digunakan oleh method.

Sumber : J.E.N.I.

Accessor Methods

Untuk mengimplementasikan enkapsulasi, kita tidak menginginkan sembarang object
dapat mengakses data kapan saja. Untuk itu, kita deklarasikan atribut dari class sebagai
private. Namun, ada kalanya dimana kita menginginkan object lain untuk dapat mengakses
data private. Dalam hal ini kita gunakan accessor methods.

Accessor Methods digunakan untuk membaca nilai variabel pada class, baik berupa
instance maupun static. Sebuah accessor method umumnya dimulai dengan penulisan
get<namaInstanceVariable>. Method ini juga mempunyai sebuah return value.

Sebagai contoh, kita ingin menggunakan accessor method untuk dapat membaca nama,
alamat, nilai bahasa Inggris, Matematika, dan ilmu pasti dari siswa.

Mari kita perhatikan salah satu contoh implementasi accessor method.

public class StudentRecord
{
private String name;
:
:
public String getName(){
return name;
}
}

dimana,
public - Menjelaskan bahwa method tersebut dapat diakses dari object luar class
String - Tipe data return value dari method tersebut bertipe String
getName - Nama dari method
() - Menjelaskan bahwa method tidak memiliki parameter apapun

Pernyataan berikut,

return name;

dalam program kita menandakan akan ada pengembalian nilai dari nama instance variable
ke pemanggilan method. Perhatikan bahwa return type dari method harus sama dengan
tipe data seperti data pada pernyataan return. Anda akan mendapatkan pesan kesalahan
sebagai berikut bila tipe data yang digunakan tidak sama :
StudentRecord.java:14: incompatible types
found : int
required: java.lang.String
return age;
^
1 error

Contoh lain dari penggunaan accessor method adalah getAverage,

public class StudentRecord
{
private String name;
:
:
public double getAverage(){
double result = 0;
result = ( mathGrade+englishGrade+scienceGrade )/3;
return result;
}
}

Method getAverage() menghitung rata – rata dari 3 nilai siswa dan menghasilkan nilai
return value dengan nama result.

Sumber : J.E.N.I.

Deklarasi Methods

Sebelum kita membahas method apa yang akan dipakai pada class, mari kita perhatikan
penulisan method secara umum.

Dalam pendeklarasian method, kita tuliskan :

<modifier> <returnType> <name>(<parameter>*) {
<statement>*
}

dimana,
<modifier> dapat menggunakan beberapa modifier yang berbeda
<returnType> dapat berupa seluruh tipe data, termasuk void
<name> identifier atas class
<parameter> ::= <tipe_parameter> <nama_parameter>[,]

Sumber : J.E.N.I.

Class Variable atau Static Variables

Disamping instance variable, kita juga dapat mendeklarasikan class variable atau variabel
yang dimiliki class sepenuhnya. Nilai pada variabel ini sama pada semua object di class
yang sama. Anggaplah kita menginginkan jumlah dari siswa yang dimiliki dari seluruh class,
kita dapat mendeklarasikan satu static variable yang akan menampung nilai tersebut. Kita
beri nama variabel tersebut dengan nama studentCount.
Berikut penulisan static variable :

public class StudentRecord
{
//area deklarasi instance variables
private static int studentCount;
//area penulisan kode selanjutnya

Kita gunakan keyword : ’static’ untuk mendeklarasikan bahwa variabel tersebut adalah
static.

Maka keseluruhan kode yang dibuat terlihat sebagai berikut :

public class StudentRecord
{
private String name;
private String address;
private int age;
private double mathGrade;
private double englishGrade;
private double scienceGrade;
private double average;
private static int studentCount;
//area penulisan kode selanjutnya
}

Sumber : J.E.N.I.

Instance Variable

Jika kita telah menuliskan seluruh atribut yang akan diisikan pada class, selanjutnya kita
akan menuliskannya pada kode. Jika kita menginginkan bahwa atribut – atribut tersebut
adalah unik untuk setiap object (dalam hal ini untuk setiap siswa), maka kita harus
mendeklarasikannya sebagai instance variable :

Sebagai contoh :

public class StudentRecord
{
private String name;
private String address;
private int age;
private double mathGrade;
private double englishGrade;
private double scienceGrade;
private double average;
//area penulisan kode selanjutnya
}

dimana,
private disini menjelaskan bahwa variabel tersebut hanya dapat diakses oleh class itu
sendiri. Object lain tidak dapat menggunakan variabel tersebut secara langsung. Kita akan
membahas tentang kemampuan akses pada pembahasan selanjutnya.

Petunjuk Penulisan Program :
1. Deklarasikan seluruh instance variable pada awal penulisan class
2. Deklarasikan variable per baris
3. Penulisan instance variable, termasuk juga variabel lain harus dimulai dengan
huruf kecil
4. Gunakan tipe data yang tepat pada setiap variabel
5. Deklarasikan instance variable sebagai private supaya hanya method pada
class itu sendiri yang dapat mengaksesnya.

Sumber : J.E.N.I.

Deklarasi Atribut

Dalam pendeklarasian atribut, kita tuliskan :

<modifier> <type> <name> [= <default_value>];

Langkah selanjutnya adalah mengurutkan atribut yang akan diisikan pada class. Untuk
setiap informasi, urutkan juga tipe data yang yang tepat untuk digunakan. Contohnya, Anda
tidak mungkin menginginkan untuk menggunakan tipe data integer untuk nama siswa, atau
tipe data string pada nilai siswa.

Berikut ini adalah contoh informasi yang akan diisikan pada class StudentRecord :
name - String
address - String
age - Int
math grade - double
english grade - double
science grade - double
average grade - double

Anda dapat menambahkan informasi lain jika diperlukan.

Sumber : J.E.N.I.

Memanggil Method Static

Method Static adalah method yang dapat dipakai tanpa harus menginisialisasi suatu class
(maksudnya tanpa menggunakan variabel terlebih dahulu). Method static hanya dimiliki
oleh class dan tidak dapat digunakan oleh instance (atau objek) dari suatu class. Method
static dibedakan dari method yang dapat instance di dalam suatu class oleh kata kunci
static.
Untuk memanggil method static, ketik :

Classname.staticMethodName(params);

Contoh dari static method yang digunakan :

//mencetak data pada layar
System.out.println(“Hello world”);
//convert string menjadi integer
int i = Integer.parseInt(“10”);
String hexEquivalent = Integer.toHexString( 10 );

Sumber : J.E.N.I.

Argumen Command-line

Sebuah aplikasi Java dapat menerima sejumlah argumen dari command-line. Argumen
dari command line memberikan kesempatan bagi user untuk mengatur operasi dari
sebuah aplikasi dalam sekali pemanggilan program. User memasukkan argumen
command line pada saat memanggil aplikasi dan menspesifikasikan argumen tersebut
setelah nama dari class yang akan dijalankan.

Sebagai contoh, apabila Anda memiliki sebuah aplikasi Java dengan nama Sort, yang
akan mengurutkan lima nomor, Anda dapat menjalankannya seperti berikut ini:
Perlu diperhatikan bahwa sebuah argumen dapat dipisahkan oleh ruang spasi. Pada
bahasa pemrograman Java, jika kita akan memanggil sebuah aplikasi, sistem runtime
akan memberikan argumen command-line ke method main yang dimiliki oleh aplikasi
menggunakan sebuah array dari String. Lalu, setiap String di dalam array mewakili
sebuah argumen commmand-line. Perhatikan deklarasi dari main method,

public static void main( String[] args )

Argumen yang diberikan kepada program Anda akan disimpan kedalam sebuah array
String dengan identifier args.

Pada contoh sebelumnya, argumen dari command-line yang akan diberikan
kepada aplikasi sort command adalah sebuah array dengan lima buah String yaitu
“5”,”4”,”3”,”2”, dan “1”. Anda dapat mengetahaui berapa banyak argumen dari
command-line dengan cara melihat panjang dari attribute array.
Sebagai contoh,

int numberOfArgs = args.length;

Jika program Anda membutuhkan argumen command-line yang bertipe angka. Anda
harus mengkonversi argumen String tersebut untuk merepresantasikan sebuah angka,
misalnya “34” menjadi sebuah angka 34. Kode dibawah ini adalah sebuah potongan
program untuk mengkonversi sebuah argumen command-line menjadi tipe integer.
int firstArg = 0;
if (args.length > 0){
firstArg = Integer.parseInt(args[0]);
}
parseInt akan melempar eksepsi NumberFormatException (ERROR) jika format args[0]
tidak valid (bukan sebuah angka).

Petunjuk penulisan program:
Sebelum menggunakan argumen command line, harusdiperiksaterlebih dahulu berapa jumlah
argumen yang diperlukan sebelum mengakses sebuah array, sehingga tidak ada eksepsi
yang terjadi.

Sumber : J.E.N.I.