Selection control statement
C# program ေတြ ေရးေနတဲ႔အခါ ကိုယ္ေရးထားတဲ႔ statement ေတြကို line by line compiler ကအလုပ္လုပ္ေပးပါတယ္။ တခါတေလ ကိုယ္ေရးထားတာေတြအားလံုး မလုပ္ေစခ်င္ပဲ အေျခအေန တစ္ခုေပၚမူတည္ျပီး ေရြးခ်ယ္လုပ္ခိုင္းခ်င္ရင္ Condition စစ္ဖို႔လိုလာပါျပီ။ ကြၽန္ေတာ္တို႔ C# မွာ condition ေတြစစ္ဖို႔အတြက္ ပံုစံ ၃မ်ိဳးေရးလို႔ရတယ္ဗ်။
if…..else
switch
conditional operator (?:)
အရင္ဆံုး ဥပမာေလး တစ္ခုနဲ႔ သူတို႔ကို ဘယ္လိုသံုးလဲ ယွဥ္ျပီး ေျပာၾကည့္မယ္ဗ်ာ။ ကြၽန္ေတာ္က user ဆီကေန number value တစ္ခုကို လက္ခံျပီး even လား order လား ဆိုတာ စစ္တဲ႔ program ေလးတစ္ခုေရးၾကည့္ရေအာင္။
using System;
class Program
{
static void Main()
{
int num;
Console.Write("enter number");
try
{
num = Convert.ToInt32(Console.ReadLine());
if (num % 2 == 0)
{
Console.WriteLine("Even");
}
else
{
Console.WriteLine("Odd");
}
}
catch
{
Console.WriteLine("Error");
}
Console.Read();
}
}
ကြၽန္ေတာ္ အနီေရာက္ကာလာနဲ႔ ေရးထားတဲ႔အပိုင္းေလးကို ျပန္ရွင္းျပပါ့မယ္။ user ထည့္လိုက္တဲ႔ တန္ဖိုးကို num ထဲမွာ သိမ္းလိုက္ပါတယ္။ အဲ့ဒီ တန္ဖိုးကို even ျဖစ္လားစစ္ဖို႔အတြက္ 2 နဲ႔ စားၾကည့္ပါတယ္။ အၾကြင္းက 0 နဲ႔ ညီေနရင္ စားလိုျပတ္တယ္ေပါ့။ ဒါဆိုရင္ စံုကိန္းျဖစ္ျပီး စားလို႔ မျပတ္ဘူးဆိုရင္ေတာ့ မကိန္းပါ။ if ေနာက္မွာ ကိုယ္စစ္ခ်င္တဲ႔ expression ကို ( နဲ႔ ) ထဲထည့္ေရးရပါတယ္။ ျပီး { } အတြင္းမွာ မွန္ရင္ လုပ္ခ်င္တဲ႔ အလုပ္ကိုေရးတယ္။ else ေနာက္က { } ထဲမွာေတာ့ မွားရင္ လုပ္ခ်င္တဲ႔ အလုပ္ကို ေရးရပါတယ္။ အခုကြၽန္ေတာ္ေရးထားသလိုမ်ိဳး လုပ္ခ်င္တဲ႔ အလုပ္က statement တစ္ေၾကာင္းထဲဆိုရင္ { } ကို မထည့္ေပးဘူး ဆိုရင္လည္း မွန္ပါတယ္။ statement တစ္ေၾကာင္းထက္ပိုရင္ေတာ့ { } ကို မထည့္ေပးလို႔ မရပါဘူး။ if condition မွာ မွန္ရင္လုပ္ခ်င္တာပဲ ရွိျပီး မွားရင္ လုပ္ခ်င္တာ မရွိဘူး ဆိုရင္လည္း else အပိုင္းကို ထည့္မေရးရပါဘူး။ အဲ.. မွားရင္လုပ္ခ်င္ျပီး မွန္ရင္ လုပ္ခ်င္တာ မရွိဘူးဆိုရင္ေတာ့ if ကို ျဖဳတ္ထားျပီး else ၾကီးပဲ ေရးလို႔ေတာ့ မရဘူးေနာ္။ အဲ့လိုလုပ္ခ်င္တယ္ဆိုရင္ေတာ့ if () ထဲမွာ not (!) ခံေပးရပါမယ္။
ကဲ.. အခု switch ကိုသံုးျပီး ေရးၾကည့္ရေအာင္။
using System;
class Program
{
static void Main()
{
int num;
Console.Write("enter number");
try
{
num = Convert.ToInt32(Console.ReadLine());
switch (num % 2)
{
case 0: Console.WriteLine("Even");
break;
default: Console.WriteLine("Odd");
break;
}
}
catch
{
Console.WriteLine("Error");
}
Console.Read();
}
}
switch ကိုသံုးျပီး စစ္ဖို႔အတြက္ switch ေနာက္မွာ ကိုယ္စစ္ခ်င္တဲ႔ condition တစ္ခုထည့္ေပးရတယ္။ ျပီး အဲ့ဒီ condition ကထြက္လာမယ့္ result ေတြကို case ေနာက္မွာ ေရးျပီးစစ္ရပါတယ္။ case ေတြၾကိဳက္သေလာက္ ေရးလို႔ရပါတယ္။ case တစ္ခုစီအဆံုးမွာ break ထည့္ေပးရပါတယ္။ default ဆိုတာကေတာ့ else သေဘာမ်ိဳးပါ။ အေပၚက case ေတြအားလံုး မွားခဲ႔ရင္လို႔ အဓိပၸါယ္ရပါတယ္။
ဒါေလးကိုပဲ conditional operator နဲ႔ ေျပာင္းစစ္ၾကည့္ရေအာင္…
using System;
class Program
{
static void Main()
{
int num;
Console.Write("enter number");
try
{
num = Convert.ToInt32(Console.ReadLine());
Console.WriteLine( (num % 2 == 0) ? "Even" : "Odd" );
}
catch
{
Console.WriteLine("Error");
}
Console.Read();
}
}
Conditional operator ကိုသံုးရင္ေတာ့ ( ? ) ရဲ႕ေရွမွာ ကြၽန္ေတာ္စစ္ခ်င္တဲ႔ expression ကိုေရးရတယ္၊ ( ? ) ရဲ႕ေနာက္မွာ မွန္ရင္လုပ္ခ်င္တာေရး ( : ) ရဲ႕ေနာက္မွာေတာ့ မွားရင္ လုပ္ခ်င္တာကို ေရးရပါတယ္။
Selection statement တစ္ခုစီမွာ သူ႔ အားသာခ်က္နဲ႔ သူရွိၾကပါတယ္။ ဒီထဲမွာ အသံုးအမ်ားဆံုးကေတာ့ အားလံုးသိၾကတဲ႔ if … else statement ပါပဲ။ condition စစ္ခ်င္တဲ႔ေနရာ ေတာ္ေတာ္မ်ားမ်ားမွာ if – else ကိုသံုးၾကေလ႔ရွိပါတယ္။ if-else မွာ variable အခ်င္းခ်င္း တိုက္စစ္လို႔လည္း ရပါတယ္။ တခါတေလမွာေတာ့ ကြၽန္ေတာ္တို႔မွာ စစ္စရာ အေျခအေနေတြ အရမ္းမ်ားေနရင္ေတာ့ if-else နဲ႔စစ္ရတာ အလုပ္ရႈပ္တယ္ထင္ရင္ switch ကိုသံုးေလ႔ ရွိပါတယ္။ ဥပမာဗ်ာ.. ကြၽန္ေတာ္က user ဆီကေန ၀ ကေန ၁၀ အတြင္း number တစ္လံုးထည့္ေပးပါလို႔ေတာင္းမယ္။ ျပီး.. user ထည့္လိုက္တဲ႔ number ကို ျပန္စစ္မယ္ဆိုပါေတာ့။ ဒီလိုမ်ိဳးဆိုရင္ေတာ့ if-else ထက္ switch က ပိုျပီးသံုးလို႔ေကာင္းမွာပါ။ conditional operator နဲ႔ေရးရင္ေတာ့ အရမ္းကို ရႈပ္ေထြးသြားမွာပါ။ လံုး၀ အဆင္ေျပမွာမဟုတ္ပါဘူး။
if-else
if(num == 0)
Console.WriteLine("Zero");
else if (num == 1)
Console.WriteLine("One");
else if (num == 2)
Console.WriteLine("Two");
else if (num == 3)
Console.WriteLine("Three");
else if (num == 4)
Console.WriteLine("Four");
else if (num == 5)
Console.WriteLine("Five");
else if (num == 6)
Console.WriteLine("Six");
else if (num == 7)
Console.WriteLine("Seven");
else if (num == 8 )
Console.WriteLine("Eight");
else if (num == 9)
Console.WriteLine("Nine");
else
Console.WriteLine("Greater than 9");
switch
switch(num)
{
case 0:Console.WriteLine("Zero");
break;
case 1:Console.WriteLine("One");
break;
case 2:Console.WriteLine("Two");
break;
case 3:Console.WriteLine("Three");
break;
case 4:Console.WriteLine("Four");
break;
case 5:Console.WriteLine("Five");
break;
case 6:Console.WriteLine("Six");
break;
case 7:Console.WriteLine("Seven");
break;
case 8:Console.WriteLine("Eight");
break;
case 9:Console.WriteLine("Nine");
break;
default:Console.WriteLine("Greater than 9");
break;
}
Conditional Operator
Console.WriteLine((num == 0) ? "Zero" : (num == 1) ? "One" : (num == 2) ? "Two" : (num == 3) ? "Three" : (num == 4) ? "Four" : (num == 5) ? "Five" : (num == 6) ? "Six" : (num == 7) ? "Seven" : (num == 8 ) ? "Eight" : (num == 9) ? "Nine" : "Greater than 9");
Switch နဲ႔ေရးတာ အရွင္းဆံုးျဖစ္မယ္ထင္တယ္ေနာ္။ ဒါေပမယ့္ switch ရဲ႕ အားနည္းခ်က္ေတြကလည္း ေတာ္ေတာ္မ်ားတယ္ဗ်။ switch မွာ case ေနာက္မွာ constant expression ပဲေရးခြင့္ရွိတယ္။ variable ေတြနဲ႔စစ္လို႔ မရဘူး။ ဥပမာ
int val = 0;
if(num%2==val) // this is ok
switch(num%2)
{
case val: // this is not ok ( coz : val is a variable name, not a constant )
Conditional operator ကိုေတာ့ သိပ္ရႈပ္ရႈပ္ေထြးေထြး စစ္စရာ မလိုတဲ႔ အခါမ်ိဳးမွာ သံုးတယ္။ statement တစ္ေၾကာင္းထဲမွာ condition စစ္တဲ႔ အပိုင္းကိုအျပီးအစီး ထည့္ေရးခ်င္ရင္ သံုးတာေပါ့။ ကဲ… Selection Control Statement ေကာင္းေကာင္း ေရးတက္ေလာက္ျပီ ထင္တယ္
မရွင္းတာေတြ ရွိရင္ ျပန္ေမးၾကပါ ခင္ဗ်။
ေက်းဇူးပါ…
Comment by thandar — August 8, 2009 @ 3:31 PM
Thank for sharing. Cheers! Go on. Thar Du
Comment by Pronek — August 10, 2009 @ 10:06 PM
Thank U
Cheers !
Comment by awba — October 27, 2009 @ 2:05 PM