دستور Else در #C
اگر بخواهيد در صورت درست بودن شرط قسمتي از برنامه و در صورت غلط بودن آن قسمتي ديگر اجرا شـود، مـي توانيـد از دسـتورelse استفاده كنيد. در امتحان كنيد زير مي توانيد نحوه كاربرد اين دستور را مشاهده كنيد .
)1 كد درون رويداد Click مربوط به كنترل btnAnotherIf را به صورت زير تغيير دهيد :
private void btnAnotherIf_Click(object sender,
EventArgs e)
{
// Declare and set a variable
int intNumber = 27;
// Here’s where you make a decision,
// and tell the user what happened
if (intNumber == 1000)
{
MessageBox.Show(“‘intNumber’ is, indeed, ” +
“1000!”, “Simple If”);
}
else
{
MessageBox.Show(“‘intNumber’ is not 1000!”,
“Simple If”);
}
}
)2 برنامه را اجرا كنيد و روي دكمه Another If كليك كنيد. كادر پيغامي مشابه شكل 4-2 را مشاهده خواهيد كرد .
كدي كه در بلاك else وارد شده است، فقط در صورتي اجرا مي شود كه عبارت درون پرانتز if نادرست باشد . در ايـن حالـت،مقدار intNumber برابر با 27 است، اما چون در شرط با عدد 1000 مقايسه شده است بنابراين شرط غلط اسـت و كـد نوشـتهشده در بخش else اجرا خواهد شد :
else
{
MessageBox.Show(“‘intNumber’ is not 1000!”,
“Simple If”);
}
بررسي چند شرط با else if :
اگر مي خواهيد بيش از يك حالت را تست كنيد، بايد از تركيب دستور else و if استفاده كنيد. در امتحان كنيـد بعـدي، برنامـهSimple If را به نحوي تغيير مي دهيم كه برابري intNumber را با چند عدد مختلف بررسي كند و نتيجه را نمايش.دهد
)1 كد درون متد btnAnotherIf_Click را به صورت زير تغيير دهيد :
private void btnAnotherIf_Click(object sender,
EventArgs e)
{
// Declare and set a variable
int intNumber = 27;
// Here’s where you make a decision,
// and tell the user what happened
if (intNumber == 1000)
{
MessageBox.Show(“‘intNumber’ is, indeed, ” +
“1000!”, “Simple If”);
}
else if (intNumber == 27)
{
MessageBox.Show(“‘intNumber’ is 27!”,
“Simple If”);
}
else
{
MessageBox.Show(“‘intNumber’ is neither 1000” +
” nor 27!”, “Simple If”);
}
}
)2 برنامه را اجرا كنيد و روي دكمه فرمان Another If كليك كنيد. كادر پيغامي مشابه شكل 4-3 را خواهيد ديد .
در اين برنامه دستورات بخش else if اجرا مي شوند، زيرا intNumber برابر با عدد 27 است و بنابراين عبارت داخـلelse if درست خواهد ب . ود توجه داشته باشيد كه اگر شرط داخل else if نيز غلط بود، كدهاي بخـش else اجـرامي شدند .در يك سري دستورات if و else if متوالي، شرايط از بالاترين if به سمت پايين بررسي مي شوند و اولين عبـارتي كـهدرست ارزيابي شد، دستورات مربوط به آن اجرا مي شوند . پس در برنامه قبل اگر شرط اول را به گونه اي تنظيم كنيم كه درست باشد(براي مثال داخل پرانتز عبارت intNumber > 10 را قرار دهيم كه به علت بزرگتر بودن intNumber از 10 برابـربا true است )، با وجود اينكه شرط دوم هم درست است دستورات شرط اول اجرا مي شوند و كنترل برنامه بـه اولـين خـط بعـد ازسري دستورات if مي رود .
else if (intNumber == 27)
{
MessageBox.Show(“‘intNumber’ is 27!”,
“Simple If”);
}
else
{
MessageBox.Show(“‘intNumber’ is neither 1000” +
” nor 27!”, “Simple If”);
}
شما مي توانيد به هر تعداد كه بخواهيد قسمتهاي else if را به يك دستور if براي بررسي حالتهاي مختلف اضـافه كنيـد .اما همانطور كه ذكر شد، هنگامي كه ويژوال #C به اولين دستور if رسيد شرط داخل آن را بررسي ميكند. اگر عبارت داخل پرانتـزدرست ارزيابي شود، دستورات داخل بلاك if اجرا مي شوند و كنترل برنام ه به اولين خط بعـد از سـري دسـتورات if و elseميرود. در غير اين صورت، عبارت مربوط به اولين else if ارزيابي مي شود. اين روند ادامه پيدا مي كند تا برنامه به بلاكـي ازدستورات برسد كه حاصل آن درست باشد . در اين حالت دستورات اين بلاك اجرا شده و كنترل برنامه به بعـد از مجموعـه دسـتوراتif و else مي رود .
نكته: هنگام بررسي يك سري از حالتها، بهتر است آنهايي را كه احتمال درست بودنشان بيشتر است، ابتدا بررسي كنيـد . ايـن مـوردباعث مي شود كامپايلر هنگام اجرا، شرايط اضافه را بررسي نكند و كد سريعتر اجرا شود .
نكته2: در مواردي كه تعداد قسمتهاي else if در برنامه زياد باشد و حالتهاي زيادي را بايد بررسي كنيد، به جـاي اسـتفاده ازif و else if ميتوانيد از switch استفاده كنيد كه در قسمتهاي بعدي توضيح داده مي شوند