Senin, 31 Oktober 2016

Dasar-dasar Java Bagian 2: Tipe, Metode, dan Kondisi

Setelah membahas dasar-dasar java pada postingan sebelumnya kali ini kita akan membahas materi lanjutannya. Yaitu mengenai tipe-tipe data yang lain, apa dan bagaimana metode bekerja dan operasi kondisi. Baik langsung loncat ke pembahasannya.

Indeks Tutorial:

  • Mengenal tipe data secara lebih mendalam
  • Metode
  • Operasi Kondisi

Mengenal tipe data secara lebih mendalam

Pembagian

Untuk melakukan operasi pembagian di Java kita menggunakan simbol "/". Bagaimana cara sebuah operasi pembagian bekerja, berbeda jika diterapkan pada tipe data integer dan double.

Untuk lebih memahaminya mari kita simak contoh operasi berikut ini:

double a = 5.0/2.0;   // a = 2.5
int b = 4/2;   // b = 2
int c = 5/2;   // c = 2
double d = 5/2;   // d = 2.0

Penjelasan:
a bernilai 2.5, karena pada deklarasi variabel a, dilakukan assignment dengan nilai desimal secara eksplisit yaitu 5.0 dan 2.0. Jadi hasil operasinya pun menghasilkan nilai desimal/double yaitu 2.5 (satu titik di belakang koma).

b bernilai 2, sesuai dengan nilai assignmentnya 4/2 = 2.

c bernilai 2, muncul pertanyaan mengapa c tidak bernilai 2.5? Jawabannya adalah karena c bertipe data integer atau bilangan bulat, sehingga bilangan di belakang koma akan diabaikan.

d bernilai 2, muncul pertanyaan mengapa c tidak bernilai 2.5? padahal kan tipe datanya sudah double? Jawabannya adalah karena pada assignment variabel tidak ditulis dalam bilangan double (tidak ditulis bilangan di belakang koma), sehingga ketika operasi pembagian dilakukan nilai masih dianggap integer.


Urutan pengerjaan Operasi Aritmatika

Beberapa aturan yang perlu diperhatikan dalam pengerjaan operasi aritmatika yaitu:
Prioritas pengerjaan seperti pada operasi matematika, dari kiri ke kanan.
Sisi sebelah kanan dari tanda = dikerjakan dahulu
Tanda kurung adalah prioritas tertinggi

Contoh:

double x = 3 / 2 + 1;  //x = 2.0
double y = 3 / (2 + 1);  //y = 1.0

Dari contoh di atas dapat diketahui bahwa adanya tanda kurung dapat mempengaruhi hasil pengerjaan.


Kecocokan Tipe Data

Dalam assignment sebuah variabel, java selalu memastikan bahwa nilai yang dimasukkan ke dalam variabel adalah sesuai dengan tipe datanya.

Contoh:

String five = 5; //ERROR!

Deklarasi variabel di atas akan menghasilkan error di bawah ini:

test.java.2: incompatible types
found: int
required: java.lang.String
String five = 5;

karena terjadi ketidaksesuaian antara tipe data yang seharusnya string tapi dimasukkan variabel 5 yang bertipe integer. Begitu pula sebaliknya, ketika kita melakukan deklarasi variabel bertipe integer kemudian melakukan assignment dengan mengisinya dengan data bertipe string maka akan terjadi error.


Konversi dengan casting

Pada pembahasan sebelumnya sudah kita bahas bahwa tipe variabel dan tipe data yang dimasukkan ke variabel harus sesuai. Nah pada bagian ini kita akan belajar melakukan casting, agar bisa menyesuaikan tipe data yang dimasukkan ke variabel. Agar lebih jelas mari kita lihat contoh di bawah ini:


int a = 2;    // a = 2
double a = 2;   // a = 2.0 (Secara implisit akan dikonversi ke tipe double)

int a = 18.7;   // ERROR
int a = (int)18.7;  // a = 18

double a = 2/3;   // a = 0.0
double a = (double)2/3; // a = 0.6666...

Nah bagi yang belum tahu casting itu yg mana, lihat di bagian sebelah kanan tanda = ada sebuah tipe variabel yang ada di dalam kurung, itulah casting. Jadi tipe variabelnya ditegaskan kembali agar tidak menghasilkan ERROR incompatible type.


Metode / Methods

Method adalah sekumpulan statement yang berguna untuk melakukan tugas tertentu. Mari kita cermati contoh sebuah metode di bawah ini:

