![Making a Primitive Burden Basket to Harvest Mesquite (episode 15)](https://i.ytimg.com/vi/fWjEcpHNjEE/hqdefault.jpg)
Zawartość
- Kroki
- Metoda 1 z 2: technika pętli for
- Metoda 2 z 2: Technika „uśpienia ()”
- Przykładowy kod
- Porady
- Ostrzeżenia
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 Pozwól procesorowi działać przez chwilę bez powodowania obserwowalnego zdarzenia.
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 Użyj typowej pętli "for", po której następuje pusta instrukcja, aby zaimplementować opóźnienie.
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 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 Dołącz następujący wiersz do swojego programu przed int main():
- #include TIME.H>
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 ().