PDA

View Full Version : چگونه سرعت پردازش حلقه ی while رو تنظیم کنم؟



عارف اسدی
چهارشنبه 13 اردیبهشت 1396, 17:22 عصر
سلام من یک هنر آموز کلاس دهم و فوق العاده مبتدی هستم. (رشته ی شبکه و نرم افزار های رایانه ای) امروز با معلمم خواستیم در محیط کنسول #c برنامه ای بنویسیم که بلوک های قرمزی یکی یکی با سرعتی که خودمون بخوایم روی صفحه نمایش ظاهر شوند. معلمم با زبان #c آشنایی زیادی نداره. برای این که سرعت پردازش کم بشه یک حلقه ی گذاشت که فلان میلیارد بار بچرخه ... سرعت پایین اومد اما انگار همه رو پردازش میکرد و بعدش روی تصویر نمایش می داد. حالا میخوام بدونم چطوری میشه سرعت پردازش حلقه ی while رو تنظیم کرد؟

عارف اسدی
چهارشنبه 13 اردیبهشت 1396, 17:25 عصر
ضمنا من تالاری درباره ی زبان #C ندیدم!!

علی بهمنی جلالی
چهارشنبه 13 اردیبهشت 1396, 19:43 عصر
سلام
تالار c# در مسیر زیر است:
http://barnamenevis.org/forumdisplay.php?26-C-%E2%80%8E

علی بهمنی جلالی
چهارشنبه 13 اردیبهشت 1396, 19:54 عصر
سلام به لینک زیر یک نگاهی بنداز. در برنامه زیر (که به زبان سی‌پلاس‌پلاسه) نویسهٔ = را از سمت راست به چپ، به صورت پیوسته در ترمینال با فاصله زمانی ۵۰۰۰۰ میلی‌ثانیه چاپ می‌کند. (البته این کد را در سیستم‌عامل لینوکس امتحان کردم) معادل ویندوزی‌اش را هم شاید بتوانید پیدا بکنید. در این برنامه از کتابخانه unistd.h استفاده شده است.

لینک: (لطفا کد زیر را کپی کنید و در نوار آدرس قرار دهید)


http://barnamenevis.org/showthread.php?531958-آیا-می‌خواهید-یک-نویسه-را-در-ترمینال-از-راست-به-چپ-چاپ-کنید؟-(-در-لینوکس-و-احتمالاً-در-مک-)


این لینک را هم ببینید. چند روش مختلف، چه از نوع غیر استاندارد و چه از نوع استاندارد را برای c++ گفته است:
http://stackoverflow.com/questions/4184468/sleep-for-milliseconds

Ananas
چهارشنبه 13 اردیبهشت 1396, 22:12 عصر
سلام.
قبل از شروع حلقه یک افست زمانی رو تعریف میکنید و داخل حلقه فاصله ی زمان نسبت به افست رو چک میکنید ... اگر به مفدار کافی فاصله ی زمانی بود عملیاتی که میخاید انجام میدید وگرنه هیچ. مثال:


#include <iostream.h>


int main()
{
long t0 = std::clock();
long t1, ts = t0;
while (true)
{
t1 = clock();
if ((t1 - t0) >= 1000)
{
std::cout << (float)(t1 - ts) / 1000.0f << endl;
t0 = t1;
};
};
return 0;
};

m.r226
شنبه 16 اردیبهشت 1396, 10:33 صبح
از sleep استفاده کن
تو همه زبان های خودش یا معادلش هست

بهش میگی مثلا نیم ثانیه بخواب بعد دوباره بلند شو کارت رو ادامه بده. حالا همین رو تو یه حلقه میزاری. اینطوری هر نیم ثانیه یه کاری انجام میده و دوباره میره به خواب ناز.

morningstars
چهارشنبه 20 اردیبهشت 1396, 18:01 عصر
چرا اینجوری براش توضیح دادید میگه من مبتدی هستم خوب
دوست عزیز میتونی با یه تابع ساده توی چه سی شارپ چه سی پلاس پلاس چه سی اینکارو انجام بدی
Thread.sleep(miliseceond);
این کد بالا توی سی شارپه کافیه به جای اون آرگومان (همونی که داخل دو پرانتزه و نوشته میلی سکند) تعداد میلی ثانیه هات روبنویسی و کارت راه میفته هر یک ثانیه هم هزار میلی ثانیس این کد رو توی بدنه حلقت بنویس

توی سی و سی پلاس پلاس هم میتونی از تابع
sleep(millsecond)
تابع اسلیپ دقیقا مثل همون کد توی سی شارپه و با میلی ثانیه کار میکنه

سربلند باشید و بهروز دوست مبتدی