Jumat, 22 Oktober 2010

CONTOH SEDERHANA MENGGUNAKAN DO WHILE

Konstruksi do .. while pada java serupa dengan repeat until pada Pascal
do {
} while(logical expression)
logical expression: ekspresi yang hasilnya true atau false.
misalnya (i<10) atau lebih kompleks (berat>70 & tinggi<160)
contoh 1: tebak angka
Sekaligus memperkenalkan cara input dari keyboard dengan class Scanner
Program akan berhenti meminta input jika angka yang diketik 0 (nol) atau lebih besar dari 1000. Atau jika tebakan jitu

01.import java.util.Scanner;
02.public class TebakAngka {
03. 
04.  static Scanner sc = new Scanner(System.in);
05. 
06.  public static void main(String[] args) {
07.    int angkaSembunyi = 1000;
08.    int tebakan;
09. 
10.    do {
11.      System.out.print("tebakan anda: ");
12.      tebakan = sc.nextInt();
13.      if (tebakan==angkaSembunyi)
14.      {  System.out.println("tebakan anda jitu !!! ");
15.          break; // keluar dari loop
16.      }
17.    } while ((tebakan <= 0) || (tebakan > angkaSembunyi));
18.    System.out.println("trimzzz sudah menebak ");
19.  }
20.}
contoh di atas masih belum aman karena jika input dari keyboard bukan angka, program akan error! Wanted!!! contoh yang ada pencegah run time error/exception
contoh satu lagi … dengan tambahan mengunakan sub-routine
Program berikut akan berulang-ulang meminta nilai angka dan dikonversi menjadi nilai huruf. Program akan berhenti jika input 0 atau > 100 (atau minus).
01.import java.util.Scanner;
02.public class KonversiNilaiAngka {
03. 
04.  static char nilaiHuruf(int nilai)
05.  {
06.    char nhuruf;
07.    if (nilai >= 90)
08.        nhuruf = 'A';
09.    else if (nilai >= 80)
10.        nhuruf = 'B';
11.    else if (nilai >= 70)
12.        nhuruf = 'C';
13.    else if (nilai >= 60)
14.        nhuruf = 'D';
15.    else
16.        nhuruf = 'E';
17.    return nhuruf;
18.  }
19. 
20.  public static void main(String[] args) {
21.    int nilaiAngka;
22.    char nh;
23. 
24.    Scanner sc = new Scanner(System.in);
25. 
26.    do {
27.      System.out.print("nilai : ");
28.      nilaiAngka = sc.nextInt();
29.      nh=nilaiHuruf(nilaiAngka); // nh menerima "return"
30.      System.out.println("Nilai : "+nilaiAngka+"   "+nh);
31.    } while ((nilaiAngka > 0) && (nilaiAngka <= 100));
32.    System.out.println("  while loop selesai");
33.  }
34.}
contoh skrensyut proses
nilai : 45
Nilai : 45 E
nilai : 78
Nilai : 78 C
nilai : 95
Nilai : 95 A
catatan
while ((nilaiAngka > 0) && (nilaiAngka <= 100));   gaya C, C++
dan
while ((nilaiAngka > 0) & (nilaiAngka <= 100));
sama saja
supaya contoh hitung upah makin terang, kita coba lagi dengan do .. while
01.import javax.swing.*;
02. 
03.class HitungUpah
04.{
05.static String InputString(String s1)
06.{ return JOptionPane.showInputDialog(s1); }
07.static int InputInteger(String s1)
08.{
09.   int i;
10.   String x=JOptionPane.showInputDialog(s1);
11.   try {
12.         i=Integer.parseInt(x);
13.   }
14.   catch(Exception e){ i=100; }
15.   return i;
16.}
17. 
18.public static void main(String[] args)
19.{
20.  String nama;
21.  int jam_kerja,jam_lembur,upah_per_jam,lembur_per_jam,gol,
22.  upah,upah_lembur;
23.  do
24.  {
25.    nama=InputString("Karyawan");
26.    gol=InputInteger("Golongan");
27.    if (gol==100) continue;
28.    if(gol<1 | gol>5) break;
29.    jam_kerja=InputInteger("JamKerja");
30.    if (jam_kerja==100) continue;
31.    if(jam_kerja > 40)
32.    { jam_lembur=jam_kerja-40;
33.      jam_kerja=40; }
34.    else
35.    {jam_lembur=0;}
36.    switch (gol) {
37.      case 1 : upah_per_jam=2000; lembur_per_jam=3000; break;
38.      case 2 : upah_per_jam=2500; lembur_per_jam=4000; break;
39.      case 3 : upah_per_jam=3500; lembur_per_jam=5000; break;
40.      case 4 : upah_per_jam=5000; lembur_per_jam=7000; break;
41.      case 5 : upah_per_jam=7500; lembur_per_jam=9000; break;
42.      default : upah_per_jam=0; lembur_per_jam=0; break;
43.    }
44.    upah=jam_kerja*upah_per_jam;
45.    upah_lembur=jam_lembur*lembur_per_jam;
46.    System.out.println(nama+"\t"+upah+"\t"+upah_lembur);
47.    //
48.    //    silakan modifikasi tampilan data input dan hasil hitung
49.    //
50.  } while (gol<1000);
51.}
52.}
Why 1000?
yang membuat loop selesai adalah jika bilangan selain 1 s.d.5 diisi pada saat input golongan. Kalau while(gol<4), nanti pada setelah ada input golongan 5, loop selesai. while(gol>0) atau while(gol<6) akan berfungsi sama dengan while(gol<1000).
penjelasan program sudah ada di contoh sebelumnya.

do while

~TEORI~

Digunakan untuk menjalankan suatu pernyataan lalu diuji apakah kondisi sudah bernilai benar, tapi jika bernilai salah maka pernyataan tidak dijalankan. Pada dasarnya perulangan do….while sama saja dengan perulangan while, hanya saja pada proses perulangan dengan while, seleksi berada di while yang letaknya di atas sementara pada perulangan do….while, seleksi while berada di bawah batas perulangan. Jadi dengan menggunakan struktur do…while sekurang-kurangnya akan terjadi satu kali perulangan.
Pernyataan While
Perulangan while banyak digunakan pada program yang terstruktur. Perulangan ini banyak digunakan bila jumlah perulangannya belum diketahui. Proses perulangan akan terus berlanjut selama kondisinya bernilai benar (true) dan akan berhenti bila kondisinya bernilai salah atau batas yang ditentukan telah terpenuhi..