Kita Adalah Pembuat Karma kita sendiri mewarisi karma kita sendiri dah terlahir oleh karma kita sendiri......

Jumat, 21 Oktober 2011

While


Praktikum Pemrograman Komputer
Pengulangan Berhingga (Statemen while)
Tujuan:
  1. Mahasiswa memahami masalah-masalah yang membutuhkan proses berulang menggunakan statemen while.
  2. Mahasiswa dapat membuat program menggunakan statemen while untuk menyelesaikan masalah yang membutuhkan proses berulang .

Looping dengan while.

            Looping dengan while akan menyebabkan program kita mengulang barisan statement seperti yang dikondisikan di awal looping. Syntax atau bentuk statement while adalah sebagai berikut :

      while (kondisi)
     {
        statement1;
        :
        statement_n;
     }

Cara kerja looping dengan while adalah sebagai berikut :

 



              while (kondisi)
              {                    hanya jika “kondisi” bernilai benar  
                 statement1;       maka statement didalam blok looping
         jika “kondisi”          :          dikerjakan terus
             salah       statement_n;
               }
      
               // sisa program
                                  // yang berlanjut

                                   
                           Gambar 1. Cara kerja while
           
            “kondisi” merupakan ekspresi sembarang yang diterima oleh C dan “statement” adalah statement yang diterima oleh C. Jika “kondisi” bernilai benar (true) atau 1, maka statement-statement di dalam badan looping dikerjakan, dan kemudian “kondisi” diperiksa lagi. Hal ini berlanjut terus sampai “kondisi” bernilai salah (false) atau 0. Jika “kondisi” bernilai salah, maka looping dengan statement while akan berhenti dan program akan berlanjut ke statement berikutnya di bawah blok statement looping.
            Dalam praktikum sebelumnya digunakan statement for untuk melakukan perulangan. Dalam contoh berikut ini dipakai statement while,  untuk looping sampai counter sama dengan 5.



// Menunjukkan looping dengan 'while'
// sebagai pengganti statement 'for'
#include <stdio.h>
#include <conio.h>
void main() {
  // inisialisasi variable 'hitung'
  int hitung = 0;   
  
  //mulai looping dengan memeriksa kondisi
  while (hitung <= 5) {
     hitung++;
     printf("Menghitung : %d\n", hitung);
  }
  printf("Selesai menghitung.\n");
  printf("Perhitungan terakhir : %d", hitung);
}

            Statement-statement yang berada di dalam blok looping while dapat dimungkinkan untuk tidak pernah dikerjakan. Mengapa ? karena hal ini tergantung dari kondisi yang diberikan kepada while. Jika kondisi yang diberikan ternyata selalu bernilai salah, maka seluruh statement-statement yang berada di dalam blok looping tidak akan pernah dikerjakan. Dengan kata lain selalu dilewati. Contohnya source code program di bawah ini :

// Melewati badan looping 'while' dengan kondisi yang salah
#include <stdio.h>
#include <conio.h>
int main() {
   int hitung, hit;  

   printf("Berapa kali pengulangan ? ");
   scanf(“%d”,&hitung);

   // menyalin isi 'hitung' ke 'hit' untuk perbandingan
   hit = hitung;
   printf("Menghitung mundur ...\n");
  
   //mulai looping dengan kondisi 'hitung' lebih besar nol
   while (hitung > 0) {
      printf("Mencetak : %d\n", hitung);
      hitung--;
   }

  // memeriksa apakah input dari user dengan 'hit' yang disalin
  // dari 'hitung' kurang atau sama dengan nol 
  if (hit <= 0) {
     printf("Tidak ada pengulangan ...\n");
  } else {
       printf("Selesai mengulang.\n");
       printf("Perhitungan terakhir : %d\n",hitung);
   }
}

Hasil yang didapat ketika program di atas dijalankan adalah sebagai berikut :

 

  Berapa kali pengulangan ? 5
  Menghitung mundur ...
  Mencetak : 5
  Mencetak : 4
  Mencetak : 3
  Mencetak : 2
  Mencetak : 1
  Selesai mengulang.
  Perhitungan terakhir : 0


    Berapa kali pengulangan ? 0
    Menghitung mundur ...
    Tidak ada pengulangan ...



            Ketika pemeriksaan terhadap input data yang berada di variabel hitung; ternyata berisi nilai nol, maka looping akan dilewati dan meneruskan ke statement di bawah badan looping. Kemudian nilai hit yang merupakan nilai awal hitung diperiksa. Jika berisi nilai nol atau kurang, maka akan dicetak pesan “tidak ada pengulangan”. Sehingga hasil tampilannya seperti contoh tampilan di atas yang sebelah kanan.
            Kondisi yang diperiksa oleh pengulangan while dapat berupa kondisi yang kompleks, yang berarti dapat terdiri dari operator logika && (AND), || (OR), dan ! (NOT). Source code program di bawah ini akan menggambarkan hal tersebut :

