آموزش سی شارپ c# ادامه درس سوم

 
ارسال شده در تاریخ 1392/7/22 توسط admin در زمینه آموزش سی شارپ
 
بررسی دستور switch
 
www.iranproje.com
همانند دستور if ، دستور switch نیز امکان تصمیم گیری را در یک برنامه فراهم مینماید . مثال 3-2 - دستورالعمل switch
using System;
 
class SwitchSelect
{
public static void Main()
{
string myInput; int myInt; begin:
Console.Write("Please enter a number between 1 and 3: "); myInput = Console.ReadLine(); myInt = Int32.Parse(myInput);
دستور switch بهمراه متغیری از نوع صحیح //
switch (myInt)
{ case 1:
Console.WriteLine("Your number is {0}.", myInt); break; case 2:
Console.WriteLine("Your number is {0}.", myInt); break; case 3:
Console.WriteLine("Your number is {0}.", myInt); break; default:
Console.WriteLine("Your number {0} is not between 1 and 3.", myInt); break;
پایان بلوی } //switch
decide:
Console.Write("Type "continue" to go on or "quit" to stop: "); myInput = Console.ReadLine();
دستور switch بهمراه متغیری از نوع رشتهای //
switch (myInput)
{
case "continue": goto begin; case "quit":
Console.WriteLine("Bye."); break; default:
Console.WriteLine("Your input {0} is incorrect.", myInput);
 
  goto decide;
پایان بلوی } //switch پایان متد } //Main() پایان کلاس } //SwitchSelect
 
مثال 3-2 دو مورد استفاده از دست ور switch را نشان می دهد . دستور switch بوسیله کلمه کلیدی switch آغاز شده و به دنبال آن عبارت دستور switch قرار می گیرد . عبارت دستور switch می تواند یکی از انواع زیر باشد short, ,sbyte, byte : ). ushort, int, uint, long, ulong, char, string, enumنوع enum در مبحث جداگانه ای مورد بررسی قرار خواهد گرفت (. در اولین دستور switch در مثال 3-2 ، عبارت دستور switch از نوع عددی صحیح (int) می باشد .
 
به دنبال دستور و عبارت switch ، بلوی switch قرار می گیرد که در آن گزینه هایی قرار دارند که جهت منطبق بودن با مقدار عبارت switch مورد بررسی قرار می گیرند . هر یک از این گزینه ها با استفاده از کلمه کلیدی case مشخص می شوند . پس از کلمه کلیدی case خود گزینه قرار می گیرد و به دنبال آن ":" و سپس دستوری که باید اجرا شود . بعنوان مثال به اولین دستور switch در این برنامه توجه نمای ید . در ا ینجا عبارت دستور switch از نوع int است . هدف از استفاده از دستور switch آنست که از بین گزینه های موجود در بلوی switch ، گزینه ای را که مقدارش با مقدار عبارت switch برابر است پیدا شده و عمل مرتبط با آن گزینه اجرا شود . در این مثال مقدار متغیر myInt بررسی می شود . سپس اگر این مقدار با یکی از مقادیر گزین ه های داخل بلوی switch برابر بود، دستور یا عمل مربوط به آن گزینه اجرا می گردد . توجه نمایید که در این مثال منظور ما از گزینه همان عدد پس از case است و منظور از دستور عبارتی است که پس از ":" قرار گرفته است . بعنوان مثال، در دستور زیر :
 
case 1:
Console.WriteLine("Your number is {0}.", myInt);
عدد 1 ، گزینه مورد نظر ما و دستور Console.WriteLine(...) ، عمل مورد نظر است . در صورتیکه مقدار myInt برابر با عدد 1 باشد آنگاه دستور مربوط به case 1 اجرا می شود که همان Console.WriteLine("Your number is {0}.", myInt); است . پس از منطبق شدن مقدار عبارت switch با یکی از case ها، بلوی switch باید خاتمه یابد که این عمل بوسیله استفاده از کلمه کلیدی break ، اجرای برنامه را به اولین خط بعد از بلوی switch منتقل مینماید .
 
همانطور که در ساخ تار دستور switch مشاهده می نمایید، علاوه بر case و break ، دستور دیگری نیز در داخل بلوی وجود دارد . این دستور یعنی default ، برای زمانی مورد استفاده قرار می گیرد که هیچ یک از گزین ه های بلوی switch با عبارت دستور switch منطبق نباشند . به عبارت دیگر درصورتیکه م قدار عبارت switch با هیچ یک از گزینه های case برابر نباشد، دستور مربوط به default اجرا می گردد . استفاده از این دستور در ساختار بلوی switch اختیاری است . همچنین قرار دادن دستور break پس از دستور default نیز اختیاری میباشد .
 
همانطور که قبلاً نیز گفته شد پس ا ز هر دستور case ، به منظور خاتمه دادن اجرای بلوی switch باید از یک break استفاده نمود . دو استثنا برای این موضوع وجود دارد . اول اینکه دو دستور case بدون وجود کد و دستورالعملی در بین آنها، پشت سر هم قرار گیرند و دیگری در زمانیکه از دستور goto استفاده شده باشد .
 
 
www.iranproje.com
در صورتیکه دو دستور case بدون وجود کدی در بین آنها، پشت سر یکدیگر قرار گیرند، بدین معناست که برای هر دو case مورد نظر یک عمل خاص در نظر گرفته شده است . به مثال زیر توجه نمایید .
switch (myInt)
{ case 1: case 2: case 3:
Console.WriteLine("Your number is {0}.", myInt); break; default:
Console.WriteLine("Your number {0} is not between 1 and 3.", myInt); break;
}
در این مثال، همانطور که مشاهده می کنید، سه دستور case بدون وجود کدی در بین آنها پشت سر یکدیگر قرار گرفت هاند . این عمل بدین معناست که برای تمامی گزینه های 1 ، 2 و 3 دستور Console.WriteLine("Your number is {0}.", ); myInt اجرا خواهد شد . یعنی اگر مقدار myInt برابر با هر یک از مقادیر 1 ، 2 و 3 باشد، یک دستور برای آن اجرا میشود .
 
نکته قابل توجه دیگر در مورد بلوی switch آ نست که، دستورات case حتماً نباید یک دستور باشد بلکه میتوان از یک بلوی دستور برای case استفاده نمود .
 
دومین استفاده از دستور switch در مثال 3-2 ، دارای عبارتی از نوع رشت ه ایست . در این بلوی switch چگونگی استفاده از دستور goto نیز نشان داده شده است . دستور goto اجرای برنامه را به برچسبی (label) که معین شده هدایت می نماید . در حین اجرای این برنامه، اگر کاربر رشته continue وارد نماید، این رشته با یکی از گزین ه های دومین switch منطبق می شود . چون دستور case مربوط به این گزینه دارای دستور goto است، اجرای برنامه به برچسبی که این دستور مشخص کرده فرستاده می شود، بدین معنی که اجرای برنامه به ابتدای جایی می رود که عبارت begin: در آنجا قرار دارد ) در اوایل متد .(Main() بدین
صورت اجرای برنامه از بلوی switch خارج شده و به ابتدای برنامه و در جائیکه برچسب begin: قرار گرفته ارسال میشود . در این برنامه، استفاده از چنین حالتی استفاده از goto باعث ایجاد یک حلقه شده است که با وارد کردن عبارت quit اجرای آن به پایان می رسد .
 
در صورتیکه هیچ یک از عبارات continue و یا quit وارد نشوند، اجرای switch به گزینه default می رود و در این گزینه ابتدا پیغام خطایی بر کنسول چاپ شده و سپس با استفاده از دستور goto پرشی به برچسب decide صورت می گیرد . پس از پرش به برچسب decide ، از کاربر پرسیده می شود که آیا م ی خواهد اجرای برنامه را ادامه دهد یا خیر ). با وارد کردن گزینه های continue یا (quit همانطور که می بینید در اینجا نیز حلقه ای تولید شده است .
 
استفاده از دستور goto در بلوی switch میتواند موثر باشد اما باید توجه نمایید که استفاده های بی مورد از دستور goto باعث ناخوانا شدن برنامه شده و عی ب یابی (Debug) برنامه را بسیار دشوار می نماید . در برنامه نویس ی های امروزی استفاده از دستور goto بغیر از موارد بسیار لازم و ضروری منسوخ شده و به هیچ عنوان توصیه نم ی شود . برای تولید و ساخت حلقه نیز
 
www.iranproje.com
دستورات مفید و سودمندی در زبان تعبیه شده اند که استفاده از goto را به حداقل می رسانند . دستورات حلقه در مبحث آینده مورد بررسی قرار خواهند گرفت .
 
نکته پایانی این مبحث آنست که توجه نمایید که به جای استفاده از دستور switch می توانید از چندین د ستور if-else استفاده نماید . دو قطعه برنامه زیر معادل یکدیگر میباشند .
switch(myChar)
{
case "A" :
Console.WriteLine("Add operation "); break; case "M" :
Console.WriteLine("Multiple operation "); break; case "S" :
Console.WriteLine("Subtraction operation "); break; default :
Console.WriteLine("Error, Unknown operation "); break;
}
معادل بلوی switch با استفاده از if-else
if (myChar == "A")
Console.WriteLine("Add operation "); else if (myChar == "M")
Console.WriteLine("Multiple operation "); else if (myChar == "S")
Console.WriteLine("Subtraction operation "); else
Console.WriteLine("Error, Unknown operation ");
 
همانطور که ملاحظه میکنید استفاده از بلوی دستور switch بسیار ساده تر از استفاده از if-else های تودرتو است .
 
در این درس با نحوه تصم یم گیری در برنامه بوسیله دستور if و switch آشنا شدید . با نحوه عملکرد و استفاده دستور goto نیز آشنایی پیدا کردید . در پایان مجددًا یادآوری می کنم که در استفاده از دستور goto با احتیاط عمل نمایید و به جز در موارد ضروری از آن استفاده نکنید .

 

Copyright © 2014 icbc.ir