رفتن به مطلب

تفکری بیشتر در زمینه Select Case


salar_blackdroid

ارسال های توصیه شده

با سلام.

 

خسته نباشین و ایام بکام انشاالله.

 

خواستم یه آموزش خوبی از کاربردهای مختلف Select Case بذارم !

 

خب ...

 

اول کار کاربردش چیه : استفاده از دستورات شرطی چندگانه بشکل بهینه

 

چرا بهینه ؟ شما فرض کنید 100 تا if نوشته اید و فقط if اول شرطش درسته ، 

 

ولی اون 99 تا بعدی هم با وجود نادرست بودن شرط شون ، چک کردن شرط شون

 

انجام خواهد شد که این یعنی عدم بهینگی و Select Case این مشکل رو رفع کرده 

 

یعنی اگه یکی از Case ها درست باشه ، همون اجرا میشه و بقیه Case ها اجرا نمیشن !

 

مثال 1 ) باقیمانده بر 3

Dim x As Int=10
	Dim y = x mod 3
	If y = 0 Then
		Msgbox("0","")
	End If
	If y = 1 Then
		Msgbox("1","")
	End If
	If y = 2 Then
		Msgbox("2","")
	End If

تو این مثال اومدیم با 3 تا if حالت های مختلف باقیمانده بر 3 رو بررسی می کنیم و در هر حالت پیامی چاپ می کنیم .

 

با وجود اینکه باقیمانده در اینجا یکی از 3 مقادیر 0 و 1 و 2 خواهد بود ولی به خاطر ساختار شرطی مورد استفاده ، هر 3

 

تا if چک خواهند شد ! 

 

این کد بهینه نیست !

 

مثال 2 )

 

بهینه شده مثال اول با ساختار if/else

	Dim x As Int=10
	Dim y = x mod 3
	If y = 0 Then
		Msgbox("0","")
	else If y = 1 Then
		Msgbox("1","")
	else If y = 2 Then
		Msgbox("2","")
	End If

تو اینجا شرط اول چک میشه و غلط هست ، پس اجرا نمیشه ، شرط دوم چک میشه و درسته و اجرا میشه ولی دیگه شرط سوم اجرا نخواهد شد !

 

مثال 3) همون مساله مون با ساختار Select Case

Dim x As Int=10
	Dim y As Int
	y = x mod 3
	Select y
		Case 0
			Msgbox("0","")
		Case 1
			Msgbox("1","")
		Case 2
			Msgbox("2","")
	End Select

نکته : تو VB6 می تونستیم بین Case ها عملگرهای مقایسه ای یا compression operators بذاریم ولی

 

تو بیسیک بروش معمولی این امکان نیست و بروشی دیگه باید انجام بشه ! 

 

روش اول :

Dim x As Int=10
	Select Case True
		Case (x<7)
			Msgbox("less than seven","")
		Case (x>=7)
			Msgbox("greater than seven","")
		Case (x>2)
			Msgbox("greater than two","")
	End Select

تو این مثال هم Case دوم و سوم هر دوشون شرط ها درسته ولی چون دومی اول اجرا میشه

 

دیگه سومی اجرا نخواهد شد و این باعث بهینگی Select Case شده !

 

 

روش دوم : مثلا میخوایم بدونیم یه عددی بیشتر از 7 هست یا نه : (این یکم تفکر میخواد  :fekr: و یکم پایه ریاضی خوب )

 

تابع جز صحیح یا براکت که معادلش تو بیسیک همون Floor هست ، از ویژگی این تابع

 

اینجا استفاده شده تا داخل Case ها که نمیشه عملگر مقایسه ای نوشت ، این مشکل حل بشه.

Dim x As Int=10
	Dim y = Floor(x/7)
	Select y
		Case 1
			Msgbox("Greater than 7 ","")
	End Select

___________________________

 

امیدوارم آموزش واسه دوستان مفید بوده باشه.  :gol:  :gol:  :gol: 

 

Salar_BlackDroid

 

1394.08.08 _ 11:56 PM

 

Copyright © By Salar_BlackDroid & answercenter.ir

لینک ارسال
به اشتراک گذاری در سایت های دیگر

شما فرض کنید 100 تا if نوشته اید و فقط if اول شرطش درسته ،    ولی اون 99 تا بعدی هم با وجود نادرست بودن شرط شون ، چک کردن شرط شون   انجام خواهد شد

مگه وقتی از else if استفاده می شه و به شرط صحیح می رسه بقیه ی شرط ها رو هم چک می کنه؟ :fekr:  

من فکر می کردم به محض رسیدن به شرط درست چک کردن بقیشون متوقف میشه چون نمیشه چندتا شرط در کنار هم صحیح باشن

میشه یکم بیشتر توضیح بدید؟  :fekr:

مرسی

لینک ارسال
به اشتراک گذاری در سایت های دیگر

مگه وقتی از else if استفاده می شه و به شرط صحیح می رسه بقیه ی شرط ها رو هم چک می کنه؟ :fekr:  

من فکر می کردم به محض رسیدن به شرط درست چک کردن بقیشون متوقف میشه چون نمیشه چندتا شرط در کنار هم صحیح باشن

میشه یکم بیشتر توضیح بدید؟  :fekr:

مرسی

 

دوست گرامی ، دقت نکردید به مطلب گفته شده. :)

 

تو این 100 تا if منظور این بوده که از Else IF استفاده نشده ! و هر کدوم از if ها جداگونه ایجاد و بسته شدن !

 

در صورتیکه در Else If بله اگه یه شرط درست باشه ، دیگه بقیه اجرا نخواهند شد.

 

تو بالا کامل توضیح دادم اینارو.

 

ارادت ./

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 4 هفته بعد...

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...