public static void main(String[] args)
{
 System.out.println("hai"); 
}

void adalah tipe nilai return dari method tersebut. Jadi method ada yang mengembalikan nilai ada yang tidak, nah jika tidak mengembalikan nilai maka memakai void. Menyesuaikan saja, kalau kembaliannya berupa angka ya memakai int atau double kalau teks ya memakai String.

main adalah nama dari method tersebut, method main sendiri adalah method utama yang harus ada disetiap program. karena compiler akan memanggil method main terlebih dahulu dalam eksekusi program.

String[] args adalah parameter yang dilewatkan ke method, parameter terdiri dari tipe data dan nama variabel. Pada contoh ini tipe datanya String[] dan nama variabelnya args.

tanda kurung kurawal "{}" menandai scope dari method tersebut, jadi semua statement yang ada dalam kurung kurawal adalah milik dari method tersebut.

Membuat method

berikut ini adalah contoh pembuatan method

public static void namaMethod(){
  STATEMENTS
}

Untuk memanggil sebuah method kita hanya perlu memanggil nama dari method tersebut, misalnya untuk memanggil method di atas yaitu dengan:

namaMethod();

Contoh yang lain:

class Lines{
 public static void newLine(){
  System.out.println(""); //mencetak 1 baris baru
 }
 
 public static void threeLines(){
  newLine(); newLine(); newLine(); //mencetak 3 baris baru
 }
 
 public static void main(String[] arguments){
  System.out.println("Line 1");
  threeLines();    //memanggil method threeLines()
  System.out.println("Line 2");
 }
}


Penjelasan:
Pada method newLine() berisi statement untuk mencetak 1 baris baru.
Method threeLines() berisi statement yang memanggil method newLine() sebanyak 3 kali. Jadi nanti akan mencetak baris baru sebanyak tiga kali.
Kemudian pada method utama/main dipanggil method threeLines(), yang fungsinya seperti telah dijelaskan mencetak tiga baris baru.


Parameter

Parameter adalah variabel yang dilewatkan ke dalam method untuk diproses, untuk mendeklarasikan parameter kita harus menulis tipe data kemudian diikuti dengan nama variabelnya.

Contoh:

public static void namaMethod(TIPE NAMA){
 STATEMENTS
}

Cara memanggil method yang memiliki parameter adalah:

namaMethod(EXPRESSION);

EXPRESSION disini bisa berupa nilai, variabel, objek, atau yang lain yang intinya harus bertipe sama dengan tipe parameter yang telah kita tentukan ketika deklarasi method.

Contoh penggunaan parameter:

class Square{
 public static void printSquare(int x){
  System.out.println(x*x);
 }
 
 public static void main(String[] args){
  int value = 2;
  printSquare(value);
  printSquare(3);
  printSquare(value*2);
 }
}

Sintaks di atas akan menghasilkan output sbb:
4
9
16

Contoh penggunaan parameter 2:

class Square2{
 public static void printSquare(int x){
  System.out.println(x*x);
 }
 
 public static void main(String[] args){
  printSquare("hello");
  printSquare(5.5);
 }
}

Silakan compile sintaks di atas, dan amati bagaimana hasilnya. Jika menghasilkan error kira-kira apa penyebabnya?

Contoh penggunaan parameter 3:

class Square3{
 public static void printSquare(double x){
  System.out.println(x*x);
 }
 
 public static void main(String[] args){
  printSquare(5);
 }
}

Multiple Parameters

Jumlah parameter yang dilewatkan di suatu argument tidak dibatasi jumlahnya. Kita bisa meletakkan lebih dari satu paremeter.

Contoh:

[...] namaMethod(TIPE namaParameter1, TIPE namaParameter2){
 STATEMENTS
}

Untuk memanggil method tersebut caranya dalah sbb:

namaMethod(argument1, argument2);


Contoh:

class Multiply{
 public static void times(double a, double b){
  System.out.println(a * b);
 }
 
 public static void main(String[] args){
  times(2, 2);
  times(3, 4);
 }
}

Jika dijalankan maka sintaks di atas akan menghasilkan out sbb:
4.0
12.0


Return Value

Sebuah method bisa mengembalikan suatu nilai setelah method tersebut dijalankan. Nah tipe data dari nilai kembalian tersebut harus dijadikan tipe dari methodnya.

Contoh:

public static TYPE NAME(){
 STATEMENTS
 return EXPRESSION 
}

Ingat! Jika tipe nya adalah void berarti tidak mempunyai tipe return value, berarti suatu method tidak mengembalikan return value.

