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.
Questo articolo è stato visualizzato 31 838 volte
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
Utilizzare un Ciclo "For"
-
1Per fare in modo che il programma rimanga in attesa utilizza un normale ciclo "for" che però non esegue alcuna istruzione.
-
2Per 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.
Pubblicità
Utilizzare l'Istruzione "sleep()"
-
1Usa 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.
-
2Includi la seguente linea di codice prima dell'istruzione "int main()":
- #include <<TIME.H>TIME.H>
-
3A 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.
Pubblicità
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()".