Vai al contenuto
Leo

Parte I — Le basi

Capitolo 1 — Il primo programma

Un programma è un testo che dà istruzioni al computer. In Leo, questo testo si salva in un file con estensione .leo e si esegue con un comando. Non serve compilare nulla a mano, non serve configurare niente: scrivi, salvi, esegui.

💡 L'idea — Chi esegue non sottintende nulla

Immagina di dare indicazioni stradali a qualcuno che fa esattamente quello che dici, parola per parola, senza aggiungere niente di suo. Se dimentichi di dire «gira a destra», tira dritto; se dici due volte «prosegui», prosegue due volte. Il computer è questo esecutore fedele e letterale. Non è cattiveria: è l'assenza totale di sottinteso, ed è anche ciò che rende i programmi affidabili una volta scritti bene.

Cominciamo dalla tradizione. Apri un editor di testo — va bene qualunque cosa, anche il Blocco note, purché salvi in UTF-8 — scrivi questa riga e salva il file come ciao.leo:

Leo
scrivi "Ciao, mondo!"

Ora apri un terminale nella cartella dove hai salvato il file ed esegui:

Risultato
leo ciao.leo

Il programma stampa:

Risultato
Ciao, mondo!

Congratulazioni: hai scritto ed eseguito il tuo primo programma. Ora smontiamolo, pezzo per pezzo, perché in quella riga c'è già parecchio.

🦁 Curiosità — «Ciao, mondo» viene da lontano

L'usanza di far scrivere al principiante un programma che stampa «Hello, World» risale a un tutorial del linguaggio B scritto da Brian Kernighan nei primi anni Settanta, e divenne celebre con il libro sul linguaggio C che Kernighan firmò con Dennis Ritchie nel 1978. Da allora quasi ogni manuale di programmazione comincia così, in ogni lingua. Il nostro «Ciao, mondo!» è l'edizione italiana di una tradizione lunga mezzo secolo.

scrivi: il comando per parlare

scrivi è il comando che mostra qualcosa sullo schermo. (Ha anche un nome più tecnico, stampa: sono la stessa identica cosa, due parole per lo stesso comando. Nel libro useremo quasi sempre scrivi, perché si legge meglio.) Quello che segue scrivi è ciò che vuoi mostrare.

In Leo i comandi all'inizio di una riga non hanno bisogno delle parentesi: la regola, che approfondiremo via via, è che le parentesi vogliono dire «calcola». Quindi puoi scrivere il testo così com'è, senza nemmeno le virgolette:

Leo
scrivi Ciao, mondo!
scrivi Oggi imparo a programmare.

Questo stampa:

Risultato
Ciao, mondo!
Oggi imparo a programmare.

Esiste anche la forma classica, con le parentesi e le virgolette — scrivi("Ciao, mondo!") — ed è perfettamente valida: fa esattamente la stessa cosa. La vedrai spesso, perché quando il testo contiene caratteri particolari (parentesi, segni di punteggiatura usati per calcolare) le virgolette tolgono ogni ambiguità. Per ora tieni a mente che entrambe vanno bene; sceglieremo di volta in volta la più chiara.

Ogni scrivi manda a capo dopo aver stampato. Più righe di programma diventano più righe sullo schermo:

Leo
scrivi "Riga uno"
scrivi "Riga due"
Risultato
Riga uno
Riga due

I commenti: note per gli umani

Non tutto quello che scrivi in un file è destinato al computer. A volte vuoi lasciare una nota a te stesso o a chi leggerà il codice dopo. Questi appunti si chiamano commenti e Leo li ignora completamente durante l'esecuzione.

Un commento comincia con # e arriva fino a fine riga. Per un commento su più righe si usano #[ e ]#:

Leo
# Questo è un commento: Leo lo ignora
scrivi "Il commento qui sopra non viene stampato"
#[ Un commento
   su più righe ]#
scrivi "Fatto"
Risultato
Il commento qui sopra non viene stampato
Fatto

I commenti sembrano inutili quando il programma è di tre righe, ma diventano preziosi quando è di trecento. Prendi l'abitudine di spiegare perché fai una cosa, non cosa fai: il «cosa» lo dice già il codice.

Inserire valori nel testo

Finché scriviamo solo frasi fisse, il programma dice sempre la stessa cosa. La vita diventa interessante quando il testo cambia a seconda dei dati. In Leo, dentro un testo tra virgolette, puoi inserire un valore mettendolo tra graffe {…}:

Leo
variabile nome = "Giulia"
variabile anni = 10
scrivi "Ciao {nome}, hai {anni + 1} anni"
Risultato
Ciao Giulia, hai 11 anni

Tra le graffe puoi mettere non solo una variabile ma qualunque calcolo: {anni + 1} viene calcolato e il risultato prende il suo posto. Questo si chiama interpolazione e sarà il nostro pane quotidiano; gli dedicheremo più spazio nel capitolo sui testi.

Nella forma senza virgolette lo stesso risultato si ottiene con le parentesi tonde, che — ricordi? — vogliono dire «calcola»:

Leo
scrivi Ciao (nome), hai (anni + 1) anni

Le due forme producono la stessa riga. Useremo di solito quella con le graffe, perché mostra a colpo d'occhio dove finisce il testo e dove comincia il valore.

Chiedere qualcosa a chi usa il programma

Un programma che parla soltanto è un monologo. Per ascoltare c'è chiedi: mostra una domanda e restituisce, come testo, quello che la persona digita e invia con Invio.

Leo
variabile nome = chiedi "Come ti chiami?"
scrivi "Piacere di conoscerti, {nome}!"

Eseguendo e rispondendo Ada, il programma stampa:

Risultato
Piacere di conoscerti, Ada!

chiedi restituisce sempre un testo, anche se la persona scrive un numero. Per trasformarlo in un numero vero useremo intero(...) o decimale(...): lo vedremo tra pochi capitoli. Per ora ci basta sapere che il programma può dialogare.

Dove comincia un programma: inizio ... fine

I programmi piccoli si leggono dall'alto in basso e partono dalla prima riga. Man mano che crescono, conviene segnare con chiarezza da dove parte il programma, tenendo le funzioni (che vedremo nel Capitolo 9) separate. Per questo Leo offre il blocco inizio ... fine:

Leo
inizio
    scrivi "Il programma parte da qui."
    saluta("Leo")
fine

funzione saluta(nome)
    scrivi "Ciao, {nome}!"
fine
Risultato
Il programma parte da qui.
Ciao, Leo!

Il codice dentro inizio è quello che deve partire subito; le funzioni stanno fuori, prima o dopo, e sono pronte quando il blocco le chiama (nota che saluta è definita sotto inizio ma viene usata lo stesso: il blocco parte dopo che tutto il file è stato letto). Il blocco inizio è facoltativo — i programmi senza di esso funzionano benissimo — ma è la forma consigliata per i programmi nuovi, ed è quella che adotteremo quando le cose si faranno serie.

Prova tu

  1. Scrivi un programma che saluta te stesso per nome e poi stampa, su una riga separata, in che anno pensi di finire questo libro.
  2. Modifica l'esempio di chiedi perché faccia due domande — il nome e la città — e poi stampi una frase sola che usa entrambe le risposte, con l'interpolazione {…}.
  3. Prendi uno qualunque dei programmi di questo capitolo, togli una virgoletta di chiusura e rieseguilo. Leggi con calma il messaggio d'errore: su quale riga ti manda? Che cosa ti propone? Poi rimetti la virgoletta a posto.