دستورات if تودرتو :
علاوه بر استفاده متوالي از دستورات if، مي توانيد در داخل يك if از دستورات if ديگري استفاده كنيد . بـه مثـال زيـر توجـه
كنيد :
if (intX > 3)
{
MessageBox.Show(“intX is greater that 3”,
“Sample If”);
if (intX == 6)
MessageBox.Show(“intX is 6!”, “Sample If”);
}
در استفاده از دستورات if تودرتو هيچ محدوديتي نيس ت. البته بايد دقت كنيد كه هر چه تعـداد ifهـاي تودرتـو در برنامـه بيـشترباشد، درك آن مشكلتر مي شود. بنابراين سعي كنيد تا جايي كه ميتوانيد تعداد ifهاي تودرتو را در برنامه كم كنيد .
عملگرهاي مقايسه اي :
در قسمتهاي قبلي، نحوه بررسي برابر بودن يك متغيير را با مقادي ر مختلف براي استفاده در شرط يك دستور if ديديم. امـا دسـتورif بسيار انعطاف پذير تر است . شما ميتوانيد براي شرط اين دستور از سوالهايي مثل موارد زير استفاده كنيد كه پاسخ همه آنها بله ياخير است :
- آيا intNumber بزرگتر از 49 است؟
- آيا intNumber كوچكتر از 49 است؟
- يا آ intNumber بزرگتر يا مساوي 49 است؟
- آيا intNumber كوچكتر يا مساوي 49 است؟
- آيا strName برابر با Ben است؟
هنگام كار با متغيير هاي رشته اي، معمولا از شرطهاي برابر بودن يا مخالف بودن استفاده ميكنيد . اما هنگام كار با متغيير هاي عددي(چه اعداد صحيح و چه اعداد اعشاري) مي توانيد از تمام عملگر هاي رياضي كه در بالا ذكر شد استفاده كنيد .
استفاده از عملگر مخالف :
تاكنون از عملگر مخالف استفاده نكرده ايم . بنابراين در امتحان كنيد بعد نحوه اسـتفاده از ايـن عملگـر را بـا متغييـر هـاي رشـته ايخواهيم ديد .
)1 يك برنامه تحت ويندوز جديد به نام If Demo ايجاد كنيد .
)2 هنگامي كه محيط طراحي Form1 را مشاهده كرديد، يك كنتـرل TextBox و يـك كنتـرل Button را بـهوسيله جعبه ابزار بر روي فرم قرار دهيد . خاصيت Name كنترل TextBox را برابـر بـا txtName و خاصـيتText آن را ب رابر با Robbin قرار دهيد . سپس خاصيت Name كنترل Button را برابر btnCheck وخاصيت Text آن را برابر Check قرار دهيد.
)3 روي Button دو بار كليك كنيد و كد زير را در بخش رويداد Click مربوط به آن قرار دهيد:
private void btnCheck_Click(object sender, EventArgs e)
{
// Declare a variable and
// get the name from the text box
string strName;
strName = txtName.Text;
// Is the name Gretchen?
if (strName != “Gretchen”)
MessageBox.Show(“The name is *not* Gretchen.”,
“If Demo”);
}
)4 برنامه را اجرا كنيد و روي د كمه Check كليك كنيد. كادر پيغامي را مشاهده خواهيد كرد كه ميگويد نـام داخـل جعبـهمتني برابر با Gretchen نيست .
عملگر مخـالف در زبـان #C بـه صـورت =! اسـت . هنگـامي كـه كـاربر روي دكمـه فرمـان كليـك مـي كنـد، اول مـتن درونTextBox به وسيله خاصيت Text آن بدست آورده مي شود و درون يك متغيير رشته اي قرار مي گيرد .
// Declare a variable and
// get the name from the text box
string strName;
strName = txtName.Text;
بعد از اينكه نام وارد شده در متغيير قرار گرفت، با استفاده از عملگر مخالف مقدار درون متغيير رش ته اي با يك عبارت رشته اي ديگـرمقايسه شده و نتيجه اين مقايسه براي اجراي دستورات if استفاده مي شود .
// Is the name Gretchen?
if (strName != “Gretchen”)
MessageBox.Show(“The name is *not* Gretchen.”,
“If Demo”);
همانطور كه گفتيم، دستورات درون بلاك if فقط در صورتي اجرا مي شوند كه نتيجه داخل پرانتز برابر بـا true باشـد . ممكـناست عملگر مخالف در ابتدا مقداري گيج كننده به نظر برسد، اما توجه كنيد سوالي كه در اين قسمت پرسيده ميشود اين است كه “آيامقدار strName مخالف Gretchen است؟ “. در اين حالت پاسـخ بـه صـورت “بلـه، مقـدار strName مخـالف بـاGretchen است ” خواهد بود . بنابراين پاسخ اين سوال به صورت بله است كه true ارزيابي ميـشود . دقـت كنيـد كـه اگـرمقدار Gretchen را در TextBox وارد كنيد، مقدار شرط برابر با غلط خواهد بود و دستورات بلاك if اجرا نخواهند شد .
نكته: اگر مي خ واهيد متن Gretchen را در TextBox وارد كنيد، توجه كنيد كه حتما اين متن به همان صـورت كـه دركد بررسي مي شود نوشته شود (در اينجا با G بزرگ). زيرا بررسي شرط در اين قسمت به صورت حساس به حروف انجام مي شـود واگر فرضاً عبارت gretchen را وارد كنيد، دو مقدار برابر نخواهد بود و مجددا كادر متني نمايش داده خواهد شد .
نكته: علامت ! در #C براي معكوس كردن مقدار يك شرط به كار مي رود . بنابراين اگر حاصل شرطي برابر بـا true باشـد وقبل از آن از عملگر ! استفاده كنيد، نتيجه برابر false ارزيابي مي شود . براي مثال اگر مقـدار متغييـر strName برابـر بـاRobbin باشد، حاصل عبارت زير false خواهد بود :
if (!(strName == “Robbin”))
به عبارت ديگر عملگر مخالف در برنامه بالا را مي توان به صورت زير نوشت :
if (!(strName == “Gretchen”))
