Didattica C/C++: Creare un’interruzione in secondi

Alle volte può succedere di aver bisogno di interrompere il regolare svolgimento di un codice scritto in C per un tempo di n secondi. Le strade da intraprendere in questo caso possono essere diverse: si potrebbe controllare , ad esempio l’ora di sistema con un ciclo ed uscirne solo quando sono passati i secondi desiderati. Questa soluzione, per quanto logica possa essere, porta problemi in termini di uso di CPU. E’ più facile, pertanto, ricorrere ad una semplicissima funziona del linguaggio C contenuta nella libreria unistd.h. La funzione in questione è sleep che ha il seguente prototipo:

unsigned int sleep(unsigner int second)

dove second è il tempo (espresso in secondi) per cui si vuole che il processo sia fermo.

Ovviamente la praticità di questa funzione è evidente ma proprio l’altro giorno mentre utilizzavo questo metodo mi sono imbattuto in un errore.
Il programma in questione era qualcosa del tipo:

# include
# include

int main()
{
int i;

for (i=0;i<=4;i++)
{
printf("stringa");
sleep(1);
}

return 0;
}

Nel terminale infatti avrei dovuto vedere stampata una parola ogni secondo per un tempo di 4 secondi; quando però lanciavo via terminale il mio programma compilato notavo che le mie parole venivano stampate tutte insieme senza tenere conto dell’attesa di sleep. Dov’era allora il problema? Bene il problema risiedeva in dei problemi di bufferizzazione dell’ouput standard. Il problema è facilmente arginabile ponendo un fflush(stdout) dopo lo sleep; fflush infatti forza la scrittura dei dati presenti nel buffer. Pertanto, molto semplicemente il codice diventa:

# include
# include

int main()
{
int i;

for (i=0;i<=4;i++)
{
printf("stringa");
sleep(1);
fflush(stdout);
}

return 0;
}

Spero di essere stato utile…..alla prossima!

Meganalotto 0.1.4

Vista la febbre alla rincorsa della vincita dei sogni che mi circondava, tempo fa scrissi un piccolo programma che simulava delle estrazioni del superenalotto e permetteva così di avere colonne sempre diverse da poter giocare quando si era a corto di idee. Il programma è scritto in gambas poichè era il linguaggio più veloce con cui scrivere un programma così semplice.

Ovviamente è facile intendere che il mio programma non prevede il futuro e pertanto non dovete arrabbiarvi se non vincete con i miei numeri. Invece sarebbe gradita una donazione nel caso vinciate con i numeri del mio software…:-D


Buona giocata e mi raccomando: GIOCATE RESPONSABILMENTE.


Per il download trovate i sorgenti ed i pacchetti per le maggiori distribuzioni, dell’ultimo rilascio del software, nel box della colonna di destra “Download”

Rilasciato meteomachine linux 1.0.1 stabile

Finalmente è stato rilasciato il programma per gli appassionati di meteorologia, scritto in gambas unico nel suo genere su piattaforma *nix.

Come descritto nel sito del progetto stesso le funzionalità del sito sono:

– Archiviazione di dati giornalieri riguardanti le temperature, le precipitazioni, lo stato del cielo e le osservazioni.

– Calcolo automatico parziale e totale mensile o annuale delle medie delle temperature e dei totali delle precipitazioni (neve inclusa).
– Possibilità di ricercare e confrontare tutti i dati presenti nel database con quelli rilevati in anni e mesi precedenti.
– Generazione automatica dei grafici inerenti l’andamento delle temperature mensile e annuale, per le precipitazioni mensili e annuali, per lo stato del cielo con possibilità si esportazione in formato PNG.

– Download di differenti immagini satellitari da Internet (in tempo reale) con possibilità di esportazione.

– Calcolo del dew-point (punto di rugiada).
– Calcolo della temperatura del bulbo umido.
– Conversione delle temperature da °C a °F e viceversa (temperature).
– Conversione da millimetri (mm) a inches (in) e viceversa (precipitazioni).
– Conversioni tra Km/h, m/s e nodi (velocità del vento).
– Conversione da mb a mmHg (pressione).

– Previsione automatica della probabilità di brinate notturne.
– Stima dell’altezza della base delle nubi cumuliformi.
– Previsione dell’andamento del tempo nelle successiva 12-24h sulla base delle osservazioni attuali di parametri specifici.
– Scala anemometrica di Beaufort.
– Possibilità di creazione e ripristino di backup manuale dei database direttamente in MeteoMachine Linux.
– Creazione automatica dei backup dei database di MeteoMachine Linux ogni tot. numero di avvii.
– Ampie possibilità di configurazione e personalizzazione del programma in base alle proprie esigenze.
– Interfaccia grafica disponibile in due lingue: Italiano e Inglese.

La versione 1.0.1 è dichiarata stabile ed è il coronamento di un lungo lavoro svolto da tre programmatori (tra i quali il sottoscritto) che si è mosso tra codici, correzioni e test di vario genere.

Ovviamente questa versione non è la nostra meta ma un punto di partenza per creare un programma perfetto è pieno di tantissime funzionalità. Visitate il sito per scoprire le funzionalità.