Cómo programar un retardo en C

¿Alguna vez has querido hacer que un programa en C detenga su ejecución durante cierto período de tiempo? Puedes establecer una técnica para que el tiempo transcurra, por ejemplo: mientras muestras una página de bienvenida (una notificación o una indicación) para un juego. Bien, aquí tienes algunas formas para que el programa "permanezca inmóvil", continúa leyendo…

Pasos

  1. Haz que tu CPU funcione durante un tiempo produciendo algún evento imperceptible.
  2. No hagas ninguna otra operación mientras ocurre el retardo, para crear una demora simple de tiempo.

La técnica del "bucle for"

  1. Utiliza un simple bucle "for" seguido de una sentencia vacía para implementar un retardo de tiempo.
  2. Escribe según se indica a continuación, por ejemplo:
    • for (i=1 ; i<100 ; i++) ;

La técnica "sleep()"

  1. Utiliza sleep(), la función denominada sleep(int ms) declarada en que hace que el programa espere durante cierto período de tiempo especificado en milisegundos.
  2. Incluye la siguiente línea de código en tu programa antes de "int main()":
    • #include
  3. Incluye el siguiente, donde sea que necesites que tu programa haga una pausa:
    • sleep(1000);
    • Cambia el "1000" por el número de milisegundos que quieres que dure la espera (por ejemplo, si quieres que haga una pausa de 2 segundos, reemplázalo por "2000").
    • Consejo: En algunos sistemas, el valor podría estar indicado en segundos en lugar de milisegundos. Por lo tanto, a veces 1000 no es un segundo, sino de hecho, 1000 segundos.

Consejos

  • Un milisegundo es 1/1000 de un segundo.
  • La lógica de arriba puede implementarse usando cualquier estructura repetitiva seguida de una sentencia nula-";", como por ejemplo usando bucles while o do-while.

Advertencias

  • Esta técnica generalmente resulta inútil en casos que no sean más que un programa trivial. En general, puedes usar cronómetros o una aproximación dirigida por eventos para implementar esto. De otra forma, el programa no responderá durante el tiempo de espera, y muchas veces esto no es bueno. Además, hacer que un bucle se repita N veces, dependiendo de la ejecución de una instrucción, podría tener un resultado inesperado. Aparentemente el autor original nunca ha oído acerca de la optimización de compilación...¡podría optimizar el bucle completo si de hecho el mismo no hiciera nada!
  • Ten en cuenta que al utilzar la técnica del bucle for, podrías necesitar un lapso muy grande para i, ya que una sentencia vacía se ejecuta con mucha rapidez. Estos números tan grandes podrían no caber en un tipo de datos entero.
  • Si estás utilizando el bucle for, el compilador podría optimizar el código, y, como el bucle no hace nada, eliminarlo. Esto no ocurrirá si utilizas Delay().
Información
Usuarios que están en este grupo no pueden dejar comentarios en la página