Materi Algoritma Dan Dasar Pemrograman Java

27
Algoritma dan Dasar Pemrograman Java Algoritma merupakan langkah detail yang ditujukan untuk komputer guna menyelesaikan satu masalah. Namun algoritma berbeda dengan program, karena algoritma bersifat bebas terhadap bahasa pemrograman. Istilah algoritma berasal dari nama seorang pengarang berkebangsaan Arab bernama Abu Ja’far Mohammed ibn Musa al Khowarizmi (tahun 790-840), yang sangat terkenal sebagai ‘Bapak Aljabar’. Contoh kasus algoritma sederhana: Menghitung nilai keliling persegi panjang Algoritmanya seperti berikut: 1. Peroleh nilai panjang dan lebar persegi panjang. 2. Hitung keliling persegi panjang dengan menggunakan rumus 2 x (panjang + lebar). 3. Tampilkan nilai keliling persegi penjang. Adakalanya suatu algoritma disajikan dalam bentuk diagram alir (flowchart):

Transcript of Materi Algoritma Dan Dasar Pemrograman Java

Page 1: Materi Algoritma Dan Dasar Pemrograman Java

mulai

Panjang <- 10 dan lebar <- 5

Kel <- 2 x (panjang + lebar)

Tampilkan keliling

Algoritma dan Dasar Pemrograman Java

Algoritma merupakan langkah detail yang ditujukan untuk komputer guna menyelesaikan satu masalah. Namun algoritma berbeda dengan program, karena algoritma bersifat bebas terhadap bahasa pemrograman.

Istilah algoritma berasal dari nama seorang pengarang berkebangsaan Arab bernama Abu Ja’far Mohammed ibn Musa al Khowarizmi (tahun 790-840), yang sangat terkenal sebagai ‘Bapak Aljabar’.

Contoh kasus algoritma sederhana: Menghitung nilai keliling persegi panjang

Algoritmanya seperti berikut:

1. Peroleh nilai panjang dan lebar persegi panjang.2. Hitung keliling persegi panjang dengan menggunakan rumus 2 x (panjang +

lebar).3. Tampilkan nilai keliling persegi penjang.

Adakalanya suatu algoritma disajikan dalam bentuk diagram alir (flowchart):

selesai

Page 2: Materi Algoritma Dan Dasar Pemrograman Java

Java adalah bahasa pemrograman yang banyak digunakan untuk membangun program, dirilis pertama kali pada tahun 1955 oleh Sun Microsystems. Penciptanya adalah James Gosling.

Java berorientasi objek (OOP) yang mana maksuknya adalah suatu pendekatan yang memungkinkan suatu kode yang digunakan untuk menyusun program menjadi lebih mudah untuk digunakan kembali, lebih handal, lebih mudah dipahami.

Sebuah contoh program java sederhana cari contoh algoritma di atas:

//Berkas: KelilingPersegiPanjang.java