// Menunjukkan looping dengan 'while'
// dengan kondisi yang kompleks
#include <stdio.h>
#include <conio.h>
void main() {
   int umur;   
   printf("Umur anda berapa ? ");
   scanf(“%d”,&umur);
   while ((umur < 5) || (umur >= 100)) { 
      printf("Saya tidak yakin umur anda %d\n", umur);
      printf("Silahkan diulangi ... \n\n"); 
      printf("Umur anda berapa ? ");
      scanf(“%d”,&umur);
   }
   if ((umur > 12) && (umur < 19)) {
      printf("Wah, anda baru bernjak remaja.\n");
      printf("Gunakan waktu sebaik-baiknya ...\n");  
   }
   if ((umur >= 5) && (umur <= 12)) {
      printf("Anda masih tergolong anak kecil.\n");
      printf("Belajarlah yang giat ...\n");
   }
   if ((umur >= 19) && (umur <= 100)) {
      printf("Anda sudah beranjak tua.\n");
      printf("Jadilah seorang yang dewasa ...\n");
   }
}


Hasil yang didapat ketika program di atas dijalankan adalah sebagai berikut :
 

Umur anda berapa ? 3
Saya tidak yakin umur anda 3
Silahkan diulangi ...

Umur anda berapa ? 6
Anda masih tergolong anak kecil.
Belajarlah yang giat ...


            Pada awal looping dimulai dengan kondisi tertentu seperti tersebut di atas. Jadi jika umur yang dimasukkan kurang dari 5 atau malah lebih atau sama dengan 100, maka looping akan di ulang-ulang terus.
            Kadang kala kita menginginkan kembali ke awal looping sebelum semua statement yang berada di dalam blok looping dikerjakan. Hal ini dapat dilakukan dengan menggunakan statement continue. Atau kita ingin keluar dari looping sebelum kondisi yang menyebabkan keluar dari looping ditemukan. Hal ini dapat dilakukan dengan menggunakan statement break. Tetapi kedua statement tersebut, yaitu continue dan break, harus digunakan dengan ekstra hati-hati. Karena kedua statement tersebut merupakan statement-statement berbahaya selain statement goto dengan alasan yang sama, yaitu jika sebuah program tiba-tiba mengubah arah alur pemrograman, maka program tersebut akan lebih sulit untuk dibaca dan dipahami. Untuk lebih jelasnya, marilah kita lihat gambar di bawah ini :

 


    :                                   :
  while (kondisi)                     while (kondisi)
  {                                   {
     :                                  :
 

     continue;                           break;

     :                                   :
     statement;                          statement1;
     :                                   :
  }                                   }
  // baris berikutnya                 statement2;


           Gambar 2a. continue          Gambar 2b. break
           
Contoh program menggunakan statement continue dan break ada di bawah ini :

// Menunjukkan looping dengan 'while' kondisi kompleks
// dan dengan statement break dan continue
#include <stdio.h>
#include <conio.h>
void main() {
   int umur;   
   char jwb;
   printf("Umur anda berapa ? ");
   scanf(“%d”, &umur); 
   while ((umur < 5) || (umur >= 100)) { 
     printf("Saya tidak yakin umur anda %d\n", umur) ;
      printf("Akan diulangi ? (Y/T) "); 
      scanf(“%c”,&jwb);
      if (jwb == 'Y' || jwb == 'y') {
        printf("Umur anda berapa ? ");
        scanf(“%d”,&umur);
        continue;
      } else
        break;
     }
      if ((umur > 12) && (umur < 19))  {
         printf("Wah, anda baru bernjak remaja.\n");
         printf("Gunakan waktu sebaik-baiknya ...\n");  
      };
      if ((umur >= 5) && (umur <= 12)) {
         printf("Anda masih tergolong anak kecil.\n");
         printf("Belajarlah yang giat ...\n");
      };
      if ((umur > 19) && (umur <= 100)) {
         printf("Anda sudah beranjak tua.\n");
         printf("Jadilah seorang yang dewasa ...\n");
      };
   }
}

Hasil yang didapat ketika program di atas dijalankan adalah sebagai berikut :

 

  Umur anda berapa ? 3
  Saya tidak yakin umur anda 3
  Akan diulangi ? (Y/T) t


Umur anda berapa ? 4
Saya tidak yakin umur anda 4
Akan diulangi ? (Y/T) y
Umur anda berapa ? 6

