Sezione 06 / 08

Liste, IN e FOR

Come creare collezioni di valori, accedervi per indice o tag, modificarle e iterarle.

6.1 Liste

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

frutta = [mela ; pera ; banana]

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 |:

rubrica = [lavoro | 02-1234 ; casa | 02-5678] >> "lavoro" e "casa" sono tag

Per accedere a un elemento:

frutta[#0] >> "mela" (per indice) rubrica[lavoro] >> "02-1234" (per tag)

I valori nelle liste sono sempre stringhe. Per stampare tag e valori insieme si usa SCREAM invece di TALK:

lista = [tag | valore] TALK @lista >> [valore] SCREAM @lista >> [tag | valore]

Le liste possono contenere altre liste come elementi:

dati = [nomi | [Mario ; Luigi] ; eta | [30 ; 25]]

6.2 Modificare una lista

Aggiungere un elemento con ADD:

>> AT: inserisce spostando gli altri avanti ADD lista AT 1 = buongiorno >> inserisce a indice 1 ADD lista AT = buongiorno >> appende in fondo >> BY: sostituisce l'elemento a quell'indice ADD lista BY 1 = buongiorno

Rimuovere un elemento con CANC:

CANC lista AT 0 >> per indice CANC lista BY tag >> per tag CANC lista IS valore >> per valore CANC lista IN [tag1 ; tag2] >> per più tag
Attenzione: se più elementi hanno lo stesso tag o lo stesso valore, CANC li rimuove tutti.

6.3 Operatore IN

IN verifica se un valore è presente in una lista. Produce un booleano.

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

6.4 Ciclo FOR

FOR itera gli elementi di una lista eseguendo una funzione per ciascuno.

sintassiFOR @lista #[inizio ; fine ; salto] = @funzione()

Tutti e tre i valori tra #[] sono opzionali: inizio default 0, fine default -1 (fine lista), salto default 1.

All'interno della funzione sono disponibili tre variabili speciali:

VariabileContenuto
ONITEMIl valore dell'elemento corrente
ONINDEXL'indice dell'elemento corrente
ONTAGIl/i tag dell'elemento corrente
esempionumeri = [10 ; 20 ; 30] FOR @numeri = @{TALK @ONINDEX: @ONITEM} <* Output: 0: 10 1: 20 2: 30 *> >> Iterazione al contrario FOR @numeri #[;; -1] = @{TALK @ONITEM} <* Output: 30 / 20 / 10 *>

Esiste anche la lista speciale NUMBERS che contiene tutti i numeri reali, dove ogni numero ha se stesso come indice. Utile per iterare range numerici:

FOR @NUMBERS #[1 ; 5] = @{TALK @ONITEM} <* Output: 1 / 2 / 3 / 4 / 5 *>

Quiz — Sezione 6

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

Domanda 01

Quale indice ha l'ultimo elemento di una lista con 4 elementi?

A4
B3 oppure -1
C-1 soltanto
D0

Domanda 02 — Completamento

Accedi all'elemento con tag nome dalla lista persona.

1var = 

Domanda 03

Cosa fa ADD lista AT = x?

ASostituisce il primo elemento con x
BAggiunge x in cima alla lista
CAggiunge x in fondo alla lista
DErrore: manca l'indice

Domanda 04

Cosa produce IF r = ciao IN [ciao ; salve]?

AF
BV
CErrore: IN funziona solo con variabili lista
D"ciao"

Domanda 05

Quale variabile speciale nel FOR contiene il valore dell'elemento corrente?

AONINDEX
BCURRENT
CONITEM
DITEM

Domanda 06 — Completamento

Itera la lista colori stampando ogni elemento.

1

Domanda 07

Cosa fa ADD lista BY 2 = nuovo?

AInserisce "nuovo" all'indice 2, spostando gli altri
BSostituisce l'elemento all'indice 2 con "nuovo"
CAggiunge "nuovo" due volte in fondo
DErrore

Domanda 08

A cosa serve la lista speciale NUMBERS?

AContiene i numeri da 0 a 100
BÈ una lista di tutti i numeri reali dove ogni numero ha se stesso come indice — utile per iterare range con FOR
CContiene i numeri inseriti dall'utente durante l'esecuzione
DNon esiste

Sezione 7 →