Class KelilingPersegiPanjang{

public static void main(String[]args) {

int panjang, lebar, keliling;

System.out.println(“Menghitung keliling persegi panjang”);

Panjang=10;

Lebar=5;

Keliling=2 x (panjang + lebar);

System.out.println(“Keliling=”+keliling);

Tipe-tipe data pada Java:

Seperti bahasa pemrograman lainnya, Java mempunyai 8 tipe data primitif, yang mana 4 bertipe integer(bilangan bulat) , 2 bertipe floating-point(bilangan pecahan) dan yang 2 terakhir bertipe boolean dan char.Tipe data tersebut antara lain :

Integer

1. byte : Memiliki nilai integer dari -128 sampai +127 dan menempati 1 byte ( 8 bits ) di memori.

2. short : Memiliki nilai integer dari -32768 sampai 32767 dan menempati 2 bytes ( 16 bits ) di memori.

3. int : Memiliki nilai integer dari -2147483648 sampai 2147483647 dan menempati 4 bytes ( 32 bits ) di memori.

Page 3: Materi Algoritma Dan Dasar Pemrograman Java

4. long : Memiliki nilai dari -9223372036854775808 sampai 9223372036854775807 dan menempati 8 bytes ( 64 bits ) di memori.

Bilangan integer biasanya menggunakan int, dan bukan byte,short maupun long. Bilangan integer juga mengenal nilai positif dan negatif ( signed number ). Tipe data byte dan short hanya digunakanpada aplikasi khusus yang memperhatikan penggunaan memori.

Sedangkan long jarang digunakan karena jarang memerlukan bilangan sebesar kapasitas long.

Floating Point

1. float : memiliki nilai -3.4×10(pangkat ’8′) sampai +3.4×10(pangkat ’8′) dan menempati 4 byte di memori

2. double : memiliki nilai -1.7×10(pangkat 308) sampai +1.7×10(pangkat 308).

Semua bilangan pecahan atau desimal dalam Java tanpa diakhiri huruf f akan dianggap sebagai double. Sedangkan bilangan yang ingin dikategorikan sebagai float harus diakhiri dengan huruf F.

Misalnya : 4.22 F atau 2.314f. Sedangkan untuk bilangan double, bisa menambah dengan huruf D, karena secara default bilangan dengan koma atau pecahan atau desimal akan dianggap sebagai double

Boolean Dan Char

1. boolean : Dalam Java dikenal tipe data boolean yang terdiri dari dua nilai saja, yaitu true dan false. Boolean sangat penting dalam mengevaluasi suatu kondisi, dan sering digunakan untuk menentukan alur program.

2. char : Char adalah karakter tunggal yang didefinisikan dengan diawali dan diakhiri dengan tanda ‘ ( petik tunggal ). Char berbeda dengan String, karena String bukan merupakan tipe data primitif, tetapi sudah merupakan sebuah objek.

Page 4: Materi Algoritma Dan Dasar Pemrograman Java

A. Variable dalam Java

Variable merupakan container yang digunakan untuk menyimpan suatu nilai pada sebuah program dengan tipe tertentu. Pada dasarnya ada dua macam tipe variabel data dalam bahasa Java, yakni tipe primitif dan tipe reference.

Adapun tipe primitif meliputi:

Tipe boolean

Tipe numeric (Byte, Short, Int, Long, Char, Float, Double)

Tipe data variabel reference terdiri :

Tipe class

Tipe array

Tipe interface

B. Konstanta dalam Java

Variabel dalam Java bisa dijadikan konstanta, sehingga nilainya tidak akan dapat diubah-ubah dengan mendeklarasikannya sebagai variabel final seperti ini:

final int dataInt = 10

Page 5: Materi Algoritma Dan Dasar Pemrograman Java

final char charData = ‘\u103’;

final float x = 12,67;

final byte y = 2;

C. Penamaan variabel dan scope variabel dalam java

Harus terdiri atas sedereten karakter unicode yang diawali oleh karekter huruf atau garis bawah. Unicode merupakan sistem pengkodean karekter yang dapat dibaca oleh

berbagai bahasa manusia (Jepang, Yunani, Cyrillic, dan Hebrew). ASCII hanya terbatas pada karkter latin.

Tidak boleh berupa keyword (kata yang dicadangkan), null, atau literatur true/false.

Harus unik dalam suatu scope

Contoh pendeklarasian variabel yang salah :

Int 8k; /* salah, karena nama variabel diawali dengan angka */

Char null; /* salah, karena nama variabel = null */

String public; /* salah, karena public merupakan keyword dalam Java */

D. Tipe Boolean

Page 6: Materi Algoritma Dan Dasar Pemrograman Java

Dalam Java, setiap variabel yang bertipe boolean hanya akan memiliki nilai true atau false.

E. Tipe Numerik

Adapun tipe numerik dalam Java ada tujuh macam seperti yang telah dijelaskan sebelumnya yakni

Nama Type

Ukuran

Range nilai

Byte 8 bit -128 …. 127

Short 16 bit -32768 … 32767

Int 32 bit -2147483648 … 2147483647

Long 64 bit -9223372036854775808 … 9223372036854775808

Char 16 bit 0..65535 ( ‘\u0000’ … ‘\uffff’ )

Float 32 bit IEEE

Double64 bit IEEE

F. Operator Aritmatika

Operator

penggunaan

Page 7: Materi Algoritma Dan Dasar Pemrograman Java

Deskripsi

+

Op1 + Op2

Menambahkan Op1 dengan Op2

-

Op1 – Op2

Mengurangkan Op1 dengan Op2

*

Op1 + Op2

Mengalikan Op1 dengan Op2

/

Op1 + Op2

Membagi Op1 dengan Op2

Page 8: Materi Algoritma Dan Dasar Pemrograman Java

%

Op1 + Op2

Menghasilkan sisa hasil bagi antara Op1 dengan Op2

Operator

Penggunaan

Deskripsi

++

Op++

Op dinaikkan nilainya 1 setelah dilakukan operasi pada Op

++

++Op

Op dinaikkan nilainya 1 sebelum dilakukan operasi pada Op

Page 9: Materi Algoritma Dan Dasar Pemrograman Java

Op–

Op diturunkan nilainya 1 setelah dilakukan operasi pada Op

–Op

Op diturunkan nilainya 1 sebelum dilakukan operasi pada Op

-

-Op

Mengubah nilai Op menjadi negasinya, jika Op positif maka menjadi negatif, jika Op negatif menjadi positif

G. Operator relasional

Operator relasional digunakan untuk membandingkan antara dua variabel data.

Operator

Penggunaan

Deskripsi

Page 10: Materi Algoritma Dan Dasar Pemrograman Java

>

Op1 > Op2

Menghasilkan true jika Op1 lebih besar dari Op2

<

Op1 < Op2

Menghasilkan true jika Op1 lebih kecil dari Op2

>=

Op1 >= Op2

Menghasilkan true jika Op1 lebih besar atau sama Op2

<=

Op1 <= Op2

Menghasilkan true jika Op1 lebih kecil atau sama dengan Op2

==

Page 11: Materi Algoritma Dan Dasar Pemrograman Java

Op1 == Op2

Menghasilkan true jika Op1 sama dengan Op2

!=

Op1 != Op2

Menghasilkan true jika Op1 tidak sama dengan Op2

H. Operator kondisional

Operator kondisional dalam Java ada enam macam :

Operator

Penggunaan

Deskripsi

&&

Op1 && Op2

Menghasilkan true jika Op1 dan Op2, keduanya bernilai boolean true

Page 12: Materi Algoritma Dan Dasar Pemrograman Java

||

Op1 || Op2

Menghasilkan true jika Op1 atau Op2, salah satunya bernilai boolean true

!

!Op1

Menghasilkan true jika Op1 bernilai boolean true

&

Op1 & Op2

Bitwise AND, menghasilkan true jika Op1 dan Op2, bernilai true

|

Op1 | Op2

Bitwise OR, menghasilkan true jika Op1 atau Op2, salah satunya bernilai boolean true

^

Page 13: Materi Algoritma Dan Dasar Pemrograman Java

Op1 ^ Op2

Menghasilkan true jika salah satu diantara Op1 atau Op2 bernilai true, namun tidak keduanya.

I. Operator shift

Operator shift dalam Java digunakan untuk manipulasi bit. Operator shift digunakan untuk menggeser bit-bit sesuai dengan yang diinginkan. Ada tiga operator shift dalam Java, yakni:

Operator Penggunaan Deskripsi

>> Op1 >> Op2 Menggeser bit Op1 ke kanan sejauh Op2

<< Op1 << Op2 Menggeser bit Op1 ke kiri sejauh Op2

>>> Op1 >>> Op2 Menggeser bit Op1 ke kanan sejauh Op2

J. Operator bitwise

Operator

Penggunaan

Deskripsi

& Op1 & Op2 Bitwise AND

| Op1 | Op2 Bitwise OR

^ Op1 ^ Op2 Bitwise XOR

Page 14: Materi Algoritma Dan Dasar Pemrograman Java

~ ~Op Bitwise Complement

K. Operator assignment

Operator asignment dalam Java digunakan untuk memberikan sebuah nilai ke sebuah variabel. Operator asignment hanya berupa ‘=’, namun selain itu dalam Java dikenal beberapa shortcut asignment operator yang penting, yang digambarkan dalam tabel berikut:

Operator

Penggunaan

Ekivalen dengan

+= Op1 += Op2 Op1 = Op1 + Op2

-= Op1 -= Op2 Op1 = Op1 – Op2

*= Op1 *= Op2 Op1 = Op1 * Op2

/= Op1 /= Op2 Op1 = Op1 / Op2

%= Op1 %= Op2 Op1 = Op1 % Op2

&= Op1 &= Op2 Op1 = Op1 & Op2

!= Op1 != Op2 Op1 = Op1 ! Op2

^= Op1 ^= Op2 Op1 = Op1 ^ Op2

<<= Op1 <<= Op2 Op1 = Op1 << Op2

>>= Op1 >>= Op2 Op1 = Op1 >> Op2

>>>= Op1 >>>= Op2 Op1 = Op1 >>> Op2

L. Operator lain

Page 15: Materi Algoritma Dan Dasar Pemrograman Java

Operator-operator yang tidak termasuk dalam golongan operator-operator yang disebutkan diatas adalah :

?

operator ini merupakan operator pendek untuk pernyataan if(…..)else.

M. Urutan Precedence Operator

Operasi-operasi yang menggunakan operator dapat melibatkan lebih dari 1 operator dan 1 operand.

Postfix operators [ ] . (params) expr++ expr++

Unary operators ++expr –expr +expr –expr ~1

Creation or cast New (type)expr

Multiplicative * / %

Additive + -

Shift <<>> >>>

Relational <> <= >= instanceof

Equality == !=

Bitwise AND &

Bitwise exclusive OR ^

Bitwise exclusive OR |

Logical AND &&

Logical OR ||

Page 16: Materi Algoritma Dan Dasar Pemrograman Java

Conditional ? :

Assignment = += -= *= /= %= &= ^= |= <<= >>= >>>=

N. Array

Array merupakan tipe khusus yang menyatukan sekelompok variabel dengan tipe yang sama. Tipe array bersifat ortogonal terhadap sistem tipe. Maksudnya, array dapat dideklarasikan menjadi array dari beberapa integer dengan menciptakan tipe baru, yaitu “array of int”. Tipe ini berbeda dengan array of double, sebagai contoh. Tanda kurung siku “[ ]” digunakan untuk mendeklarasikan tipe array.

Contoh yang menunjukkan deklarasi variabel month_days dengan tipe array of int”:

Int month_days[];

Seperti dalam deklarasi variabel lainnya, nilai month_days awalnya diisi dengan nol. Untuk array, ada besaran khusus yang disebut null, yang merepresentasikan array tanpa isi.

Untuk mengisi nilai-nilai array tersebut dapat menggunakan operator khusus new, new digunakan untuk mengalokasikan ruang array. Untuk menggunakan operator new, harus menyediakan sebuah tipe dan bilangan integer positif untuk menyatakan alokasinya. Contoh ini mengalokasikan 12 integer dalam array yang berkaitan dengan month_days.

month_days = new int [12];

Jadi sekarang array month_days terdiri dari array 12 buah integer. Tanda kurung siku digunakan untuk menunjuk unsur-unsur array. Diawali dengan nol, setiap unsur array dapat diakses seakan-akan unsur tersebut merupakan tipe yang dideklarasikan ketika array dibuat. Dalam hal ini, setiap unsur array adalah bertipe int.

Page 17: Materi Algoritma Dan Dasar Pemrograman Java

Contoh berikut menghasilkan array jumlah hari dalam satu bulan :

class array_cara1 {

public static void main(String args[ ]) {

int month_days = new int [12];

month_days [0] = 31;

month_days [1] = 28;

month_days [2] = 31;

month_days [3] = 30;

month_days [4] = 31;

month_days [5] = 30;

month_days [6] = 31;

month_days [7] = 31;

month_days [8] = 30;

Page 18: Materi Algoritma Dan Dasar Pemrograman Java

month_days [9] = 31;

month_days [10] = 30;

month_days [11] = 31;

System.out.println{“Bulan April = “ + month_days[3] + “hari.”};

}

}

Jika program ini dijalankan, akan ditampilkan jumlah hari dibulan April. Array Java dimulai dengan nol, jadi jumlah hari di bulan April adalah month_days[3].

Selain menginisialiasi array seperti diatas, dapat juga menginisialiasi array dengan cara yang lebih sederhana yaitu dengan auto array :

class array_cara2 {

public static void main {String args[ ] ) {

int mont_days = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

System.out.println(“Bulan April = “ + month_days[3] + “ hari.”};

}

Page 19: Materi Algoritma Dan Dasar Pemrograman Java

}

Program ini menghasilkan keluaran yang sama seperti program sebelumnya.

O. Array Multi Dimensi

Pada dasarnya tidak ada array multi-dimensi pada Java, array yang ada adalah array dari array, yang sifatnya mirip dengan array multi-dimensi, dengan beberapa perbedaan kecil. Array multi-dimensi biasanya dialokasikan dalam blok. Jika ada matriks XYZ tiga dimensi, maka kapasitas yang diperlukan adalah X kali Y kali Z ukuran tipe yang disimpan pada tiap sel. Pada Java, dapat dideklarasikan variabel sebagai tiga dimensi, tetapi dengan mengabaikan dimensi kedua dan ketiga, lalu mengalokasikan Y dan Z secara terpisah.

Program berikut menghasilkan matriks tradisional 16 buah double, masing-masing di-set nol. Secara internal matriks ini diimplementasikan sebagai array dari array double.

double matrix[][] = new double [4][4];

Program ini menginisialisasi jumlah memori yang sama, hanya di sini kita melakukan lebih banyak kerja untuk menunjukkan bagaimana dimensi yang berbeda ternyata hanya bersusun (nested array) array.

double matriks[][] = new double [4][];

matriks[0] = new double [4] ;

matriks[1] = new double [4] ;

Page 20: Materi Algoritma Dan Dasar Pemrograman Java

matriks[2] = new double [4] ;

matriks[3] = { 0, 1, 2, 3 } ;

Program berikut menghasilkan matriks double 4×4 yang diinisialisasi dengan nilai di diagonal (x==Y) yang dibuat 1, dan sisanya dibuat nol.

class matriks {

public static void main(String args[]) {

double m[][];

m[0][0] = 1 ;

m[1][1] = 1 ;

m[2][2] = 1 ;

m[3][3] = 1 ;

System.out.println(m[0][0]+” “+m[0][1]+” “+m[0][2]+” “+m[0][3]) ;

System.out.println(m[1][0]+” “+m[1][1]+” “+m[1][2]+” “+m[1][3]) ;

Page 21: Materi Algoritma Dan Dasar Pemrograman Java

System.out.println(m[2][0]+” “+m[2][1]+” “+m[2][2]+” “+m[2][3]) ;

System.out.println(m[3][0]+” “+m[3][1]+” “+m[3][2]+” “+m[3][3]) ;

}

}

Jika program dijalankan, akan keluar tampilan seperti ini.

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

Berikut contoh lain dalam penginisialisasi array :

class AutoMatrix {

public static void main(String args[]){

double m[][] = {

Page 22: Materi Algoritma Dan Dasar Pemrograman Java

{ 0*0, 1*0, 2*0, 3*0 } ,

{ 0*1, 1*1, 2*1, 3*1 } ,

{ 0*2, 1*2, 2*2, 3*2 } ,

{ 0*3, 1*3, 2*3, 3*3 } ,

} ;

System.out.println(m[0][0]+” “+m[0][1]+” “+m[0][2]+” “+m[0][3]) ;

System.out.println(m[1][0]+” “+m[1][1]+” “+m[1][2]+” “+m[1][3]) ;

System.out.println(m[2][0]+” “+m[2][1]+” “+m[2][2]+” “+m[2][3]) ;

System.out.println(m[3][0]+” “+m[3][1]+” “+m[3][2]+” “+m[3][3]) ;

}

}

Program tersebut akan menghasilkan keluaran berikut:

0 0 0 0

Page 23: Materi Algoritma Dan Dasar Pemrograman Java

0 1 2 3

0 2 4 6

0 3 6 9