Comment retarder l'exécution du programme en C

Auteur: Joan Hall
Date De Création: 28 Février 2021
Date De Mise À Jour: 1 Juillet 2024
Anonim
The Will to Power by Friedrich Wilhelm Nietzsche (Volume 1, Book 1 and 2) - Full Audiobook
Vidéo: The Will to Power by Friedrich Wilhelm Nietzsche (Volume 1, Book 1 and 2) - Full Audiobook

Contenu

Avez-vous déjà voulu créer un programme C qui attend un certain temps ? Vous pouvez personnaliser la manière de donner l'heure « survoler », par exemple : lors de l'affichage d'une page contextuelle (notification ou indice) pour le jeu. ... OK, voici quelques façons de créer un programme "stand still", lisez la suite ...

Pas

  1. 1 Laissez votre processeur fonctionner pendant un certain temps sans provoquer d'événement observable.
  2. 2 N'effectuez aucune autre opération pendant ce délai pour créer un simple délai.

Méthode 1 sur 2: Technique de boucle for

  1. 1 Utilisez une boucle "for" typique suivie d'une instruction vide pour implémenter un délai.
  2. 2 Écrivez comme suit, par exemple :
    • pour (i = 1 ; i100 ; i ++) ;
    • L'opérateur suivant le ";" force l'ordinateur à boucler 100 fois sans événement notable. Cela ne crée qu'un délai.

Méthode 2 sur 2: La technique "sommeil ()"

  1. 1 Utilisez sommeil (). La fonction est appelée sleep (int ms), déclarée dans TIME.H>, ce qui fait attendre le programme pendant un laps de temps spécifié en millisecondes.
  2. 2 Incluez la ligne suivante dans votre programme avant int main () :
    • #inclure TEMPS.H>
  3. 3 Collez là où c'est nécessaire pour retarder votre programme :
    • sommeil (1000);
    • Remplacez "1000" par le nombre de millisecondes que vous souhaitez attendre (par exemple, si vous souhaitez effectuer un délai de 2 secondes, remplacez-le par "2000".
    • Astuce : Sur certains systèmes, la valeur peut être spécifiée en secondes au lieu de millisecondes. Par conséquent, parfois 1000 n'est pas 1 seconde, mais en fait 1000 secondes.

Exemple de code

Un programme qui attend un certain nombre de secondes :



#include stdio.h> #include dos.h> int main () {int del; // Le délai printf ("Entrez le délai (en secondes):"); scanf ("% i",? del); del * = 1000; // Multipliez-le par 1000 pour convertir en millisecondes Delay (del); // Retard. printf ("Terminé."); renvoie 0 ; }


Un programme qui compte à rebours de 10 à 0 :


#include STDIO.H> #include TIME.H> int main () {int i; pour (i = 10; i> = 0; i--) {printf ("% i n", i); // Écrire le nombre de 'compte à rebours' actuel Delay (1000); // Attendre une seconde} return 0; }

Conseils

  • Une milliseconde équivaut à 1/1000 de seconde.
  • L'algorithme ci-dessus peut être implémenté en utilisant n'importe quelle structure de bouclage suivie de l'opérateur null - "; comme en utilisant des boucles while ou do-while.

Avertissements

  • Cette méthode est généralement inutile pour autre chose qu'un programme trivial. En général, utilisez des minuteurs ou une approche événementielle pour y parvenir. Sinon, le programme ne répondra plus pendant le temps de retard et ce n'est pas toujours une bonne chose. De plus, le choix de N dans une boucle, s'il dépend de l'exécution de commandes, peut avoir des résultats inattendus. Apparemment, l'auteur original n'a jamais entendu parler d'un compilateur d'optimisation... il peut optimiser une boucle entière s'il ne fait rien !
  • Notez que lors de l'utilisation de la méthode "for-loop", cela peut prendre un très grand intervalle pour i, car une instruction vide est très rapide. Ces grands nombres peuvent ne pas tenir dans un type entier.
  • Si vous utilisez une boucle for, le compilateur peut optimiser le code, et puisque la boucle ne fait rien, supprimez-la. Cela ne se produit pas lors de l'utilisation de Delay().