انواع عملگرها‌ در سی شارپ (C#)

09 تیر 1396
درسنامه درس 3 از سری آموزش سی شارپ (C#)
csharp-operators

با مطالعه‌ی دو فصل گذشته علاوه بر اجرای محیط نرم‌افزاری ویژوال استودیو به معرفی انواع داده در زبان برنامه‌نویسی سی شارپ پرداختیم. در صورتیکه دو فصل گذشته را مطالعه نکرده‌اید از طریق این لینک وارد صفحه دوره آموزشی سی شارپ شده و تمام آموزش‌ها را یکجا مطالعه بفرمایید. در این فصل می‌خواهیم به توضیح علمگرهای ریاضیاتی در زبان برنامه‌نویسی C# بپردازیم.

مقدمه

عملگرها در زبان برنامه‌نویسی به عنوان سمبل‌هایی هستند که به کامپایلر اطلاع می‌دهند عملیات ریاضیاتی خاصی را انجام دهد. زبان برنامه‌نویسی سی شارپ مجموعه‌ای از علمگرهای توکار (ساخته شده توسط خود زبان و شرکت ماکروسافت) را ارائه می‌دهد که در تقسیم‌بندی زیر قرار می‌گیرند:

  • عملگرهای ریاضی
  • عملگرهای رابطه‌ای
  • عملگرهای منطقی
  • عملگرهای بیتی
  • عملگرهای انتسابی
  • عملگرهای متفرقه

عملگرهای ریاضی

با ارائه‌ی یک مثال کاربردی این عملگر را توضیح خواهیم داد. فرض کنید مقدار A برابر ۱۰ و مقدار B برابر ۲۰ است آنگاه داریم:

Operator	Description	    Example
+		جمع		    A + B = 30
-		تفریق		    A - B = -10
*		ضرب		    A * B = 200
/		تقسیم		    B / A = 2
%		باقیمانده‌ی تقسیم    B % A = 0
++		یک واحد افزایش	    A++ = 11
--		یک واحد کاهش	    A-- = 9

عملگرهای رابطه‌ای

Operator	Description	        Example
==		تساوی دو مقدار	        (A == B) is not true.
!=		عدم تساوی دو مقدار	(A != B) is true.
>	        بزرگتر                  (A > B) is not true.
<	        کوچکتر          	(A < B) is true.
>=              بزرگتر مساوی    	(A >= B) is not true.
<=	        کوچکتر مساوی            (A <= B) is true.

عملگرهای منطقی

Operator	Description	   Example
&&	        AND                (A && B) is false.
||	        OR                 (A || B) is true.
!	        مخالف AND = OR     !(A && B) is true.

عملگرهای بیتی

این عملگرها روی بیت‌ها اعمال می‌شود و مشابه عملگرهای منطقی است فرض کنید دو بیت داریم به صورت ۰ و ۱ بنابراین برای جدول درستی آنها داریم:

p	q	p & q	p | q	p ^ q
0	0	  0	  0	  0
0	1	  0	  1	  1
1	1	  1	  1	  0
1	0	  0	  1	  1

برای اینکه یک مثال کاربردی تر خدمت شما عزیزان ارائه دهیم تصور کنید که A=60 و B=13 باشد آنگاه شکل باینری این دو عدد به همراه عملگرهای بیتی آن به صورت زیر خواهد بود:

A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A  = 1100 0011

همچنین در جدول زیر به صورت کامل این عملگرها را توضیح می‌دهیم. فرض کنید A=60 و B=13 آنگاه:

Operator	Description	Example
&		AND             (A & B) = 12, which is 0000 1100
|	        OR              (A | B) = 61, which is 0011 1101
^	        XOR             (A ^ B) = 49, which is 0011 0001 (بیت‌های یکسان صفر و بیت‌های متفاوت ۱ هستند)
~	        مخالف           (~A ) = 61, which is 1100 0011   (مقادیر ۰ برابر ۱ و مقادیر ۱ برابر ۰ هستند)
<<	        انتقال بیت به چپ A << 2 = 240, which is 1111 0000
>>	        انتقال بیت به راست A >> 2 = 15, which is 0000 1111

عملگرهای انتسابی

Operator     Description	Example
=	     تساوی	        C = A + B مقدار C = مجموع A+B
+=	     جمع تساوی          C += A برابر است با C = C + A
-=	     تفریق تساوی	C -= A برابر است با C = C - A
*=	     ضر ب تساوی 	C *= A برابر است با to C = C * A
/=	     تقسیم تساوی	C /= A برابر است با to C = C / A
%=	     باقیمانده تساوی	C %= A برابر است با to C = C % A
<<=	     انتقال به چپ مساوی	C <<= 2 برابر است با C = C << 2
>>=	     انتقال به چپ مساوی	C >>= 2 برابر است با C = C >> 2
&=	     دستور AND مساوی	C &= 2 برابر است با C = C & 2
^=	     دستور XOR مساوی	C ^= 2 برابر است با C = C ^ 2
|=	     دستور OR مساوی	C |= 2 برابر است با C = C | 2

عملگرهای متفرقه

گاهی برخی عملگرها در زبان سی شارپ به صورت تابع یا متد مورد استفاده قرار می‌گیرند که مطالعه‌ی آنها خالی از لطف نیست. برخی از آنها عبارتند از:

Operator	Description	                Example
sizeof()	دستیابی به سایز یک داده	        sizeof(int), returns 4.
typeof()	دستیابی به نوع یک داده	        typeof(StreamReader);
&	        دستیابی به آدرس یک متغییر	&a; returns actual address of the variable.
*	        اشاره به یک متغییر	        *a; creates pointer named 'a' to a variable.
? :	        عبارت شرطی IF	                If Condition is true ? Then value X : Otherwise value Y
is	        مشخص کردن اینکه یک شیء شامل یک نوع خاص است یا نه	If( Ford is Car) // checks if Ford is an object of the Car class.

اولویت عملگرهای C#

حال که عملگرهای زبان برنامه‌نویسی C# را فراگرفتید بهتر است اولویت این عملگرها را بدانیم یعنی اگر داخل یک عبارت مجموعه‌ای از این عملگرها قرار گرفت ابتدا کدامیک محاسبه می‌شوند:

Category	        Operator	                   Associativity
پسوندی   	        () [] -> . ++ - -	           Left to right
محاسباتی جمع تفریق	+ - ! ~ ++ - - (type)* & sizeof	   Right to left
ضرب  و تقسیم	        * / %	                           Left to right
جمع و تفریق	        + -	                           Left to right
انتقال 	                << >>	                           Left to right
رابطه‌ای          	< <= > >=	                   Left to right
تساوی	                == !=	                           Left to right
AND                    	&	                           Left to right
XOR	                ^	                           Left to right
OR	                |	                           Left to right
AND منطقی	        &&	                           Left to right
OR منطقی	        ||	                           Left to right
شرطی	                ?:	                           Right to left
انتسابی	                = += -= *= /= %=>>= <<= &= ^= |=   Right to left
کاما	                ,	                           Left to right

بسیار عالی! در این فصل با عملگرهای زبان برنامه‌نویسی C# آشنایی کامل پیدا کردید. این عملگرها در طول برنامه‌ی شما بسیار کاربردی بوده و همواره مورد استفاده قرار می‌گیرند لذا در فراگیری آنها دقت عمل به خرج دهید. در فصل بعدی به توضیح دستورهای تصمیم‌گیری شرطی و کنترلی می‌پردازیم. با ما همراه باشید.

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری آموزش سی شارپ (C#) توصیه می‌کند:
نویسنده شوید

دیدگاه‌های شما (2 دیدگاه)

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

مهدی
11 شهریور 1397
عالیه.فقط یکم توضیح بیشتر بدید؟

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

کیان
10 مرداد 1397
کارتون حرف نداره . فقط میشه یه پروژه هم با سی شارپ انجام بدید ؟

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.