Chi controlla il controllore?

La mia idea è quella di iniziare proprio dalle basi sia perché la mia esperienza è limitata sia perché cosi tutti possono seguire queste spiegazioni di introduzioni a Thunkable.
Come anticipato precedentemente nel block editor troveremo tutti i componenti presenti nell'app e i loro blocchi, molti saranno ricorrenti mentre altri specifici, e serviranno per modificare tutte le funzioni e i settaggi.
Prima di addentrarci  con comandi più complessi voglio partire illustrando quelli sono sempre presenti all' interno di un codice, semplice o complesso che sia, li troveremo nella sezione Built-in sotto Control e controllano le funzioni base nonché indispensabili.
I primi, anzi il primo che andremo a vedere ha il disegno di un ingranaggio in alto a sinistra con il quale si va a comporre il blocco ampliando le sue funzionalità, ogni volta che troveremo questo ingranaggio sapremo di trovarci davanti un blocchetto "Transformers" 😂 che può modificare il suo codice adattandosi alle varie necessità.
                       a)                              b)                               c)                                d)                                  e)   
Probabilmente il più usato, impone delle condizioni che se soddisfatte permettono l'accesso alla parte "then" dove andremo a posizionare l'azione , il comando che dovrà essere svolto; vediamo una semplice implementazione che utilizza questo concetto : se (if) la password è esatta allora (then) apri il prossimo screen. E cosa succede se la password è sbagliata? Basta introdurre il comando "else" (altrimenti) così da poter inserire al suo interno l'azione da svolgere nel caso di errore. Nel caso non volessimo solo due scelte possiamo aggiungere "else if" che introduce una seconda condizione vera e propria e che possiamo personalizzare a nostro piacimento; osservando bene la forma del blocco possiamo capire che "else if" può collegarsi in alto ma anche ricevere in basso, quindi ipoteticamente potremmo inserire in colonna infinite condizioni. "Else" invece ha la base piatta quindi non si potranno aggiungere altri blocchi di seguito e la gerarchia dei comandi sarà definita, partendo dall'alto verranno verificate tutte le condizioni a cascata fino a trovare quella soddisfatta.
Codici snelli e ottimizzati sono essenziali per evitare errori o rallentamenti, più si diventa bravi e più si padroneggiano metodi sofisticati, vediamo i blocchi per effettuare delle ripetizioni senza dover  riscrivere parte di codice.
             f)                                                   g)                                              h)

Il primo (f) ci permette delle ripetizioni personalizzate  potendo scegliere il numero di volte ( da - a ) e anche lo step da usare ( ogni 3, ogni 10,...pensiamo ad un orologio che scorre e vogliamo effettuare qualcosa nell'arco di 30 sec ( da 0 a 30) ma solo ogni 5 sec, magari un beep che avverte della fine di un conto alla rovescia ), al posto dei numeri possiamo introdurre anche valori particolari come la lunghezza di una lista oppure direttamente una variabile. Il secondo (g) invece ci permette di effettuare un comando per ogni elemento presente in una lista; l'ultimo (h) molto semplicemente effettuerà tutto quello presente nella sezione "do" mentre (while) la condizione test sarà valida.
Non dovrei nemmeno spiegarli tanto che sono semplici, basta semplicemente tradurre la scritta, ma vedremo in seguito che saranno molto utili per ottimizzare la nostra applicazione per evitare rallentamenti o di utilizzare troppa RAM, gestiranno gli spostamenti tra gli screen e anche eventuali dati o informazioni da gestire.


Partendo da sinistra useremo il primo blocco (i) per aprire un nuovo screen indicando il suo nome e il secondo (j) se invece vogliamo anche passare un valore di partenza al prossimo screen; subito dopo (k) abbiamo la chiusura tornando allo screen che aveva lanciato l'apertura e porterà con se anche un risultato. L' ultimo blocchetto sulla sinistra (l) avrà proprio il compito di salvare al suo interno questi valori che sia all'apertura o alla chiusura, quindi dovrà essere usato nello screen diverso da quello in cui abbiamo usato il comando principale. Es. Se sono in screen 1 e apro screen 2 passando un valore, dovremo usare "get start value" in screen 2 per recuperare questo dato.
Sul lato destro (m) abbiamo l' omologo di quello utilizzato con gli screen ma in questo caso ci sarà un valore testuale che verrà restituito all' applicazione che ha aperto questa schermata, subito sotto il blocco (n) per recuperare questo valore nel momento in cui la schermata è stata aperta da un' applicazione esterna. Terminiamo con chiudere la schermata attiva (o) e chiudere l'applicazione (p).
Come anticipato più si diventa pratici e bravi e più si entra a pieno nel codice capendo come gestire i tempi, le gerarchie, le procedure, tutto per ottimizzare e rendere più fluido il funzionamento; sarà per questo motivo che non mai usato questi ultimi blocchi, saranno solo per i guru del codice 🙈
q)                                 r)                                                 s)               

Come potrete notare le forme dei blocchi sono diverse ( e i colori ) a seconda della funzione e delle proprietà che hanno e anche a seconda di dove devono essere inseriti. Niente di arcano , abbiamo già visto le condizioni "if" (q) e anche il blocco "do" (r) che in questo caso restituisce anche un risultato, ma evidentemente dovranno essere posizionati in modo diverso nel nostro codice facendoci saltare qualche linea di codice in eccesso, e immagino che su applicazioni complesse questo faccia la differenza. L'ultimo blocchetto (s) lo possiamo vedere come un escamotage per poter aggiungere nuovamente il plug per inserire per esempio il blocco nella sezione "do".
Vi lascio il link dei DOCS (non smetterò mai di dirvi di leggerli) che parla di questi componenti così da vedere se ho dimenticato qualcosa e magari riuscirete a estrapolare l' importanza degli ultimi blocchi descritti.
Commentate, riportate la vostra esperienza oppure aggiungete altre informazioni ma cosa importante testate in Thunkable, anche le cose semplici, testatele con la funzione live così da trovare errori e iniziare a comprendere come ragionare per compilare la vostra app!

Edit
Detto fatto, sono riuscito ad usare il magico blocco ed adesso non riesco a farne a meno, lo sto inserendo in tutte le mie righe di codice 😂 Effettivamente in alcuni casi, come quello dell'esempio, snellisce e velocizza il codice evitando di usare il normale "if ..else" che prevede di duplicare il comando per ogni sezione.
In questo caso l'ho utilizzato per modificare il linguaggio dell'applicazione a seconda che l'utente abbia scelto la lingua italiana o inglese, il controllo if individua la lingua selezionata modificando il testo della label.

Commenti

Ciao, spero ti piaccia il blog. Se ti fa piacere qui puoi offrirmi un caffè!

Post popolari in questo blog

GOOGLE SCRIPT & KODULAR READ, WRITE, UPDATE, DELETE

Tu lo conosci THUNKABLE?