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.

1 komentar:

  1. cukup lengkap. tinggal dipelajari dan dikuasai dgn baik :)

    BalasHapus