salar_blackdroid 408 ارسال شده در 8 آبان، ۱۳۹۴ اشتراک گذاری ارسال شده در 8 آبان، ۱۳۹۴ با سلام. خسته نباشین و ایام بکام انشاالله. خواستم یه آموزش خوبی از کاربردهای مختلف 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 هست یا نه : (این یکم تفکر میخواد و یکم پایه ریاضی خوب ) تابع جز صحیح یا براکت که معادلش تو بیسیک همون Floor هست ، از ویژگی این تابع اینجا استفاده شده تا داخل Case ها که نمیشه عملگر مقایسه ای نوشت ، این مشکل حل بشه. Dim x As Int=10 Dim y = Floor(x/7) Select y Case 1 Msgbox("Greater than 7 ","") End Select ___________________________ امیدوارم آموزش واسه دوستان مفید بوده باشه. Salar_BlackDroid 1394.08.08 _ 11:56 PM Copyright © By Salar_BlackDroid & answercenter.ir لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
asajadi84 567 ارسال شده در 9 آبان، ۱۳۹۴ اشتراک گذاری ارسال شده در 9 آبان، ۱۳۹۴ شما فرض کنید 100 تا if نوشته اید و فقط if اول شرطش درسته ، ولی اون 99 تا بعدی هم با وجود نادرست بودن شرط شون ، چک کردن شرط شون انجام خواهد شد مگه وقتی از else if استفاده می شه و به شرط صحیح می رسه بقیه ی شرط ها رو هم چک می کنه؟ من فکر می کردم به محض رسیدن به شرط درست چک کردن بقیشون متوقف میشه چون نمیشه چندتا شرط در کنار هم صحیح باشن میشه یکم بیشتر توضیح بدید؟ مرسی لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
salar_blackdroid 408 ارسال شده در 9 آبان، ۱۳۹۴ سازنده اشتراک گذاری ارسال شده در 9 آبان، ۱۳۹۴ مگه وقتی از else if استفاده می شه و به شرط صحیح می رسه بقیه ی شرط ها رو هم چک می کنه؟ من فکر می کردم به محض رسیدن به شرط درست چک کردن بقیشون متوقف میشه چون نمیشه چندتا شرط در کنار هم صحیح باشن میشه یکم بیشتر توضیح بدید؟ مرسی دوست گرامی ، دقت نکردید به مطلب گفته شده. تو این 100 تا if منظور این بوده که از Else IF استفاده نشده ! و هر کدوم از if ها جداگونه ایجاد و بسته شدن ! در صورتیکه در Else If بله اگه یه شرط درست باشه ، دیگه بقیه اجرا نخواهند شد. تو بالا کامل توضیح دادم اینارو. ارادت ./ لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
mohammad-alone 564 ارسال شده در 3 آذر، ۱۳۹۴ اشتراک گذاری ارسال شده در 3 آذر، ۱۳۹۴ البته ببخشید دوست خوبم B4A : Select X Case Value ... Case Else .. End Select لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.