¿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…

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

  1. 1
    Utiliza sleep(), la función denominada sleep(int ms) declarada en <TIME.H> que hace que el programa espere durante cierto período de tiempo especificado en milisegundos.
  2. 2
    Incluye la siguiente línea de código en tu programa antes de "int main()":
    • #include <TIME.H>
  3. 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.
    Anuncio

Código de muestra

Un programa que espera una cantidad de tiempo dada en segundos:


#include <stdio.h>
#include <dos.h>

int main()
{
int del; // El período de retraso
printf("Ingresa el tiempo de espera (en segundos): ");
scanf("%i",&del); 
del *= 1000; // Multiplícalo por 1000 para convertirlo en milisegundos
Delay(del); // Retraso.
printf("Hecho.");
return 0;
}


Un programa que hace una cuenta regresiva de 10 a 0:


#include <STDIO.H>
#include <TIME.H>

int main()
{
int i;
for(i = 10; i >= 0; i--)
{
printf("%i\n",i); // Escribe el número actual de la 'cuenta regresiva'
Delay(1000); // Espera un segundo
}
return 0;
}

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.
Anuncio

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().
Anuncio

Acerca de este wikiHow

wikiHow es un "wiki", lo que significa que muchos de nuestros artículos están escritos por varios autores. Para crear este artículo, 11 personas, algunas anónimas, han trabajado para editarlo y mejorarlo con el tiempo. Este artículo ha sido visto 59 231 veces.
Categorías: Programación
Anuncio