Anda masih tergolong anak kecil.
Belajarlah yang giat ...


            Jika umur yang dimasukkan kurang dari 5 atau malah lebih atau sama dengan 100, maka looping akan di ulang-ulang terus. Kemudian user diminta untuk mengisikan jawabannya. Jika jawabannya berupa karakter ‘Y’ atau ‘y’ maka ada kondisi yang dikerjakan, kemudian statemen continue dikerjakan yang berakibat kembali ke awal looping lagi, untuk memeriksa umur lagi.

Looping dengan do…while.

            Looping do…while akan mengerjakan dulu statement-statement yang berada di dalam blok looping (badan looping) sebelum kondisinya diperiksa, sehingga pasti akan mengerjakan badan looping setidaknya satu kali. Dengan kata lain statement dikerjakan dulu, baru kondisinya diperiksa. Syntax/bentuk statement do…while adalah sebagai berikut :

            do
      {
         :
         statement;
         :
      }
      while (kondisi);


Sedangkan cara kerjanya adalah sebagai berikut :

 



                                                    Selalu mengeksekusi
                                                      satu kali sebelum
                                                        mulai looping


                                do
              {
                :
                statement_1;
                :                hanya jika kondisi bernilai benar
                statement_2;       maka mengerjakan statement
                :                      di badan looping
              }
              while (kondisi);
              :
              // sisa program
              // yang berlanjut

             
                Gambar 3. Cara kerja do…while
                                   
Sebagai contoh, source code program berikut ini :

// Menunjukkan looping 'do...while'
#include <stdio.h>
#include <conio.h>
void main() {
  int hitung, hit;  
  printf("Berapa kali pengulangan ? ");
  scanf(“%d”,&hitung);
  // menyalin isi 'hitung' ke 'hit' untuk perbandingan
  hit = hitung;
  printf("Menghitung mundur ...\n");
  //mulai looping (setidaknya satu kali)
  do {
     printf("Mencetak : %d\n",hitung);
     hitung--;
  } while (hitung > 0);   
  // memeriksa apakah input dari user dengan 'hit' yang
  // disalin dari 'hitung' kurang atau sama dengan nol 
  if (hit <= 0) {
    printf("Tidak ada pengulangan ...\n");
} else  {
      printf("Selesai mengulang.\n");
      printf("Perhitungan terakhir : %d\n", hitung);
  }
}

Hasil yang didapat ketika program di atas dijalankan dan diberikan input 6 dan 0, adalah sebagai berikut :

 

Menghitung : 1
Menghitung : 2
Menghitung : 3
Menghitung : 4
Menghitung : 5
Menghitung : 6
Selesai menghitung.
Perhitungan terakhir : 6


Berapa kali pengulangan ? 0
Menghitung mundur ...
Mencetak : 0
Tidak ada pengulangan ...



            Dengan menggunakan looping do…while, jika kita masukkan nilai nol, maka badan looping tetap akan ter-eksekusi satu kali. Sehingga tetap ada yang tercetak, seperti contoh tampilan sebelah kanan. Bandingkan dengan menggunakan looping while.

LATIHAN
  1. Ketik ulang semua source code di atas, compile, dan jalankan. Analisa dan bandingkan dengan perulangan menggunakan for.
  2. Analisalah perbedaan perulangan antara while dengan do-while dari source code di atas.
  3. Buatlah sebuah program  dengan while dan do-while sehingga menampilkan hasil penjumlahan:
              5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 + 5 = 50
  1. Buatlah sebuah program dengan while dan do-while yang akan mencari rata-rata suhu udara dalam 1 minggu. Berilah pesan “DINGIN” jika rata-rata suhu dibawah 20o Celcius, “SEJUK” jika rata-rata suhu diantara 20o sampai 26o Celcius, atau “PANAS” jika rata-rata suhu di atas 26o Celcius.
  2. Buatlah program dengan while dan do-while untuk menampilkan hasil penjumlahan:
               1 + ½ + 1/3 + ¼ + …. + 1/20
  1. Buatlah sebuah program game Tebak Angka. Angka yang akan ditebak sudah ditentukan dan disimpan dalam satu variabel di dalam program. Pemain hanya diberi  5 kesempatan untuk menebak. Jika pemain menebak angka dengan benar, tampilkan pesan ucapan bahwa berhasil menebak. Jika pemain tidak dapat menebak dalam 5 kali kesempatan yang sudah diberikan, cetak pesan bahwa kesempatan habis dan program berhenti.
  2. Modifikasi program nomor 4, supaya pemain sedikit terbantu dengan memberikan pesan bahwa tebakan pemain lebih besar atau lebih kecil dari angka yang ditebak.

Tidak ada komentar:

Posting Komentar