Come Inserire dei Ritardi (o Delay) in un Programma C

In questo Articolo:Utilizzare un Ciclo "For"Utilizzare l'Istruzione "sleep()"

Hai la necessità di creare un programma in C che attenda per un determinato numero di secondi?

Esistono diverse tecniche che permettono di interrompere temporaneamente l'esecuzione di un programma per un determinato intervallo di tempo: per esempio per poter mostrare a video una schermata di caricamento di un gioco (o un'informazione o un suggerimento).

Prosegui nella lettura per creare un programma che "resti in attesa" per un determinato intervallo di tempo.

Passaggi

  1. 1
    Fai in modo che la CPU continui a lavorare senza però produrre alcun tipo di risultato.
  2. 2
    In questo semplice esempio, durante il tempo di attesa, il programma non eseguirà alcuna operazione.

1
Utilizzare un Ciclo "For"

  1. 1
    Per fare in modo che il programma rimanga in attesa utilizza un normale ciclo "for" che però non esegue alcuna istruzione.
  2. 2
    Per esempio utilizza il seguente codice:
    • for (i=1 ; i<100 ; i++) ;
    • Utilizzando la sintassi del ciclo "for" indicata e il carattere ";", il computer si limiterà a incrementare la variabile "i" dal valore 1 fino a 99 senza produrre alcun tipo di risultato o di evento, dopodiché passerà a eseguire l'istruzione successiva del programma. In questo modo hai generato un ritardo nell'esecuzione del codice in maniera semplice e veloce.

2
Utilizzare l'Istruzione "sleep()"

  1. 1
    Usa la funzione "sleep()". La sintassi completa è la seguente sleep(int [millisecondi]) ed è compresa nel file <<TIME.H>TIME.H> della libreria standard del C. In questo modo il programma interromperà l'esecuzione per il numero di millisecondi specificato.
  2. 2
    Includi la seguente linea di codice prima dell'istruzione "int main()":
    • #include <<TIME.H>TIME.H>
  3. 3
    A questo inserisci l'istruzione "sleep" nel punto del programma in cui desideri interrompere temporaneamente l'esecuzione:
    • sleep(1000);
    • Modifica il parametro "1000" con il numero di millisecondi di cui hai bisogno (per esempio se hai bisogno di ritardare l'esecuzione di 2 secondi dovrai utilizzare il parametro "2000").
    • Consiglio: utilizzando alcuni sistemi il parametro dell'istruzione "sleep" è espresso in secondi anziché in millisecondi. In questo scenario il valore "1000" non farà riferimento a mille millisecondi, ma bensì a mille secondi.

Codice di Esempio

Questo è un semplice programma che attende per il numero di secondi indicato dall'utente:



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

int main()
{
    int del; // variabile per memorizzare il ritardo da generare
    printf("Inserire il tempo di attesa (in secondi): ");
    scanf("%i",&del); 
    del *= 1000; // moltiplico il numero digitato per 1.000 per convertire i secondi in millisecondi
    delay(del); // attendo per il numero di secondi specificato.
    printf("Fatto.");
    return 0;
}


Questo è un programma che conta da 10 fino a 0:



#include <stdio.h>
#include <time.h>

int main()
{
    int i;
    for(i = 10; i >= 0; i--)
    {
        printf("%i\n",i); // Stampo a video il numero attuale del conto alla rovescia
        delay(1000); // attendo un secondo
    }
    return 0;
}

Consigli

  • La tecnica descritta in questo articolo può essere implementata utilizzando qualsiasi tipo di ciclo che non preveda l'esecuzione di alcuna istruzione, per esempio un ciclo "while" o "do-while".
  • Ricorda che un millisecondo corrisponde a 1/1000 di secondo.

Avvertenze

  • Le tecniche di programmazione descritte nell'articolo generalmente non vengono utilizzate in nessun programma all'infuori di quelli a scopo puramente didattico. In linea generale per implementare una soluzione adatta a questo scopo viene utilizzato un "timer" o un evento specifico che scatenerà l'esecuzione di un blocco di istruzioni. Utilizzando le tecniche descritte, durante il tempo di attesa, il programma non risponderà ad alcun comando e questa situazione non è sempre un bene in ambito informatico. Oltretutto, se il ciclo "for" viene gestito da una variabile che viene modificata durante l'esecuzione del programma, i risultati che si otterranno potrebbero essere imprevedibili. L'autore dell'articolo originale sembra che non abbia mai utilizzato un compilatore che ottimizza il codice (e che non ne conosca l'esistenza), dato che il ciclo "for", utilizzato nel modo descritto, verrebbe rimosso automaticamente dal codice sorgente visto che non svolge alcuna istruzione specifica.
  • Nota che quando utilizzi un ciclo "for" potresti avere la necessità di utilizzare un valore molto grande per la variabile "i", dato che l'esecuzione del ciclo sarà molto rapida visto che non contiene alcuna istruzioni da eseguire. Ricorda che il numero che dovrai utilizzare per ottenere il ritardo voluto potrebbe essere troppo grande per essere memorizzato in una variabile di tipo "integer".
  • Se hai scelto di utilizzare un ciclo "for" per inserire un ritardo nell'esecuzione del programma, il compilatore C potrebbe ottimizzare il codice automaticamente, eliminandolo, dato che non viene eseguita alcuna istruzioni al suo interno. Questo inconveniente non si verifica quando si utilizza l'istruzione "delay()".

Informazioni sull'Articolo

wikiHow è una "wiki"; questo significa che molti dei nostri articoli sono il risultato della collaborazione di più autori. Per creare questo articolo, 14 persone, alcune in forma anonima, hanno collaborato apportando nel tempo delle modifiche per migliorarlo.

Categorie: Programmazione

In altre lingue:

English: Delay in C, Español: programar un retardo en C, Português: Fazer um Delay em C, Русский: организовать задержку выполнения программы в C

Questa pagina è stata letta 16 147 volte.
Hai trovato utile questo articolo?