Saturday, November 5, 2011

Class dan method

Dari   pengelompokkan   kode­kode   dari   bagian   yang   sebelumnya,   maka   keseluruhan definisi kelas kelihatan seperti ini:

class NewLine {
public static void newLine () {
System.out.println ("");
}
public static void threeLine () {
newLine (); newLine (); newLine ();
}
public static void main (String[] args) {
System.out.println ("First line.");
threeLine ();
System.out.println ("Second line.");
}
}

Baris yang pertama menunjukkan bahwa ini adalah definisi untuk suatu kelas yang baru yang dinamakan Newline. Suatu Class adalah suatu kumpulan dari suatu method yang berelasi.   Dalam   hal   ini,   kelas   yang   bernama   Newline berisi   tiga   metoda,   yang dinamakan newLine, threeLine, dan main.

Class lain yang telah kita lihat adalah Math Kelas. Class itu berisi method yang bernama sqrt, sin, dan banyak yang lain. Ketika kita memanggil suatu fungsi matematika, kita harus   menetapkan   nama   Class   (Math)   dan   nama fungsinya.   Itulah   mengapa   sintak berbeda untuk masing­masing method built­in dan metoda yang kita tulis:

Math.pow (2.0, 10.0);
newLine ();

Statemen yang pertama memanggil method pow didalam Class Math (Yang menaikkan kekuatan argumentasi yang pertama ke argumentasi yang kedua ). Statemen yang kedua meminta method newLine metoda, Java mengasumsikan (dengan tepat) didalam Class Newlines, yang mana sedang kita tulis.

Jika anda mencoba untuk memanggil suatu method dari Class yang salah, compiler akan menghasilkan suatu kesalahan. Sebagai contoh, jika anda ketik:

pow (2.0, 10.0);

Compiler kira­kira akan mengatakan, Tidak bisa menemukan suatu method bernama pow didalam Class Newline." Jika anda sudah melihat pesan ini, anda mungkin heran mengapa compiler mencari pow didalam Class yang didefinisikan. Sekarang anda sudah tahu.

Menambahkan Metode Baru

Sejauh   ini   kita   hanya   menggunakan   metoda   yang   dibangun   dalam java,   tetapi memungkinkan untuk menambahkan metoda baru. Sebenarnya kita melihat satu metoda definisi:   main.   Method   dinamakan   main   khusus menandai   di   mana   pelaksanaan program dimulai, tetapi sintak untuk yang main adalah sama dengan definisi metoda lain:

public static void NAME ( LIST OF PARAMETERS ) {
STATEMENTS
}

Anda dapat membuat nama apapun yang anda butuhkan untuk metoda anda, kecuali nama main atau keyword java lainnya. Daftar yang menginformasikan tipe parameter,bila ada, anda harus menyediakan untuk penggunaan fungsi yang baru.

Parameter tunggal untuk main adalah String[] args, yang menunjukkan bahwa siapapun menggunakan main harus menyediakan suatu array String. Sepasang metoda   yang   pertama   yang   akan   kita   tulis   tidak   punya parameters,sehingga sintaknya kelihatan seperti ini:

public static void newLine () {
System.out.println ("");
}

Method ini dinamai newLine, dan tanda kurung yang kosong menunjukkan bahwa ia tidak mengambil parameter apapun. Method itu hanya berisi statemen tunggal, yang mencetak suatu  string kosong  yang ditandai  oleh"". Pencetakan  suatu string  dengan tidak ada huruf didalamnya tidak akan nampak bermanfaat, kecuali ingat bahwa println melompati baris yang berikutnya setelah itu mencetak, maka statemen ini mempunyai efek melompati baris yang berikutnya.

Didalam main kita dapat membuat method yang baru ini menggunakan sintak yang serupa  dengan memakai perintah Java yang sudah built­in :

public static void main (String[] args) {
System.out.println ("First line.");
newLine ();
System.out.println ("Second line.");
}

Keluaran dari program ini adalah

First line.
Second line.

Perhatikan spasi antara kedua bentuk. Akibatnya bagaimana jika kita ingin menambah spasi antara dua baris? Kita bisa memanggil method yang sama berulang­kali:

public static void main (String[] args) {
System.out.println ("First line.");
newLine ();
newLine ();
newLine ();
System.out.println ("Second line.");
}

Atau kita bisa menulis suatu metoda baru yang dinamakan threeLine yang mencetak tiga bentuk baru:

public static void threeLine () {
newLine (); newLine (); newLine ();
}
public static void main (String[] args) {
System.out.println ("First line.");
threeLine ();
System.out.println ("Second line.");
}
Anda perlu memperhatikan beberapa hal sekitar program ini:

Anda dapat memanggil prosedur yang sama berulang­kali. Sebenarnya, itu umumnya berguna bagi mekannya.

Anda   bisa   mempunyai   satu   method   memanggil   metoda   lain.   Dalam   hal   ini,   main meminta   threeLine   dan   threeLine   meminta   newLine.   Lagi­lagi   ini   umumnya bermanfaat.

Didalam threeLine saya menulis tiga statemen semua pada baris yang sama, yang mana secara   yg   sintak   benar   (ingat   bahwa   spasi   dan   baris   baru pada umumnya   tidak mengubah  arti dari  suatu  program). Di sisi lain, itu  suatu gagasan  yang baik  untuk menaruh  statemen   masing­masing   sejajar   dengan barisnya,   untuk   membuat   program anda   mudah   dibaca.   Saya   terkadang menggunakan   aturan   dalam   buku   ini   untuk menghemat ruang.

Sejauh ini, mungkin belum begitu jelas kenapa begitu berharga ini untuk menciptakan semua  metoda baru ini . sebenarnya, ada banyak pertimbangan, tetapi contoh ini hanya mempertunjukkan dua hal:
  1. Menciptakan suatu method baru memberi anda suatu kesempatan untuk memberi suatu   nama   kepada   satu   kelompok   statemen.   Method dapat   menyederhanakan   suatu program dengan menyembunyikan suatu perhitungan kompleks di belakang perintah tunggal, dan dengan penggunaan kata Bahasa Inggris sebagai pengganti kode. Lebih jelasnya , newLine atau System.Out.Println("")?
  2. Menciptakan suatu method baru yang dapat membuat suatu program yang lebih kecil dengan menghilangkan kode berulang. Sebagai contoh, bagaimana cara anda mencetak sembilan baris baru berurutan? Anda bisa memanggil method threeLine tiga kali.


Composition

Sama   halnya   dengan   fungsi   matematika,   Method   Java   dapat  composed, maksudnya anda menggunakan satu ekspresi sebagai bagian dari yang lain. Sebagai contoh, anda dapat menggunakan ekspresi manapun sebagai suatu argumentasi ke suatu metoda:

double x = Math.cos (angle + Math.PI/2);

Statemen   ini   mengambil  nilai   Math.Pi,   membaginya   dengan   dua   dan  menambahkan hasilnya   kepada   nilai   variabel   angle.   Penjumlahan  kemudian   melewatkan   suatu argumentasi untuk method cos.(ingat PI (22:7) itu adalah nama suatu variabel, bukan method , maka tidak ada argumentasi, bukan pula argumentasi yang kosong()).

Anda dapat juga mengambil satu method dan melewatkannya pada argumentasi ke lain:

double x = Math.exp (Math.log (10.0));

Didalam   Java,   log   berfungsi   selalu   menggunakan   dasar   e,   maka statemen   ini mengartikan dasar log e 10 dan kemudian menaikkan e. Hasilnya di assign ke x; saya berharap anda mengetahui apa artinya.

Friday, October 21, 2011

Method Matematika

Di dalam matematika, anda mungkin sudah melihat fungsi seperti sin dan log, dan anda sudah mempelajari ekspresi seperti sin(∏/2) dan log(1/x). Pertama, anda mengevaluasi ekspresi didalam tanda kurung, yang mana disebut argumentasi fungsi. Sebagai contoh, 

∏/2 kira­kira 1.571, dan 1/x adalah 0.1 ( diasumsikan bahwa x 10).

Kemudian anda dapat mengevaluasi fungsi itu dengan menggunakan tabel  atau dengan mekan berbagai perhitungan. Sin 1.571 adalah 1, dan log 0.1 adalah ­1 ( diasumsikan bahwa log mengindikasikan bilangan pokok 10).

Proses ini dapat diterapkan berulang­kali untuk mengevaluasi ekspresi yang lebih rumit seperti   log(1/   sin(∏/2)).   pertama   kita   mengevaluasi   argumentasi   function,   lalu mengevaluasi  fungsi yang paling dalam, dan seterusnya.

Java   menyediakan   satu   set   built­in   fungsi   yang   mengandung   kebanyakan   operasi matematikan   yang   anda   tahu.   Fungsi   ini   disebut  methods.   Kebanyakan   method matematika beroperasi pada double.

