ePrometeusCorsoLinuxLinux
testi articoli
Testi Articoli  Download
Home | Espressioni | Comandi | Funzioni | Moduli | Classi | 
CorsoJava è ora Video! Free for all!
Clicca Qui!
Corso Python
Python: I Comandi
Indentazione
if
while
for
Particolarità
Print


<<< Indentazione >>>

In principio c'era il GOTO, il comando di controllo del flusso esplicito, che tendeva a trasformare i programmi in un ammasso di spaghetti. Da molto tempo è stato abolito nella programmazione, sostituito dalla programmazione strutturata. Questo significa che i programmi vengono strutturati a blocchi. Ovvero, se ho una istruzione che effettua un calcolo, e voglio seguire questo calcolo 10 volte, inserisco il blocco di istruzioni che effettuano il calcolo in un blocco controllato da una istruzione esterna che controlla il blocco.

Per esempio se voglio scrivere un programma che stampa i numeri dispari da 1 a 10 posso fare qualcosa del genere:

i = 1
while i <= 10:
  if i % 2 == 1:
     print i
  i = i + 1

Notare che dopo il while e l'if (che sono comandi strutturati, come vedremo in dettaglio più avanti) c'è una condizione. Questa condizione non deve essere necessariamente tra parentesi (come in C), ma deve essere terminata da un "due punti". Il blocco è nelle righe seguenti, più indentate rispetto al comando stesso. In realtà è possibile mettere un singolo comando immediatamente dopo i "due punti" , per cui si sarebbe anche potuto scrivere: if i%2==1: print i. Ma in realtà il codice più chiaro è quello scritto con l'annidamento.

Se conosce il Pascal , noterete immediatamente la particolare caratteristica del Python: l'uso delle indentazioni per descrivere (e non per evidenziare) l'annidamento di comandi. Lo stesso programma per esempio in un linguaggio come il Pascal si sarebbe potuto scrivere come segue:

i :=1 ; while i<=10 do begin 
if(mod(i,2)=1) then writeln(i) end;
i:= i+1; end

So benissimo che la maggior parte di voi che conoscono programmazione avranno visto inorriditi come non ho assolutamente rispettato le usuali regole di annidamento; regole che servono a rendere un programma leggibile; infatti l'ho fatto apposta. Il fatto è che in Pascal ci sono le parole chiave begin ed end a organizzare realmente la struttura di un programma. Invece in Python è proprio l'indentazione stessa a descrivere la struttura del programma.

Questa caratteristica può essere amata o odiata. In ogni caso, occorre un editore testi abbastanza intelligente per poterci lavorare senza troppe difficoltà. Per esempio usando emacs o l'ambientino di sviluppo incluso in Python stesso, IDLE, si lavora con sufficiente agilità. Ma io per esempio trovo quasi impossibile scrivere programmi Python usando vi.

Un altro problema ricorrente è la confusione che si genera quando in un testo sono presenti dei caratteri di tabulazione. Ricordo che il carattere TAB viene espando in una sequenza di spazi, che normalmente sono 8, ma possono in realtà essere variati configurando l'editore testi stesso.

Il che comporta una possibilità di confusione quando viene mischiato senza ritegno all'uso di spazi e tab. Un problema frequente è che un testo perfettamente leggibile in Python con un certo editor diventa incomprensibile con un altro che utilizza una diversa dimensione delle tabulazioni. Il consiglio che posso dare è di usare sempre spazi invece di tabulazioni, ed in non esagerare in larghezza in quanto l'indentazione dei programmi Python può diventare facilmente piuttosto profonda.

C'è una eccezione alla regola dell'annidamento: quando viene aperta una parentesi (tipicamente quando si scrivono strutture dati come liste o tuple nel corpo del codice), l'annidamento viene disattivato fino a che non viene chiusa la parentesi.

ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com