PDA

View Full Version : سوال : فلسفه وجودی break در دستور شرطی switch



amirssh
شنبه 25 اردیبهشت 1389, 12:16 عصر
سلام خدمت دوستان عزیز

من یه مدته یه سوالی دارم و پاسخ این سوال رو نتونستم در جایی پیدا کنم

موضوع اینه :

در بعضی از زبانها از جمله خانواده سی ، از دستور break در switch استفاده میشه



switch ( c )
{
case 'A':
capa++;
break;
case 'a':
lettera++;
break;
default:
nota++;
}

من کاربرد و دلیل استفاده از دستور break رو میدونم !
ما از break در آخر case مورد نظر استفاده میکنیم تا case های بعدی switch اجرا نشن!

حالا سوال من اینه که چرا در زبانی مثل c باید دستور break رو بنویسیم در حالی که در زمانی مثل vb این رویداد بصورت خودکار انجام میشه و نیازی به وارد کردن دستور مشابه break نیست!
چرا در سی هم break بصورت خودکار اعمال نمیشه و اینکار به برنامه نویس واگذار شده؟؟

امیدوارم تونسته باشم منظورمو برسونم

ممنون از توجهتون

حامد مصافی
شنبه 25 اردیبهشت 1389, 12:44 عصر
به دليل امكان حالتي مانند زير


switch ( c )
{
case 'A':
case 'a':
lettera++;
break;
default:
nota++;
}

saber187518
یک شنبه 26 اردیبهشت 1389, 00:11 صبح
با سلام
فلسفه وجودی break داخل switch این هست که وقتی شما قراره از بین چندین کار یکی رو انجام بدی ، یا بهتر بگم شما میخوای از داخل یک مغازه لباس فروشی یک پیراهن بخری شما شروع میکنی و از اولین پیراهن نگاه میکنی وقتی که به nامین پیراهم میرسی اون رو میخری.
آیا نیازی هست که بقیه پیراهن ها رو نگاه کنی؟(بافرض اینکه وقت برای شما مهم هست)
مسلما که نگاه نمیکنید.
در برنامه هم دقیقا همینه ، شما وقتی که از بین چندین انتخاب یکی رو انتخاب میکنی ، دیگه نیازی به دیدن بقیه انتخاب های ممکن نداری پس از روی بقیه رد میشی.
امیدوارم که تونسته باشم منظورم رو انتقال بدم.

mohamad_ice
یک شنبه 26 اردیبهشت 1389, 00:26 صبح
سلام خدمت دوستان عزیز

من یه مدته یه سوالی دارم و پاسخ این سوال رو نتونستم در جایی پیدا کنم

موضوع اینه :

در بعضی از زبانها از جمله خانواده سی ، از دستور break در switch استفاده میشه



switch ( c )
{
case 'A':
capa++;
break;
case 'a':
lettera++;
break;
default:
nota++;
}

من کاربرد و دلیل استفاده از دستور break رو میدونم !
ما از break در آخر case مورد نظر استفاده میکنیم تا case های بعدی switch اجرا نشن!

حالا سوال من اینه که چرا در زبانی مثل c باید دستور break رو بنویسیم در حالی که در زمانی مثل vb این رویداد بصورت خودکار انجام میشه و نیازی به وارد کردن دستور مشابه break نیست!
چرا در سی هم break بصورت خودکار اعمال نمیشه و اینکار به برنامه نویس واگذار شده؟؟

امیدوارم تونسته باشم منظورمو برسونم

ممنون از توجهتون

دوست عزیز
به نمونه سوئیچ وی بی توجه کن


Dim number As Integer = 8
Select Case number
Case 1 To 5
Debug.WriteLine("Between 1 and 5, inclusive")

Case 6, 7, 8
Debug.WriteLine("Between 6 and 8, inclusive")
Case 9 To 10
Debug.WriteLine("Equal to 9 or 10")
Case Else
Debug.WriteLine("Not between 1 and 10, inclusive")
End Select

توانایی شما در نوشتن چندین گزینه در برابر case !!!
درحالی که در switch خانواده C شما چنین توانایی ندارید...ولی میتونید با
ننوشتن break این امکان را پیاده سازی کنید !

tdkhakpur
یک شنبه 26 اردیبهشت 1389, 00:40 صبح
درحالی که در switch خانواده C شما چنین توانایی ندارید...ولی میتونید با
ننوشتن break این امکان را پیاده سازی کنید
خب vb هم چنین کاری را انجام میدهد ولی تفاوت ان با سی این هست که سی برای خاتمه یک case کلمه break را جستجو میکند اما vb خود case را به عنوان خاتمه case اول میداند.
سی آکولاد باز را نقطه شروع میداند و vb کلمه select Case را نقطه شروع میداند.
س آکولاد بسته را نقطه خاتمه میداند اما vb کلمه End Select .
پس با این تعاریف این مفسر هست که نوع عملیات را مشخص میکند