Method   matemmatika   dilibatkan   menggunakan   suatu   sintaksis   yang   serupa   dengan perintah print yang kita lihat:

double root = Math.sqrt (17.0);
double angle = 1.5;
double height = Math.sin (angle);
Contoh yang pertama akar 17. 

Contoh yang kedua sinus 1.5, yang mana adalah nilai sudut variabel. Java berasumsi bahwa   nilai­nilai yang anda gunakan dengan sin dan fungsi trigonometric lain  ( cos, Tan) adalah didalam radian. Untuk mengkonversi dari derajat   ke   radian,   anda   dapat   membagi   dengan   360   dan   mengalikan   dengan Untungnya, Java menyediakan ∏ sebagai nilai yang built­in:

PI (22:7) adalah dalam huruf besar. Java tidak mengenali Pi (22:7), Pi (22:7), atau pie. Metoda bermanfaat lain didalam Claas adalah putaran, yang mengelilingi suatu nilai floating­point kepada bilangan bulat yang paling dekat dan kembalikan ke suatu int.

double degrees = 90;
double angle = degrees * 2 * Math.PI / 360.0;
int x = Math.round (Math.PI * 20.0);

Dalam hal ini perkalian dikan terlebih dulu, sebelum method dilibatkan. hasilnya adalah 63 ( yang dibulatkan dari 62.8319).

Mengkonversi double ke int

Seperti saya sebutkan, Java mengkonversi  int  ke  double  secara otomatis jika perlu, sebab   tidak   ada   informasi   hilang   dari   konversi   itu.   Pada   sisi   lain,   mengubah   suatu double  ke suatu  int  memerlukan   penyelesaian.  Java tidak melaksanakan  operasi ini secara otomatis, sebagai programmer, anda  menyadari hilangnya sebagian jumlah dari angka itu.

Cara yang paling sederhana untuk mengkonversi suatu floating­point ke suatu bilangan 

bulat adalah menggunakan typecast. Dinamakan typecasting karena mengijinkan anda untuk mengambil suatu tipe nilai dan mengubahnya kedalam tipe lain (dalam pengertian mengubah tidak melempar). Sayangnya, sintaks  untuk typecasting jelek:  anda menaruh nama  tipe didalam  tanda kurung dan menggunakannya sebagai suatu operator. Sebagai contoh,

int x = (int) Math.PI;

Operator int mempunyai efek mengikuti bilangan bulat, maka x menghasilkan nilai 3. Typecasting  harus   didahulukan   sebelum   operasi   perhitungan,   maka   didalam   contoh yang berikut, nilai PI (22:7) menghasilkan pertama dikonversi ke suatu bilangan bulat , dan hasilnya adalah 60, bukan 62.

int x = (int) Math.PI * 20.0;

Mengubah ke suatu bilangan bulat selalu dibulatkan kebawah, sekalipun pecahannya 0.99999999. Dua properties ini  (precedence dan pembulatan) dapat membuat typecast kurang bagus.

Floating­ point

Di  dalam bab  yang terakhir  kita mempunyai beberapa permasalahan  dengan  angka­ angka yang bukanlah bilangan bulat. Kita disibukkan dengan masalah untuk mengukur  persentase   sebagai   pecahan,   tetapi   suatu   solusi   yang   lebih   umum   adalah   untuk  menggunakan   angka­angka   floating­point,   yang   dapat   mempresentasikan   pecahan seperti halnya bilangan bulat. Didalam Java, tipe floating­point disebut double. Anda dapat menciptakan variabel floating dan memberikan nilai dengan menggunakan Sintak yang sama yang]kita gunakan untuk tipe lain . Sebagai contoh:

double pi :

pi = 3.14159;

Ini juga benar untuk mempresentasikankan suatu variabel dan menugaskan suatu nilai kepadanya pada waktu yang sama:

int x = 1;
String empty = "";
double pi = 3.14159;

Sebenarnya, sintak ini adalah secara umum. Suatu kombanisi assigment dan deklarasi terkadang disebut suatu initialisasi. 


Sebenarnya, sintak ini adalah secara umum. Suatu kombanisi assigment dan deklarasi terkadang disebut suatu initialisasi. 

