Sintaks loop do while adalah sebagai berikut:
do { //statemen di dalam tubuh loop do while } while (ekspresi2);
Sama halnya dengan loop while, ekspresi2 merupakan bagian dari loopnya. Tapi do while dengan loop while punya perbedaan. Jika kondisi berlogika salah maka statemen di dalam tubuh loop while tidak dijalankan sedangkan meskipun kondisi awal berlogika salah maka program pada tubuh loop do while dijalankan meskipun hanya sekali. Supaya lebih jelas kita buat program menyalakan LED menggunakan loop while, perhatikan sintaks berikut ini:
/* * membuat program nyala LED menggunakan loop while * jika k<5 maka LED nyala * jika k=>5 LED mati */ #define LED1 4 //mendefinisikan pin 4 sebagai LED1 #define LED2 5 #define LED3 6 #define LED4 7 void setup() { //setting LED1-LED4 sebagai output pinMode (LED1, OUTPUT); pinMode (LED2, OUTPUT); pinMode (LED3, OUTPUT); pinMode (LED4, OUTPUT); int k=5; //ekspresi1 while(k<5){ //ekspresi2 //tidak dieksekusi karena kondisi k false digitalWrite (LED1, HIGH); digitalWrite (LED2, HIGH); digitalWrite (LED3, HIGH); digitalWrite (LED4, HIGH); delay(1000); k++; } //Menjalankan blok di bawah ini karena loop while dalam keadaan false digitalWrite (LED1, HIGH); digitalWrite (LED2, LOW); digitalWrite (LED3, HIGH); digitalWrite (LED4, LOW); delay(4000); } void loop() { }
Outputnya adalah sebagai berikut:
Gambar 1. Menggunakan loop while
Berdasarkan gambar 1 di atas, nilai pertama berkondisi salah sehingga kode di dalam blok while tidak dieksekusi yaitu kode untuk menyalakan semua LED, tapi mikrokontroler langsung mengeksekusi statement setelah blok while. Kita gunakan loop do while, maka kodingnya sebagai berikut:
/* * membuat program nyala LED menggunakan loop do while */ #define LED1 4 //mendefinisikan pin 4 sebagai LED1 #define LED2 5 #define LED3 6 #define LED4 7 void setup() { //setting LED1-LED4 sebagai output pinMode (LED1, OUTPUT); pinMode (LED2, OUTPUT); pinMode (LED3, OUTPUT); pinMode (LED4, OUTPUT); int k=5; //ekspresi1 do { //dieksekusi 1x meskipun false digitalWrite (LED1, HIGH); digitalWrite (LED2, HIGH); digitalWrite (LED3, HIGH); digitalWrite (LED4, HIGH); delay(1000); k++; }while(k<5); //ekspresi2 //Menjalankan blok di bawah ini setelah menjalankan blok do while digitalWrite (LED1, HIGH); digitalWrite (LED2, LOW); digitalWrite (LED3, HIGH); digitalWrite (LED4, LOW); delay(4000); } void loop() { }
Outputnya dapat dilihat pada gambar 2 di bawah ini:
Gambar 2. Program menyalakan LED menggunakan loop do while
Berdasarkan gambar 2, meskipun kondisi awal adalah false tapi statement di dalam tubuh do tetap dieksekusi meskipun hanya sekali. Setelah itu baru dilakukan pengecekan pada ekspresi2, karena false maka dilanjutkan menjalankan kode program setelah blok do while.
PREVIOUS: Loop While
NEXT: Fungsi