Función delay() en C++

Una función a veces útil a veces no mucho es el delay(), sirve para hacer una pausa de ‘n’ segundos. En algunos compiladores Borland esta función se incluye en la librería conio.h pero como aquí estamos del lado del software libre vamos a hacer nosotros mismos esta función. Primero veamos cómo se usa:
delay(variable_tipo_int);
es decir:
int secs=10;
delay(secs);

o
delay(numero_entero);
es decir:
delay(12);
Y claro, la función es esta:
void delay(int secs) {
for(int i = (time(NULL) + secs); time(NULL) != i; time(NULL));
}

  1. La función time(NULL) nos devuelve el segundo exacto en que estamos.
  2. Si le sumamos cierta cantidad de segundos obtenemos una fecha en el futuro.
  3. En cada vuelta del ciclo se checa si esa fecha en el futuro es diferente a la fecha actual.
  4. En cuanto las dos fechas son iguales el ciclo acaba y el programa continúa.

Veamos como se usa en un programa en c++:

#include
#include
using namespace std;

void delay(int secs) {
  for(int i = (time(NULL) + secs); time(NULL) != i; time(NULL));
}

int main()
{
    int sec;
    cout <> sec;
    delay(sec);
}

Para poder usar la función delay de esta forma es necesario ponerla en todos los programas en donde necesitemos usarla (ahora me doy cuenta que no he escrito mucho sobre funciones) e incluir siempre la librería #include<time.h> o #include<ctime>.

15 thoughts on “Función delay() en C++

  1. Hola! Me gustan muchos tus explicaciones, muy claras y didácticas. Una preguntilla: Por qué en la función principal int main() no inticas el valor de retorno, por ejemplo return 0; ? Compilo y todo va bien, pero me gustaría entenderlo. Gracias!😉

  2. Asi es, las funciones de tipo VOID no retornan nada, cuando declares alguna funcion de un tipo de dato la llamada a esa funcion espera cachar el tipo de dato de la funcion, por ejempo
    int calcular_total(int total_pagar; int pagado; {
    int resultado;
    resultado = total_pagar – pagado;
    return calcular_total;
    }

    total = calcular_total(loquetienequepagar, loqueestapagando);.

    Saludos.

  3. Pero entonces, si la función main no va a regresar nada no deberia ser declarada como void main() en lugar de int main() ? Disculpen ustedes mi ignorancia y buen día

    1. En teoría llevarias razon Israel, pero la función main(); si devuelve algo, para ello es el return 0;

      Esto sirve para poder comprobar que el programa ha finalizado correctamente.

  4. No sirve para comprobar que el programa se ha ejecutado correctamente… el return del main() es para la dependencia de programas, es decir, si un programa ejecuta otro, con el return hacemos que el segundo le devuelva un valor al primero.

    Saludos.

  5. Hola, estoy en la prepa viendo programación en c y me desespera porque no entiendo mucho… perdón por la pregunta pero qué hace el VOID???

  6. Que tal, mira tengo una pregunta como se puede incluir este mismo código pero para que se ejecute automáticamente el resto del código que he escrito???

  7. Ohh muchas gracias estoy viendo Progra orientada a objetos,, pero en visual studio no me corría el programa sin:
    void delay(int secs) { for(int i = (time(NULL) + secs); time(NULL) != i; time(NULL)); }
    llevaba horas buscando haz sido de gran ayuda para mi y mis companeros gracias!

  8. hola necesito ayuda !!!!!URGENTE¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ CON ESTOS EJERCICIOS.. Escribir algoritmos para realizar las siguientes operaciones desarrolladas con las
    estructuras de datos tipo pilas:
    • Un algoritmo que calcule el número de elementos de una pila p.
    Implementar algoritmos para una estructura tipo colas así:
    • Un algoritmo que intercale los elementos de dos colas.
    Escribir algoritmos para realizar las siguientes operaciones desarrolladas con las
    estructuras de datos tipo pilas:
    • Un algoritmo que calcule el número de elementos de una pila p.
    Implementar algoritmos para una estructura tipo colas así:
    • Un algoritmo que intercale los elementos de dos colas.

  9. Hola:
    ¿Que es void?
    Básicamente lo que significa es que “no hay tipo”
    al declarar el prototipo de una función hay que declarar el tipo de retorno, el nombre de la función y los parametros:
    [tipo] [identificador]([parametro_1, parametro_2,…]);

    si no va a retornar nada se indica con void: void MiFuncion(int, char);

    al igual que si no utiliza parámetros se indica usándolo como único tipo
    char DimeLetraAlAzar(void);
    en c++ puedes omitirlo, por lo que es normal ver cosas como: int funcion();

    por cierto en el ejemplo la función main es de tipo int (integral) por lo que deveria devolver un integral, lo comun es finalizar la función con :

    return 0;

  10. hola bn la vdd me gustaria saber como darle movimiento alas palabra como q esten pasando una y otra vez si me pueden ayudar en eso seria grandioso

  11. Hola
    Como puedo hacer para que me desplace una variable sobre la pantalla mi maestro me dijo que tenia que usar la función Delay pero no nos dijo como solo nos dijo eso AYUDA PORFIS!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s