Contoh method yang tidak mengembalikan nilai / tidak mempunyai return value:

class Square4{
 public static void printSquare(double x){
  System.out.println(x*x);
 }
 
 public static void main(String[] args){
  printSquare(5);
 }
}

Jika dijalankan maka sintaks di atas akan menghasilkan out sbb:
25.0

Sedangkan di bawah ini adalah contoh method yang mempunyai return value bertipe double:

class Square5{
 public static double Square(double x){
  return x*x;
 }
 
 public static void main(String[] args){
  System.out.println( square(5) );
  System.out.println( square(2) );
 }
}


Jika dijalankan maka sintaks di atas akan menghasilkan out sbb:
25.0
4.0


Variable Scope / Jangkauan Variabel

Penggunaan variabel hanya dibolehkan dilingkup dimana ia dideklarasikan, yaitu didalam blok ({}). Kemudian parameter dalam sebuah method, berlaku layaknya mendeklarasikan variabel baru dalam sebuah method.

Contoh:

class SquareChange{
 public static void printSquare(int x){
  System.out.println("printSquare x = + x");
  x = x * x;
  System.out.println("printSquare x = + x");
 }
 
 public static void main(String[] args){
  int x = 5;
  System.out.println("main x = " + x);
  printSquare(5);
  System.out.println("main x = " + x);
 }
}

Jika sintaks di atas dijalankan maka outputnya adalah sbb:
main x = 5
printSquare x = 5
printSquare x = 25
main x = 5

Dapat dilihat bahwa method printSquare() memproses angka 5 (variabel x) sehingga menghasilkan angka 5 dan 25 ketika method tsb dipanggil. Namun nilai dari variabel x pada method main tidak berubah nilainya karena nilai x yang diolah oleh method printSquare adalah sebuah parameter (variabel yang hanya berlaku di dalam method printSquare() ).

class Scope{
 public static void main(){
  int x = 5;
  if(x == 5){
   int x = 6;    //error duplikasi deklarasi variabel x
   int y = 72;
   System.out.println("x = " + x + " y = " + y);
  }
  System.out.println("x = " + x + " y = " + y); //error variabel y tidak dikenali
 }
}

Jika sintaks di atas dijalankan maka kan menghasilkan error, bahwa variabel y tidak dikenali karena varibel y hanya hidup di dalam statement if(). Kemudian deklarasi variabel x di dalam statement if juga error karena variabel x sudah dideklarasikan sebelumnya.


Metode = Membangun Blok

Beberapa konsep tentang metode:

Program yang besar dibangun dari kumpulan method kecil.
Method dapat dikembangkan, diuji, dan digunakan secara individual.
Pengguna tidak perlu tahu bagaimana sebuah method bekerja, yang terpenting method dapat berjalan dengan baik.
Dalam Ilmu Komputer, ini disebut abstraction/abstraksi.


Beberapa fungsi Matematika yang ada di Java:

Math.sin(x)   //Untuk mencari nilai sinus.
Math.cos(x)   //Untuk mencari nilai cosinus.
Math.pow(x, y)  //Untuk mencari nilai bilangan berpangkat.
Math.PI    //Untuk menulis nilai phi (3.14).
Math.log(x)   //Untuk mencari nilai log.


Operasi Kondisi

Operasi kondisi adalah sebuah operasi yang dijalankan apabila syarat tertentu terpenuhi.

Statement if

Statement di dalam statement if dijalankan jika konsdisinya bernilai benar/true.

Bentuknya adalah sbb:

if(KONDISI){
 STATEMENT
}

Contoh:

class kondisi{
 public static void test(int x){
  if(x > 5){ //apakah x lebih besar dari 5
   System.out.println(x + "is > 5"); //jalankan statement jika kondisi bernilai true
  }
 }
 
 public static void main(){
  test(6);
  test(5);
  test(4);
 }
}

Jalankan sintaks di atas dan analisa apa yang terjadi.


Operator Perbandingan

Operator Perbandingan adalah operator yang digunakan untuk membandingkan 2 nilai.

x > y : x lebih besar dari y
x < y : x lebih kecil dari y
x <= y : x lebih kecil atau sama dengan y
x >= y : x lebih besar atau sama dengan y

x == y : x sama dengan y

Perlu diperhatikan jika == adalah operator perbandingan sedangkan = adalah operator assignment (untuk memberikan nilai).


Boolean Operator / Operator Logika

Adalah operator untuk mengetahui nilai kebenaran.

