WHILE & DO-WHILE Struktur Kendali Percabangan Pertemuan 8 Dasar Pemrograman Renni Angreni, S.Kom.
WHILE Pernyataan while melakukan perulangan sampai syarat dari while terpenuhi atau pernyataan break dihampiri. Pernyataan while merupakan salah satu pernyataan yang berguna untuk memroses suatu pernyataan atau beberapa pernyataan beberapa kali.
Flowchart WHILE while (ungkapan) pernyataan; while (ungkapan) kondisi Pernyataan Y T pernyataan selanjutnya while (ungkapan) pernyataan; while (ungkapan) { pernyataan1; pernyataan2; … pernyataanN; }
Bagian pernyataan pada while akan dieksekusi selama ungkapan pada while bernilai benar. Pengujian terhadap ungkapan pada while dilakukan sebelum bagian pernyataan. Oleh karena itu, ada kemungkinan bagian pernyataan pada while tidak dijalankan sama sekali, yaitu kalau kondisi yang pertama kali bernilai salah. Jika menggunakan pernyataan while pastikan bahwa suatu saat ungkapan while bernilai salah, jika tidak maka pernyataan akan dijalankan selamanya.
Contoh Cth1 bandingkan Cth2 #include <iostream> #include <conio.h> using namespace std; void main() { int i=0; while (i <= 10) { cout<<“C++”; i = i + 1; } _getch(); #include <iostream> #include <conio.h> using namespace std; void main() { int i=0; while (i <= 10) { cout<<“C++”; } _getch();
Pada Cth1, penggunaan while untuk melakukan perulangan menampilkan tulisan “C++”. Variabel i bertindak sebagai pencacah untuk mengingat jumlah tulisan yang sudah ditampilkan. Itulah sebabnya mula-mula diisi dengan nol, kemudian untuk setiap putaran isi variabel dinaikkan (i=i+1). Oleh karena variabel ini dijadikan sebagai kondisi pada while, suatu ketika kondisi (i <= 10) akan bernilai salah (yaitu pada i mencapai nilai 11) sehingga while akan berakhir, pernyataan dalam while tidak dieksekusi lagi. Pada layar akan dicetak tulisan “C++” sebanyak 11 kali (kondisi i=0 sampai i=10).
Pada layar akan dicetak tulisan “C++” berulang-ulang (tidak berhenti). Pada Cth2, penggunaan while sama untuk melakukan perulangan menampilkan tulisan “C++”. Variabel i bertindak sebagai pencacah untuk mengingat jumlah tulisan yang sudah ditampilkan. Itulah sebabnya mula-mula diisi dengan nol, tetapi dalam pernyataan while tidak ada pernyataan yang dapat membuat kondisi while (i <= 10) bernilai salah sehingga pernyataan di dalam while akan dijalankan terus menerus (nilai i selalu nol, i selalu <=10). Pada layar akan dicetak tulisan “C++” berulang-ulang (tidak berhenti). Pada contoh struktur while di atas, pencacah (variabel i) harus diberi nilai awal, dan ada pernyataan yang membuat kondisi while bernilai salah, serta urutan pernyataan yang akan dieksekusi dalam while berpengaruh.
Contoh #include <iostream> #include <conio.h> using namespace std; void main() { int i = 1; while (i<=10) { cout<<i<<endl; i = i + 1; } _getch(); Pernyataan i = i + 1; dapat dituliskan i += 1; atau i++;
#include <iostream> #include <conio #include <iostream> #include <conio.h> using namespace std; void main() { int i = 1; while (i<=10) { i = i + 1; cout<<i<<endl; } _getch(); Urutan pernyataan di dalam while berpengaruh.
#include <iostream> #include <conio #include <iostream> #include <conio.h> using namespace std; void main() { int i = 1; while (i <= 10) { cout<<i<<endl; i = i + 1; if (i == 8) break; } _getch(); Struktur kendali IF di dalam while
LATIHAN Buatlah sebuah program C++ (dengan While) untuk : Menampilkan 20 buah huruf C. Menampilkan angka 1 – 20. Menampilkan angka 20 – 1. Menampilkan angka ganjil dari 1 – 50. Menampilkan angka genap dari 1 – 50. Menampilkan bilangan kelipatan 3 dari 1 – 100. Bertanya kepada user “Apakah ingin membeli?” sampai dijawab “ya”. Menampilkan bilangan kelipatan 8 dari rentang 1 sampai batas rentang yang diinput user.
DO … WHILE Pernyataan do…while sama dengan pernyataan while hanya saja kondisi perulangan dicek di akhir perulangan (kalau while di awal perulangan). Sehingga perulangan do…while akan dieksekusi minimal satu kali, sedangkan pada while bagian pernyataan mungkin tidak akan dieksekusi sama sekali.
Flowchart DO…WHILE do { pernyataan1; pernyataan2; … pernyataanN; kondisi Pernyataan Y T selanjutnya do { pernyataan1; pernyataan2; … pernyataanN; } while (ungkapan);
Contoh Cth1 bandingkan Cth2 #include <iostream> #include <conio.h> using namespace std; void main() { char abjad = 'A'; do { cout<<abjad<<" "; abjad += 1; } while (abjad<='Z'); _getch(); } #include <iostream> #include <conio.h> using namespace std; void main() { char abjad = 'A'; do { cout<<abjad<<" "; abjad += 1; } while (abjad<'A'); _getch(); }
Pada Cth1, penggunaan do…while untuk mencetak huruf sampai kondisi di dalam while terpenuhi, yaitu (abjad<=‘Z’) sama halnya dengan penggunaan while. Pada layar akan ditampilkan A B C D E F G H I J K L M N O P Q R S T U V W X Y Z. Sedangkan pada Cth2, penggunaan do…while tidak terjadi perulangan karena kondisi pada while telah bernilai salah, tetapi pernyataan di dalam do akan dijalankan dahulu sebelum pengecekan kondisi, sehingga hanya akan mencetak satu buah huruf saja yaitu A. Berbeda dengan penggunaan while dimana pengecekan dilakukan di awal sehingga pernyataan tidak akan dijalankan karena telah bernilai salah.
Contoh #include <iostream> #include <conio.h> using namespace std; void main() { int i=0; do { cout<<"C++"<<endl; i = i + 1; } while (i<=10); _getch(); } Pernyataan i = i + 1; dapat dituliskan i += 1; atau i++;
LATIHAN Buatlah sebuah program C++ (dengan do…while) untuk : Menampilkan 20 buah huruf C. Menampilkan angka 1 – 20. Menampilkan angka 20 – 1. Menampilkan angka ganjil dari 1 – 50. Menampilkan angka genap dari 1 – 50. Menampilkan bilangan kelipatan 3 dari 1 – 100. Bertanya kepada user “Apakah ingin membeli?” sampai dijawab “ya”. Menampilkan bilangan kelipatan 8 dari rentang 1 sampai batas rentang yang diinput user.
Buatlah sebuah program C++ yang menerima input berupa jumlah barang dan harga barang, yang kemudian menampilkan total harganya. Setelah program berakhir, user ditanya apakah mau mengulang menjalankan program atau tidak. Jika menjawab ‘Y’ maka program diulang dari awal, jika menjawab ‘T’ maka program selesai.
-- Sekian -- Dasar Pemrograman Renni Angreni, S.Kom.