سلام عرض میکنم خدمت دوستان
محمد احمدی هستم . با جلسه پنجم آموزش برنامه نویسی به زبان سی شارپ در خدمتتون هستم .
جلسه قبل چهار دسته از عملگرها رو به شرح زیر نام بردیم و دو دسته اول رو توضیح دادیم :
- عملگرهای محاسباتی
- عملگرهای ترکیبی
- عملگرهای رابطه ای ( مقایسه ای )
- عملگرهای منطقی و بیتی
خب قبل ازچیز باید بگم که عملگرهای دیگه ای هم هست . مثل عملگر شرطی که امشب توضیح میدیم !
پس به موارد بالا یک مورد دیگه هم اضافه میکنیم :
- عملگر شرطی
دسته ی بعدی از عملگرها که امشب قراره توضیح بدم عملگرهای مقایسه ای هستن .
عملگرهای مقایسه ای :
- > بزرگتر
- >= بزرگتر یا مساوی
- < کوچکتر
- <= کوچکتر یا مساوی
- == مساوی ( دقت کنید دوتا مساوی هست )
- != نا مساوی
با استفاده از این عملگرها میتونیم مقادیر رو با هم مقایسه کنیم . مثلا میتونیم دو عدد رو با هم مقایسه کنیم تا عدد بزرگتر یا کوچکتر رو بدست بیاریم ! یا اینکه یک نام کاربری و یک کلمه عبور از کاربر دریافت کنیم و اگه با نام کاربری و کلمه عبوری که ما توی سیستم تعریف کردیم یکی بود , اجازه بدیم کاربر وارد برنامه بشه !
یک مثال دیگه : میتونیم توی یک سیستم حقوق و دستمزد , برحسب تعداد فرزندان و سن و مدرک تحصیلی اشخاص ( که توی سیستم قرار داره ) حقوق هر کارمند رو بیشتر یا کمتر کنیم !
نکته مهم : دقت کنید که توی عملگرهای ( بزرگتر مساوی , کوچکتر مساوی , نامساوی ) همیشه علامت = بعد از علامت ها ( < , > , ! ) قرار میگیره !
مثال :
x > y
4 < 2
5 == y
x != 3
z >= q
خب این ها فقط مثال هستن و تا وقتی که ما عملگر یا دستورات شرطی رو ندونیم یک جورایی به کارمون نمیاد .
عملگر شرطی ? :
با استفاده از این عملگر میتونید دو عبارت رو مقایسه کنیم و به ازای صحیح یا غلط بودن مقداری رو به یک متغیر انتساب بدیم .
ساختار عملگر شرطی ? :
var = (Condition) ? True : False ;
عملگر شرطی ? به این صورت عمل میکنه که عبارت Condition رو بررسی و مقایسه میکنه ( مثلا x>y ) . اگه نتیجه مقایسه صحیح باشه مقدار بعد از علامت سوال ? رو توی متغیر var قرار میده و اگه غلط باشه , مقدار بعد از دونقطه : رو توی متغیر var قرار میده !
( شاید خوب متوجه نشده باشید . با یک مثال بهتر متوجه میشید )
مثال : برنامه ای بنویسید که دو متغیر عددی را بررسی کند و عدد بزرگتر را به کاربر نمایش دهد .
جواب :
int x = 10, y = 20, max;
max = (x > y) ? x : y;
MessageBox.Show(max);
توی برنامه بالا اگه مقدار x بزرگتر باشه , مقدار x رو توی max قرار میده و اگر x کوچکتر باشه مقدار y رو توی max میریزه !
میخوام قبل از اینکه عملگرهای منطقی و بیتی رو بگم میخوام دستورات شرطی رو بگم.
دستورات شرطی :
دستورات شرطی تقریبا ( تقریبا ) کار عملگر شرطی رو انجام میدن . با این تفاوت که دستورات شرطی کامل تر هستن و قدرت بیشتری رو به ما میدن
ساختاردستور شرطی if :
ساختار اول :
if(condition)
Code;
یا
if(Condition)
{
Code;
Code;
. . . ;
}
خب اگه دقت کنید دو مثال هست که به مثال اول دستور شرطی خطی و به مثال دوم دستور شرطی بلاکی گفته میشه .
وقتی که بعد از هر شرط تنها یک دستور رو میخوایم اجرا کنیم از دستور شرطی خطی استفاده میکنیم . در واقع اگه مقدار شرط درون if صحیح باشه , اولین دستور اجرا میشه و اگه غلط باشه اجرا نمیشه !!
نکته : وقتی که میخوایم یک شرط با چند دستور بنویسیم , دستورات رو درون بلاک مینویسیم . شروع و پایان بلاک باید با { و } مشخص بشه !
ساختار دوم :
if (Condition)
Code;
else
Code;
یا
if (Condition)
{
Code;
Code;
. . . ;
}
else
{
Code;
Code;
. . . ;
}
توی ساختار اول فقط یک یا چند شرط بررسی میشه و اگه شرط درست بود خط یا بلاک بعد از if اجرا میشه و اگر غلط بود هیچ دستوری اجرا نمیشه و کدهای بعد از خط یا بلاک if اجرا میشه !
یک وقت هایی هست که ما میخوایم یک شرط رو بررسی کنیم و در صورت صحیح بودن یک سری دستورات و در صورت غلط بودن یک سری دستورات دیگه رو اجرا کنیم !
اگه بخوایم همون مثال نام کاربری و کلمه عبور رو یک مقدار کامل تر کنیم اینطوری پیش میریم : اگه نام کاربری درست بود که برنامه رو برای کاربر اجرا میکنیم و اگه غلط بود , یک پیغام مناسب مبنی بر غلط بودن یوزر یا پسورد به کاربر نشون میدیم .
پس اینجا ساختار دوم به کارمون میاد . توی ساختار دوم در صورتی که شرط صحیح باشه , خط یا بلاک بعد از if اجرا میشه و در صورتی که شرط غلط باشه , خط یا بلاک بعد از else اجرا میشه
ساختار سوم :
if (Condition)
Code;
elseif (Condition2)
Code;
elseif (Condition2)
Code;
else
Code;
یا
if (Condition)
{
Code;
Code;
. . . ;
}
elseif (Condition2)
{
Code;
Code;
. . . ;
}
elseif (Condition2)
{
Code;
Code;
. . . ;
}
else
{
Code;
Code;
. . . ;
}
اگه ما بخوایم یک یا چند شرط رو بررسی کنیم و در صورت صحیح یا غلط بودن یک سری کد رو اجرا کنیم میتونیم از ساختار های اول و دوم استفاده کنیم .
ولی اگه بخوایم در صورت غلط بودن شرط اول , یک یا چند شرط دیگه رو بررسی کنیم , باید از ساختار سوم استفاده بشه .
یک مثال میزنم : فرض کنید میخوایم یک نمره رو از کاربر دریافت کنیم و بررسی کنیم که توی کدوم یکی از رنج های ( بد , متوسط , خوب , عالی ) هست . اینجا به چندتا بررسی مختلف نیاز داریم . یعنی اگه نمره بین 0 تا 10 بود پیغام "بد" و اگه بین 10 تا 14 بود پیغام " متوسط " و اگه بین 14 تا 17 بود " خوب " و در نهایت اگه بین 17 تا 20 بود پیغام "عالی" به کاربر نشون داده بشه . اگه نمره زیر 0 و یا بیشتر از 20 بود هم باید پیغامی مبنی بر اینکه عدد اشتباه وارد شده به کاربر نشون داده بشه
اگه بخوایم مثال بالا رو بصورت کد ببینیم :
if (x < 0)
MessageBox.Show("عددواردشده صحیح نمیباشد !");
elseif (x <= 10)
MessageBox.Show("بد");
elseif (x <= 14)
MessageBox.Show("متوسط");
elseif (x <= 17)
MessageBox.Show("خوب");
elseif (x <= 20)
MessageBox.Show("عالی");
else
MessageBox.Show("عددواردشده صحیح نمیباشد !");
فعلا برای این جلسه کافی هست . عملگرهای منطقی و بیتی رو توی جلسه بعد خدمتتون توضیح میدم .