&& : logika AND (bernilai benar jika kedua pernyataan bernilai benar)
|| : logika OR (bernilai benar jika salah satu pernyataan bernilai benar)

Contoh:

if(x > 6){
 if(x < 9){
  ...
 }
}

Sintaks di atas sama dengan sintaks berikut ini:

if(x > 6 && x < 9){
 ...
}

Dengan menggunakan sintaks kedua ini kita bisa lebih menghemat baris kode, dari pada memeriksa dua kali mending digabungkan saja dengan operator AND.


else

Kondisi else adalah kondisi yang dipasangkan dengan kondisi if, jika kondisi if tidak terpenuhi maka statement milik kondisi else yang dijalankan.

Bentuknya adalah sbb:

if(KONDISI){
 STATEMENT
} else {
 STATEMENT
}

Contoh:

class kondisi{
 public static void test(int x){
  if(x > 5){
   System.out.println(x + " is > 5");
  } else {
   System.out.println(x + " is not > 5");
  }
 }

 public static void main(String[] args){
  test(6);
  test(5);
  test(4);
 }
}



else if

Jika kita ingin menggunakan beberapa kondisi maka else if lah jawabnnya.

Bentuk dari operasi kondisi else if adalah sbb:

if(KONDISI){
 STATEMENT
} else if(KONDISI) {
 STATEMENT
} else if(KONDISI) {
 STATEMENT
} else {
 STATEMENT
}

Contoh:

class kondisi{
 public static void test(int x){
  if(x > 5){
   System.out.println(x + " is > 5");
  } else if(x == 5) {
   System.out.println(x + " is equals 5");
  } else {
   System.out.println(x + " is not > 5");
  }
 }

 public static void main(String[] args){
  test(6);
  test(5);
  test(4);
 }
}


Method untuk Konversi Tipe Data
int ke String:
String five = 5;   //ERROR!
String five = integer.toString(5);
String five = "" + 5;  //five = "5"

String ke int:
int foo = "18";    //ERROR!
int foo = Integer.parseInt("18"); //foo = 18

Catatan:
Jangan pernah menggunakan operator == ke variabel bertipe double!


Studi kasus: Foo Corporation

Buatlah fungsi untuk mencetak gaji berdasarkan gaji pokok dan jam kerja.
Lembur: Lebih dari 40 jam, gajinya menjadi 1.5 dari gaji pokok.
Gaji minimum: Rp.100.000/jam
Jam kerja maksimal: 60 jam per minggu

Jawaban: (Jawaban bisa bermacam-macam tergantung bagaimana cara kita masing-masing)

class hitungGaji{
 public static void gaji(int jamKerja){
  int gajiPokok = 100000;
  
  if(jamKerja > 60){
   System.out.println("Anda melebihi jam Kerja!");
  } else if (jamKerja > 40){
   System.out.println("Jam kerja Anda : " + jamKerja + ", Gaji Anda adalah Rp." + ( (gajiPokok * jamKerja)*1.5) );
  } else {
   System.out.println("Jam kerja Anda : " + jamKerja + ", Gaji Anda adalah Rp." + (gajiPokok * jamKerja) );
  }
 }

 public static void main(String[] args){
  gaji(40);
  gaji(45);
  gaji(66);
 } 
}

Jika sintaks di atas dijalankan akan menghasilkan output sbb:

Jam kerja Anda : 40, Gaji Anda adalah Rp.4000000
Jam kerja Anda : 45, Gaji Anda adalah Rp.6750000.0
Anda melebihi jam Kerja!


Sekian tutorial kali ini semoga bermanfaat, jika ada pertanyaan maupun saran silakan tulis di kolom komentar :)

Referensi:
Sumber

Sabtu, 29 Oktober 2016

Dasar-dasar Java : Tipe, Variabel, dan Operator

Setelah sekian lama tidak aktif nge-blog kali ini saya ingin berbagi tutorial mengenai pengenalan bahasa pemrograman Java. Yah sekalian belajar kembali untuk mempertajam ingatan hehe, karena yang namanya ilmu itu akan luntur kalau tidak pernah dipakai. Baik, tutorial ini sebenarnya saya ambil dari tutorial milik Massachusetts Institute of Technology dan digabung dengan posting-an salah seorang di web dreamincode.net. Ya walaupun cuma modal copas dan translate tapi kan enak sudah jadi bahasa Indonesia yang lebih mudah kita cerna, karena setau saya sebagian dari kita alergi bahasa Inggris :p wkwk. Oke langsung aja kita menuju ke tutorialnya cekibrot!!!

