Ancora sequenze di comandi ed altre cose

Contenuto del capitolo
Viene introdotto un nuovo meccanismo per lanciare programmi Python. Analizziamo l'uso delle varibili per memorizzare informazioni da usare in seguito. Vediamo anche come utilizzare sequenze di comandi per ottenere il risultato voluto.

Adesso che sappiamo come scrivere semplici comandi in Python ed abbiamo iniziato a comprendere che cosa sono i dati e come possiamo usarli, vediamo cosa accade se scriviamo più comandi in sequenza.

Il piacere di essere PIGRO (in inglese: IDLE, N.d.T.)

Prima di procedere, se avete installato la versione 1.5.2 di Python (lo potete verificare quando Python viene lanciato), dovete trovare un programma chiamato IDLE che viene installato insieme al linguaggio. Si tratta sostanzialmente di un prompt di comandi in una finestra, ma ha parecchi vantaggi rispetto all'uso della versione DOS:

Se usate MS Windows c'è anche un'altra possibilità: PythonWin, che potete scaricare come parte del pacchetto winall. Questo da accesso a tutte le funzioni per la programmazione a basso livello di MFC (Microsoft Foundation Classes, N.d.T.) e, cosa più importante, è un'ottima alternativa a IDLE. Funziona solo in ambiente Windows, ma a mio avviso è leggermente superiore ad IDLE. D'altro canto IDLE è assai recente e nelle prossime versioni potrebbe superare Pythonwin. In ogni caso è piacevole avere un'alternativa!

Un breve commento

Uno strumento della programmazione assai importante, l'uso di commenti, viene spesso ritenuto inutile dai principianti per i primi esperimenti. I commenti non sono altro che linee nel programma che spiegano che cosa sta succedendo. Non hanno alcun effetto su come il programma funziona, sono puramente decorativi. Giocano peò un ruolo assai importante: dicono al programmatore cosa sta succedendo, ma soprattutto perché. Questo è particolarmente importante se il programmatore che legge il codice non è lo stesso che lo ha scritto, o se è passato molto tempo da quando lo ha scritto. Quando avrete un po' di esperienza di programmazione imparerete ad apprezzare i commenti ben fatti. Da ora in poi commenterò i frammenti di programma che scrivo. Gradualmente il testo di spiegazione diminuirà via via che le spiegazioni vengono inserite come commenti.

Ogni linguaggio prevede un modo per indicare i commenti. In BASIC si usa REM all'inizio del commento. Tutto ciò che segue REM viene ignorato:

REM print "Questo non verra' mai visualizzato"
print "Questo viene visualizzato"

Se qualche volta avete scritto files di comandi per DOS riconoscerete la parola REM, dato che in DOS si segnalano i commenti nello stesso modo.

Molte implementazioni di BASIC consentono anche di usare ' al posto di REM, il che è più facile da scrivere, ma più difficile da leggere. A voi la scelta.

Sia Python che Tcl usano il simbolo # come segno per i commenti. Tutto ciò che segue # viene ignorato:

v = 12     # assegna a v il valore 12
x = v*v    # x è uguale a v al quadrato

Incidentalmente, questo è uno stile di commento pessimo. Il commento non deve semplicemente ribadire ciò che fa il codice - questo chiunque può vederlo da solo! Deve invece spiegare perché lo sta facendo:

v = 3600    # 3600 e` il numero di secondi in un'ora
s = t*3600  # t rappresenta il tempo trascorso in ore. Converti in secondi 

Questi sono commenti assai più utili.

Sequenze che usano variabili

Adesso, usando IDLE oppure al prompt dei comandi DOS o Unix, provate a scrivere quanto segue:

>>> v = 7
>>> w = 18
>>> x = v + w    # usiamo le variabili in un calcolo
>>> print x

Non abbiamo fatto altro che creare alcune variabili ( v, w, x ) e manipolarle. Ciò equivale ad usare il pulsante M della calcolatrice tascabile per memorizzare un risultato da usare in seguito.

Possiamo migliorare ciò che abbiamo scritto usando una stringa di formato per visualizzare il risultato:

>>> print "La somma di %d e %d e': %d" % (v,w,x)

Un vantaggio delle stringhe di formato consiste nel fatto che possiamo anche memorizzarle in variabili:

>>> s = "la somma di %d e %d e': %d"
>>> print s % (v,w,x)   # utile per visualizzare la stessa uscita per valori diversi

L'ordine è importante

Fino a questo punto potreste pensare che il funzionamento di una sequenze di istruzioni sia piuttosto ovvio. In effetti quello che abbiamo visto fino ad ora è piuttosto ovvio, ma in generale le cose non sono cosí semplici come può sembrare a prima vista. Ci sono trappole nascoste. Consideriamo ad esempio il caso in cui si voglia "promuovere" di un livello tutti i comandi di generazione di titoli in un documento HTML:

I titoli in HTML vengono specificati racchiudendo il testo nel modo seguente
<H1>testo</H1> per i titoli di livello 1,
<H2>testo</H2> per i titoli di livello 2,
<H3>testo</H3> per i titoli di livello 3 e cosí via.

Il problema è che arrivati al livello 5 il testo del titolo è spesso più piccolo del testo normale, il che non è esteticamente gradevole. Quindi potreste decidere di alzare di un livello tutti i titoli. La cosa è piuttosto semplice da fare utilizzando la funzione di sostituzione di stringhe di un editore di testi, sostituendo '<H2>' con '<H1>', '</H2>' con '</H1>' e cosí via.

Pensate adesso a cosa accade se iniziate dal numero più alto facendo ad esempio le sostituzioni: H4 -> H3, quindi H3 -> H2 ed infine H2 -> H1. Tutti i titoli finiranno per essere al livello H1! Ciò significa che l'ordine di una sequenza di azioni è importante. Lo stesso vale nel caso in cui si decida di scrivere un programma che effettua le sostituzioni (che potrebbe anche essere utile, dato che incrementare il livello dei titoli potrebbe essere un compito che si ripete più volte).

La tabellina delle moltiplicazioni

Introduciamo adesso un esercizio di programmazione che sarà, sviluppato nel corso dei prossimi capitoli. La soluzione migliorerà via via che apprenderemo nuove tecniche.

Ricorderete che possiamo scrivere stringhe assai lunghe racchiudendole fra apici tripli. Usiamo questa possibilità per costruire una tabellina delle moltiplicazioni:

>>> s = """
1 x 12 = %d
2 x 12 = %d
3 x 12 = %d
"""     # Attenzione, non è consentito inserire commenti 
>>>     # All'interno delle stringhe: diventerebbero parte della stringa!
>>> print s % (12, 2*12, 3*12)

Estendendo le istruzioni dell'esempio potremmo stampare l'intera tabellina del 12. Ma non c'è un modo migliore? La risposta è "si", e vedremo come.

Promemoria
  • IDLE è un ambiente di sviluppo multipiattaforma per la scrittura di programmi Python.
  • I commenti possono rendere un programma più chiaro da leggere, ma non hanno effetti sulle operazioni svolte da esso.
  • Le variabili possono memorizzare valori per gli usi successivi

Precedente  Successivo  Indice


Se avete domande o suggerimenti relativi a questa pagina mandate un e-mail all'autore: alan.gauld@yahoo.co.uk o al traduttore italiano: lfini@arcetri.astro.it