اطلاعیه

Collapse
No announcement yet.

مشکل با while

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل با while

    با سلام
    کسی می تونه در مورد این دستور منو راهنمایی کنه ؟
    "چرا در بعضی برنامه ها حلقه تکرار while(1); را در کدویژن آخرین دستور می نویسند (بدون داشتن {})؟"
    با سپاس فراوان

    #2
    پاسخ : مشکل با while

    برای اینکه تابع main همیشه تکرار بشه از این شرط همیشه درست در اول تابع main استفاده می کنند.
    while(1)
    {
    }
    و اگر شما خواستید بعد از اجرا شدن دستورات میکرو دیگه کاری انجام نده باید در آخر main عبارت while(1); رو اجرا کنید.این یعنی بعد از اجرا شدن تابع میکرو بیکار میمونه و دوباره تابع main رو اجرا نمی کنه.
    کافی بود؟
    [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

    دیدگاه


      #3
      پاسخ : مشکل با while

      ممنون
      پس چرا دربعضی عملیات مانند تایمر خروجی همیشه وجود داره (مثلا" وصل کردن led همیشه چشمک می زنه ؟)
      این دستور مانند do/while نیست که در هر صورت دستورات حداقل یک بار انجام میشه ؟
      با سپاس فراوان

      دیدگاه


        #4
        پاسخ : مشکل با while

        نوشته اصلی توسط HAN-273
        ممنون
        پس چرا دربعضی عملیات مانند تایمر خروجی همیشه وجود داره (مثلا" وصل کردن led همیشه چشمک می زنه ؟)
        خوب به خاطر اینکه تایمر ها یه سخت افزار جدا هستند.تا شما خاموش نکنیدشون به فعالیتشون ادامه میدن حتی اگه cpu رو با دستور ";" (معادل Nop در اسمبلی) سر کار بزاری.اگر شما دقت کرده باشید دستورات راه اندازی اولیه ی هر رابط رو خارج از حلقه ی بینهایت می نویسند. مثلا اگر شما بخواید تایمر رو راه بندازید کافیه فقط یکبار روشنش کنید و تو حلقه ی بی نهایت مقدار تایمر رو تغییر بدی.
        خلاصه ی مطلب :تایمر ,وقفه ,آنالوگ به دیجیتال و.... میتونند مستقل از cpu کار کنند.
        نوشته اصلی توسط HAN-273
        این دستور مانند do/while نیست که در هر صورت دستورات حداقل یک بار انجام میشه ؟
        با سپاس فراوان
        کدوم دستور؟؟؟ :question:
        [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

        دیدگاه


          #5
          پاسخ : مشکل با while

          ممنون
          پس اگه فقط یک بار این دستور(while()) اجرا میشه (در مواردی که آخرین دستور میشه ) چه فرقی داره اگه ننویسم
          یک بار دستورات اجرا نمیشه ؟
          من برای آزمایش یه برنامه ساده نوشتم (چشمک زن) نوشتن این دستور(while) همانطوری که گفته بودید ؛ دستورات فقط یک بار اجرا میشه ، اما عدم نوشتن این دستور به عنوان آخرین هیچ تاثیری نداره؛ دستورات بازهم یک بار اجرا میشه
          به نظر من نوشتن باعدم نوشتن هیچ تاثیری نداره
          اگه شما در مورد نوشته های من نظری دارید بفرمائید
          منظورم از این دستور (while()) به جای do/while() هست
          خیلی ممنون

          دیدگاه


            #6
            پاسخ : مشکل با while

            نوشته اصلی توسط HAN-273
            ممنون
            پس اگه فقط یک بار این دستور(while()) اجرا میشه (در مواردی که آخرین دستور میشه ) چه فرقی داره اگه ننویسم
            یک بار دستورات اجرا نمیشه ؟
            من برای آزمایش یه برنامه ساده نوشتم (چشمک زن) نوشتن این دستور(while) همانطوری که گفته بودید ؛ دستورات فقط یک بار اجرا میشه ، اما عدم نوشتن این دستور به عنوان آخرین هیچ تاثیری نداره؛ دستورات بازهم یک بار اجرا میشه
            به نظر من نوشتن باعدم نوشتن هیچ تاثیری نداره
            اگه شما در مورد نوشته های من نظری دارید بفرمائید
            منظورم از این دستور (while()) به جای do/while() هست
            خیلی ممنون
            سلام
            من منتظرفرمایشات شما هستم
            اگه میشه در مورد نوشته هایم نظری بدهید
            با تشکر فراوان

            دیدگاه


              #7
              پاسخ : مشکل با while

              اگه while(1); رو آخر برنامه بزاری cpu واسه خودش می چرخه و منتظره تا با وقفه ای چیزی به یه جای دیگه از برنامه بره. .حق با شماست توی چشمک زن بودن یا نبودنش خیلی فرق نداره.سعی کن اگه قراره برنامت تموم شه اونو بزاری که اگه کس دیگه ای دید راحت بفهمه آخر برنامه کجاست.
              نوشته اصلی توسط HAN-273
              منظورم از این دستور (while()) به جای do/while() هست
              ببین در هر صورت تابع main یکبار اجرا میشه.اگه لازمه با یه شرط صحیح اونو هی تکرار میکنی. اگر هم نبود که فقط یکبار اجرا میشه.حتما هم لازم نیست از while استفاده کنید. مثلا for(;; ) هم یه شرط همیشه درسته.
              [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

              دیدگاه

              لطفا صبر کنید...
              X