switch Statement
switch ဆိုရင္ေတာ႔ အလြယ္ေျပာရရင္ ခလုတ္ေလးေတြကိုသာေျပးျမင္ၾကည့္လိုက္ပါ ။ ဘာလို႔လဲဆိုတာ႔ ဒီခလုတ္ေလးကိုႏွိပ္ရင္ေတာ႔ ဘာလုပ္မယ္ ဘာျဖစ္မယ္ ၊တျခားတစ္ခုႏွိပ္ရင္ေတာ႔ဘာလုပ္မယ္ဘာျဖစ္မယ္စသျဖင္႔ခလုတ္ေတြအမ်ားႀကိးအတြက္ေရးခ်င္တဲ႔အခါမ်ိဳးေတြမွာ switch ကိုသံုးၿပီးေရးပါတယ္ (ကၽြန္ေတာ္နားလည္သလိုေရးလိုက္တာပါ … ) ။ switch က အရင္ကေျပာခဲ႔တဲ႔ if ,else if,else ပံုစံနဲ႔သေဘာတရားခ်င္းအတူတူပဲျဖစ္ပါတယ္ ။ ႔ if ,else if,else ကိုသေဘာေပါက္တယ္ဆိုရင္ switch ကိုနားလည္ဖို႔ရာလြယ္ကူပါတယ္ ။ ဒါေပမဲ႔ သူမွာနည္းနည္းထူးျခားေနတာေလး က break ; ေအာ္ပေရတာေလး သံုးထားတာပါပဲ ။ break ေအာ္ပေရတာအေၾကာင္းကိုေတာ႔ ေနာက္ပိုင္းမွာဆက္ဖတ္ေပါ႔ဗ်ာ ။ အခုေတာ႔ မ်က္စိထဲမွာ ထင္သာျမင္သာရွိသြားေအာင္ ဥပမာေလးနဲ႔ စလိုက္ရေအာင္
Example For Switch
#include <iostream>
using namespace std;
int main()
{
int num;
cout << "Enter a number from 1 to 3: ";
cin >> num;
switch(num) {
case 1:
cout << "Your Number is One.\n";
break;
case 2:
cout << "Your Number is Two.\n";
break;
case 3:
cout << "Your Number is Three.\n";
break;
default:
cout << "You must enter either 1, 2, or 3.\n";
}
return 0;
}
ရွင္းလင္းခ်က္
အေပၚကကုဒ္ေလးေတြကိုတစ္ခ်က္ၾကည့္ၾကည့္ပါ ။ ပထမ main() ဖန္ရွင္ထဲမွာ cout << "Enter a number from 1 to 3: "; လို႔ေရးထားတဲ႔အတြက္ secreen မွာ Enter a number from 1 to 3: လို႔ျပေနမွာပါ ။ program အသံုးျပဳသူ က ၁ ကေန ၃ ထိဂဏန္းေတြကိုရိုက္ေပးရမွာျဖစ္ပါတယ္ ။ အဲလို user ကေန ရိုက္ထည့္လိုက္ၿပီဆိုရင္
၁ ။ cin>>num ; ဆိုတဲ႔အတြက္ user ထည့္လိုက္တဲ႔တန္ဖိုးကို variable num ထဲထည့္လိုက္ပါတယ္။
၂ ။ switch(num) အခုနက value ထည့္ထားတဲ႔ variable num ကို switch နဲ႔ စစ္လုိက္ပါတယ္ ။ ၁ လား ။ ၂ လား ။ ၃ လား ။ ဒါမွမဟုတ္ တျခား တစ္ခုခုလားေပါ႔ ။
၃ ။ အေပၚမွာကတည္း ၁ ကေန ၃ ထိပဲရိုက္ထည့္ပါလို႔ ေျပာထားတဲ႔အတြက္ ၁ ကေန ၃ အထိအတြက္ ေအာက္မွာ case 1:
cout << "Your Number is One.\n"; စသည္ျဖင္႔ႀကိဳတင္ေရးေပးထားပါတယ္ ။ ဟုတ္ပီ ..တကယ္လို႔ user က ၁ လို႔ရိုက္ထည့္ေပးလိုက္တယ္ဆိုရင္ switch နဲ႔စစ္တ႔ဲအခ်ိန္မွာ ၁ ျဖစ္သြားတာေၾကာင္႔ case 1 : ကိုပဲဝင္သြားပါတယ္ ။ ၿပီးရင္ case 1: မွာရွိသမွ် လုပ္ေဆာင္ရမဲ႔ဟာတြအားလံုးကိုလုပ္ေဆာင္ပါတယ္ ။ ၿပီးရင္ break; အကူအညီနဲ႔ က်န္တဲ႔ case :2 ,3 ,default ကိုေက်ာ္သြားၿပီး
program အဆံုးကိုေရာက္သြားပါတယ္ ။
၄ ။ သူထုတ္ရမဲ႔အေျဖေတြဘာေတြ ကို secreen မွာထုတ္ေပးၿပီး return ျပန္ုလိုက္ပါတယ္ ။
ေျပာဖို႔က်န္ေသးတာကဘာလဲဆိုေတာ႔
default:
cout << "You must enter either 1, 2, or 3.\n"; ဆိုတဲ႔အပိုင္း ပါ ။ ဒီေကာင္က case ေတြနဲ႔တပ္ၿပီးေရးထားတဲ႔ case 1 ,case 2 : , case 3 : စတာေတြမွာအပ က်န္တာေတြထဲက တစ္ခုခုကိုမ်ား user ကရိုက္ထည့္မယ္ဆိုရင္ default : နဲ႔အလုပ္လုပ္ မယ္ဆိုတဲ႔သေဘာပါ ။ ဥပမာ user က သုည ( 0 ) ဒါမွမဟုတ္
၄၊၅၊၆၊ ....စသည္ျဖင္႔ေပါ႔ ေလ အဲဒါေတြရိုက္လိုက္မယ္ဆိုရင္ secreenမွာ You must enter either 1, 2, or 3. ဆိုၿပိး ျပမွာျဖစ္ပါတယ္ ။
switch statement ရဲ့လုပ္ေဆာင္ခ်က္ကေတာ႔ အခုေျပာခဲ႔တဲ႔အတိုင္းပါပဲ ။ ေအာက္က Result ေလးကိုတစ္ခ်က္ၾကည့္ၾကည္ပါ ။
Result
switch Statement using character
အခုနက ဥပမာမွာ integer ကို သံုးၿပီး switch အလုပ္လုပ္ပံုကိုေျပာျပခဲ႔တာပါ ။ အခုပိုၿပိးနားလည္သြားေအာင္ character သံုးထားတဲ႔ switch ဥပမာေလးကိုၾကည့္ၾကည့္ပါဦး
#include <iostream>
using namespace std;
int main() {
char choice;
cout << "What you understand more ?\n";
cout << " a. if\n";
cout << " b. switch\n";
cout << " c. operator\n";
cout << "Choose one: ";
cin >> choice;
cout << "\n";
switch(choice) {
case 'a':
cout << "The if? you should study to understand everything\n\n";
break;
case 'b':
cout << "The switch? you should study to understand everything\n\n";
break;
case 'c':
cout << "The Operators? you should study to understand everything\n\n";
break;
default:
cout << "Selection not found.\n";
}
return 0;
}
ဒီဥပမာကလည္းအေပၚ က ဥပမာနဲ႔ သေဘာတရားတူတူပါပဲ အလုပ္လုပ္ပံုလည္းတူပါတယ္ ။ ဒါေပမဲ႔ ကြဲသြားတာ က အရင္ဥပမာတုန္း က int နဲ႔ ဖမ္းတယ္ ။ အခုက char choice နဲ႔ ယူဆာရို္က္တဲ႔တန္ဖိုးကိုဖမ္းတယ္ ။ character ျဖစ္လို႔ case ‘a’ : ဆိုၿပီးေရးတယ္ ။ က်န္တာကေတာ႔အတူတူပါပဲ ၾကည့္ၾကည့္လိုက္ရံုနဲ႔နားလည္မယ္လို႔ထင္ပါတယ္ ။
switch without break statements.
ကၽြန္ေတာ္အေပၚမွာတုန္းက ေျပာခဲ႔တယ္ switch မွာ if ..else နဲ႔မတူတာ က break; ေလးသံုးထားတယ္လို႔ ။ အခု switch statement ကို break မပါပဲေရးျပပါ႔မယ္ ။ အဲဒါဆိုရင္ switch မွာဘာေၾကာင္႔ break သံုးတယ္ ။ if …else မွာ break မသံုးတာနဲ႔ ဘယ္ေနရာေတြမွာကြာသြားလဲဆိုတာ ကို ေသခ်ာၾကည့္ၾကည့္ပါ ။
#include <iostream>
using namespace std;
int main()
{
int i;
for(i=0; i<5; i++) {
switch(i) {
case 0: cout << "less than 1\n";
case 1: cout << "less than 2\n";
case 2: cout << "less than 3\n";
case 3: cout << "less than 4\n";
case 4: cout << "less than 5\n";
}
cout << '\n';
}
return 0;
}
Result
ဒီ Pogram မွာ ကၽြန္ေတာ္ for loop ပါသံုးထားပါတယ္ ။ loop ေတြအေၾကာင္းကိုေတာ႔ ေနာက္မွာဆက္ေရးပါ႔မယ္ ။ တကယ္လို႔ swith မွာ break သာမသံုးဘူးဆိုရင္ switch ထဲမွာ ရွိတဲ႔ case တန္ဖိုးရဲ့ case ေတြအားလံုးလုပ္တယ္ဆိုတာကိုသိေစခ်င္လို႔ပါ ။ ပထမ switch(0) ျဖစ္တဲ႔အခ်ိန္မွာ case 0 : ေအာက္မွာရွိတဲ႔ case 1 : ,2,3,4 အားလံုးကုိအလုပ္လုပ္သြားတာပါ ။ ေနာက္ခါ switch(1) ျဖစ္တဲ႔အခ်ိန္မွာ ေတာ႔ case 2: 3,4,5 ကိုလုပ္သြားတာပါ ။ အေျဖေတြကုိၾကည့္ရင္သိသာမွာပါ ။
switch case falling through
ကိုင္းဗ်ာ ….အခုေနာက္တစ္မ်ိဳး switch Statement ကိုေနာက္ပံုစံတစ္မ်ဳိးနဲ႔ေရးထားတာပါ ။ ဘာလို႔ ကၽြန္ေတာ္ ပံုစံေတြအမ်ားႀကီးေရးၿပီး ပို႔စ္ကိုအရွည္ႀကီးေရးေပးေနလည္းဆိုေတာ႔ ကၽြန္ေတာ္တို႔ က beginner ေတြပါ ။ ေက်ာငး္သူေက်ာင္းသားေတြဆိုေတာ႔ ဆရာက switch() ကဒီလိုရွိတယ္ ဆိုၿပီးတစ္မ်ိဳးျပရင္ တစ္မ်ိဳးပဲမွတ္လိုက္တာပါ တစ္ခါတစ္ခါ သူမ်ားေရးထားတဲ႔ကုဒ္ေလးေတြေလွ်ာက္ၾကည့္ၾကည့္တဲ႔အခါ ကိုမျမင္ဖူးတဲ႔ပံုစံေတြနဲ႔ေရးထားတဲ႔အခါ နားမလည္နိုင္တာေတြျဖစ္လာတက္ပါတယ္ ။ ဒါေၾကာင္႔ဒီလိုမ်ိဳးတင္မဟုတ္ဘူးဒီလိုေတြပါရွိတယ္ဆိုတာ ကို ျမင္ဖူးေအာင္ ဥပမာ မ်ားမ်ား ေတြေရးျပတာပါ ။ အဲဒါဆိုေတာ႔ ေနာက္ကိုယ္တိုင္ေလ႔လာတဲ႔အခါလြယ္ကူသြားတာေပါ႔ ဗ်ာ ။ ကဲ႔ ၾကည့္ရေအာင္ဗ်ာ ။
#include <iostream>
using namespace std;
int main()
{
int i;
for(i=0; i<5; i++) {
switch(i) {
case 1:
case 2:
case 3:
cout << "i is less than 4";
break;
case 4:
cout << "i is 4";
break;
}
cout << '\n';
}
return 0;
}
ရွင္းလင္းခ်က္
ဒီ Program မွာ case 3: နဲ႔ case 4 : မွာပဲ expression ေတြေရးထားတာပါ ။ ေနာက္ၿပီး for loop ကိုသံုးထားပါတယ္ ။ ပထမ looping ၃ ပတ္မွာ case 1: case 2: ေတြမွာ ဘာstatement မွေရးမထားတဲ႔အတြက္ case 3 :ေနရာေတြ ပဲလာလာလုပ္ပါတယ္ ။ ၿပိးေတာ႔ case 3 : မွာ break; သံုးထားတဲ႔အတြက္ case : 4 ကိုဆက္မဆင္းပဲ ေနာက္ထပ္ Looping ထပ္ပတ္လိုက္ပါတယ္ ။ ေနာက္ i တန္ဖိုး ၄ ျဖစ္တဲ႔အခ်ိန္က်မွပဲ ။ case 4: ကိုတန္းဝင္ၿပီး အလုပ္လုပ္သြားတာပါ ။ result ေလးနဲ႔တြဲၾကည့္မယ္ဆိုရင္ပို ၿပီးနားလည္မယ္ထင္ပါတယ္ ။
Result
ကဲဗ်ာ … ဒီေလာက္ဆိုရင္ switch Statement ရဲ့ သံုးတဲ႔ေနရာေတြ ၊ ပံုစံကြဲေတြ ၊သူတုိ႔ရဲ့အလုပ္လုပ္ပံုေတြကို ေတာ္ေတာ္မ်ားမ်ားသေဘာေပါက္လိမ္႔မယ္လို႔ေမွ်ာ္လင္႔ပါတယ္ ။ ကၽြန္ေတာ္ကိုယ္တိုင္လည္း ေဆြးေႏြးတာျဖစ္တဲ႔အတြက္ မွားေကာင္းမွားနိုင္ပါတယ္ ။ လိုေနလို႔ မွားေနလို႔ ေထာက္ျပတာပဲျဖစ္ျဖစ္ ၊ နားမလည္ေသးရင္ပဲျဖစ္ျဖစ္ ဝင္ေရာက္ေဆြးေႏြးၾကပါလို႔ ေျပာပါရေစဗ်ာ …. ။
ေဆြးေႏြးခ်က္ (၇)
Friday, July 2, 2010
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment