در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش سی شارپ (#C) قسمت 9 : آشنایی با عملگرها

در قسمت های قبلی سری آموزشی سی شارپ، با انواع نوع های داده آشنا شدیم. در ادامه قصد داریم به بررسی انواع عملگرهای زبان سی شارپ بپردازیم. عملگرها، علامت هایی هستند که بر روی یک یا چند عبارت کار خاصی را انجام می دهند. برای مثال عملگر + در زبان سی شارپ برای جمع دو عدد یا پیوند دو رشته استفاده می شود. تعداد عملگرهای موجود بسیار زیادند که در این قسمت ما پنج دسته از عملگرها را بررسی خواهیم کرد و در انتها به بررسی حق تقدم عملگرها خواهیم پرداخت:

  1. عملگرهای محاسباتی
  2. عملگرهای رابطه ای
  3. عملگرهای منطقی
  4. عملگرهای بیتی
  5. عملگرهای انتساب

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

این عملگرها برای اعمال محاسبات ریاضی مانند جمع، تفریق و ... استفاده می شوند. در زیر به بررسی هر یک از عملگرها می پردازیم:

1. عملگر +: برای جمع دو عدد استفاده می شود:

int n1 = 10;
int n2 = 15;
int result = n1 + n2; // will give 25

int result2 = 23+10; // will give 33

2. عملگر -: عملیات تفریق را انجام می دهد:

int result = 23 - 13; will give 10

3. عملگر **: عملیات ضرب را انجام می دهد:

int result = 2 * 5; // will give 10

4. عملگر //: عملیات تقسیم را انجام می دهد:

int result = 18 / 2; // will give 9

در صورتی که عملوند دوم تقسیم صفر باید با خطای DivideByZero روبرو خواهیم شد. زیرا تقسیم بر صفر مجاز نمی باشد.

5. عملگر %: باقیمانده تقسیم دو عدد را برای ما بر می گرداند:

int result = 9 % 2; // will give 1

6. عملگر ++: این عملگر به مقدار موجود یک عدد اضافه می کند:

int num = 12;
num++; // will give 13

کد بالا معادل کد زیر است:

int num = 12;
num = num + 1;

7. عملگر --: این عملگر از مقدار موجود یک عدد کم می کند:

int num = 12;
num--; // will give 11

کد بالا معادل کد زیر است:

int num = 12;
num = num - 1;

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

در قسمت قبلی با نوع داده bool که مقدار true یا false را قبول می کرد آشنا شدیم. این عملگرها، برای مقایسه بین دو عبارت یا مقدار استفاده می شوند و نتیجه ای که بر می گردانند از نوع Boolean است. در این بخش فرض کنید دو متغیر تعریف کردیم با نام های num1 با مقدار 12 و num2 با مقدار 15. مثال های این بخش را بر روی این دو متغیر نشان خواهیم داد:

int num1 = 12;
int num2 = 15;

1. عملگر ==: این عملگر بررسی می کند که دو عبارت با هم برابر هستند یا خیر. در صورت برابر بودن مقدار true و در غیر اینصورت مقدار false بر می گرداند:

bool result1 = num1 == 12; // will give true
bool result2 = num2 == 18; // will give false

2. عملگر =!: این عملگر بررسی می کند که دو عبارت مخالف یکدیگر هستند یا خیر:

bool result1 = num1 != 12; // will give false
bool result2 = num2 != 10; // will give true

3. عملگر >: این عملگر در صورتی true بر میگرداند که عملوند سمت چپ کوچکتر از عملوند سمت راست باشد در غیر اینصورت مقدار false بر می گرداند:

bool result = num1 < num2; // will give true

3. عملگر =>: این عملگر در صورتی true بر میگرداند که عملوند سمت چپ کوچکتر یا مساوی عملوند سمت راست باشد در غیر اینصورت مقدار false بر می گرداند:

bool result1 = num1 <= num2; // will give true
bool result2 = num2 >= 18; // will give false

4. عملگر <: این عملگر در صورتی true بر میگرداند که عملوند سمت چپ بزرگتر از عملوند سمت چپ باشد:

bool result = num1 > num2; // will give false

5. عملگر =<: این عملگر در صورتی true بر میگرداند که عملوند سمت چپ بزرگتر یا مساوی از عملوند سمت راست باشد:

bool result1 = num1 >= num2; // will give false

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

در بخش قبلی در مورد عملگرهای رابطه ای توضیح دادیم که بر اساس عملگر انتخابی مقدار boolean بر می گرداندند. در این قسمت در مورد عملگرهای منطقی توضیح خواهیم داد. این نوع عملگرها بر روی نوع های boolean اعمال می شوند. یعنی عملوندهای مورد استفاده باید از نوع Boolean بوده یا مقدار Boolean بر گردانند.

1. عملگر &&: این عملگر یا AND در صورتی مقدار True بر می گرداند که هر دو عملوند مقدار true بر گردانند:

var result = num1 > 10 && num2 < 20; // will give true

دقت کنید که num1 بزرگتر از 10 می باشد، پس نتیجه true است، همچنین num2 کوچکتر از 20 است، پست نتیجه این بخش هم true است، و true && true مقدار true بر می گرداند. حالت های مختلف && را زیر مشاهده می کند:

true && true => true
true && false => false
false && true => false
false && false => false

2. عملگر ||: این عملگر یا OR در صورتی مقدار True بر می گرداند که یکی از عملوندها نتیجه true داشته باشد:

var result = num1 > 10 || num2 > 20; // will give true

دقت کنید که num1 بزرگتر از 10 می باشد، پس نتیجه true است، اما num2 بزرگتر از 20 نیست، پست نتیجه این false است، در نتیجه true

آموزش سی شارپ (#C) قسمت 9 : آشنایی با عملگرها
را زیر مشاهده می کند:

true || true => true
true || false => true
false || true => true
false || false => false

3. عملگر !: این عملگر یا NOT، نتیجه یک عبارت Boolean را برعکس می کند، یعنی اگر یک عبارت نتیجه true برگرداند، این عملگر نتیجه را به false تبدیل می کند:

var r1 = !(num1 > 10); // will give false
var r2 = !(num2 > 20); // will give true

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

این عملگرها، بر روی بیت ها اعمال می شوند. یعنی عملیات مربوط به عملگر به صورت بیت به بیت انجام می شود. در سیستم باینری، عبارات به صورت اعداد 0 و 1 نمایش داده می شوند. به هر یک از این اعداد یک بیت گفته می شود. دو عدد 2 و 6 را فرض کنید، عدد 2 معادل بانتری 010 و عدد 6 معادل باینری 110 می باشد. بر اساس بیت های معادل، یک نتیجه معادل خواهند داشت. در ادامه به بررسی انواع عملگرهای بیتی خواهیم پرداخت:

1. عملگر &: در قسمت عملگرهای رابطه ای در مورد عملگر && صحبت کردیم و گفتیم در صورتی که هر دو طرف عملگر true باشند، خروجی true خواهد بود. حال، برای عملگر & در صورتی که هر دو بیت 1 باشند، خروجی 1 خواهد بود. در غیر اینصورت خروجی 0 خواهد شد. نام این عملگر AND می باشد. مثال را مبتنی بر معادل باینری اعداد 2 و 6 که در بالا در مورد آنها صحبت کردیم، بررسی خواهیم کرد:

2 = 0 1 0
6 = 1 1 0
& = 0 1 0

همانطور که مشاهده می کنید، تنها بیت وسط یا دوم که هر دو بیت 1 هستند، 1 شده و در نتیجه خروجی ما، عدد 2 خواهد بود. کد سی شارپ:

int num1 = 2;
int num2 = 6;
int result = num1 & num2; // will give 2

2. عملگر |: نام دیگر این عملگر OR می باشد و خروجی آن، در صورتی که یکی از بیت ها معادل 1 باشد، 1 خواهد بود، در غیر اینصورت بیت نتیجه 0 خواهد شد:

2 = 0 1 0
6 = 1 1 0
| = 1 1 0

همانطور که مشاهده می کنید، نتیجه OR بیت های سوم و دوم که1 هستند، 1 شده و در نتیجه خروجی ما، عدد 6 خواهد بود. کد سی شارپ:

int num1 = 2;
int num2 = 6;
int result = num1 | num2; // will give 6

3. عملگر ^: نام دیگر این عملگر XOR می باشد و بیت خروجی در صورتی 1 خواهد بود که بیت های معادل با یکدیگر تفاوت داشته باشند:

2 = 0 1 0
6 = 1 1 0
^ = 1 0 0

کد سی شارپ:

int num1 = 2;
int num2 = 6;
int result = num1 ^ num2; // will give 4

سایر عملگر های بیتی به صورت خلاصه عبارتند از:

  1. عملگر ~: کار مکمل یک در سیستم باینری را انجام می دهد.
  2. عملگر >>: عملیات شیفت به چپ را انجام می دهد.
  3. عملگر <<: عملیات شیفت به راست را انجام می دهد.

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

در قسمت تعریف متغیرها، اشاره کردیم که با تعریف یک متغیر، می توان مقداری را داخل آن ذخیره کرد:

var num = 12;

عملگرهای انتساب جهت ریختن مقدار داخل یک متغیر و یا تغییر مقدار آن استفاده می شوند. در این قسمت به بررسی عملگرهای انتساب خواهیم پرداخت:

1. عملگر =: عملیات انتساب ساده را انجام می دهد. یعنی مقدار سمت راست را داخل عملوند سمت چپی قرار می دهد که نمونه آن را در مثال بالا دیدیم.

2. عملگر =+: این عملگر، مقدار سمت را به مقدار موجود عملوند سمت چپ اضافه کرده و نتیجه را داخل عملوند سمت چپ میریزد:

var num = 12;
num += 3; // will give 15 => num = num + 3

3. عملگر =-: این عملگر، مقدار سمت را از مقدار موجود عملوند سمت چپ کم کرده و نتیجه را داخل عملوند سمت چپ میریزد:

var num = 12;
num -= 3; // will give 9 => num = num - 3

4. عملگر =**: این عملگر، مقدار سمت را در مقدار موجود عملوند سمت چپ ضرب کرده و نتیجه را داخل عملوند سمت چپ میریزد:

var num = 12;
num *= 2; // will give 24 => num = num * 2

5. عملگر =//: این عملگر، مقدار سمت را از مقدار موجود عملوند سمت چپ تقسیم کرده و نتیجه را داخل عملوند سمت چپ میریزد:

var num = 12;
num /= 2; // will give 6 => num = num / 2

6. عملگر =%: این عملگر، باقیمانده تقسیم عملوند سمت چپ بر مقدار سمت راست را در عملوند سمت چپ میریزد:

var num = 9;
num %= 2 ==> will give 1 => num = num % 2;

سایر عملگرهای انتسابی به شرح زیر می باشند:

  1. عملگر =>>: شیفت به چپ و انتساب
  2. عملگر =<<: شیفت به راست و انتساب
  3. عملگر =&: انجام عملیات AND بیتی و انتساب
  4. عملگر =|: انجام عملیات OR بیتی و انتساب
  5. عملگر =^: انجام عملیات XOR بیتی و انتساب

حق تقدم عملگرها

یکی از مباحثی که زمان نوشتن برنامه ها، باید به آن خیلی توجه کرد حق تقدم عملگرها می باشد. در عبارتی که چندین عملگر در آن استفاده شده باشد، انجام عملیات ها بر اساس حق تقدم عملگر ها انجام می شود. برای مثال، عبارت زیر را در نظر بگیرید:

var result = 2 + 2 * 0;

جوب شما به نتیجه عبارت بالا چیست؟ شاید 0، شایدم 2! اما نتیجه صحیح کدام است؟ عدد 2 نتیجه عبارت بالا می باشد. زیر حق تقدم عملیات ضرب بالاتر از عملیات جمع است، پس ابتدا عملیات ضرب انجام شده و نتیجه با عدد دو جمع می شود. اما فرض کنید عبارت بالا را به صورت زیر تغییر دادیم:

var result = (2 + 2) * 0;

با تغییر بالا، نتیجه عبارت 0 خواهد بود. زیرا حق تقدم عبارت داخل پرانتز، بیشتر از ضرب می باشد، پس ابتدا عدد 2 با عدد 2 جمع شده و سپس نتیجه در 0 ضرب می شود.

در زیر حق تقدم ها را مشاهده می کنید. حق تقدم ها از درجه زیاد به کم نوشته شده اند. همچنین توجه کنید در هر سطر حق تقدم ها از چپ به راست می باشند:

() , []
! , ~ , ++ , --
* , / , %
+ , -
<< , >>
< , <= , > , >=
== , !=
& , ^ , | , && , ||

در این بخش با انواع عملگرها در زبان سی شارپ و حق تقدم ها آشنا شدیم. در بخش بعدی با دستورات کنترلی، حلقه ها و شرط ها آشنا خواهیم شد.

نویسنده : حسین احمدی

منبع : جزیره برنامه نویسی وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است

#آموزش_زبان_سی_شارپ #حق_تقدم_عملگرها #آموزش_برنامه_نویسی #عملگرها_در_زبان_های_برنامه_نویسی #عملگرهای_زبان_سی_شارپ #عملگرهای_بیتی_در_زبان_های_برنامه_نویسی
عنوان
1 آموزش سی شارپ (#C) قسمت 1 : مقدمه رایگان
2 آموزش سی شارپ (#C) قسمت 2 : ابزارهای مورد نیاز دوره رایگان
3 آموزش سی شارپ (#C) قسمت 3 : آشنایی با .NET Framework یک رایگان
4 آموزش سی شارپ (#C) قسمت 4 : آشنایی با .NET Framework دو رایگان
5 آموزش سی شارپ (#C) قسمت 5 : آشنایی با محیط ویژوال استودیو رایگان
6 آموزش سی شارپ (#C) قسمت 6 : ساختار برنامه ها و کامپایلر سی شارپ رایگان
7 آموزش سی شارپ (#C) قسمت 7 : دستورات کنسول و متغیرها رایگان
8 آموزش سی شارپ (#C) قسمت 8 : نوع های داده اولیه رایگان
9 آموزش سی شارپ (#C) قسمت 9 : آشنایی با عملگرها رایگان
10 آموزش سی شارپ (#C) قسمت 10 : دستورات کنترلی و حلقه ها یک رایگان
11 آموزش سی شارپ (#C) قسمت 11 : دستورات کنترلی و حلقه ها دو رایگان
12 آموزش سی شارپ (#C) قسمت 12 : دستورات کنترلی و حلقه ها سه رایگان
13 آموزش سی شارپ (#C) قسمت 13 : دستورات کنترلی و حلقه ها چهار رایگان
14 آموزش سی شارپ (#C) قسمت 14 : آشنایی با آرایه ها و دستور For Each رایگان
15 آموزش سی شارپ (#C) قسمت 15 : آشنایی با متدها یک رایگان
16 آموزش سی شارپ (#C) قسمت 16 : آشنایی با متدها دو رایگان
زمان و قیمت کل 0″ 0
6 نظر
مهران سیفعلی نیا

سلام خیلی خیلی آموزشهاتون عالی و به زبان قابل فهم بیان شده و خیلی تاثیر مثبتی برای من داشته.

یک سوالی برای من پیش اومده(البته ببخشید ها من هر قسمت رو که میخونم کلی سوال برام پیش میاد.)

شما در قسمت عملگرهای رابطه ای گفتید که :

int num1 = 12;
int num2 = 15;

بعد در قسمت پایینتر بیان کردید:

bool result1 = num1 <= num2; // will give true
bool result2 = num2 <= 18; // will give false

خب num2 برابر با 15 هست و کوچکتر از 18 پس جواب قسمت دوم هم باید True بشه.ولی شما نوشتید False.

آیا دلیل خاصی داره یا یک اشتباهه؟ یا من بد متوجه شدم؟

همچنین در قسمت دوم عملکردهای منطقی نوشتید:"نتیجه true && false مقدار true بر می گرداند." که فکر کنم به جای && باید || را بنویسید.

حسین احمدی

سلام مهران جان، ممنون از لطفت. بخش هایی که گفته بودی اشتباه بود و داخل متن اصلاح شد. از تذکرت ممنون.

hamideh smi

باسلام، کارایی این عملگرهای شیفت به چپ و یا شیفت به راست دقیقا چیه؟(چه زمانی استفاده میشه؟)

حسین احمدی

سلام و عرض ادب، بنده تا این لحظه از این عملگرها استفاده نکردم، اما تا جایی که اطلاع دارم تو Game Programming و پردازش تصاویر کاربرد زیادی داره.

سیدعلی علوی

سلام خدمت استاد عزیز جناب احمدی

با تشکر فراوان از مقالات خوبتون. در بخش ابتدایی این مقاله کلمه " انتساب" به اشتباه " انتصاب" درج شده. اونجایی که نوشته شده : " 5. عملگرهای انتصاب ". البته در جاهای دیگه ی مقاله درست نوشته شده.

حسین احمدی

ممنون از تذکرتون، اصلاح شد :)

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....