PDF download Descargar el PDF PDF download Descargar el PDF

¿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()"

PDF download Descargar el PDF
  1. H> que hace que el programa espere durante cierto período de tiempo especificado en milisegundos.
    • #include <TIME.H>
    • 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

Esta página ha recibido 71 362 visitas.

¿Te ayudó este artículo?

Anuncio