Librerie di funzioni
Secondo articolo dedicato al generatore di codice Blockly, la serie vuole rendere disponibile quanto appreso utilizzando questo strumento nel corso delle attività del progetto. Fa seguito a Blockly: istruzioni per l’uso 1.
Affrontiamo un piccolo problema che si presenta quando si crea una libreria di funzioni (non di blocchi) aggiunta ai blocchi predefiniti. Per esempio la libreria dedicata all’approssimazione di numeri trascendenti presente su questo stesso blog.
Il problema a cui facciamo riferimento è questo: se si trascina sul piano di lavoro una funzione di una libreria che fa uso a sua volta di un’altra funzione della stessa libreria, sul tavolo di lavoro appare una funzione fasulla, che non contiene blocchi, con lo stesso nome di quella che serve. In altre parole, non viene posta sul tavolo di lavoro la funzione giusta ma ne viene creata una vuota appositamente. Ovviamente la funzione principale non funziona più correttamente.
Le librerie
Blockly permette di modificare il menu di blocchi disponibili nella pagina in modo abbastanza semplice (ma non così semplice da essere alla portate di un neofita). in questo modo, senza definire nuovi blocchi appositamente progettati, si possono rendere disponibili funzioni e procedure già pronte. Un buon esempio di questo meccanismo si può trovare nella pagina dedicata alla libreria per i numeri trascendenti che si trova qui, la libreria è stata aggiunta ai blocchi predefiniti (come mostrato nella figura che segue).
Ogni funzione che si trova in uno degli insiemi citati si può trascinare sul tavolo di lavoro e appare completa una volta esplosi i blocchi.
Funzioni annidate
Come anticipato, l’annidamento delle funzioni non funzione molto bene. Nella figura che segue è mostrato un esempio (che fa riferimento ancora alla libreria Trascendenti). Per comprendere appieno quello che succede, è bene sapere che la funzione ScomporreInFattori richiama, al suo interno, la funzione PrimoSuccessivo.
A questo punto, per qualche motivo, non si riesce più a trascinare sul piano di lavoro la funzione PrimoSuccessivo corretta, nemmeno eliminando quella fasulla!
Come rimediare
Allo stato attuale, c’è un solo modo per rimediare a questo errore: trascinare sul piano di lavoro prima le funzioni di livello più basso, quelle richiamate all’interno di altre procedure, e poi le procedure principali procedendo dal basso verso l’alto (bottom-up).
Quindi è bene documentare in modo corretto le proprie librerie indicando in particolare per ogni funzione quali sono le funzioni richiamate come fatto, per esempio, per la libreria Trascendenti.