4 لایک
-
1
Post By Tiranoid
-
1
Post By Tiranoid
-
1
Post By AliRezaBeytari
-
1
Post By Tiranoid
-
این که چجوری از if استفاده شده خب بسته به کد داره و قطعا خودتون بهتر میدونین.
ولی if (دستور برنچ) ساده ترین و پایه ترین دستورالعمل شرطی برای میکروکنترلره. سرعت اجراش تقریبا با سرعت مثلا جمع کردن یه متغییر با 1 برابره. جزو بنیادی ترین دستورالعمل های یه کامپیوتره. پس اگر سرعت if کم باشه، هیچ چیز دیگه ای نیست که سریعترش باشه. مگر اینکه اصلا بیخیال میکروکنترلر بشین و از FPGA استفاده کنید.
عیب روشی که بالا گفتیم که از if استفاده میکرد، این بود که ممکنه حلقه بیش از تعداد متغییرها اجرا بشه.
مثلا اگر ما 5 تا متغییر تو آرایه مون داریم، ممکنه حلقه 10 بار مثلا اجرا بشه (از نظر تئوری ممکنه بینهایت بار اجرا بشه !!)
چون بصورت رندوم انتخاب میکنه، ممکنه مثلا بار سوم، عددیو انتخاب کنه که -1 شده و درسته اجراش نمیکنه، ولی بالاخره حلقه انجام شده.
مثلا زمانی که آخرین بار داره حلقه اجرا میشه، یکی از متغییرها مقدار داره و بقیه -1 شدن. حالا هی تابع رندوم، اون -1 ها رو میده و این متغییر باقی مونده ممکنه هیچوقت توسط تابع رندوم اجرا نشه (احتمال اجراش 20 درصده اگر 5 متغییر داشته باشیم)
و اگه تعداد متغییرها زیاد باشه، عملا به نتیجه نمیرسه
این هم باز یه راه حل دیگه داره که خیلی عملی نیست تو این موقعیت
کافیه هر بار متغییری که انتخاب شده رو بجای اینکه مقدار -1 بهش بدیم، از تو آرایه حذفش کنیم. بجای آرایه باید از vector استفاده کنیم که اونم باز داستانیه.
بنظر من در کل بهتره برای اینکار از آردویینو استفاده نکنید.
یه میکروکنترلر AVR به انتخاب خودتون بگیرین و با اتمل استودیو یا کدویژن کدنویسی کنید و از توابع C استفاده کنید و همون روش لیست رو اجرا کنید.
مجوز های ارسال و ویرایش
- شما نمیتوانید موضوع جدیدی ارسال کنید
- شما امکان ارسال پاسخ را ندارید
- شما نمیتوانید فایل پیوست کنید.
- شما نمیتوانید پست های خود را ویرایش کنید
-
مشاهده قوانین انجمن
SEO by vBSEO