do while loop
do statement while (condition);
ဒါကေတာ႔ looping ေတြထဲ do while ဆိုတဲ႔ loop ပါ ။ do while ရဲ့အလုပ္လုပ္ပံုက လည္း while နဲ႔ဆင္တူပါတယ္ ။ ဒါေပမဲ႔ကြဲသြားတာေလးတစ္ခု က while မွာ condition ကိုစစ္ၿပီးမွန္မွအလုပ္လုပ္တယ္ do while မွာက်ေတာ႔ do မွာတင္အလုပ္လုပ္ခဲ႔ၿပီးေနာက္ဆံုးက်မွ while မွာဝင္စစ္ပါတယ္ ။ while က expression ကမွန္ေနေသးသမွ် looping ဆက္ပတ္ေနၿပီး ထပ္ခါ ထပ္ခါ do ေနမွာပါ ။ မ်က္စိထဲပိုၿပီးျမင္သာသြားေအာင္ ဥပမာေလးၾကည့္ၾကစို႔ဗ်ာ ..။
Example for do while loop
#include <iostream>
int main()
{
int counter;
std::cout << "How many time to say hellos? ";
std::cin >> counter;
do
{
std::cout << "Hello\n";
counter--;
} while (counter >0 );
std::cout << "counter is: " << counter << std::endl;
return 0;
}
ရွင္းလင္းခ်က္
std::cout << "How many time to say hellos? ";
std::cin >> counter;
ဆိုတာကေတာ႔ Hello လုိ႔ ဘယ္ ႏွခါ ေျပာခ်င္လဲ ။ စက္ခရင္မွာျပခ်င္လဲလို႔ေမးလိုက္တာပါ ။ အဲဒီအခ်ိန္မွာ Program User ကေန ရုိက္ထည့္ေပးလိုက္မဲ႔ တန္ဖိုး ကို counter ဆိုတဲ႔ integer variable တစ္ခုနဲ႔ထည့္ထားလိုက္ပါတယ္ ။
ေနာက္ ေအာက္ကိုဆင္းသြားၿပီး do ကိုေတြ႔တာနဲ႔ do while looping ထဲကိုစဝင္ၿပီးအလုပ္လုပ္ပါတယ္ ။ std::cout << "Hello\n";
counter--; ဆိုတဲ႔အတြက္ေၾကာင္႔ Hello လို႔ secreen မွာေရး ပီးရင္ေနာက္တစ္ေၾကာင္းဆင္း မူလကေပးထားတဲ႔ counter ရဲ့တန္ဖိုးကို ၁ ႏွဳတ္ လိုက္ပါတယ္ ။ အဲဒီကေနေအာက္ကိုဆက္ဆင္းသြားၿပီး while (counter >0 ); ကိုေရာက္တဲ႔အခါမွာ မူလတန္ဖိုးကိုတစ္ႏွုတ္ထားတဲ႔ counter တန္ဖိုးဟာwhile မွာေဖာ္ျပထားတဲ႔ အေျခေနနဲ႔ကိုက္ညီလားဆိုတာ စစ္ပါတယ္ ။ ဒီ program မွာေတာ႔ 0 သုညထက္ႀကီးလား စစ္တာျဖစ္ပါတယ္ ။ တကယ္လို႔ ႀကီးေနေသးတယ္ဆုိရင္ အေပၚကိုျပန္တက္ၿပီး do ကိုျပန္လုပ္ ေနာက္ခါ
while နဲ႔ ထပ္ျပန္စစ္လုပ္ပါတယ္ ။ တကယ္လို႔ while မွာျပထားတဲ႔ အေျခေနနဲ႔မကိုက္ညီဘူး 0 သုညျဖစ္သြားၿပီ ဆိုတာနဲ႔ do while loop ကေနထြက္သြားပါတယ္ ။
std::cout << "counter is: " << counter << std::endl;
ဆိုတာကေတာ႔ do while မစခင္တုန္းကကၽြန္ေတာ္တို႔ က ၈ ဆိုၿပီးေပးထားခဲ႔တယ္ ။ ေနာက္ do while လုပ္လိုက္ၿပီးတဲ႔အခါမွာ ဘယ္ေလာက္က်န္ေတာ႔လဲ ဆိုတာသိေအာင္လို႔ထုတ္ျပေပးခိုင္းထားပါ ။ ေအာက္က result ေလးနဲ႔ပါတြဲၿပီးၾကည့္ၾကည့္ပါ ။ အလုပ္လုပ္ပံုေတြက while နဲ႔သိပ္မကြာလွပါဘူး နာလည္းမယ္လို႔ထင္ပါတယ္ ။
Result
do while with end condition
#include <iostream>
using namespace std;
int main()
{
char ch;
do {
cout << "Do You Love Me? (y = YES or n = No)\n\n";
cin >> ch;
} while(ch != 'y');
cout<<" \3I Love You Too! \3\n";
return 0;
}
ဒီ Program ကေတာ႔ Do While Loop ရဲ့ ဆံုးမွတ္တစ္ခုကိုပဲေပးထားၿပီး looping ပတ္တဲ႔ပံုစံပါ ။ ဘယ္ႏွႀကိမ္ရယ္လို႔လည္းသတ္မွတ္မထားပါဘူး ။ ပီးေတာ႔ ဘယ္ေရြ႔ဘယ္မွ် ေလွ်ာ႔သြားရမယ္တိုးသြားရမယ္လို႔လည္းသတ္မွတ္မထားပါဘူး။ ဆံုးမွတ္တစ္ခုကိုပဲေပးထားၿပီး while မွာ စစ္လိုက္လို႔ မညီဘူးဆိုရင္မညီမခ်င္း looping ပတ္ေနၿပီး ညီတဲ႔အခါမွာေတာ႔ looping ကေနထြက္သြားမွာပါ ။ အေပၚက ကုဒ္ေလးမွာ cout << "Do You Love Me? (y = YES or n = No)\n\n"; ဆိုၿပီးေမးထားပါတယ္ ။ User ကထည့္ေပးမဲ႔တန္ဖိုးကို ch ထဲမွာထည့္ၿပီး while မွာသြားစစ္မွာပါ ။ while(ch != 'y'); ဆိုတဲ႔အတြက္ y ကိုရိုက္မွာ looping ကရပ္သြားမွာပါ ။ y မရိုက္မခ်င္းေတာ႔ looping ပတ္ၿပီး အၿမဲတမ္းေမးေနမွာျဖစ္ပါတယ္ ။ ေအာက္က Result ကိုၾကည့္ၾကည့္ပါ ။
Result
Nested if statement in a do while loop
Nested if statement ေတြကို Do While Loop နဲ႔ အတူတြဲသံုးထားတဲ႔ Program ေလးတစ္ပုဒ္ပါ ။ တနည္းအားျဖင္႔ေတာ႔ Guessing Game ေတြရဲ့ simple progam ေလးလို႔လည္းေျပာနိုင္ပါတယ္ ။ ၾကည့္ၾကည့္ပါဦး ။
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int magic;
int guess;
magic = rand(); // get a random number
do {
cout << "Enter your guess: ";
cin >> guess;
if(guess == magic) {
cout << "Right";
cout << magic << " is the magic number.\n";
}
else {
cout << "...Sorry, you're wrong.";
if(guess > magic)
cout << " Your guess is too high.\n";
else cout << " Your guess is too low.\n";
}
} while(guess != magic);
return 0;
}
ရွင္းလင္းခ်က္
ဒီ Program ေလးမွာ #include <cstdlib> header file ကိုသံုးထားပါတယ္ ။ ဘာေၾကာင္႔ ေခၚသံုးထားလဲဆိုေတာ႔ rand () ဆိုတဲ႔ ဖန္ရွင္ကိုသံုးခ်င္လို႔ပါ ပဲ ။ rand () ဆိုတာကေတာ႔ random ေခါက္ထားတဲ႔ ဂဏန္းေတြပါ ။ ဘာၿပီးရင္ဘာလာရမယ္ဆိုၿပီးသတ္မွတ္ထားလို႔မရပါဘူး သူ႔က်ခ်င္ရာက်လာပါလိမ္႔မယ္ ။ do statement ထဲမွာေတာ႔ ကၽြန္ေတာ္တို႔လုပ္ေဆာင္ခ်င္တာေတြကိုေရးထားပါတယ္ ။ ramdom ေခါက္လို႔ရလာတဲ႔အေျဖမွန္ ကုိ user မွန္းတဲ႔ ဂဏန္းနဲ႔ တိုက္ဆုိင္စစ္ေဆးဖို႔ if ..ေတြ else ေတြကို သံုးၿပီးေရးထားပါ တယ္ ။ အဲဒါေတြကိုေတာ႔အေသးစိတ္ရွင္းမျပေတာ႔ပါဘူး ။ အရင္ ၿပီးခဲ႔တဲ႔ေဆြးေႏြးခ်က္ေတြမွာကတည္းကေဆြးေႏြးၿပီးထားျဖစ္လို႔ပါ ။ ေနာက္ဆံုးမွာ while(guess != magic); လို႔ေရးထားပါတယ္ အဲဒီအတြက္ေၾကာင္႔ user မွန္းတဲ႔ ဂဏန္းဟာအေျဖမွန္မဟုတ္မခ်င္း do …while loop ကပတ္ေနမွာျဖစ္ပါတယ္ ။ result ကိုတစ္ခ်က္ၾကည့္ၾကည့္ပါ ။
Result
ေဆြးေႏြးခ်က္ (၁၀)
Tuesday, July 6, 2010
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment