5: IL PRIMO PROGRAMMA - LA FUNZIONE print()

IL PRIMO PROGRAMMA: hello.py

Fino ad ora abbiamo sempre lavorato con IDLE. Ripetiamo che IDLE è una CLI (Command Line Interface), cioè un'interfaccia che legge una linea di testo digitata da noi e la fa eseguire a Python. Un linguaggio di programmazione deve permettere però di unire più linee di comando per formare un insieme più complesso, che viene genericamente chiamato un programma (in Python si usa il termine script).

Dato che dovremo salvare i programmi che scriveremo ci converrà, prima di iniziare, creare una cartella "Programmi Python" tra i nostri documenti e salvare tutti i file in questa cartella per poterli ritrovare e modificare facilmente in seguito.

Una tradizione dell'informatica vuole che quando si impara un linguaggio di programmazione, il primo programma che si scrive sia un programma che stampa la frase "Hello, world!". Vediamo come fare: apriamo IDLE e clicchiamo sulla voce di menù File=>New; si aprirà un'altra finestra, l'editor di testo.

Da ora in poi lavoreremo soprattutto su questa finestra, ma dovremo sempre tenere d'occhio IDLE. Ci conviene arrangiare le due finestre sullo schermo del nostro monitor in modo da vederle entrambe, affiancate. Nella nuova finestra digitiamo quindi:


print("Hello world!")

Vediamo che anche se premiamo Invio non succede nulla. Abbiamo scritto il nostro primo programma, ma Python non farà nulla finche non lo eseguiamo. Clicchiamo sulla voce di menù Run=>Run module. L'editor ci chiederà di salvare il programma in un file su disco. Salviamolo nella cartella che abbiamo creato con il nome hello.py (i file che contengono codice Python devono avere suffisso .py). A questo punto il file verrà eseguito: cosa succede? Nella finestra di IDLE viene stampata la stringa Hello world!.

Proviamo adesso ad inserire dopo la prima altre due righe:


print("Hello world!")
print("Ciao mondo!")
print("HAHAHAHA")

Cliccando di nuovo su Run=>Run module l'editor si accorgerà che il file è stato modificato e ci chiederà di salvarlo nuovamente. Dopodichè eseguirà il programma stampando le tre stringhe una dopo l'altra.

In un programma abbiamo quindi una successione di linee di codice (Inglese: code lines) che vengono eseguite in sequenza, una dopo l'altra.

DIFFERENZE TRA IDLE E L'EDITOR DI TESTO

Dobbiamo far notare alcune cose sulla nuova finestra nella quale abbiamo scritto il nostro hello.py. La nuova applicazione è un editor di testo, cioè un programma orientato alla scrittura di files di testo come quelli dei programmi Python.

Questo vuol dire che, a differenza di quanto accade in IDLE, possiamo liberamente correggere quello che abbiamo scritto, inserire nuove linee, usare il copia ed incolla e l'annulla/ripeti come in Word. Quello che non troviamo sono tutti i comandi di formattazione: infatti i programmi Python (come per tutti i linguaggi di programmazione) devono essere composti solamente da caratteri di testo.

Nell'editor troviamo invece alcune caratteristiche che aiutano i programmatori, come la colorazione della sintassi (già vista in IDLE): le parole che scriviamo vengono colorate diversamente secondo il loro significato (in verde le stringhe, in viola i nomi delle funzioni, in arancione le parole chiave Python ...). Abbiamo anche una voce di menù Format che ha alcune utility che vedremo in seguito.

Quando vogliamo eseguire il nostro programma dobbiamo usare la voce di menù Run=>Run module: Python eseguirà il programma dirigendo tutto l'input/output su IDLE: per questo conviene tenere aperte e visibili le due finestre contemporaneamente.

Da ora in poi quando vi dirò di digitare un programma è sottinteso che scriveremo nell'editor e useremo IDLE per l'I/O del programma. Qualche volta però useremo ancora IDLE per fare dei semplici esempi, come quelli che abbiamo fatto finora: in tal caso vi avvertirò esplicitamente.

LA FUNZIONE print()

Attualmente il nostro programma hello.py si compone di tre linee. Ognuna di esse chiama la funzione print: a cosa serve questa nuova funzione? Provate a modificare hello.py inserendo altre tre linee:


print("Hello world!")
print("Ciao mondo!")
print("HAHAHAHA")
3 + 2
a = 5
a + 6

Cosa cambia eseguendo il programma? Assolutamente niente! Infatti durante l'esecuzione di un programma, a differenza che in IDLE, i risultati delle espressioni non vengono stampati automaticamente. Ciò è voluto, in modo da lasciare al programmatore il controllo su cosa stampare e cosa no. La funzione print() serve appunto a stampare i suoi argomenti in output.

La funzione print prende un numero variabile di argomenti di qualsiasi tipo e li stampa su IDLE. Non restituisce nessun valore. Gli argomenti vengono stampati sulla stessa riga, ma tra un argomento e l'altro inserisce automaticamente uno spazio; alla fine va a capo (il successivo print stampa su una nuova riga).

NUOVO PROGRAMMA: prova_print.py