Pembahasan pada Tutorial ini terdiri dari beberapa poin antara lain:
  • Java dan Komputer
  • Program pertama dan strukturnya
  • Tipe variabel yang biasa dijumpai
  • Penugasan/assigment pada variabel
  • Operator dasar
  • Rangkaian+ String 
  • Program pertama kita

Java dan Komputer



Gambar di atas menampilkan bagaimana sebuah informasi diolah. Cara CPU membaca informasi berbeda dengan manusia, Ketika kita mau menambahkan angka, kita akan menambahkannya dengan cara seperti ini x + y = z, nah kalau CPU akan memproses penambahan tersebut dengan cara seperti ini:

z = x + y //Baca lokasi x
   //Baca lokasi y
   //Tambahkan
   //Tulis ke lokasi z

Hal ini perlu diperhatikan dan diingat karena ini akan menjadi dasar bagaimana kita akan melakukan penugasan di program kita nantinya.
Bahasa pemrograman lebih mudah dimengerti oleh manusia daripada bahasa yang digunakan oleh CPU. Oleh karena itu dibuatlah bahasa pemrograman, tapi pada akhirnya bahasa pemrograman apapun harus ditranslasikan ke bahasa yang dimengerti oleh CPU. Lalu muncu sebuah pertanyaan, kenapa harus memilih Java?

Java itu:
  1. Bahasa pemrograman yang paling populer
  2. Dijalankan di "Virtual Machine" (JVM)
  3. Lebih kompleks dari sebagian bahasa pemrograman (misalnya Python)
  4. Lebih sederhana daripada bahasa pemrograman lain (misalnya C++)
 

 Gambar di atas menunjukkan bagaimana Java di-compile. Pertama-tama tulis kode Java
 di sebuah teks editor, kemudian simpan file-nya dengan ekstensi .java. Source code tersebut kemudian di-compile oleh sebuah Java Compiler, dan kemudian disimpan sebagai file byte-code atau lebih dikenal sebagai file class. File class kemudian dijalankan melalui JVM (Java Virtual Machine) yang ada di Sistem Operasi kita.

Inilah alasan mengapa Java sangat populer. Kita tidak perlu menulis sintaks kode yang berbeda untuk Sistem Operasi yang berbeda-beda. Satu sintaks kode akan dapat dijalankan pada berbagai macam Sistem Operasi melalui JVM.

Baik sekarang marilah kita menuju program pertama kita dan membahas bagaimana strukturnya!


Program Pertama dan Strukturnya

Hello World! Ini adalah program standard yang diketik oleh semua programmer di awal mempelajari suatu bahasa pemrograman. Hampir setiap tutorial pasti memulai dengan menulis program ini. Baiklah silakan salin dan jalankan sintaks di bawah ini:

class Hello{
 public static void main(String[] args){
  //Program akan mengeksekusi bagian ini
  System.out.println("Hello World!");
 }
}

Output yang tampil di console akan seperti ini:
Hello World!

Mari kita cermati strukturnya dari sintaks di atas

class NAMAKELAS{
 public static void main(String[] args){
  STATEMENT
 }
} 


Cukup sederhana kan, jadi NAMAKELAS di program kita adalah Hello, dan pada bagian STATEMENT adalah bagian yang akan diproses oleh program dalam hal ini kita melakukan pencetakan pesan Hello World! ke sistem.

Tipe Variabel yang Biasa Dijumpai

Sebuah variabel adalah bagaimana kita menampung data yang akan disimpan di memori yang kemudian diproses oleh CPU.

Beberapa tipe variabel antara lain:

boolean: nilai kebenaran. (True dan False)
int: Integer. (0, 1, -47)
double: Bilangan Riil. (3.14, 1.0, -2.0)
String: Teks. ("hello", "example")

Itulah beberapa tipe variabel yang sering dipakai.  Jika ingin mengetahui lebih banyak mengenai tipe variabel yang lain mudahnya googling saja dan kamu akan menemukan semua tipe variabel yang tersedia di Java.


Penugasan pada Variabel

Setelah mempelajari beberapa tipe variabel, sekarang saatnya belajar bagaimana mengisikan nilai ke sebuah variabel. Ketika kita mengisikan nilai ke sebuah variabel, variabel tsb akan dipanggil lalu mengambil nilai tersebut dan kemudian diletakkan ke memori yang dialokasikan untuk variabel tsb.

