Heb je ooit wilt een C programma te laten wachten voor een bepaalde tijd?
U kunt het opzetten van een techniek om de tijd om weg te kruisen, bijvoorbeeld: bij het tonen van een splash page (een aankondiging of hint) voor een spel.
Oke, hier zijn enkele manieren om het programma "stand still", lees verder...
Stappen
- 1Maak uw CPU werk voor enige tijd geen enkele merkbare evenement.
- 2Doe meer handelingen tijdens deze vertraging, teneinde een eenvoudige time-delay.
De "voor-loop"-techniek
- 1Gebruik een typische lus "voor", gevolgd door een null verklaring te implementeren tijdvertraging.
- 2Schrijf als volgt, voor een voorbeeld:
- for (i = 1; i <100; i + +);
</ 100> # * De verklaring gevolgd door de ";" maakt de computer uit te voeren de lus 100 keer zonder enige merkbare evenement. Het creëert alleen een tijdsvertraging.
De "sleep ()"-techniek
- 1Gebruik slapen () de functie genaamd slaap (int ms) gedeclareerd in <time.H> waarin het programma wachten op de tijd in milliseconden opgegeven maakt.
- 2Onder meer de volgende regel in uw programma voor "int main ()":
- # Include <TIME.H>
- 3Plaatst, waar u uw programma om een vertraging te maken nodig:
- slaap (1000);
- Verander de "1000" om het aantal milliseconden dat u wilt wachten (bijvoorbeeld, als je wilt een 2 seconden vertraging te maken, te vervangen door 2000.
- Tip: Op sommige systemen de waarde zou kunnen verwijzen naar seconden, in plaats van milliseconden. Dus soms 1000 is niet een seconde, maar, in feite, 1000 seconden.
Voorbeeldcode
Een programma dat een bepaald aantal seconden wacht:
# Include <stdio.h> # Include <dos.h> int main () { int del; / / De vertragingstijd printf ("Voer de vertragingstijd (in seconden):"); scanf ("% i", & del); del * = 1000; / / vermenigvuldigen met 1000 om te zetten naar milliseconden Delay (del); / / Delay. printf ("Klaar."); terug 0; }
Een programma dat aftelt 10-0:
# Include <stdio.h> # Include <TIME.H> int main () { int i; for (i = 10; i> = 0; i -) { printf ("% i \ n", i); / / Schrijf de huidige 'countdown' nummer Delay (1000); / / Wacht een seconde } terug 0; }
Tips
- Een milliseconde is 1/1000 van een seconde.
- De bovenstaande logica kan worden geïmplementeerd met behulp van een lus structuur gevolgd door een null-statement ";", zoals door het gebruik van, terwijl of do-while loops.
Waarschuwingen
- Deze techniek is algemeen nutteloos in iets anders dan een triviale programma. Over het algemeen gebruikt timers of een event-gedreven aanpak om dit te implementeren. Anders zal het programma niet meer reageert tijdens de vertragingstijd, en dat is niet altijd een goede zaak. Trouwens, het kiezen van N in je loop, als het afhangt van instructie uitvoering, kan tot verrassende resultaten leiden. Blijkbaar is de oorspronkelijke auteur heeft nog nooit gehoord van een optimaliserende compiler... het kan weg optimalisering van het gehele lus als het eigenlijk doet niets!
- Merk op dat bij gebruik van de voor-loop techniek, zou je een zeer grote overspanning voor ik nodig, omdat een leeg statement wordt zeer snel uitgevoerd. Zulke grote aantallen kunnen niet passen in een integer type.
- Als u gebruik maakt van de voor-loop, kan de compiler de code te optimaliseren, en, omdat de lus niets doet, verwijder het. Dit gebeurt niet bij gebruik van Delay ().