Kuinka viivyttää ohjelman suorittamista C: ssä

Kirjoittaja: Joan Hall
Luomispäivä: 28 Helmikuu 2021
Päivityspäivä: 1 Heinäkuu 2024
Anonim
Kuinka viivyttää ohjelman suorittamista C: ssä - Yhteiskunta
Kuinka viivyttää ohjelman suorittamista C: ssä - Yhteiskunta

Sisältö

Oletko koskaan halunnut luoda C -ohjelman, joka odottaa tietyn ajan? Voit muokata tapaa antaa aikaa "lentää", esimerkiksi: kun näytetään pelin ponnahdussivu (ilmoitus tai vihje). ... OK, tässä on joitain tapoja luoda "pysähdys" -ohjelma, lue ...

Askeleet

  1. 1 Anna suorittimen toimia jonkin aikaa aiheuttamatta havaittavaa tapahtumaa.
  2. 2 Älä suorita muita toimintoja tämän viiveen aikana yksinkertaisen aikaviiveen luomiseksi.

Menetelmä 1/2: Silmukkatekniikka

  1. 1 Käytä tyypillistä "for" -silmukkaa ja sen jälkeen tyhjää käskyä viiveen toteuttamiseksi.
  2. 2 Kirjoita esimerkiksi seuraavasti:
    • for (i = 1; i100; i ++);
    • Käyttäjä seuraa ";" pakottaa tietokoneen silmukkaamaan 100 kertaa ilman havaittavaa tapahtumaa. Se aiheuttaa vain aikaviiveen.

Menetelmä 2/2: "uni ()" -tekniikka

  1. 1 Käytä unta (). Toimintoa kutsutaan lepotilaksi (int ms), joka ilmoitetaan muodossa TIME.H>, mikä saa ohjelman odottamaan tietyn ajan millisekunteina.
  2. 2 Sisällytä seuraava rivi ohjelmaan ennen int main ():
    • #sisällytä TIME.H>
  3. 3 Liitä tarvittaessa, jotta ohjelma viivästyy:
    • nukkua (1000);
    • Muuta "1000" millisekuntien lukumääräksi, jonka haluat odottaa (jos haluat esimerkiksi viivyttää 2 sekuntia, korvaa se arvolla "2000").
    • Vihje: Joissakin järjestelmissä arvo voidaan määrittää sekunneissa millisekuntien sijasta. Siksi joskus 1000 ei ole 1 sekunti, vaan itse asiassa 1000 sekuntia.

Esimerkkikoodi

Ohjelma, joka odottaa tietyn määrän sekunteja:



#include stdio.h> #include dos.h> int main () {int del; // Viivejakso printf ("Anna viiveaika (sekunteina):"); scanf ("% i" ,? del); del * = 1000; // Kerro se 1000: lla muuntaaksesi millisekunteihin Viive (del); // Viive. printf ("Valmis"); palauta 0; }


Ohjelma, joka laskee 10: stä 0: een:


#include STDIO.H> #include TIME.H> int main () {int i; for (i = 10; i> = 0; i--) {printf ("% i n", i); // Kirjoita nykyinen 'lähtölaskenta' numero Delay (1000); // Odota sekunti} return 0; }

Vinkkejä

  • Millisekunti on 1/1000 sekuntia.
  • Yllä oleva algoritmi voidaan toteuttaa käyttämällä mitä tahansa silmukkarakennetta, jota seuraa null -operaattori - "; kuten käyttämällä while- tai do -while -silmukoita.

Varoitukset

  • Tämä menetelmä on yleensä hyödytön muulle kuin triviaalille ohjelmalle. Käytä yleensä ajastimia tai tapahtumapohjaista lähestymistapaa tämän saavuttamiseksi. Muussa tapauksessa ohjelma ei reagoi viiveen aikana, eikä tämä ole aina hyvä asia. Myös N: n valitseminen silmukassa voi johtaa odottamattomiin tuloksiin, jos se riippuu komentojen suorittamisesta. Ilmeisesti alkuperäinen kirjoittaja ei ole koskaan kuullut optimoivasta kääntäjästä ... se voi optimoida koko silmukan, jos se ei itse asiassa tee mitään!
  • Huomaa, että "for-loop" -menetelmää käytettäessä i: lle voi kulua hyvin suuri aikaväli, koska tyhjä käsky on erittäin nopea. Tällaiset suuret luvut eivät ehkä sovi kokonaislukutyyppiin.
  • Jos käytät for-silmukkaa, kääntäjä voi optimoida koodin, ja koska silmukka ei tee mitään, poista se. Tämä ei tapahdu käytettäessä Delay () -toimintoa.