Sebuah variabel adalah lokasi penempatan nilai dari suatu tipe data tertentu yang diberi nama.

Bentuknya adalah sbb:

TIPE NAMA;

Contoh:

String foo; //String adalah tipe variabel sedangkan foo adalah namanya.


Gunakan tanda = untuk memberikan nilai pada sebuah variabel.

Contoh:

String foo;
foo = "Phi 3.14"; //Maksudnya kita mengatur foo agar bertipe String, kemudian memberikan nilai "Phi 3.14" pada variabel foo.


Kita juga bisa langsung mengisikan nilai ke variabel bersamaan dengan deklarasi variabelnya.

Misalnya:

double badPI = 3.14;
boolean isJanuary = true;

Berikut ini adalah contoh programnya:

class Hello{
 public static void main(String[] args){
  String foo = "Phi 3.14";
   System.out.println(foo);
  foo = "Contoh yang lain";
   System.out.println(foo);
 }
}


Dan keluaran dari program di atas adalah:

Phi 3.14
Contoh yang lain


Macam-macam Operator

Operator adalah simbol yang berguna untuk menerapkan operasi aritmatika pada variabel. Berikut ini adalah macam-macam operator yang dapat digunakan:

Penugasan: =
Penambahan: +
Pengurangan: -
Perkalian: *
Pembagian: /

Urutan pengerjaan dari operator adalah sederhana layaknya pengerjaan soal matematika.

Mengikuti aturan standard matematika:
  1. Tanda kurung
  2. Perkalian dan Pembagian
  3. Penambahasan dan Pengurangan
Pastikan untuk menggunakan aturan di atas. jika tidak amaka kamu akan mendapati logic error di perhitunganmu. Logic error berarti kamu tidak akan menemukan errornya ketika program dijalankan, tetapi kamu tidak akan mendapati output seperti yang kamu inginkan. Error jenis adalah error yang sulit untuk diidentifikasi.

Berikut ini adalah contoh dari penggunaan operator di java:

class operasiMatematika{
 public static void main(String[] args){
  double skor = 1.0 + 2.0 * 3.0;
   System.out.println(skor);
  skor = score / 2.0;
   System.out.println(skor);
 }
}

Outputnya akan seperti ini:

7.0
3.5


String Concatenation(+) atau Penggabungan String

Penggabungan String adalah penambahan string pada sebuah string. Ini sangat sederhana seperti contoh di bawah ini:

String text = "Hello " + "World!" //Hello World!
text = text + 1000 + " Programmers"; //Hello World! 1000 Programmers

Sangat simpel kan? Sekarang kamu pasti sudah paham bagaimana cara memberikan nilai pada sebuah variabel.


Studi kasus

Penghitung Gravitasi: Hitung posisi dari sebuah objek yang jatuh x(t) = 0.5 * a(t2) + Vi(t) + xi

a Percepatan(m/s2) nilainya = -9.81
t Waktu (s) nilainya = 10
vi kecepatan awal (m/s) nilainya = 0
xi posisi awal nilainya = 0

Modifikasi kode berikut ini agar bisa menghitung posisi dari sebuah objek yang sedang jatuh selama 10 detik, dan menghasilkan output berupa posisi yang berukuran meter.

class PenghitungGravitasi {
 public static void main(String[] arguments){
  double gravitasi = -9.81; //Gravitasi bumi dalam m/s^2
  double kecepatanAwal = 0.0;
  double waktu = 10.0;
  double posisiAwal = 0.0;
  double posisiAkhir = 0.0;
  System.out.println("Posisi objek setelah " + waktu + " detik adalah " + posisiAkhir + " m.");
 }
}


Petunjuk: hasil akhir yang benar adalah -490.5 m. Java mungkin tidak akan menampilkan angka desimal tergantung dari bagaimana kita meng-compile program tersebut, tapi untuk sekarang itu tidak akan dibahas lebih dalam.


Dan jawaban dari studi kasus di atas adalah

public class PenghitungGravitasi {
 public static void main(String args[]){
  double gravitasi = -9.81; //Gravitasi bumi dalam m/s^2
  double kecepatanAwal = 0.0;
  double waktu = 10.0;
  double posisiAwal = 0.0;
  double posisiAkhir = 0.5 * (-9.81)*(waktu*waktu) + 0 + 0;
  System.out.println("Posisi objek setelah " + waktu + " detik adalah " + posisiAkhir + " m.");
 }
}


Referensi:
Sumber 1
Sumber 2