Jak opóźnić wykonanie programu w C

Autor: Joan Hall
Data Utworzenia: 28 Luty 2021
Data Aktualizacji: 1 Lipiec 2024
Anonim
Making a Primitive Burden Basket to Harvest Mesquite (episode 15)
Wideo: Making a Primitive Burden Basket to Harvest Mesquite (episode 15)

Zawartość

Czy kiedykolwiek chciałeś stworzyć program w C, który czeka przez określony czas? Możesz dostosować sposób, w jaki czas „przeleci”, na przykład: podczas wyświetlania wyskakującej strony (powiadomienia lub podpowiedzi) do gry. ... OK, oto kilka sposobów na stworzenie programu „zatrzymaj się”, czytaj dalej ...

Kroki

  1. 1 Pozwól procesorowi działać przez chwilę bez powodowania obserwowalnego zdarzenia.
  2. 2 Nie wykonuj żadnych innych operacji podczas tego opóźnienia, aby utworzyć proste opóźnienie czasowe.

Metoda 1 z 2: technika pętli for

  1. 1 Użyj typowej pętli "for", po której następuje pusta instrukcja, aby zaimplementować opóźnienie.
  2. 2 Napisz w następujący sposób, na przykład:
    • dla (i = 1; i100; i ++);
    • Operator następujący po „;” zmusza komputer do wykonania pętli 100 razy bez zauważalnego zdarzenia. Tworzy tylko opóźnienie czasowe.

Metoda 2 z 2: Technika „uśpienia ()”

  1. 1 Użyj snu (). Funkcja ta nazywa się sleep (int ms), zadeklarowana w TIME.H>, co powoduje, że program czeka przez określony czas w milisekundach.
  2. 2 Dołącz następujący wiersz do swojego programu przed int main():
    • #include TIME.H>
  3. 3 Wklej tam, gdzie to konieczne, aby opóźnić program:
    • sen (1000);
    • Zmień „1000” na liczbę milisekund, które chcesz odczekać (na przykład, jeśli chcesz zrobić 2 sekundy opóźnienia, zastąp je „2000”.
    • Wskazówka: W niektórych systemach wartość można podawać w sekundach zamiast w milisekundach. Dlatego czasami 1000 to nie 1 sekunda, ale w rzeczywistości 1000 sekund.

Przykładowy kod

Program, który czeka przez określoną liczbę sekund:



#include stdio.h> #include dos.h> int main () {int del; // Okres opóźnienia printf ("Wprowadź czas opóźnienia (w sekundach):"); scanf ("% i",? del); del * = 1000; // Pomnóż przez 1000, aby przeliczyć na milisekundy Opóźnienie (del); // Opóźnienie. printf ("Gotowe."); zwróć 0; }


Program odliczający od 10 do 0:


#include STDIO.H> #include CZAS.H> int main () {int i; for (i = 10; i> = 0; i--) {printf ("% i n", i); // Napisz aktualną liczbę 'odliczania' Opóźnienie (1000); // Poczekaj sekundę} return 0; }

Porady

  • Milisekunda to 1/1000 sekundy.
  • Powyższy algorytm można zaimplementować przy użyciu dowolnej struktury pętli, po której następuje operator null - "; jak przy użyciu pętli while lub do-while.

Ostrzeżenia

  • Ta metoda jest generalnie bezużyteczna dla niczego innego niż trywialny program. Ogólnie, aby to osiągnąć, należy użyć liczników czasu lub podejścia opartego na zdarzeniach. W przeciwnym razie program przestanie odpowiadać w czasie opóźnienia, co nie zawsze jest dobre. Również wybranie N w pętli, jeśli zależy od wykonania poleceń, może dać nieoczekiwane rezultaty. Najwyraźniej oryginalny autor nigdy nie słyszał o optymalizującym kompilatorze... może zoptymalizować całą pętlę, jeśli w rzeczywistości nic nie robi!
  • Zauważ, że gdy używasz metody "for-loop", może to zająć bardzo duży interwał dla i, ponieważ pusta instrukcja jest bardzo szybka. Tak duże liczby mogą nie mieścić się w typie całkowitym.
  • Jeśli używasz pętli for, kompilator może zoptymalizować kod, a ponieważ pętla nic nie robi, usuń ją. Nie dzieje się tak, gdy używasz Opóźnienia ().