Accedi

Ho dimenticato la password

Ultimi argomenti
» argomento
PROGRAMMA : Realizzare un timer EmptyDom Giu 02, 2013 4:30 pm Da ruggiero98

» problema con la funzione SE aiutoooo x favore?????
PROGRAMMA : Realizzare un timer EmptyDom Giu 02, 2013 4:18 pm Da ruggiero98

» aiuto in programma con if
PROGRAMMA : Realizzare un timer EmptyDom Mag 26, 2013 5:39 pm Da ruggiero98

»  CALCOLO PERCENTUALE IN C
PROGRAMMA : Realizzare un timer EmptySab Apr 20, 2013 8:22 pm Da ruggiero98

» Costruire un temporizzatore software per accensione luci a led
PROGRAMMA : Realizzare un timer EmptyLun Mar 25, 2013 2:34 pm Da Cristina Shady

» Ciao a tutti!
PROGRAMMA : Realizzare un timer EmptyGio Mar 22, 2012 4:19 am Da cosmos91

» Virtualbox VS le periferiche USB
PROGRAMMA : Realizzare un timer EmptyMar Apr 06, 2010 1:49 pm Da dandeciani

» PROGRAMMA: BINARY CODE
PROGRAMMA : Realizzare un timer EmptyMar Dic 23, 2008 7:28 pm Da Thalionwen

» saluti a tutti
PROGRAMMA : Realizzare un timer EmptyMar Dic 23, 2008 7:12 pm Da Thalionwen

» GUIDA : CAP 1 LEZIONE 1 Elementi di base dei programmi in C [Prima Parte]
PROGRAMMA : Realizzare un timer EmptySab Nov 29, 2008 11:44 am Da ya89

» un semplice ciao
PROGRAMMA : Realizzare un timer EmptySab Nov 29, 2008 11:38 am Da ya89

» Aiuto per alice 7 mega
PROGRAMMA : Realizzare un timer EmptyVen Nov 14, 2008 4:03 pm Da root

» FORUM: I nuovi banner
PROGRAMMA : Realizzare un timer EmptyVen Nov 14, 2008 2:48 pm Da Thalionwen

» Zooming Ricorsivo, questo sconosciuto.
PROGRAMMA : Realizzare un timer EmptyVen Nov 14, 2008 2:43 pm Da Thalionwen

» GUIDA : LEZIONE 4 : UTILIZZARE GLI ARRAY IN C#
PROGRAMMA : Realizzare un timer EmptyVen Nov 14, 2008 1:54 pm Da ab89

» GUIDA : CAP 1 LEZIONE 1 Elementi di base dei programmi in C [Terza e Ultima Parte]
PROGRAMMA : Realizzare un timer EmptyVen Nov 14, 2008 12:41 am Da ab89

» GUIDA : CAP 1 LEZIONE 1 Elementi di base dei programmi in C [Seconda Parte]
PROGRAMMA : Realizzare un timer EmptyMer Nov 12, 2008 12:59 am Da ab89

» [PS2] Dark Cloud
PROGRAMMA : Realizzare un timer EmptyMar Nov 11, 2008 6:50 pm Da ab89

» [PC] Sacred 2
PROGRAMMA : Realizzare un timer EmptyLun Nov 10, 2008 10:49 pm Da ab89

» GUIDA : CAP 1 LEZIONE 3 INTRODUZIONE AGLI ARRAY
PROGRAMMA : Realizzare un timer EmptyLun Nov 10, 2008 1:37 pm Da ab89

Flusso RSS


Yahoo! 
MSN 
AOL 
Netvibes 
Bloglines 



PROGRAMMA : Realizzare un timer

Andare in basso

PROGRAMMA : Realizzare un timer Empty PROGRAMMA : Realizzare un timer

Messaggio Da ab89 il Lun Ott 27, 2008 4:39 pm

Realizzare questo programma significa scrivere del codice che simuli il funzionamento di un timer.
Insomma, creare un CountDown.

