Il primo programma

Come scrivere il nostro primo programma, un programma che non fa niente, un programma che fa qualcosa.

Finalmente abbiamo gli strumenti per scrivere qualcosa di significativo, qualcosa di abbastanza complicato da valer la pena di conservare, un programma. Aperto IDLE, attraverso il menu File - New Window creiamo un nuovo file vuoto. Prima ancora di incominciare a scriverci qualcosa lo salviamo, nella nostra cartella, con il nome “primo.py”. È importante l’estensione “.py” che avvisa il sistema operativo, e IDLE stesso, che questo è un programma Python. Abbiamo scritto il nostro primo programma! Possiamo anche eseguirlo in uno di questi due modi:

  1. Menu: Run - Run Module
  2. tasto: <F5>

Fa un po’ poco, ma in compenso, di sicuro, non contiene errori!!! Forse è il caso di cominciare a riempirlo.

Per prima cosa aggiungiamo delle istruzioni che non fanno niente, dei commenti. Ogni linguaggio permette di scrivere dei commenti. E i commenti sono molto importanti per rendere leggibile il codice e per renderlo comprensibile ad altri o anche a sé stessi a distanza di tempo. In Python ci sono più modi per farlo. Sono commenti:

  1. le righe che iniziano con il carattere cancelletto: “#”
  2. le porzioni di testo delimitati da tre apici singoli o doppi: “”“”” o “’‘’”

Ogni programma deve avere all’inizio dei commenti che forniscono alcune informazioni come minimo: data, autore, titolo. Il commento iniziale potrebbe essere:

# 27-08-11
# il mio primo programma
# Mario Rossi

Prima di scrivere un programma, bisogna avere un’idea abbastanza precisa di cosa deve fare questo programma. Nel nostro caso iniziamo a creare un programma che stampi a video le tavole numeriche, quelle con i quadrati, i cubi,le radici quadrate e radici cubiche. Per prima cosa modifichiamo il titolo del programma. Poi (magari andando a riguardare le informazioni sui cicli) scriviamo le istruzioni per stampare semplicemente i numeri da 0 a 100:

for num in range(101):
    print "%s" % num

Alcune osservazioni:

  1. Mentre nella shell di IDLE una volta scritto un comando, quando si preme il tasto <Invio>, magri 2 volte, il comando viene eseguito, qui il tasto <Invio> ha solo il significato di andare a capo.
  2. In un programma, noi scriviamo le istruzioni, per eseguirle dobbiamo dirlo esplicitamente a Python, lo si può fare in uno dei due modi visti sopra, il più svelto è premere <F5>.
  3. Prima di eseguire un programma, Python lo salva sul disco.
  4. Il risultato del programma (l’output) lo vediamo nella finestra di IDLE. Conviene quindi disporre le due finestre in modo che permettano di vedere il programma e l’output del programma.

Bene, se tutto funziona abbiamo un bell’elenco di numeri scritti uno sotto l’altro, ma l’allineamento a sinistra non è carino: torniamo al programma e modifichiamolo in modo da riservare 5 spazi per questi numeri:

for num in range(101):
    print "%5s" % num

Con il solito <F5> verifichiamo che il programma faccia quello che vogliamo noi. Aggiungere i quadrati e i cubi non è una novità dato che questo problema è già stato risolto quando abbiamo visto il ciclo for. Magari potrà servire qualche prova per aggiustare gli allineamenti:

for num in range(101):
    print "%5s" % (num, num*num, num*num*num)

quando eseguiamo questo programma otteniamo il seguente deludente risultato:

Traceback (most recent call last):
  File "/dati/daniele/06-07/scuola/materiali/informatica/python/primo.py",
  line 8, in -toplevel-
    print "%5s" % (num, num*num, num*num*num)
TypeError: not all arguments converted during string formatting

Se vogliamo imparare a programmare dobbiamo abituarci a queste sorprese e imparare a leggere i messaggi di errore. Nel precedente messaggio ci sono diverse informazioni: il nome del file, la riga incriminata e il tipo di errore.

Possiamo tradurre il messaggio così:

“Nella linea 8 del file primo.py ci sono dei valori che non sono potuti
entrare  nella stringa formattata.”

Torniamo a modificare il programma inserendo i segnaposti mancanti:

for num in range(101):
    print "%4s  %6s  %8s" % (num, num*num, num*num*num)

Questi valori potrebbero andare. Ora dobbiamo inserire altre due colonne e calcolare le radici quadrate e cubiche. Abbiamo già visto che Python senza il supporto di apposite librerie non è in grado di calcolare le radici, quindi dobbiamo modificare il programma in modo che importi la libreria math.

Aggiungiamo prima del ciclo il comando:

import math

Riassumendo

  • Un programma è un documento di testo che contiene le istruzioni che devono essere eseguite.
  • Concettualmente dobbiamo distinguere bene la fase di scrittura del programma, dalla fase di esecuzione.
  • In pratica conviene scrivere un pezzetto di programma, provarlo, correggerlo, riprovarlo e, quando quel pezzo produce quello che vogliamo noi, aggiungere altre funzionalità.
  • Durante la programmazione è inevitabile commettere errori. I messaggi di errore, se letti, sono di grande aiuto.

Prova tu

  1. Completa il programma precedente. Come è possibile far calcolare la radice cubica se non c’è una apposita funzione?
  2. Aggiungi al programma le istruzioni che stampino anche l’intestazione della tabella.
  3. Scrivi il programma “secondo.py” che stampi le lunghezze dei lati dei triangoli rettangoli isosceli con i cateti che variano tra 1 a 10.