Sezione 6

Liste, scope e operatore IN

Liste con tag, scope delle variabili e l'operatore IN per la verifica.

Progresso del corso 60%

Liste

Una lista immagazzina più valori in una sola variabile. I valori sono separati da ; e racchiusi tra [].

lista = [ciao ; salve]

Ogni elemento ha un indice che parte da 0. Gli indici negativi partono da destra: -1 è l'ultimo elemento.

Si possono aggiungere tag agli elementi con |:

lista = [saluto | ciao ; salve]
  lista = [italiano | saluto | ciao ; salve]  >> ciao ha due tag

Per accedere a un elemento:

lista[#0]          >> per indice
  lista[saluto]      >> per tag
  lista[tag1 ; tag2] >> per più tag

I valori di una lista sono sempre stringhe.

Aggiungere elementi

ADD nome_lista AT indice = valore   >> inserisce spostando gli altri in avanti
  ADD nome_lista AT = valore          >> appende in fondo (indice omesso)
  ADD nome_lista BY indice = valore   >> sostituisce l'elemento a quell'indice

Rimuovere elementi

CANC nome_lista AT indice    >> per indice
  CANC nome_lista BY tag       >> per tag
  CANC nome_lista IS valore    >> per valore
  CANC nome_lista IN [tag1 ; tag2]  >> per lista di tag
Attenzione: se due elementi hanno lo stesso tag o valore, CANC li rimuove entrambi.

Stampa lista

lista = [saluto | ciao]
  TALK @lista    >> [ciao]
  SCREAM @lista  >> [saluto | ciao]

Le liste possono contenere altre liste come elementi:

dati = [nomi | [Giulio ; Carlo] ; cognomi | [Bianchi ; Ferrari]]

Scope delle variabili

Per default le variabili dichiarate dentro un blocco sono locali — non accessibili dall'esterno.

PrefissoEffetto
RETRende la variabile globale
DEFRETMesso all'inizio del blocco, rende tutte le variabili del blocco globali per default
TEMPCon DEFRET attivo, rende la singola variabile locale
FUN calcola()
    RET #risultato = 42   >> accessibile ovunque
    locale = ciao         >> solo dentro questa funzione
    FEND

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

Operatore IN

Verifica se un elemento è presente in una lista. Produce un booleano.

lista = [ciao ; salve]
  IF esiste = ciao IN lista        >> V
  IF manca  = arrivederci IN lista >> F