Як арганізаваць затрымку выканання праграмы ў C

Аўтар: Joan Hall
Дата Стварэння: 28 Люты 2021
Дата Абнаўлення: 1 Ліпень 2024
Anonim
Point Sublime: Refused Blood Transfusion / Thief Has Change of Heart / New Year’s Eve Show
Відэа: Point Sublime: Refused Blood Transfusion / Thief Has Change of Heart / New Year’s Eve Show

Задаволены

Вы калі-небудзь хацелі стварыць праграму на C, якая чакае пэўны час? Вы можаце наладзіць спосаб, каб даць часу «праляцець», напрыклад: пры паказе ўсплывальнай старонкі (апавяшчэнне або падказка) для гульні. . ОК, вось некалькі спосабаў стварэння праграмы выгляду "stand still" (стаяць на месцы), чытайце далей ...

крокі

  1. 1 Няхай ваш працэсар папрацуе на працягу некаторага часу, не выклікаючы прыкметнага падзеі.
  2. 2 Ня выконвайце іншыя аперацыі падчас гэтай затрымкі, каб стварыць простую часовую затрымку.

Метад 1 з 2: Методыка цыклу "for-loop"

  1. 1 Выкарыстоўвайце тыповы цыкл "for", за якім варта пусты аператар для рэалізацыі затрымкі.
  2. 2 Напішыце наступным чынам, для прыкладу:
    • for (i = 1; i100; i ++);
    • Аператар, які ідзе пасля ";" прымушае кампутар выканаць цыкл 100 разоў без прыкметнага падзеі. Ён толькі стварае часовую затрымку.

Метад 2 з 2: Методыка "sleep ()"

  1. 1 Выкарыстоўвайце sleep (). Функцыя называецца sleep (int ms), абвешчаная ў TIME.H>, якая прымушае праграму чакаць на працягу пазначанага часу ў мілісекундах.
  2. 2 Уключыце наступны радок у вашу праграму перад "int main ()":
    • #include TIME.H>
  3. 3 Ўстаўце там, дзе гэта неабходна, каб ваша праграма зрабіла затрымку:
    • sleep (1000);
    • Зменіце "1000" на колькасць мілісекунд, якія вы хочаце чакаць (напрыклад, калі вы хочаце зрабіць 2-секундную затрымку, заменіце яго на "2000".
    • Савет: У некаторых сістэмах значэнне можа паказвацца ў секундах замест мілісекунд. Таму, часам 1000 - не з'яўляецца 1 з, але, у рэчаіснасці, 1000 секунд.

прыклад кода

Праграма, якая чакае пэўную колькасць секунд:



#include stdio.h> #include dos.h> int main () {int del; // The delay period printf ( "Enter the delay time (in seconds):"); scanf ( "% i", & del); del * = 1000; // Multiply it by 1000 to convert to milliseconds Delay (del); // Delay. printf ( "Done."); return 0; }


Праграма, якая выконвае зваротны адлік ад 10 to 0:


#include STDIO.H> #include TIME.H> int main () {int i; for (i = 10; i> = 0; i--) {printf ( "% i n", i); // Write the current 'countdown' number Delay (1000); // Wait a second} return 0; }

парады

  • Мілісэкундах - гэта 1/1000 секунды.
  • Алгарытм, паказаны вышэй, можа быць рэалізаваны з дапамогай любой цыклічнай структуры з наступным нулявым оператором- "; як выкарыстоўваючы цыклы while або do-while.

папярэджання

  • Гэты метад, як правіла, бескарысны ў чым-небудзь, акрамя трывіяльнай праграмы. Увогуле, выкарыстоўвайце таймеры або падзейна-арыентаваны падыход, каб гэта ажыццявіць. У адваротным выпадку, праграма стане не адказваць на працягу часу затрымкі і гэта не заўсёды добра. Акрамя таго, выбар N ў цыкле, калі гэта залежыць ад выканання каманд, можа мець нечаканыя вынікі. Па-відаць, зыходны аўтар ніколі не чуў пра аптымізуе кампілятар ... ён можа аптымізаваць ўвесь цыкл, калі ён на самай справе нічога не робіць!
  • Звярніце ўвагу, што пры выкарыстанні метаду «for-loop» (цыклу «for»), магчыма, спатрэбіцца вельмі вялікі інтэрвал для i, так як пусты аператар выконваецца вельмі хутка. Такія вялікія лічбы могуць не змясціцца ў тып integer.
  • Калі вы выкарыстоўваеце «for-loop», кампілятар можа аптымізаваць код, і, паколькі цыкл не робіць нічога, выдаліце ​​яго. Гэтага не адбываецца пры выкарыстанні Delay ().