Laman

Minggu, 24 Oktober 2010

Menggunakan do while

TEORI DO WHILE

Kadang-kadang akan lebih mudah menulis perulangan jika penguji perulangan dilakukan di akhir badan perulangan. Dalam hal ini badan perulangan akan dieksekusi terlebih dahulu tanpa memperdulikan apakah suatu kondisi bernilai true atau false. Pengujian dilakukan di akhir setelah suatu kondisi didapat dalam eksekusi perulangan pertama kali.
Pernyataan do ... while pada dasarnya merupakan pernyataan while terbalik, dengan bentuk.
do
perintah
while (suatu_kondisi);
Atau apabila perintah berbentuk blok kumpulan perintah-perintah, bisa juga ditulis dalam bentuk
do {
perintah-perintah
} while (suatu_kondisi);
Perlu diingat bahwa pernyataan do ... while diakhiri dengan tanda ; di akhir while.
Pernyataan do ... while memberikan keleluasaan kepada Anda untuk berekspresi dengan lebih lugas. Sebenarnya, untuk memecahkan suatu masalah dengan perulangan do ... while juga bisa diekspresikan dengan perintah while, demikian juga sebaliknya

CONTOH 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
import java.util.Scanner;
public class TebakAngka {

  static Scanner sc = new Scanner(System.in);

  public static void main(String[] args) {
    int angkaSembunyi = 1000;
    int tebakan;

    do {
      System.out.print("tebakan anda: ");
      tebakan = sc.nextInt();
      if (tebakan==angkaSembunyi)
      {  System.out.println("tebakan anda jitu !!! ");
          break; // keluar dari loop
      }
    } while ((tebakan <= 0) || (tebakan > angkaSembunyi));
    System.out.println("trimzzz sudah menebak ");
  }
}

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).
import java.util.Scanner;
public class KonversiNilaiAngka {
 
  static char nilaiHuruf(int nilai)
  {
    char nhuruf;
    if (nilai >= 90)
        nhuruf = 'A';
    else if (nilai >= 80)
        nhuruf = 'B';
    else if (nilai >= 70)
        nhuruf = 'C';
    else if (nilai >= 60)
        nhuruf = 'D';
    else
        nhuruf = 'E';
    return nhuruf;
  }
 
  public static void main(String[] args) {
    int nilaiAngka;
    char nh;
 
    Scanner sc = new Scanner(System.in);
 
    do {
      System.out.print("nilai : ");
      nilaiAngka = sc.nextInt();
      nh=nilaiHuruf(nilaiAngka); // nh menerima "return"
      System.out.println("Nilai : "+nilaiAngka+"   "+nh);
    } while ((nilaiAngka > 0) && (nilaiAngka <= 100));
    System.out.println("  while loop selesai");
  }
}

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
import javax.swing.*;
 
class HitungUpah
{
static String InputString(String s1)
{ return JOptionPane.showInputDialog(s1); }
static int InputInteger(String s1)
{
   int i;
   String x=JOptionPane.showInputDialog(s1);
   try {
         i=Integer.parseInt(x);
   }
   catch(Exception e){ i=100; }
   return i;
}
 
public static void main(String[] args)
{
  String nama;
  int jam_kerja,jam_lembur,upah_per_jam,lembur_per_jam,gol,
  upah,upah_lembur;
  do
  {
    nama=InputString("Karyawan");
    gol=InputInteger("Golongan");
    if (gol==100) continue;
    if(gol<1 | gol>5) break;
    jam_kerja=InputInteger("JamKerja");
    if (jam_kerja==100) continue;
    if(jam_kerja > 40)
    { jam_lembur=jam_kerja-40;
      jam_kerja=40; }
    else
    {jam_lembur=0;}
    switch (gol) {
      case 1 : upah_per_jam=2000; lembur_per_jam=3000; break;
      case 2 : upah_per_jam=2500; lembur_per_jam=4000; break;
      case 3 : upah_per_jam=3500; lembur_per_jam=5000; break;
      case 4 : upah_per_jam=5000; lembur_per_jam=7000; break;
      case 5 : upah_per_jam=7500; lembur_per_jam=9000; break;
      default : upah_per_jam=0; lembur_per_jam=0; break;
    }
    upah=jam_kerja*upah_per_jam;
    upah_lembur=jam_lembur*lembur_per_jam;
    System.out.println(nama+"\t"+upah+"\t"+upah_lembur);
    //
    //    silakan modifikasi tampilan data input dan hasil hitung
    //
  } while (gol<1000);
}
}

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).

1 komentar:

  1. cukup lengkap tapi ada kesamaan dgn punyanya mentari di http://tugas-kita-kita.blogspot.com/. mohon bisa diganti :)

    BalasHapus