App_Clock_Cronometro_con_tempo_intermedio

Clock (orologio) è uno dei componenti non visibili del pacchetto.
Questo vuol dire che lavora “dietro le quinte” fornendo l'orologio, un timer, e calcoli del tempo.
Il tempo del clock è espresso in millesimi di secondo.
Il formato interno utilizzato dal clock viene chiamato istant (istante).
Queste risorse sono intercettate e messe a frutto da altri componenti per gestire applicazioni.

Componente

Gruppo

Nome

Proprietà

Text

Width

Text Alignment

Timer Interval

Clock

Basic

Clock1

10

Label

Basic

Ltitolo

Titolo

Fill parent

Button

Basic

Bavvia

Avvia

Fill parent

Label

Basic

Ltempo

0

260pixel

Right

Table

ScreenArr.

TA

Automatic

2 Row, 2 Col

Button

Basic

Bintermedio

Intermedio

100pixel

Center

Button

Basic

Bstop

Stop

100pixel

Center

Label

Basic

Lintermedio

0

160pixel

Right

Label

Basic

Lstop

0

Automatic

Right

Button

Basic

Breset

Reset

Fill parent

Center

Le proprietà del componente Clock.
il TimeInterval è l’intervallo di tempo di rilevazione dell’orologio interno.

  • Clock, dopo l’inserimento è rintracciabile nella parte bassa della finestra Viewer sotto la dicitura: Non-visible components.
  • Table è di 2 righe e 2 colonne: nelle due celle della prima riga contiene il Button Bintermedio e la Label Intermedio nelle due celle della seconda riga contiene il Button Bstop e la Label Lstop.
  • Il componente Button Breset si trova al di sotto del componente Table.
Di solito questa applicazione non sarà l'unica in esecuzione sul telefono, per questa ragione, il calcolo del tempo potrebbe differire da quello rilevato con altri strumenti.
Come dovrebbero presentarsi la pagina Design e l’Emulatore:
Aprire Blocks Editor :
Per prima cosa è necessario assemblare i blocchi per intercettare il componente clock1.
Nella pagina Design, è stato stabilito che la lettura avverrà ogni TimeInterval 10.
Fare click su My Blocks e poi su Cloc1.
Trascinare il blocco Timer nell’area di lavoro.
Il testo sul blocco ci dice che: quando (when) viene rilevato il tempo (Timer) fai (do).
Il tempo rilevato, in questo caso è 10 millesimi di secondo.

Poiché l’orologio non si ferma mai, sarà costruito un dispositivo tipo interruttore On/Off che:

  • Inizi a rilevare i cicli a comando (pulsante AVVIA)
  • Smetta di farlo (pulsante Stop)
  • Inizi di nuovo partendo da zero (pulsante Reset).

Per fare questo verranno utilizzati una variabile ed un blocco if

Fare click su Built-In e poi su Definition e trascinare il blocco variable nell’area di lavoro.
Fare click su Logic e trascinare il blocco false su quello precedente incastrandolo dopo la parola as.
E' stata definita una variabile (di nome variable). Il contenuto è false (falso).
Cambiare il nome alla variabile in modo da essere più riconoscibile.
Fare click sulla parola variable, diventa editabile, scrivere LeggeClock.
La prima parte dell’interruttore, la variabile LeggeClock, è stata costruita.
Adesso è su false perché all’avvio dell’applicazione il conteggio non deve partire subito, ma deve farlo al click sul pulsante AVVIA.

Ora verranno posti i blocchi per leggere lo stato dell'interruttore (variabile LeggeClock).
Fare click su Control e trascinare il blocco if sul blocco timer nell’area di lavoro incastrandolo dentro.

Fare click su Logic e trascinare il blocco con il segno = sui blocchi precedenti.
Incastrarlo dopo la parola test.
Fare click su My Blocks e poi su My Definition.
Trascinare il blocco LeggeClock sui blocchi precedenti.
Costruire la prima parte del test di confronto incastrando questo blocco nello spazio fra la parola test ed il segno =
Fare click su Built-In e poi su Logic
Trascinare il blocco True (vero) dopo il segno = inca-strandolo nello spazio libero.

