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.

Metodo 1 di 2:
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.
    Pubblicità

Metodo 2 di 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.
    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.

Pubblicità

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()".
Pubblicità

wikiHow Correlati

Come

Aprire un File XML

Come

Diventare un Hacker

Come

Hackerare

Come

Inserire gli Spazi in HTML

Come

Digitare un Trattino

Come

Aprire un File '.Dat'

Come

Compilare un Programma C Utilizzando il Compilatore GNU GCC

Come

Creare un File Batch

Come

Imparare un Linguaggio di Programmazione

Come

Danneggiare un File di Proposito Utilizzando Corrupt a File.Net

Come

Aggiungere un Link a un'Immagine

Come

Programmare un Videogioco

Come

Creare un Link

Come

Compilare ed Eseguire un Programma Java Utilizzando il Prompt dei Comandi
Pubblicità

Informazioni su questo wikiHow

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 18 550 volte
Categorie: Programmazione
Questa pagina è stata letta 18 550 volte.

Hai trovato utile questo articolo?

Pubblicità