Walaupun   angka­angka   floating­point   bermanfaat,   namunn   sering   suatu   source membingungkan karena sepertinya ada tumpang­tindih antara bilangan bulat dan angka­ angka floating­point. Sebagai contoh, jika anda mempunyai nilai 1, yang merupakan suatu bilangan bulat, bilangan floating­point, atau kedua­duanya? 

Pada   dasarnya,   Java   menilai  integer  itu   1   dan  floating­point  1.0,   sungguhpun sepertinya adalah jumlahnya sama. Tetapi tipenya berbeda, dan pada dasarnya, anda tidaklah diijinkan untuk meng assign  antara tipe. Sebagai contoh, yang berikut adalah tidak benar:

int x = 1.1;

Sebab variabel pada sisi kiri adalah suatu int dan nilai pada sisi kanan adalah suatu double. maka mudah untuk melupakan aturan ini, kususnya karena ada tempat dimana java akan secara otomatis mengkonversi dari satu tipe ke lain. Sebagai contoh:

double y = 1;

seharusnya secara teknis tidak benar, tetapi Java mengijinkan dengan mengubah int itu kepada suatu double secara otomatis. Kemudahan ini sangat menyenangkan, tetapi itu dapat menyebabkan permasalahan; sebagai contoh:

double y = 1 / 3;

Anda   mungkin   mengharapkan   variabel   y   diberi   nilai     0.333333,   benar,   tetapi sesungguhnya  akan  menghasilkan  nilai  0.0. Alasan  adalah  bahwa  ekspresi  pada  sisi kanan   nampak   seperti   perbandingan   dua   bilangan   bulat,   maka   Java   mengerjakan pembagian bilangan bulat, yang menghasilkan bilangan bulat  0. yang dikonversi Untuk floating­point hasilnya 0.0.

Satu   cara   untuk   memecahkan   masalah   ini   (   saat   anda   menggambarkan   apa   artinya) adalah untuk ekspresi floating­point dari kanan. 

double y = 1.0 / 3.0;

disini y diset menjadi 0.333333, yang diharapkan. Semua operasi yang telah kita lihat sejauh ini penambahan, pengurangan, perkalian, dan pembagian juga ada pada nilai floating­point, walaupun anda mungkin tertarik untuk mengetahui   bahwa   mekanisme   dasarnya   berbeda   sepenuhnya.   Pada   kenyataanya, prosesor mempunyai perangkat keras khusus hanya untuk mekan operasi floating­point.

Monday, October 17, 2011

Assigments

Sejak kita sudah menciptakan beberapa variabel, kita ingin menyimpan suatu nilai pada variabel tersebut. Kita akan mekannya dengan Assignmen Statement.

fred = "Hello."; // give fred the value "Hello."
hour = 11; // assign the value 11 to hour
minute = 59; // set minute to 59
Contoh ini menunjukkan tiga assignment, dan komentar menunjukkan tiga perbedaan cara orang menyatakan tentang assignment statement. Kosa katanya jadi meragukan di sini, tetapi gagasan secara langsung:


  • ketika anda mendeklarasikan suatu variabel, anda menciptakan suatu nama untuk lokasi penyimpanan.
  • Ketika anda mekan assignment terhadap suatu variabel, anda memberinya suatu nilai.

Suatu cara umum untuk mempresentasikan suatu variabel secara tertulis adalah dengan menggambarkan suatu kotak dengan nama variabel diluarnya dan nilai variabel pada didalamnya. Gambar ini  menunjukkan efek dari ke tiga assignment statemen :



Untuk masing­ - masing variabel, nama variabel nampak di luar kotak itu dan nilai  nampak di dalam.

Pada umumnya, suatu variabel harus mempunyai tipe yang sama seperti meng assign nilai. Anda tidak bisa menyimpan suatu string didalam minute atau suatu bilangan bulat didalam fred.

Di sisi lain, aturan itu bisa meragukan, karena ada banyak cara yang dapat anda kan

dalam mengkonversi nilai­nilai dari satu tipe ke tipe lain, dan Java kadang­ - kadang mengkonversi berbagai hal secara otomatis. Maka sekarang anda perlu ingat aturan yang umum, dan kita akan memperbicangkannya secara khusus nanti. 

Hal lain yang meragukan adalah bahwa beberapa string kelihatan seperti bilangan bulat, tetapi  sesungguhnya bukan. Sebagai contoh, fred mengandung string " 123", yang mana terdiri dari karakter 1, 2 dan 3, tapi itu tidak sama halnya seperti nomor 123. 

fred = "123"; // legal
fred = 123; // not legal