Leggendo il testo sui blocchi veniamo a sapere che:
quando (when) se (if) test LeggeClock è = true (vero);
in altre parole se la variabile LeggeClock contiene true (vero), allora fai…(then-do).
Questo fare è rilevare lo scorrere del tempo in Clock1.
L’orologio funziona, ma nelle proprietà di Clock1 abbiamo il valore 10 (espresso in millesimi di secondo), che per un computer va bene, mentre all’utente deve essere mostrato il tempo in ore muniti e secondi.
Per fare questo è necessario disporre di 3 variabili, rispettivamente per ore, minuti e secondi.
Il tempo verrà contato nella variabile dei secondi.
Al 60° secondo la variabile dei secondi torna a zero e scatta +1 in quella dei minuti.
Al 60° minuto la variabile dei minuti torna a 0 e scatta più +1 in quella delle ore.
Mentre tutto questo accade viene mostrato lo scorrere del tempo sul display.
In modo analogo a come fatto in precedenza per la variabile LeggeClock creare altre 3 variabili dandole i nomi di: ore, minuti e secondi (esempio sotto).
Da my Blocks prelevare la variabile secondi ed incastrarla in then-do del blocco if precedente.
Fare click in Built-In, poi in Math, trascinare il blocco + su quello precedente incastrandolo dopo il to.
Incastrare il blocco number nella seconda presa del blocco precedente. Sostituire la cifra 123 con 0.1
Fare click in My Blocks e poi in My Definitions. Prelevare la variabile Secondi e incastrarla nella prima presa del blocco +
Questo dovrebbe essere il risultato ottenuto.
Nella variabile secondi vengono contati i secondi trascorsi.
Adesso vengono assemblati i blocchi per contare i minuti.
In Built-In fare click su Control e prelevare il blocco if incastrandolo sotto il blocco precedente
In Math prelevare il blocco > ed incastrarlo dopo la parola test del blocco precedente.
Nella prima parte del test inserire la variabile secondi e nella seconda il numero 59.9
Il test controlla se la variabile secondi sia superiore a 59.9.
Nel caso abbia superato questo valore verrà messa a zero ed aumentata la quantità dei minuti nella variabile minuti.
In My Blocks fare click su My Definitions e prelevare la variabile secondi incastrandola nel then-do del blocco precedente
In Buit-In prelevare number, assegnargi il valore 0 ed incastrarlo dopo il to nel blocco precedente.
Come dovrebbe presentarsi la parte in lavorazione.
In My Blocks fare click su My Definitions e prelevare la variabile minuti incastrandola sotto quella dei secondi prelevata in precedenza.
Fare click in Built-In, poi in Math, trascinare il blocco + su quello precedente incastrandolo dopo il to.
Fare click su My Blocks e poi in My Definitions. Trasci-nare il blocco minuti nella prima parte del blocco prece-dente (primo addendo della somma).
Fare click in Built-In e poi in Math. Prelevare il blocco number e incastrarlo nella seconda presa del blocco precedente. Sostituire la cifra 123 con 1.
Questo valore è la somma del tempo nella variabile minuti.
Come dovrebbero presentarsi i blocchi per il conteggio dei secondi e dei minuti.
Come dovrebbero presentarsi i blocchi per il conteggio dei secondi e dei minuti.
Adesso fare le stesse operazioni in modo analogo per i minuti e le ore incastrando il prossimo blocco if all’interno del blocco if precedente, sotto la variabile minuti.

La disposizione dei blocchi per il conteggio del tempo e la sua trasformazione in ore, minuti e secondi per la lettura umana è terminata.
Il prossimo passo è rendere visibile i risultati sul display.
Come stabilito nella pagina Design, lo scorrere del tempo sarà visibile nel componente Ltempo (Label)
Fare click su My Blocks e poi su Ltempo. Trascinare la variabile Text sui blocchi precedenti. Incastrarla
fra il blocco if e il braccio in basso del blocco Timer
In questo blocco vengono formattati i dati in uscita e resi come H m s.
In questo blocco verranno resi i dati in uscita formattati come H m s.
Trascinare il blocco text sul blocco precedente incastrandolo. Si aprirà una nuova presa.
Fare click su My-Blocks,poi su My Definitions e trascinare ore su make test incastrandolo.
Si aggiungerà una nuova presa. Ripetere gli ultimi 2 passaggi per le variabili minuti e secondi
Cambiare,editandoli, il contenute degli ultimi 3 blocchi text rispettivamente in H: , M: , S:

Questi blocchi rilevano l’avanzamento del tempo.

Clock1.Timer è l’orologio all’interno nel quale avvengono le operazini.

Il primo blocco if conta i secondi trascorsi.

Il secondo blocco if si occupa di trasformere i secondi in minuti.

Il terzo blocco if (all’interno del secondo) trasforma i minuti in ore.

Il blocco Ltempo rappresenta la Label Ltempo sul display dove si vede il tempo scorrere.

Il blocco make text formatta i dati in entrata per il blocco LtempoText.

I blocchi numerici incastrati in make text sono il risultato del’elabotrazione del tempo.

Ora che esiste il cronometro, rimangono da assemblare gli interruttori (pulsanti) per:

  • Avviarlo
  • Rilevare il tempo intermedio
  • Fermarlo
  • Resettarlo prima di un nuovo avvio.
Pulsante AVVIA
Bavvia rappresenta il pulsante avvia.
Al click su di esso il contenuto della vaiabile LeggeClock assume il valore true (vero).
Questo permette di rilevare lo scorrere del tempo all’interno del blocco Clock1.
Pulsante Intermedio
Bintermedio rappresenta il pulsante Intermedio.
Lindermedio rappresenta la label che mostra sul display il risultato.
Al click il tempo trascorso fino a quel momento viene letto da Ltempo ed inserito in Lintermedio.
Pulsante Stop
Bstop rappresenta il pulsante Stop.
Lstop la label che mostra sul display il risultato finale.
Al click il tempo trascorso fino a quel momento viene letto da Ltempo ed inserito in Lstop.
Il contenuto della variabile LeggeClock assume il valore false (falso).
Questo permette interrompere la rilevazione del tempo.

Pulsante Reset
Breset rappresenta il pulsante Reset.
Il contenuto della vaiabile LeggeClock assume il valore false (falso).
Questo permette interrompere la rilevazione del tempo.
Non è una ripetizione del contenuto in Bstop, ma è necessario perché l’utente potrebbe premere questo pulsante senza avere in precedenza premuto Stop.