Sezione 07 / 08

Scope, Etichette,
Errori e Moduli

Visibilità delle variabili, etichette, gestione degli errori con TRY/SHOW/YET e l'uso dei moduli.

7.1 Scope delle variabili

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:

FUN calcola() RET #risultato = 42 >> accessibile ovunque locale = ciao >> solo dentro questa funzione FEND calcola() TALK @risultato >> 42

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:

FUN esempio() DEFRET #due = 2 >> globale (DEFRET) TEMP #quattro = 4 >> locale FEND

7.2 Etichette

Qualsiasi istruzione può ricevere un'etichetta con la sintassi parola_chiave:etichetta. Per rieseguire l'istruzione associata all'etichetta si usa *etichetta.

TALK:saluto Ciao! *saluto >> riesegue il TALK:saluto

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.

7.3 Gestione errori: TRY / SHOW / YET

LINE gestisce gli errori senza interrompere il programma tramite tre blocchi:

TRY nome_try >> codice che potrebbe dare errore TREND SHOW nome_show @nome_try >> eseguito se c'è stato un errore TALK @ERRCODE TALK @ERRMSG SEND YET @nome_try >> eseguito sempre (con o senza errore) YEND

SHOW e YET sono facoltativi. Dentro lo SHOW sono disponibili le variabili speciali ERRCODE (numerale) e ERRMSG (stringa). Esistono solo lì.

Regole: TRY non può essere annidato. Ogni TRY può avere al massimo un SHOW e un YET.

Se un errore avviene dentro un TRY senza SHOW, LINE stampa ERRMSG e termina l'esecuzione. Lista degli errori principali:

CodiceCausa
VAR_NOT_FOUNDVariabile inesistente (con OUT)
TYPE_ERRORTipo di dato non valido
CONST_MODIFYTentativo di modifica di una STAY
DIV_BY_ZERODivisione per zero
LIST_OUT_OF_RANGEIndice fuori dai limiti della lista
FUNC_NOT_FOUNDFunzione inesistente
SYNTAX_ERRORErrore di sintassi

7.4 Moduli

I moduli sono collezioni di funzioni pronte all'uso. Si importano con TAKE:

TAKE math #r = math_sqrt(9) TALK @r >> 3

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.

ModuloContenuto
mathFunzioni matematiche (sqrt, abs, floor, ceil…)
strManipolazione stringhe (len, sub, upper, lower…)
listOperazioni su liste (len, has, shuffle…)
randCasualità (int, pick, shuffle…)
ioInput/output avanzato (time, file…)
typeVerifica e conversione di tipi
convConversioni di unità e formati

Quiz — Sezione 7

6 domande · serve l'80% per passare alla sezione 8

Domanda 01

Una variabile dichiarata dentro una FUN senza nessun prefisso è…

AGlobale
BLocale al blocco
CCostante
DDipende dal tipo di dato

Domanda 02 — Completamento

Dichiara la variabile totale come globale dentro una funzione.

1

Domanda 03

Quale blocco viene sempre eseguito, sia in caso di errore sia in caso di successo?

ATRY
BSHOW
CYET
DFEND

Domanda 04

Dove esistono le variabili ERRCODE e ERRMSG?

AOvunque nel programma dopo un errore
BSolo dentro il blocco SHOW
CSolo dentro il blocco YET
DDentro TRY e SHOW

Domanda 05 — Completamento

Importa il modulo rand.

1

Domanda 06

Come si chiama una funzione del modulo str che si chiama upper?

Aupper()
Bstr.upper()
Cstr_upper()
DTAKE str.upper()

Sezione 8 →