Sezione 2

Variabili e tipi

Come dichiarare variabili, gestire tipi di dato e usare STAY e IF.

Progresso del corso 20%

Variabili

Una variabile ha questa forma:

TIPO_VARIABILE nome_variabile = dati
  • TIPO_VARIABILE — indica la tipologia (vedi più sotto). Può essere omesso per le variabili standard.
  • nome_variabile — nome univoco. Può contenere lettere, numeri (non in prima posizione) e _.
  • dati — il valore immagazzinato. Se c'è più di un dato si tratta di una lista.

Per riferirsi al valore di una variabile da un altro punto del codice si usa @ davanti al nome:

nome = Mario
  TALK Ciao, @nome!
  <* Output: Ciao, Mario! *>

Il "potere" di @ si interrompe al primo carattere non ammesso nel nome (spazio, !, ,, ecc.).

Variables

Tipi di dato

Esistono tre tipi di dato. Il prefisso # davanti al nome dichiara che la variabile contiene un numerale o un booleano.

TipoPrefissoDescrizione
Stringa(nessuno)Immagazzina il dato come testo
Numerale#Immagazzina un valore numerico
Booleano#Solo due valori: V (vero) o F (falso)
var = 8      >> stringa: immagazzina il testo "8"
  #var = 8     >> numerale: immagazzina il numero 8
  var = V      >> stringa: immagazzina il testo "V"
  #var = V     >> booleano: immagazzina il valore vero

Conversioni di tipo

ComandoEffetto
n:varConverte in numerale. Se la stringa è un numero usa quel valore, altrimenti vale 1. Stringa vuota → 0.
b:varConverte in booleano. Stringa vuota o "F" → F, tutto il resto → V. Da numero: 0 → F, qualsiasi altro → V.
s:varConverte in stringa. Il valore diventa testo leggibile.
var = 8
  n:var        >> ora var è il numerale 8

  #n = 0
  b:n          >> ora n è il booleano F

  #n = 5
  s:n          >> ora n è la stringa "5"

Per sapere il tipo attuale di una variabile si usa \t seguito dal nome:

#eta = 25
  TALK \teta   >> Output: number

  nome = Mario
  TALK \tnome  >> Output: string

Tipi di variabile

Esistono tre tipi di variabile.

Standard (nessun prefisso)

La più comune. Il valore può essere cambiato con una riassegnazione:

var = Buongiorno   >> dichiarazione
  var = Arrivederci  >> riassegnazione

Si può anche cambiare tipo durante la riassegnazione:

var = Ciao    >> stringa
  #var = V      >> riassegnata come booleano
Importante: se una variabile viene posta uguale a un'altra e quella cambia, la prima non cambierà — il valore viene copiato al momento dell'assegnazione.
#a = 5
  var = @a    >> var vale 5 (copia di a)
  #a = 6      >> a cambia, ma var rimane 5

STAY — costante

Si antepone STAY alla dichiarazione. Il valore non può essere cambiato in nessun modo.

STAY #pi = 3.14
  STAY lingua = italiano

IF — reattiva

Si antepone IF. Possono contenere solo booleani o operazioni che producono booleani. Il prefisso # non è necessario.

IF vero = V          >> corretto
  IF errore = 5        >> ERRORE: 5 non è un booleano

La caratteristica speciale: se una variabile IF è posta uguale a un'altra e quella cambia, anche la IF cambia di conseguenza.

#a = V
  IF cond = @a
  #a = F    >> adesso anche cond vale F