Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Reno92 en 06 de Septiembre 2016, 11:33

Título: Temporizador o crear retardo (delay) en C detener ejecución un tiempo (lenguajeC
Publicado por: Reno92 en 06 de Septiembre 2016, 11:33
Buenos días, me gustaría poder realizar un bucle while con un tiempo como factor de cierre del mismo bucle.

es decir,

while (t=40s){
 printf("Maravilla perdida");
}

Algo así.

Gracias y saludos,

Título: Re:Temporizador o crear retardo (delay) en C detener ejecución un tiempo (lenguajeC
Publicado por: César Krall en 09 de Septiembre 2016, 09:55
Hola!

Generar retardos en un programa es algo poco habitual (y algunas personas piensan que poco recomendable). Normalmente si quieres mostrar un mensaje y no pasar a otra cosa lo que haces es pedirle al usuario que pulse una tecla para continuar.

Aún así si quisieras generar un retardo puedes intentarlo con la función delay. Ejemplo:

Código: [Seleccionar]
#include<stdio.h>
#include<stdlib.h>
 
main()
{
printf("Maravilla perdida");
    printf("El programa terminará en 10 segundos.\n");       
 
    delay(10000);                         
 
    return 0;
}

O bien introduciendo un bucle que no haga nada (al poner el ordenador a contar, tarda un tiempo que es el retardo). Esto es una forma un poco bruta de hacerlo y en general no se recomienda pero hay quien lo hace.

Código: [Seleccionar]


#include<stdio.h>
 
main()
{
   int c = 1, d = 1;
 printf("Maravilla perdida");
   for ( c = 1 ; c <= 32767 ; c++ )
       for ( d = 1 ; d <= 32767 ; d++ )
       {}
 
   return 0;
}

Saludos!
Título: Re:Temporizador o crear retardo (delay) en C detener ejecución un tiempo (lenguajeC
Publicado por: Reno92 en 09 de Septiembre 2016, 12:12
Buenas Krall,

He compilado el programa que me has enseñado y me da problemas con la función delay. El problema es que estoy usando el software de linux  ubuntu y la mitad de las librerias y funciones válidas para windows en linux no funcionan. Si pudieras asesorarme sobre las instalacion de complementos o cualquier consejo te lo agradecería.

Mira te muestro el programa,

#include<stdio.h>
#include<stdlib.h>
 
int main()
{
printf("Maravilla perdida");
    printf("El programa terminará en 10 segundos.\n");       
 
    delay(10000);                         
 
    return 0;
}
delay.c: In function ‘main’:
delay.c:33:5: warning: implicit declaration of function ‘delay’ [-Wimplicit-function-declaration]
/tmp/ccOiCXXE.o: En la función `main':
delay.c:(.text+0x28): referencia a `delay' sin definir
collect2: error: ld returned 1 exit status
Ha fallado la compilación.

Muchas gracias por la respuesta,
Saludos,
R
Título: Re:Temporizador o crear retardo (delay) en C detener ejecución un tiempo (lenguajeC
Publicado por: pedro,, en 09 de Septiembre 2016, 16:21
Hola.

Me meto por aquí un poco.

Prueba usando la función Sleep().

Código: [Seleccionar]
#include <stdio.h>
#include <windows.h>
// para linux usar #include <unistd.h>
int main()
{
    int i = 0;
    printf("Maravilla perdida\n");
    printf("El programa terminara en 10 segundos.\n");
    for(i=0; i<10; i++){
        Sleep(1000);
        printf("%i\n", i+1);
    }

    printf("Pasaron los 10 segundos?");
    return 0;
}

Saludos.  ;D