Funzioni utente

Vedi la discussione.

Un programma può diventare molto lungo e complesso (si perde il controllo…)

istruzione_1 
istruzione_2 
istruzione_3 
... 
istruzione_100 
... 
istruzione_1000 
...

Per migliorare la leggibilità si aggiungono linee vuote e commenti

#-------------- Attività A (n1 istruzioni)
istruzione_a_1 
istruzione_a_2 
... 
istruzione_a_n1 

#-------------- Attività B (n2 istruzioni)
istruzione_b_1 
istruzione_b_2 
... 
istruzione_b_n2 

#-------------- Attività C (n3 istruzioni)
istruzione_c_1 
istruzione_c_2 
... 
istruzione_c_n3

Una parte di codice diventa una funzione se

  • è riconoscibile (svolge un compito specifico)
  • si ripete più volte nello stesso progetto
  • è troppo lunga (più di 20/30 righe?)
  • vogliamo utilizzarla in un altro progetto
  • vogliamo condividerla
def attività_a(): 
    istruzione_a_1 
    istruzione_a_1 
    ... 
    istruzione_a_n1 

def attività_b(): 
    istruzione_b_1 
    istruzione_b_2 
    ... 
    istruzione_b_n2 

def attività_c():
    istruzione_c_1 
    istruzione_c_2 
    ... 
    istruzione_c_n3

Per passare il controllo a una funzione è necessario chiamarla.
Dopo l’esecuzione dell’ultima istruzione all’interno della funzione il controllo ritorna alla prima istruzione successiva alla chiamata.

def attività_a(): 
    istruzione_a_1 
    istruzione_a_2 
    ... 
    istruzione_a_n1 

def attività_b(): 
    istruzione_b_1 
    istruzione_b_2 
    ... 
    istruzione_b_n2 

def attività_c():
    istruzione_c_1 
    istruzione_c_2 
    ... 
    istruzione_c_n3 

...
attività_a() 
...
attività_b() 
...
attività_c()
...

Il blocco principale non ha l’esclusiva di fare le chiamate, ogni funzione può chiamare qualsiasi funzione

def attività_a(): 
    ... 
    ...
    ...

def attività_b(): 
    ... 
    attività_a()
    ...
    ...

...
attività_b()
...
...