Sezione 07 / 08
Visibilità delle variabili, etichette, gestione degli errori con TRY/SHOW/YET e l'uso dei moduli.
Per default, le variabili dichiarate dentro un blocco (FUN, THEN, corpo GO) sono locali — non accessibili dall'esterno.
Per renderle globali si usa il prefisso RET:
Per invertire il comportamento di default — tutte globali di default — si mette DEFRET all'inizio del blocco. Poi si usa TEMP per rendere una variabile locale:
Qualsiasi istruzione può ricevere un'etichetta con la sintassi parola_chiave:etichetta. Per rieseguire l'istruzione associata all'etichetta si usa *etichetta.
Se a una stessa etichetta vengono assegnate più istruzioni, *etichetta esegue l'ultima.
Le due etichette speciali di TALK già viste nella sezione 3 — :V e :F — seguono questo stesso meccanismo.
LINE gestisce gli errori senza interrompere il programma tramite tre blocchi:
SHOW e YET sono facoltativi. Dentro lo SHOW sono disponibili le variabili speciali ERRCODE (numerale) e ERRMSG (stringa). Esistono solo lì.
Se un errore avviene dentro un TRY senza SHOW, LINE stampa ERRMSG e termina l'esecuzione. Lista degli errori principali:
| Codice | Causa |
|---|---|
| VAR_NOT_FOUND | Variabile inesistente (con OUT) |
| TYPE_ERROR | Tipo di dato non valido |
| CONST_MODIFY | Tentativo di modifica di una STAY |
| DIV_BY_ZERO | Divisione per zero |
| LIST_OUT_OF_RANGE | Indice fuori dai limiti della lista |
| FUNC_NOT_FOUND | Funzione inesistente |
| SYNTAX_ERROR | Errore di sintassi |
I moduli sono collezioni di funzioni pronte all'uso. Si importano con TAKE:
Le funzioni di un modulo si chiamano con il formato nomemodulo_nomefunzione().
Per vedere l'elenco di tutti i moduli disponibili, esegui .MODS in un file vuoto. Per vedere le funzioni di un modulo specifico, usa .MATH, .STR, ecc.
| Modulo | Contenuto |
|---|---|
| math | Funzioni matematiche (sqrt, abs, floor, ceil…) |
| str | Manipolazione stringhe (len, sub, upper, lower…) |
| list | Operazioni su liste (len, has, shuffle…) |
| rand | Casualità (int, pick, shuffle…) |
| io | Input/output avanzato (time, file…) |
| type | Verifica e conversione di tipi |
| conv | Conversioni di unità e formati |
6 domande · serve l'80% per passare alla sezione 8
Domanda 01
Una variabile dichiarata dentro una FUN senza nessun prefisso è…
Domanda 02 — Completamento
Dichiara la variabile totale come globale dentro una funzione.
Domanda 03
Quale blocco viene sempre eseguito, sia in caso di errore sia in caso di successo?
Domanda 04
Dove esistono le variabili ERRCODE e ERRMSG?
Domanda 05 — Completamento
Importa il modulo rand.
Domanda 06
Come si chiama una funzione del modulo str che si chiama upper?