Кантип программанын аткарылышын кечиктирсе болот

Автор: Joan Hall
Жаратылган Күнү: 28 Февраль 2021
Жаңыртуу Күнү: 1 Июль 2024
Anonim
Кантип программанын аткарылышын кечиктирсе болот - Коом
Кантип программанын аткарылышын кечиктирсе болот - Коом

Мазмун

Белгилүү бир убакытты күткөн С программасын түзүүнү каалаган белеңиз? Убакытты "учуп кетүү" жолун ыңгайлаштырсаңыз болот, мисалы: оюн үчүн калкыма баракты (эскертүү же кыйытма) көрсөтүүдө. ... Макул, бул жерде "токтоп туруу" программасын түзүүнүн кээ бир жолдору бар, окуңуз ...

Кадамдар

  1. 1 Процессоруңуз байкалуучу окуяга себеп болбостон, бир аз убакыт иштөөсүнө уруксат бериңиз.
  2. 2 Жөнөкөй убакыт кечигүүсүн түзүү үчүн бул кечиктирүү учурунда башка операцияларды жасабаңыз.

Метод 1 2: For-loop техникасы

  1. 1 Кечигүүнү ишке ашыруу үчүн типтүү "for" укуругун, андан кийин бош билдирүүнү колдонуңуз.
  2. 2 Төмөндөгүдөй жазыңыз, мисалы:
    • үчүн (i = 1; i100; i ++);
    • Оператор ";" компьютерди байкаларлык окуясыз 100 жолу айлантууга мажбурлайт. Бул бир гана убакыт кечигүүсүн жаратат.

Метод 2 2: "sleep ()" техникасы

  1. 1 Уйкуңузду колдонуңуз (). Функция TIME.H> деп жарыяланган уйку (int ms) деп аталат, бул программаны миллисекундтарда көрсөтүлгөн убакытты күтөт.
  2. 2 Int main () алдында программаңызга төмөнкү сапты кошуңуз:
    • #TIME.H> кирет
  3. 3 Программаны кечиктирүү үчүн зарыл болгон жерге чаптаңыз:
    • уйку (1000);
    • "1000ди" күткүңүз келген миллисекунддардын санына өзгөртүңүз (мисалы, эгер 2 секундага кечиктирүүнү кааласаңыз, аны "2000" менен алмаштырыңыз.
    • Кеңеш: Кээ бир тутумдарда маанини миллисекунддун ордуна секундада көрсөтсө болот. Ошондуктан, кээде 1000 1 секунд эмес, чындыгында 1000 секунд.

Үлгү коду

Белгилүү бир секунддарды күткөн программа:



#include stdio.h> #include dos.h> int main () {int del; // Кечигүү мезгили printf ("Кечигүү убактысын киргизиңиз (секунда менен):"); scanf ("% i" ,? del); del * = 1000; // Милисекунддарга айландыруу үчүн аны 1000ге көбөйтүңүз Кечигүү (дел); // Кечигүү. printf ("Бүттү."); return 0; }


10дон 0го чейин эсептелген программа:


#include STDIO.H> #include TIME.H> int main () {int i; for (i = 10; i> = 0; i--) {printf ("% i n", i); // Учурдагы "артка саноо" санын жазыңыз Кечигүү (1000); // Бир секунд күтө} кайтаруу 0; }

Кеңештер

  • Милисекунд - 1/1000 секунда.
  • Жогорудагы алгоритм кандайдыр бир цикл түзүлүшүнүн жардамы менен ишке ашырылышы мүмкүн, андан кийин нөл оператору - "; while же do -while циклдерин колдонуу.

Эскертүүлөр

  • Бул ыкма негизинен анча чоң эмес программадан башка эч нерсеге жарабайт. Жалпысынан, бул үчүн таймерлерди же окуяга негизделген ыкманы колдонуңуз. Болбосо, программа кечигүү учурунда жооп бербей калат жана бул дайыма эле жакшы нерсе эмес. Ошондой эле, циклден N тандоо, эгерде ал буйруктардын аткарылышына көз каранды болсо, күтүлбөгөн натыйжаларга алып келиши мүмкүн. Кыязы, түпнуска автор оптимизациялоочу компилятор жөнүндө эч качан уккан эмес ... эгер ал эч нерсе кылбаса, анда ал бүт циклди оптималдаштыра алат!
  • Көңүл буруңуз, "for-loop" ыкмасын колдонууда i үчүн абдан чоң интервал талап кылынышы мүмкүн, анткени бош билдирүү абдан тез. Мындай чоң сандар бүтүн санга туура келбеши мүмкүн.
  • Эгерде сиз for-loop колдонсоңуз, компилятор кодду оптималдаштыра алат жана цикл эч нерсе кылбагандыктан, аны алып салыңыз. Бул Delay () колдонулганда болбойт.