• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
منطق حلقه FOR
#1
نظرتون راجب اینطور حلقه نویسی چیه؟
کد پی‌اچ‌پی:
for($i TOTAL_ONLINE_USERS$i != -1$i --)
{
    echo 
$i;
}
// شاید در این مورد $i != 0 هم می تونه باشه

// یا این

for($i 0$i TOTAL_ONLINE_USERS$i ++)
{
    echo 
$i;

Angel

ویرایش شد
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط :
#2
به چي گير داديا :دي
از نظر طراحي الگوريم/ساختمان داده هر دو داراي پيچيدگي زماني n هستن
از طرفي عملگر ها هم براي بررسي به عنوان يك واحد زماني در نظر گرفته ميشن
پس نبايد تفاوتي بينشون باشه.

اما نظر شخصيم
ممكنه توي n هاي بزرگ زماني كه بنچمارك ميگيريم تقاوتي بينشون وجود داشته باشه كه مطمئن نيستم
اما از اونجايي كه معتقدم وضوح كد رو نبايد فداي بهينه سازي كرد گزينه ي "يا اين" رو مناسب تر ميبينم.
هر چیزی که در جستن آنی آنی...
غایب
  پاسخ
تشکر شده توسط : Y.P.Y
#3
همینجوری یهویی به ذهنم رسید Tongue

بذار ببینم نظر بقیه چیه...
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط : undefined
#4
در مورد عملگری که در حلقه استفاده میشه، کوچکترمساوی در حلقه های زیادشونده / بزرگترمساوی در حلقه های کم شونده بهینه تر از بقیه عملگرهاست. چون بقیه عملگرها باعث میشن یک حلقه تکرار بیخود اجرا بشه.
در مورد روند افزایشی یا کاهشی کدوم بهتره، اطلاعاتم کافی نیست.

راستی تعداد تکرار حلقه
کد پی‌اچ‌پی:
for($i TOTAL_ONLINE_USERS$i != -1$i --) 
یکی بیشتر از
کد پی‌اچ‌پی:
for($i 0$i TOTAL_ONLINE_USERS$i ++) 
هست.
به یـزدان که گر ما خرد داشتیم
کجـا این سر انجـام بد داشتیم؟
  پاسخ
تشکر شده توسط : undefined Y.P.Y
#5
کدی که نوشتی از دو جهت قابل بررسی هست:
اول performance: از این نظر نمی دونم تو php آیا بین حلقه افزایشی و کاهشی تفاوتی هست یا نه (توی بعضی زبان ها تفاوت وجود داره و حلقه کاهشی بهینه تر هست)
دوم به لحاظ ساختار کد: از نظر ساختار کد دو تا کدی که نوشتین یکی نیست و دو تا تفاوت داره:
تفاوت اول: حلقه اول یکی بیشتر میشمره مثلا اگر onlineusers=5 در نظر بگیریم اولی شش عدد چاپ می کنه (5 و 4 و 3 و 2 و 1 و 0) ولی حلقه دوم 5 تا چاپ می کنه (0 و 1 و 2 و 3 و 4)
تفاوت دوم: وقتی نمی دونیم onlineuser چه عددی می تونه باشه کد اول ممکنه منجر به حلقه بی پایان بشه چون فقط یک عدد رو چک می کنه (فرض کنید onlineuser=-2 باشه)، ولی حلقه دوم هیچ وقت باعث حلقه بی پایان نمیشه چون یک بازه رو حذف می کنه
SmileSmileSmileSmileSmileSmile
  پاسخ
تشکر شده توسط : undefined vejmad Y.P.Y ayoubsys
#6
sara, @mo_ali_2005@
نقل قول:حلقه اول یکی بیشتر میشمره مثلا اگر onlineusers=5 در نظر بگیریم اولی شش عدد چاپ می کنه (5 و 4 و 3 و 2 و 1 و 0) ولی حلقه دوم 5 تا چاپ می کنه (0 و 1 و 2 و 3 و 4)
آره اون مهم نیست، شاید باید غلط املایی حسابش کنید. چون اصل منظورم ساختار کلیشون و پرفورمنسشون در شرایط یکسان هستش
حالا فرض کنید i != 0


دوم اینکه اون TOTAL_ONLINE_USERS از نامش معلومه: اول اینکه ثابته. دوم اینکه TOTAL هستش، و نه MAX (چیزی که بعضیا جابه جا می نویسن و برداشت می کنن)
طبیعتاً MAX_ONLINE_PLAYERS میگه حداکثر ظرفیت بازیکنان سرور
TOTAL_ONLINE_PLAYERS که میگه کل بازیکنان آنلاین کنونی/حاضر سرور

پس اوج حلقه یک عدد ثابت و unsigned هستش.
فرض کنید 10000000 هه
وبلاگ: Yousha.Blog.ir

صدام: "اگر با ارتش شاه ایران طرف بودیم، یک ماهه جنگ را می بردیم"
http://gulfnews.com/opinion/thinkers/ira...i-1.500997
  پاسخ
تشکر شده توسط : sara147 kasbookar


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان