Funzioni che chiamano altre Funzioni¶
Il processo di dividere un problema in sotto-problemi più piccoli è chiamato scomposizione funzionale.
Nell’esempio che segue invece consideriamo una funzione che usa due funzioni.
Questo esempio è anche un esempio di generalizzazione. - Se vogliamo scrivere una funzione che disegna un quadrato, la generalizzazione che stiamo facendo ci permette di realizzare un quadrato come un particolare rettangolo.
Per disegnare un rettangolo abbiamo bisogno di chiamare una funzione con argomenti diversi per la base e l’altezza.
def drawRectangle(t, w, h):
"""Get turtle t to draw a rectangle of width w and height h."""
for i in range(2):
t.forward(w)
t.left(90)
t.forward(h)
t.left(90)
- Infatti un quadrato è un rettangolo in cui l’altezza e la base sono uguali.
def drawSquare(tx, sz): # a new version of drawSquare
drawRectangle(tx, sz, sz)
Mettendo tutto insieme, otteniamo.
Motivi per creare nuove funzioni:
- La creazione di una nuova funzione ci dà l’opportunità di dare un nome a un gruppo di istruzioni. Le funzioni possono semplificare un programma nascondendo una computazione complessa dietro un singolo comando. Questo modo di operare fa parte del processo di astrazione.
- La creazione di una nuova funzione può rendere un programma più piccolo eliminando codice ripetitivo.
- Qualche volta possiamo scrivere funzioni più generali per risolvere problemi specifici.