our notes for our youngers

July 25, 2009

basic of C# (part 9)

Filed under: Basic of C# — Tags: , , , — sevenlamp @ 12:33 PM

အခုကြၽန္ေတာ္တို႔ C# မွာ သံုးတဲ႔ operator ေတြ အေၾကာင္းကို ဆက္ေျပာၾကရေအာင္။ အိုေက operator ဆိုတာဘာကိုေျပာတာလဲ။ ကြၽန္ေတာ္တို႔ computer ကို ခိုင္းေစတဲ႔ statement ေတြထဲမွာ operator ေတြကို သံုးေလ႔ ရွိၾကတယ္။ ဥပမာ number ၂ ခုကို ေပါင္းခ်င္တယ္ ဆိုရင္ ( + ) operator ကိုသံုးတယ္။ variable တခုခုထဲကို တန္ဖိုး ထည့္ေပးခ်င္တယ္ဆိုရင္ ( = ) operator ကိုသံုးတယ္။ ဟုတ္တယ္ မလား။ ကြၽန္ေတာ္တို႔ ဒီ operator ေတြရဲ့ အလုပ္ေတြကို သိျပီးသားပါ။ C# ရဲ့ Operator table ေလးၾကည့္လိုက္ဦးေနာ္။

Operator category

Operators

Primary x.y
f(x)
a[x]
x++
x–
new
typeof
checked
unchecked
->
Unary +

!
~
++x
–x
(T)x
true
false
&
sizeof
Multiplicative *
/
%
Additive +
Shift <<
>>
Relational and type testing <
>
<=
>=
is
as
Equality ==
!=
Logical &
|
^
Conditional &&
||
?:
Assignment =
+=
-=
*=
/=
%=
&=
|=
^=
<<=
>>=
??
Lambda =>

ကြၽန္ေတာ္ အဓိက ေျပာခ်င္တာကေတာ့ ဒီ operator ေလးေတြနဲ႔ ပတ္သက္ျပီး သိသင့္တာေလးေတြပါ။ အရင္ဆံုး statement တစ္ခုအတြင္းမွာ operator တစ္ခုထက္ပိုျပီး ပါလာျပီဆိုရင္ ဘယ္operator ကို အရင္ဆံုး အလုပ္လုပ္သြားမလဲ။ ဥပမာဗ်ာ ကြၽန္ေတာ္က output 20 ထြက္ခ်င္တယ္ဆိုရင္ ေအာက္က ၂ ခုမွာ ဘယ္လိုေရးမွ မွန္မလဲ။
1) Console.Write( 2+3*4 );
2) Console.Write( (2+3)*4 );
နံပါတ္ ၁ အတိုင္းဆိုရင္ output က 14 ဆိုျပီး ထြက္သြားပါလိမ့္မယ္။ ဒါဆိုရင္ေတာ့ login error ျဖစ္ျပီေပါ့။ no 2 အတိုင္းေရးမွ ကြၽန္ေတာ္လိုခ်င္တဲ႔ output ရပါလိမ့္မယ္။ ဒီေနရာမွာ operator ေတြရဲ႕ priority ကို သိဖို႔လိုလာပါျပီ။

Precedence Operators
Highest + –  ! ~ ++x –x (T)x

* / %

+ –

<< >>

< > <= >= is as

==  !=

&

^

|

&&

||

Lowest = *= /= %= += -= <<= >>= &= ^= |=

operator ေတြ ၁ခုထပ္ပိုေတြ႔ရင္ Precedence အျမင့္ဆံုးကို အရင္ဆံုးလုပ္ပါတယ္
အတိုမွတ္ခ်င္ရင္ေတာ့
( )
*/
+-
ေလာက္မွတ္ထားရင္ လံုေလာက္ပါတယ္။ ( ) ကိုအရင္ဆံုးလုပ္မယ္။ ျပီးရင္ * / ။ ေနာက္ဆံုးမွ + – ေပါ့။ ရမယ္ေနာ္။
ေနာက္တခုေျပာခ်င္တာက increment operator(++) & decrement operator(–) အေၾကာင္းပါ။ ကြၽန္ေတာ့ဆီမွာ ရွိတဲ႔ integer value တစ္ခုကို 1 တိုးခ်င္ 1 ေလွ်ာ့ခ်င္ရင္ အဲ့ဒီ့ operator ေတြ သံုးရပါတယ္။
ဒီ statement ေလးက output ဘယ္ေလာက္ထြက္မလဲ စဥ္းစားၾကည့္ပါဦး။

