درخواست های ارتباط
جستجو
لیست دوستان من
صندوق پیام
همه را دیدم
  • در حال دریافت لیست پیام ها
صندوق پیام
رویدادها
همه را دیدم
  • در حال دریافت لیست رویدادها
همه رویدادهای من
تخفیف های وب سایت
همه تخفیف ها

عضویت در

کانال تلگرام

توسینسو

اطلاعات مطلب
مدرس/نویسنده
حسین احمدی
امتیاز: 215942
رتبه:3
344
265
416
2833
حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ... پروفایل کاربر

آموزش زبان سی شارپ - قسمت هفتم :: آشنایی با عملگرهای زبان سی شارپ

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

  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
آموزش زبان سی شارپ - قسمت هفتم :: آشنایی با عملگرهای زبان سی شارپ
را زیر مشاهده می کند:

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 دوره آموزشی .NET Framework و زبان برنامه نویسی سی شارپ - مقدمه
2 آموزش سی شارپ - قسمت اول :: معرفی و بررسی ابزارهای مورد نیاز دوره
3 آموزش زبان سی شارپ - قسمت دوم :: آشنایی با .NET Framework و ساختار آن (بخش اول)
4 آموزش زبان سی شارپ - قسمت دوم :: آشنایی با .NET Framework و ساختار آن (بخش دوم)
5 آموزش زبان سی شارپ - قسمت سوم :: آشنایی اولیه با محیط Visual Studio و نوشتن اولین برنامه
6 آموزش زبان سی شارپ - قسمت چهارم :: آشنایی با ساختار برنامه ها و کامپایلر زبان سی شارپ
7 آموزش زبان سی شارپ - قسمت پنجم :: آشنایی با دستورات کنسول و متغیرها
8 آموزش زبان سی شارپ - قسمت ششم :: نوع های داده اولیه
9 آموزش زبان سی شارپ - قسمت هفتم :: آشنایی با عملگرهای زبان سی شارپ
10 آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش اول)
11 آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش دوم)
12 آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش سوم)
13 آموزش زبان سی شارپ - قسمت هشتم :: آشنایی با دستورات کنترلی و حلقه ها (بخش چهارم)
14 آموزش زبان سی شارپ - قسمت نهم :: آشنایی با آرایه ها و دستور foreach
15 آموزش زبان سی شارپ - قسمت دهم :: آشنایی با متدها در زبان سی شارپ (بخش اول)
16 آموزش زبان سی شارپ - قسمت دهم :: آشنایی با متدها در زبان سی شارپ (بخش دوم)
17 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت یازدهم :: مقدمه ای بر برنامه نویسی شئ گرا
18 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت دوازدهم :: آشنایی با کلاس، اشیاء و فضاهای نام
19 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت سیزدهم :: آشنایی با فیلدها و رفتارها
20 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت چهاردهم :: آشنایی با Property ها
21 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت پانزدهم :: آشنایی با سازنده ها و روش های ایجاد اشیاء
22 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت شانزدهم :: وراثت یا Inheritance
23 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت هفدهم :: آشنایی با مفهوم Polymorphism
24 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت هجدهم:: کلاس های abstract و sealed
25 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت نوزدهم :: سازنده ها در وراثت، کلمه کلیدی protected و فیلدهای readonly
26 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیستم :: کلاس های static و partial و Extension Method ها
27 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیست و یکم :: Reference Types و Value Types
28 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیست و دوم :: آشنایی با کاربرد interface ها
29 آموزش برنامه نویسی شئ گرا در زبان سی شارپ - قسمت بیست و سوم :: آشنایی با مفاهیم Inversion of Control و Dependency Injection
30 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و چهارم :: آشنایی با مفهوم Type Casting و انواع Cast ها
31 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و پنجم :: آشنایی با operator overloading و تعریف cast ها
32 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و ششم :: مفاهیم boxing و unboxing
33 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و هفتم :: قابلیت Generics
34 آموزش برنامه نویسی شئ گرا در زبان سی شارپ -قسمت بیست و هشتم :: نکات تکمیلی Generic ها، کلاس List و کلاس Dictionary
35 آموزش زبان سی شارپ -قسمت بیست و نهم (پایانی): استثناء ها (Exceptions) و مدیریت خطاها در سی شارپ
دوره مجموعه کل دوره
مطالب مرتبط

در حال دریافت اطلاعات

نظرات
  • سلام خیلی خیلی آموزشهاتون عالی و به زبان قابل فهم بیان شده و خیلی تاثیر مثبتی برای من داشته.
    یک سوالی برای من پیش اومده(البته ببخشید ها من هر قسمت رو که میخونم کلی سوال برام پیش میاد.)
    شما در قسمت عملگرهای رابطه ای گفتید که :
    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 بر می گرداند." که فکر کنم به جای && باید || را بنویسید.
  • سلام مهران جان، ممنون از لطفت. بخش هایی که گفته بودی اشتباه بود و داخل متن اصلاح شد. از تذکرت ممنون.
  • باسلام، کارایی این عملگرهای شیفت به چپ و یا شیفت به راست دقیقا چیه؟(چه زمانی استفاده میشه؟)
  • سلام و عرض ادب، بنده تا این لحظه از این عملگرها استفاده نکردم، اما تا جایی که اطلاع دارم تو Game Programming و پردازش تصاویر کاربرد زیادی داره.
  • سلام خدمت استاد عزیز جناب احمدی
    با تشکر فراوان از مقالات خوبتون. در بخش ابتدایی این مقاله کلمه " انتساب" به اشتباه " انتصاب" درج شده. اونجایی که نوشته شده : " 5. عملگرهای انتصاب ". البته در جاهای دیگه ی مقاله درست نوشته شده.
  • ممنون از تذکرتون، اصلاح شد :)

برای ارسال نظر ابتدا به سایت وارد شوید