Descargar el PDF
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…
Pasos
-
Utiliza un simple bucle "for" seguido de una sentencia vacía para implementar un retardo de tiempo.
-
Escribe según se indica a continuación, por ejemplo:
- for (i=1 ; i<100 ; i++) ;
Anuncio
</100>#* La sentencia seguida por un signo ";" hará que la computadora ejecute el bucle 100 veces sin producir ningún evento perceptible. Esto simplemente creará una demora de tiempo.
-
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.
-
Incluye la siguiente línea de código en tu programa antes de "int main()":
- #include <TIME.H>
-
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
Esta página ha recibido 71 362 visitas.
Anuncio