یکی از دستورات در گیم میکر که در زبان ++c هم استفاده می شود، دستور switch است.

با دستور switch می توان یک متغیر را با چندین شرط مورد بررسی قرار داد و اگر هیچ یک از آن ها درست نبود دستوری جداگانه اجرا شود...

با دستور switch می توان یک متغیر را با چندین شرط مورد بررسی قرار داد و اگر هیچ یک از آن ها درست نبود دستوری جدتاگانه اجرا شود.

کار با دستور switch اینگونه است:

switch(متغیر)
{
case مقدار 1:
{
مجموعه دستورات 1
}
case مقدار 2:
{
مجموعه دستورات 2
}
.
.
.
.
case مقدار آخر:
{
مجموعه دستورات آخر
{
}

ابتدا در قسمت switch باید عبارتی را که می خواهیم مورد بررسی قرار گیرد را بنویسیم.

سپس در جلوی هر case باید مقداری را که کی خواهیم عبارتمان با آن مورد بررسی قرار گیرد را بنویسیم. اگر متوجه نشدید به مثال زیر توجه کنید:

switch(a)
{
case b:
{
مجموعه دستورات
}
}

در اینجا برنامه بررسی می کند که آیا a برابر b است؟ اگر هست "مجموعه دستورات" اجرا شود.

توجه کنید که در این دستور اگر یک case با عبارت switch برابری کند و دستورات اجرا شود، برنامه از داخل swidch خارج نمی شود و بقیه دسورات را هم اجرا می کند، چه با مقدار case برابری کنند چه نه.

a=4;
switch(a)
{
case 4:
{
show_message("Hello")
}
case 5:
{
show_message("World")
}
}

 در اینجا متغیری به نام a داریم که مقدار آن 4 است و در switch آن را مورد بررسی قرار داده ایم. در case اول آن را با 4 مورد بررسی قرار می دهیم. چون با 4 برابری می کند دستورات اجرا می شود Hello نمایش داده می شود، و چون یکی از case ها درست بودِ دستورات case 5 هم اجرا می شود.

  • دستور break:

اما اگر ما بخواهیم اگر case مورد نظرمان درست بود بقیه دستورات case های دیگر اجرا نشود چه کنیم؟

در اینجا دستوری به نام break داریم که به کمک ما می آید. این دستور باعث می شود که برنامه از ساختار دستور switch خارج شود. مثال:

a=4;
switch(a)
{
case 4:
{
show_message("Hello")
break;
}
case 5:
{
show_message("World")
}
}

در اینجا متغیری به نام a داریم که مقدار آن 4 است و در switch آن را مورد بررسی قرار داده ایم.

در case اول آن را با 4 مورد بررسی قرار می دهیم. چون با 4 برابری می کند دستورات اجرا می شود و Hello نمایش داده می شود. سپس با دستور break از ساختار دستور switch خارج می شود. توجه کنید که با اینکه یکی از case ها درست بود، اما چون از ساختار دستور switch خارج شدیم دستورات case 5 اجرا نمی شوند و World نشان داده نمی شود.

  • دستور default:

ما دستور دیگری داریم به نام default، این دستور در زمانی اجرا می شود که هیچ یک از case ها درست نباشد. این دستور هم مانند case ها است. یعنی اگر یکی از case ها درست بود و در آن case از دستور break استفاده نشده بود، این دستور اجرا می شود.

می توان گفت این دستور در همه حال اجرا می شود، بجز زمانی که قبل از آن دستور break اجرا شود و برنامه از ساختار switch خارج شود.

شما می توانید با دستور default کاری کنید که اگر همه ی case ها اشتباه بود، مجموعه دستورات جداگانه ای اجرا شود. به این نوع دستورات دستورات حالت استثناء هم می گویند. مثال:

a=get_integer("1 or 2 or 3","number");
switch(a)
{
case 1:
{
show_message("true");
break;
}
case 2:
{
show_message("true");
break;
}
case 3:
{
show_message("true");
break;
}
default:
{
show_message("fasle");
}
}

این برنامه با تابع get_integer عددی را از کابر می گیرد و آن را در متغیر a نگه می دارد.

سپس با دستور switch و case ها آن را مورد بررسی قرار می دهد که آیا 1 یا 2 یا 3 است؟ اگر یکی از این عدد بود متن true را نشان می دهد و از ساختار switch با دستور break خارج می شود. ولی اگر هیچ یک از این ها نبود به default می رود و fasle را نشان می دهد و سپس از switch خارج می شود.

توجه کنید که اگر ما در هر یک از case ها از دستور break استفاده نمی کردیم و اگر مقدار a با یکی از case ها برابری می کرد، دستورات همۀ case اجرا می شد و سپس به سراغ دستورات defualt می رفت. چون یادتان باشد ما گفتیم که دستورات default در هر زمانی اجرا می شوند به جز زمانی که قبلش دستور break اجرا شود.

  • case های چندگانه:

یکی دیگر از ویژگی های دستور switch ایجاد case های چندگانه است. با استفاده از این روش می توان یک دستور را برای چند case جداگانه ایجاد کرد. درست است که بدون استفاده از این قابلیت هم می توان چنین کاری کرد، ولی با این قابلیت کد های ما بسیار کم تر می شد. مثال:

a=get_integer("1 or 2 or 3","number")
switch(a)
{
case 1:
case 2:
case 3:
{
show_message("true");
break;
}
default:
{
show_message("false")
}
}

این مثال هم مانند مثال قبلی است ولی ما از case های چندگانه استقاده کردیم و همان طور که می بینید تعداد خطِ کد ها کمتر شده است.