Possiamo cancellare dal programma le tre righe inutili che avevamo scritto (oppure possiamo usare Edit=>Undo) e salvarlo di nuovo. Ora facciamo click su File=>New file e potremo cominciare un nuovo programma, che chiameremo prova_print.py (nota: d'ora in poi ogni volta che troverete "NUOVO PROGRAMMA" farete queste operazioni: è importante salvare via via i vecchi programmi perchè a volte li riprenderemo per migliorarli man mano che impareremo cose nuove). Scriviamo:


print ("mamma", "ti", "amo")
a = 4
b = 6
print (a, b, a+b)

ed eseguendo il programma dovremmo ottenere questo output:


mamma ti amo
4 6 10

Facciamo notare che, se scriviamo print(a), Python stampa il valore della variabile a (cioè 4) e non il suo nome. Se vogliamo un output più leggibile dobbiamo mescolare stringhe e variabili e scrivere cose come questa:


print("a = ", a)

Così stampiamo prima la stringa "a = " e poi il valore di a.

ESERCIZIO 5.1: Modificare l'ultima linea del programma in modo da stampare "4 + 6 = 10" (SUGGERIMENTO: i due segni "+" e "=" vanno aggiunti mediante delle stringhe).
ESERCIZIO 5.2: Aggiungere altre due righe: assegnare 5 ad una variabile c e poi stampare "Il quadrato di 5 e' 25" (usare la variabile nella print())
SOLUZIONI

Notate che negli esercizi precedenti sarebbe facile dare come argomento di print direttamente la stringa "4 + 6 = 10" o "il quadrato di 5 e' 25". Tuttavia nella programmazione si preferisce usare il più possibile le variabili anzichè le costanti. Il motivo è semplice: se ora cambiamo il valore di a, b o c le funzioni print() stamperanno automaticamente i nuovi valori calcolandoli per noi senza bisogno di cambiare nulla.

ESERCIZIO 5.3: Modificare il programma in modo che l'output sia:
mamma ti amo
11345 + 23469 = 34814
Il quadrato di 843 e' 710649
SUGGERIMENTO: se avete usato le variabili a, b, c nella print() basta cambiare il loro valore.
SOLUZIONI

ALCUNI CARATTERI SPECIALI

La funzione print() permette di inserire nelle stringhe alcuni caratteri speciali grazie a delle sequenze che cominciano con il carattere "\" (escape sequences)

Sequenza Carattere Esempio
\n Nuova linea (va a capo) "Prima linea\nSeconda linea"
\t Tabulazione (salta alcuni spazi) "a\tb\tc\td"
\" Stampa il carattere " all'interno della stringa "Queste \" sono virgolette"

Se scriviamo una stringa con degli escape in IDLE, otterremo come risposta la stringa esattamente come l'abbiamo immessa. Se invece la facciamo stampare con print() (sempre da IDLE) otterremo la stringa come verrà stampata in un programma.


>>> "Prima riga\nSeconda riga"

'Prima riga\nSeconda riga'

>>> print("Prima riga\nSeconda riga")

Prima riga
Seconda riga
ESERCIZIO 5.4: Dare in IDLE i seguenti comandi:
>>> print("Rosa\nRosae\nRosae\nRosa\nRosae\nRosa")
>>> print("\"\"\"\"")
>>> print("10\t100\1000")
>>> print("10   \t100   \t1000")
>>> print("  10 \t  100 \t  1000")
>>> print("10\t\t100\t\t1000")
>>> print("Questi sono tre numeri:\n\t\t10\t\t100\t\t1000")
Provare anche a stampare gli esempi riportati nella tabella sopra

I COMMENTI

I piccoli programmi che abbiamo scritto per iniziare erano lunghi meno di 10 linee, ma un programma commerciale può contarne anche migliaia! Ad un programmatore professionista capita spesso di dover modificare programmi scritti molto tempo prima (ad esempio per correggere errori o aggiungere nuove caratteristiche), ed a questo punto diventa indispensabile capire "cosa fa il programma", rileggendo ed interpretando pazientemente le linee di codice. Vi assicuro che spesso, a distanza di qualche mese, nemmeno chi ha scritto il programma riesce a ricordare il significato di tutto quello che ha scritto.

Per questo motivo tutti i linguaggi di programmazione permettono di inserire dei commenti, cioè delle parti di codice che vengono ignorate dal linguaggio ma che possono essere lette da una persona "umana": così è possibile intercalare alle linee di codice delle linee che spiegano cosa stiamo facendo, documentando il nostro programma. In Python i commenti sono preceduti dal carattere # : quando in una linea Python trova questo carattere, ignora tutto ciò che viene dopo fino alla fine della linea stessa.

Aggiungiamo alla fine di prova_print.py queste altre due linee:


# Questa e' una linea intera di commento
print("Ciao") # Qui il commento inizia dopo l'istruzione

Eseguendo il programma vedremo che stamperà anche il "Ciao" finale. Per prova togliete uno dei #: otterrete un errore di sintassi perchè Python cerca di leggere i nostri commenti come se fossero una parte del programma.

ESERCIZIO 5.5 Riprendete i programmi hello.py e prova_print.py e aggiungete ad entrambi una linea di commento all'inizio del file, in modo da chiarire a chi lo legge qual è lo scopo del programma:
# Questo e' il mio primo programma (in hello.py)
# Questo programma dimostra l'uso della funzione print() (in prova_print.py)
SOLUZIONI

Fine della lezione