Cómo retrasar la ejecución del programa en C

Autor: Joan Hall
Fecha De Creación: 28 Febrero 2021
Fecha De Actualización: 1 Mes De Julio 2024
Anonim
Archivos en C - Lectura/Escritura en archivos binarios
Video: Archivos en C - Lectura/Escritura en archivos binarios

Contenido

¿Alguna vez ha querido crear un programa en C que espera una cierta cantidad de tiempo? Puede personalizar la forma de que el tiempo "vuele", por ejemplo: cuando se muestra una página emergente (notificación o pista) para el juego. ... Bien, aquí hay algunas formas de crear un programa "detenido", sigue leyendo ...

Pasos

  1. 1 Deje que su procesador funcione por un tiempo sin causar un evento observable.
  2. 2 No realice ninguna otra operación durante este retraso para crear un retraso de tiempo simple.

Método 1 de 2: técnica de bucle for

  1. 1 Utilice un bucle típico "for" seguido de una declaración vacía para implementar un retraso.
  2. 2 Escriba lo siguiente, por ejemplo:
    • para (i = 1; i100; i ++);
    • El operador que sigue el ";" obliga a la computadora a realizar un bucle 100 veces sin que se produzca un evento perceptible. Solo crea un retraso de tiempo.

Método 2 de 2: la técnica "sleep ()"

  1. 1 Utilice dormir (). La función se llama sleep (int ms), declarada en TIME.H>, lo que hace que el programa espere una cantidad de tiempo especificada en milisegundos.
  2. 2 Incluya la siguiente línea en su programa antes de int main ():
    • #include TIME.H>
  3. 3 Pegue donde sea necesario para retrasar su programa:
    • dormir (1000);
    • Cambie "1000" a la cantidad de milisegundos que desea esperar (por ejemplo, si desea hacer un retraso de 2 segundos, reemplácelo con "2000".
    • Sugerencia: en algunos sistemas, el valor puede especificarse en segundos en lugar de milisegundos. Por lo tanto, a veces 1000 no es 1 segundo, sino 1000 segundos.

Código de muestra

Un programa que espera una cierta cantidad de segundos:



#include stdio.h> #include dos.h> int main () {int del; // El período de retraso printf ("Ingrese el tiempo de retraso (en segundos):"); scanf ("% i" ,? suprimir); del * = 1000; // Multiplíquelo por 1000 para convertirlo a milisegundos Delay (del); // Demora. printf ("Listo"); return 0; }


Un programa que cuenta regresivamente de 10 a 0:


#include STDIO.H> #include TIME.H> int main () {int i; para (i = 10; i> = 0; i--) {printf ("% i n", i); // Escribe el número actual de 'cuenta atrás' Delay (1000); // Espera un segundo} return 0; }

Consejos

  • Un milisegundo es 1/1000 de segundo.
  • El algoritmo anterior se puede implementar usando cualquier estructura de bucle seguido del operador nulo - "; como usar bucles while o do-while.

Advertencias

  • Este método es generalmente inútil para cualquier otra cosa que no sea un programa trivial. En general, use temporizadores o un enfoque basado en eventos para lograr esto. De lo contrario, el programa dejará de responder durante el tiempo de demora y esto no siempre es bueno. Además, elegir N en un bucle, si depende de la ejecución de los comandos, puede tener resultados inesperados. Aparentemente, el autor original nunca ha oído hablar de un compilador optimizador ... ¡puede optimizar un ciclo completo si en realidad no hace nada!
  • Tenga en cuenta que cuando se utiliza el método "for-loop", puede que sea necesario un intervalo muy grande para i, ya que una declaración vacía es muy rápida. Es posible que números tan grandes no quepan en un tipo entero.
  • Si usa un bucle for, el compilador puede optimizar el código y, dado que el bucle no hace nada, elimínelo. Esto no sucede cuando se usa Delay ().