Generalmente ci si aspetta di vedere un tempo espresso in ore minuti e secondi che decresce ad ogni secondo fino ad arrivare a 0.
Del tipo :

0:0:5
0:0:4
0:0:3
0:0:2
0:0:1
0:0:0

Tralasciando momentaneamente come funziona il timer bisogna prima definire una base tempi iniziale.
Ossia un tempo di "scansione" delle operazioni in modo tale da frazionare il tempo di decremento del contatore.
Dato che nel nostro caso arriviamo a mostrare i secondo come unità più piccola ci conviene definire come base tempi un intervallo di 1 sec.

Detto questo passiamo a vedere l'implementazione a livello quanto meno teorico.

La logica che vado ad applicare è la seguente :

  • salvo lo stato del timer (quindi ore minuti e secondi che devono trascorrere)
  • leggo l'orario di sistema
  • salvo il valore dei secondi dell'orario
  • poi leggo l'orario, i il valore dei secondi salvati è diverso da quello nuovo (implica trascorso 1 secondo) allora aggiorno stato timer, altrimenti continuo a leggere
Infine si mostra in output il timer e si ripete il tutto Very Happy

A livello di codice, si utilizza la libreria time.h per implementare quanto appena scritto, e un oggetto struct per definire il timer Very Happy.
Infine una funzione che al passare di un secondo aggiorni lo stato del timer qualsiasi esso sia Very Happy .
Questa è la spiegazione generale e soprattutto teorica di come realizzare il programma.

Passo ora scrivere il codice Very Happy

Codice:

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

struct orologio{
    int hh,mm,ss;
};

void tick (struct orologio *o);

main(int argc, char *argv[])
{
    struct tm *orario; //orario di sistema
   
    int sec_prec = 0; //ultimo secondo letto
    int ss = 1, mm = 0, hh = 0; //secondi minuti e ore
    struct orologio o;
   
    time_t tempo; //tempo calendario di sistema   
   
    //lettura timer
   
    printf("Inserisci il tempo del timer nel formaro [hh:mm:ss] : ");
    scanf("%d:%d:%d",&o.hh,&o.mm,&o.ss);
   
    http://o.hh = hh;
    http://o.mm = mm;
    http://o.ss = ss;
   
    do
    {
        system("clear");
       
        //registra tempo calendario di sistema
       
        time(&tempo);
       
        //calcola il tempo come ora locale
       
        orario = localtime(&tempo);
       
        printf("%d:%d:%d \n", o.hh, o.mm, o.ss);
       
        sec_prec = orario->tm_sec;    //salva lo stato precedente
       
        //continua a leggere il tempo finchè non passa un secondo
       
        while (sec_prec == orario->tm_sec){
            time(&tempo);
            orario = localtime(&tempo);
        }
               
        tick(&o);
       
    }while ((o.ss >= 0 && o.mm >= 0 && o.hh >= 0));
}

void tick (struct orologio *o)
{
    o->ss --;
    if (o->ss < 0){
        o->ss = 59;
        o->mm--;
        if (o->mm < 0){
            o->mm = 59;
            o->hh--;
        }
    }
   
    return;
}
Per domande e/o chiarimenti sono a disposizione Very Happy

_________________
生きるためにもあまり変過ぎるし、死ぬためにもあまり珍し過ぎる。
PROGRAMMA : Realizzare un timer 841_Allen_Walker
What D.Gray-man Character Are You?
Hosted By theOtaku.com: Animee
PROGRAMMA : Realizzare un timer BT*xJmx*PTEyMjMxMDgxNTY1MTUmcHQ9MTIyMzEwODE1OTI1MCZwPTY5MDgxJmQ9Jm49Jmc9MSZ*PSZvPWNjZTE1NjdiYjc2NDQ*Y2I5YjRjNmYwYThlM2FlZTBi
PROGRAMMA : Realizzare un timer Admingn2
ab89
ab89
Admin
Admin

Numero di messaggi : 74
Età : 31
Località : Rovigo
Data d'iscrizione : 29.09.08

Scheda personaggio
PF:

Torna in alto Andare in basso

Torna in alto


 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum