Com retardar l'execució del programa en C

Autora: Joan Hall
Data De La Creació: 28 Febrer 2021
Data D’Actualització: 1 Juliol 2024
Anonim
Com retardar l'execució del programa en C - Societat
Com retardar l'execució del programa en C - Societat

Content

Alguna vegada heu volgut crear un programa C que esperi un cert temps? Podeu personalitzar la manera de donar el temps "volant", per exemple: quan es mostra una pàgina emergent (notificació o suggeriment) per al joc. ... D'acord, aquí hi ha algunes maneres de crear un programa "quiet", seguiu llegint ...

Passos

  1. 1 Deixeu que el processador funcioni durant un temps sense provocar cap esdeveniment observable.
  2. 2 No realitzeu cap altra operació durant aquest retard per crear un simple retard de temps.

Mètode 1 de 2: tècnica For-loop

  1. 1 Utilitzeu un bucle típic "per" seguit d'una declaració buida per implementar un retard.
  2. 2 Escriviu de la següent manera, per exemple:
    • per a (i = 1; i100; i ++);
    • L'operador que segueix ";" obliga l'ordinador a fer un bucle 100 vegades sense cap esdeveniment notable. Només crea un retard de temps.

Mètode 2 de 2: la tècnica "sleep ()"

  1. 1 Utilitzeu sleep (). La funció s’anomena sleep (int ms), declarada a TIME.H>, cosa que fa que el programa esperi una quantitat especificada de temps en mil·lisegons.
  2. 2 Incloeu la línia següent al programa abans d'int main ():
    • #include TIME.H>
  3. 3 Enganxeu-lo on calgui per fer que el programa es retardi:
    • dormir (1000);
    • Canvieu "1000" pel nombre de mil·lisegons que voleu esperar (per exemple, si voleu retardar 2 segons, substituïu-lo per "2000".
    • Consell: en alguns sistemes, el valor es pot especificar en segons en lloc de mil·lisegons. Per tant, de vegades 1000 no són 1 segon, sinó en realitat 1000 segons.

Codi de mostra

Un programa que espera un cert nombre de segons:



#include stdio.h> #include dos.h> int main () {int del; // El període de retard printf ("Introduïu el temps de retard (en segons):"); scanf ("% i" ,? del); del * = 1000; // Multiplicar-lo per 1000 per convertir-lo en mil·lisegons de retard (del); // Retard. printf ("Fet"); retorn 0; }


Un programa que compta enrere de 10 a 0:


#include STDIO.H> #include TIME.H> int main () {int i; per a (i = 10; i> = 0; i--) {printf ("% i n", i); // Escriviu el número actual de "compte enrere" Retard (1000); // Espera un segon} retorna 0; }

Consells

  • Un mil·lisegon és 1/1000 de segon.
  • L'algoritme anterior es pot implementar utilitzant qualsevol estructura de bucle seguida de l'operador nul - "; com fent servir bucles while o do-while.

Advertiments

  • Aquest mètode és generalment inútil per a qualsevol cosa que no sigui un programa trivial. En general, utilitzeu temporitzadors o un enfocament basat en esdeveniments per aconseguir-ho. En cas contrari, el programa deixarà de respondre durant el temps de retard i això no sempre és bo. A més, triar N en un bucle, si depèn de l'execució d'ordres, pot tenir resultats inesperats. Pel que sembla, l'autor original mai no ha sentit parlar d'un compilador d'optimització ... pot optimitzar tot un bucle si realment no fa res.
  • Tingueu en compte que quan s'utilitza el mètode "for-loop", pot trigar un interval molt gran per a i, ja que una sentència buida és molt ràpida. És possible que aquest nombre tan gran no encaixi en un tipus enter.
  • Si utilitzeu un bucle for, el compilador pot optimitzar el codi i, com que el bucle no fa res, traieu-lo. Això no passa quan s'utilitza Delay ().