int num1 = 3;
int num2 = 4;
Console.Write( num1++ + ++num2 );

output = 7 or 8 or 9 ????
increment operator ကို ေရွ႕မွာ ေရးရင္ pre incrememt ေနာက္မွာ ေရးရင္ post increment လို႔ခြဲတယ္။ pre ဆိုရင္ အရင္လုပ္တယ္။ post ဆိုရင္ ေနာက္မွလုပ္တယ္ေပါ့။ ဒါဆိုရင္ေတာ့ output ဘယ္ေလာက္ထြက္မလဲဆိုတာ မွန္းနိုင္ေလာက္ျပီထင္တယ္ေနာ္။ (num1++) က ေပါင္းတဲ႔ အခ်ိန္မွာ 3 ပဲရွိေသးတယ္။ (++num2) ကေတာ့ 5 ျဖစ္ေနျပီး။ ဒါေၾကာင့္ 8 ထြက္ပါတယ္။

ကဲ ေနာက္ထပ္သိထားစရာ တစ္ခုရွိေသးတယ္ဗ်။ အဲ့ဒါကေတာ့ operator ေတြ႔ ေပါင္း၊ႏႈတ္၊ေျမာက္၊စား လုပ္တဲ႔ အခါ datatype တူရင္ တူတဲ႔type ထြက္တယ္။ မတူဘူးဆိုရင္ေတာ့ ၾကီးတဲ႔type ထြက္ပါတယ္။ ဒါေပမယ့္ integer ထက္ေသးတဲ႔ type ေတြ ဆုိရင္ေတာ့ integer type ထြက္ပါတယ္။
ဥပမာ…

short v1 = 3;
short v2 = 4;
short v3 = v1 + v2; // error တက္ပါလိမ့္မယ္။
int v3 = v1 + v2; // ဆိုမွ မွန္မယ္။

ဒီ program ေလး ေရးျပီး run ၾကည့္လိုက္ပါဦး။

using System;
public class Example1_6
{
	static void Main()
	{
		int i1 = 5;
		long l = i1 * 3L;
		decimal d = l;				// implicit conversation
		int i2 = (int) d;				// explicit conversation
		Console.WriteLine("{0:C}\n{0:D5}\n{0:F2}\n",i2);
		int i3 = i2 / 2;
		Console.WriteLine("{0:C}\n{0:D5}\n{0:F2}\n",i3);
		int i4 = i1 + i2 * 10;
		Console.WriteLine("{0:C}\n{0:D5}\n{0:F2}\n",i4);
		int i5 = i2++ + ++i3;			// increment operator
		Console.WriteLine("{0:C}\n{0:D5}\n{0:F2}\n",i5);
		Console.Write("press enter to close...");
		Console.Read();
	}
}

program ထဲက {0:C} ဆိုတာက 0 index က တန္ဖိုးကို currency format နဲ႔ ျပမယ္ေျပာတာ။ {0:D5} ဆိုတာက ေနရာ ၅ ေနရာ အျပည့္ယူျပီး ေနာက္ဆံုးကေန ျပမယ္။ စသည္ျဖင့္ေပါ့။ run ၾကည့္လိုက္ရင္ သိသြားမွာပါ။ ဒီေန႔ေတာ့ ဒီေလာက္နဲ႔ပဲ နားလိုက္ရေအာင္ဗ်ာ။ မရွင္းတာေမးခ်င္တာေတြအားလံုး ေကာမန္႔ ေပးခဲ႔ၾကပါေနာ္။

2 Comments »

  1. hello ! most of students are not clear about types of application.e.g. window applications , console application , web application , class libiary etc. please could u explain which application is what for and when we should use, and why and how to start ?
    Thanks a lot!!!

    Comment by Ma Nandar — July 26, 2009 @ 10:41 AM

    • thanks, for your comments and suggestion. i will post about it.

      Comment by sevenlamp — July 26, 2009 @ 2:10 PM


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

%d bloggers like this: