Menu Chiudi

Blockly: istruzioni per l’uso 4

Assegnare un valore a un elemento inesistente

Quarto articolo dedicato al generatore di codice Blockly che condivide le esperienze fatte con questo strumento nel corso delle attività del progetto. Fa seguito a Blockly: istruzioni per l’uso 3.

Il blocco In list … set # … as …

Il blocco In list … set # … as … è utilizzato per impostare (set) il valore di uno specifico elemento della lista specificata dove list è una lista di oggetti, il parametro # indica la posizione dell’elemento della lista che ci interessa (ricordiamo che in Blockly gli elementi delle liste sono indicizzati a partire da uno) e il parametro as è il nuovo valore dell’elemento specificato.

Ci si aspetta una qualche segnalazione di errore se si cerca di aggiornare il contenuto di un elemento della lista che non esiste. E infatti, in alcuni casi, è proprio così, osservate l’esempio che segue …

Blockly: In list set ...
I blocchi mostrati non funzionano! Se si avvia il programma segnalano l’errore Cannot set properties of undefined (setting 4)… Infatti la lista non ha elementi e quindi non è possibile modificare il valore del quinto elemento della lista.

Purtroppo però non è sempre così. Se si crea una lista (e, in un certo senso, si comunica a Blockly che la variabile è una collezione di elementi), il generatore di codice aggiunge elementi per permettere di aggiornare il valore di quello desiderato.

Set list as ... con errore
La porzione di codice mostrata qui non genera errore anche se si chiede di impostare il valore dell’elemento n. 5 di una lista che non ha elementi (è stata appena creata come lista vuota). Per permettere l’accesso al quinto elemento Blockly aggiunge alla lista elementi sufficienti per arrivare a quello richiesto, per cui l’output di questi blocchi è ,,,,Quinto: la lista ha cinque elementi: i primi quattro non contengono nulla (ecco spiegate le quattro virgole iniziali) mentre il n.5 contiene correttamente la stringa Quinto

Fin qui nulla di male, sapendolo si potrebbe addirittura usare a proprio vantaggio questa possibilità. Si tratterebbe di una pessima idea! Esportando il codice in un qualsiasi linguaggio di programmazione (come, per esempio, Python) l’interprete o il compilatore del linguaggio utilizzato segnala l’impossibilità di eseguire l’operazione e impedisce l’esecuzione del codice.

Come correggere l’errore … si deve fare attenzione alla gestione delle liste cercando di prevedere il possibile accesso a elementi non esistenti.

Articoli correlati