Concetti Chiave
- La definizione di una funzione stabilisce un legame tra il nome e il corpo della funzione stessa.
- I parametri formali sono i nomi definiti nella funzione, mentre i parametri attuali sono le espressioni passate alla funzione durante la chiamata.
- Le funzioni possono essere ricorsive, ovvero possono chiamare se stesse all'interno del loro corpo.
- I nomi delle variabili possono essere globali o locali, con specifiche regole su come possono essere utilizzati all'interno delle funzioni.
- Vari moduli possono essere importati in Python per estendere le funzionalità, come math per funzioni matematiche e random per generare numeri casuali.
Definizione e chiamata di funzione
Definizione crea legame tra nome della funzione e suo corpo
Def
Chiamata funzione
f(exp)
Return
Parametri formali = nomi, separati da una virgola se sono più di uno
Parametri attuali (o argomenti) = stesso numero dei formali, separati da virgole se più di uno. Sono espressioni.
Indentazione = uso di quattro spazi come rientro
Nomi globali e locali
Nomi globali: nel frame globale
Nomi locali: nel frame locale della funzione
Posso usare un nome globale solo a destra: se lo usi a sinistra diventa locale (e c'è un nameerror)
Una funzione ricorsiva è quando può chiamare se stessa nel proprio corpo
Caso base e caso ricorsivo
Teorema 1: se f è una funzione calcolabile con for e condizionale, allora è calcolabile con solo while e condizionale
Teorema 2: i) se f è una funzine calcolabile con while e condizionale, allora è calolabile con sola ricorsione e condizionale; ii) se f è una funzione calcolabile con ricorsione e condizionale, allora è calcolabile con solo while e condizionale
From
From
- https://docs.python.org/3/library/math.html math: sin(x), cos(x), sqrt(x), e (numero di nepero), pi (), factorial(x), log2
- https://docs.python.org/3/library/random.html random: randint(a,b) (estremi inlcusi)
- copy: copy (copia piatta), deepcopy (copia)
Attenzione: esegue comunque tutto il programma
- https://docs.python.org/3/library/string.html string: punctuation, whitespace
Modulo turtle
Modulo turtle https://docs.python.org/3/library/turtle.html
Forward(distance)
Backward(distance)
Right(angle)
Left(angle)
Pendown()
Penup()
Goto(x, y)
Setheading(to_angle)
Domande da interrogazione
- Qual è la differenza tra nomi globali e nomi locali in una funzione?
- Cosa si intende per funzione ricorsiva?
- Quali sono i teoremi riguardanti la calcolabilità delle funzioni?
I nomi globali sono definiti nel frame globale, mentre i nomi locali sono definiti nel frame locale della funzione. È importante notare che un nome globale può essere utilizzato solo a destra; se usato a sinistra, diventa locale e genera un errore di nome (nameerror).
Una funzione ricorsiva è una funzione che può chiamare se stessa all'interno del proprio corpo. Essa deve avere un caso base e un caso ricorsivo per terminare correttamente.
Il Teorema 1 afferma che se una funzione è calcolabile con cicli "for" e condizionali, lo è anche con "while" e condizionali. Il Teorema 2 stabilisce che se una funzione è calcolabile con "while" e condizionali, lo è anche con sola ricorsione e condizionali, e viceversa.