Sezione 03 / 07

La Console

Come il programma interagisce con l'utente: mostrare testo, leggere input e il comportamento speciale di @ su variabili inesistenti.

3.1 TALK

TALK è la parola chiave principale per interagire con la console. Tutto quello che segue viene mostrato nell'output. Per includere il valore di una variabile si usa @ davanti al nome.

sintassiTALK testo @variabile altro testo
esempionome = Mario TALK Ciao, @nome! <* Output: Ciao, Mario! *>

Il "potere" di @ si interrompe al primo carattere non ammesso in un nome di variabile. Caratteri come !, ,, spazio terminano il riferimento:

nome = Mario TALK @nome, benvenuto! <* Output: Mario, benvenuto! *> TALK @nome%extra <* % è invisibile in TALK, quindi: Marioextra *>

Per stampare una @ letterale si usa l'escape \@:

TALK Scrivi \@nome per riferirsi a una variabile <* Output: Scrivi @nome per riferirsi a una variabile *>

3.2 Input implicito con @

Se @ fa riferimento ad una variabile che non esiste ancora, la console chiede automaticamente un input all'utente e lo salva in quella variabile. L'esecuzione si blocca finché l'utente non preme invio.

esempioTALK Ciao, @nome! <* "nome" non esiste → la console chiede input Utente scrive: Mario Output: Ciao, Mario! *>

Questo vale per tutto il testo del TALK, nell'ordine in cui appaiono le variabili. Se ne metti più d'una sulla stessa riga e nessuna esiste, verranno chieste in sequenza:

TALK Ciao @nome @cognome, hai @eta anni. <* Chiede input per nome, poi cognome, poi eta *>
Nota: una volta che la variabile esiste (perché è già stata dichiarata o perché l'utente ha risposto), non verrà chiesto di nuovo.

3.3 OUT e INP

Esistono due varianti di TALK che sono considerate zucchero sintattico — ossia scorciatoie comode ma non indispensabili, e per questo deprecabili:

Parola chiaveComportamento
OUTCome TALK ma solo output: con variabili inesistenti dà errore invece di chiedere input
INPCome TALK ma richiede almeno un input: deve avere almeno una variabile inesistente
Consiglio: usa sempre TALK. OUT e INP possono tornare utili per chiarezza in certi contesti, ma TALK fa tutto quello che fanno loro.

3.4 Etichette speciali: TALK:V e TALK:F

Le etichette in LINE si usano per dare un nome ad una riga di codice e richiamarla (verranno trattate in dettaglio più avanti). TALK però ha due etichette speciali con un comportamento fisso:

TALK:V attiva un input persistente che appare sempre alla fine dell'output in console, con una domanda personalizzabile. Rimane attivo finché non viene disattivato.

L'input inserito dall'utente viene salvato automaticamente nella variabile speciale ASKED.

esempioTALK:V Inserisci un comando: <* Ora alla fine di ogni output appare: Inserisci un comando: _ *> TALK Hai scritto: @ASKED TALK:V Nuova domanda: <* Sovrascrive la domanda precedente *> TALK:F <* Disattiva l'input persistente *> TALK:V <* Riattiva senza domanda *>
Attenzione: se nel flusso del codice non viene mai letto @ASKED, oppure viene attivato un altro input con TALK o INP, TALK:V si disattiva automaticamente.

Quiz — Sezione 3

5 domande · serve l'80% per passare alla sezione 4

Domanda 01

Cosa produce questo codice?

citta = Roma TALK Abito a @citta!
AAbito a @citta!
BAbito a Roma!
CErrore: @ non è valido in TALK
DAbito a Roma !

Domanda 02

Cosa succede se scrivi TALK @nome e la variabile nome non esiste?

AErrore VAR_NOT_FOUND
BStampa il testo "@nome" letteralmente
CLa console chiede un input all'utente e lo salva in nome
DStampa una stringa vuota

Domanda 03 — Completamento

Completa il codice per stampare: Ciao, @utente! Benvenuto. (la @ deve apparire letteralmente, non come riferimento a variabile)

1TALK 

Domanda 04

Qual è la differenza principale tra OUT e TALK?

AOUT stampa in maiuscolo, TALK in minuscolo
BOUT dà errore su variabili inesistenti invece di chiedere input
COUT non può stampare variabili, solo testo fisso
DOUT è più veloce di TALK

Domanda 05

In quale variabile speciale viene salvato l'input inserito dall'utente quando è attivo TALK:V?

AINPUT
BREPLY
CASKED
DLAST

Sezione 4 →