un piccolo esempio: scriptenrigri/corsi/informaticasdm_0708/lezione05.pdf · dei - univ. padova...
TRANSCRIPT
![Page 1: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/1.jpg)
DEI - Univ. Padova (Italia)
Un piccolo esempio: script
# Script per calcolare il perimetro e l'area# di un rettangolo, dati i suoi lati
side1=input('Inserisci la lunghezza della base: ')side2=input("Inserisci la lunghezza dell'altezza: ")
per=2*side1+2*side2area=side1*side2
print "Il perimetro e': ", perprint "L'area e': ", area
![Page 2: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/2.jpg)
DEI - Univ. Padova (Italia)
Un piccolo esempio
• Ogni volta che si abbia bisogno di riutilizzare ilcodice che calcola area e perimetro del rettangolosi deve ricopiare tutta la sequenza istruzioni.
Riscrivere le stesse istruzioni più volte:
Spreco di tempo
Facilità di erroridi ricopiatura
Se mi accorgo di un errore devo modificare le istruzioni ovunque le abbia utilizzate
![Page 3: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/3.jpg)
DEI - Univ. Padova (Italia)
Funzioni
• Una funzione è una sequenza di istruzioni Python identificata da un nome.
• Si differenzia da uno script in quanto il suo scopo principale è quello di produrre uno o più valori a partire da determinati dati di ingresso (cosa che stabilisce un'analogia con l'omonimo concetto della matematica),
• Sono utili per automatizzare dei blocchi di istruzioni che si devonoeseguire ripetitivamente dal prompt dei comandi.Possono operare solo sui dati forniti come ingresso alla funzione e sulle variabili create all’interno della funzione
• Qualsiasi variabile creata nella funzione, ad eccezione di quelleesplicitamente restituite, sono eliminate con il termine della funzione(località delle variabili)
![Page 4: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/4.jpg)
DEI - Univ. Padova (Italia)
Un piccolo esempio: funzione
# Script che definisce una funzione# per calcolare il perimetro e l'area# di un rettangolo, dati i suoi lati
def rett(base, altezza):per=2*base+2*altezzaarea=base*altezzares=[per,area]return res
side1=input('Inserisci la lunghezza della base: ')side2=input("Inserisci la lunghezza dell'altezza: ")
res=rett(side1,side2)
print "Il perimetro e': ", res[0]print "L'area e': ", res[1]
![Page 5: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/5.jpg)
DEI - Univ. Padova (Italia)
Definizione di una funzione
• L’istruzione def comunica all’interprete che l’istruzione che segue inizializza la definizione di una funzione, e che il blocco di istruzioni seguente sono parte dellafunzione.
def rett(in1, in2, ...):
• Seguono poi le istruzioni: sono istruzioni della funzione tutte quelle indentate.
• Esse possono agire solo su– variabili create all’interno della funzione– parametri di ingresso in1, in2, …
• In uscita viene resa disponibile solo la variabile restituita con return
![Page 6: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/6.jpg)
DEI - Univ. Padova (Italia)
# Script che definisce una funzione# per calcolare il perimetro e l'area# di un rettangolo, dati i suoi lati
def rett(base, altezza):
per=2*base+2*altezzaarea=base*altezzares=[per,area]
return res
Funzioni esempio: I commenti cominciano con #E’ parte di codice che non viene interpretato come istrizioni, e non è eseguito
Indica che si sta definendo una funzione
Indica la fine della funzione
Argomenti di ingresso alla funzione.Sono gli unici dati presenti all’esterno del codice della funzione utilizzabili e conosciuti anche all’interno
Valori di uscita della funzione.Sono le uniche variabili definite all’interno della funzione che saranno disponibili una volta terminata la funzione
Nome identificativo della funzione
![Page 7: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/7.jpg)
DEI - Univ. Padova (Italia)
Località delle variabili 1
a=10b=15e=25
def prova(a):print “Nella funzione prova a = “, ab=100+ad=2*aprint “Nella funzione prova b = “, bprint “Nella funzione prova d = “, dprint “Nella funzione prova e = “, ereturn b+10
c=prova(a)print “Fuori dalla funzione prova a = “, aprint “Fuori dalla funzione prova b = “, bprint “Fuori dalla funzione prova d = “, dprint “Fuori dalla funzione prova e = “, e
![Page 8: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/8.jpg)
DEI - Univ. Padova (Italia)
Località delle variabili 2
Nella funzione prova a = 10Nella funzione prova b = 110Nella funzione prova d = 20Nella funzione prova e = 25Fuori dalla funzione prova a = 10Fuori dalla funzione prova b = 15Fuori dalla funzione prova d =
Traceback (most recent call last):File "C:/Programmi/Python25/prova", line 17, in <module>print "Nella funzione prova d = ", d
NameError: name 'd' is not defined
![Page 9: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/9.jpg)
DEI - Univ. Padova (Italia)
Località delle variabili 3
a=10b=15e=25
def prova(a):print “Nella funzione prova a = “, ab=100+ad=2*aprint “Nella funzione prova b = “, bprint “Nella funzione prova d = “, dprint “Nella funzione prova e = “, ereturn b+10
c=prova(a)print “Fuori dalla funzione prova a = “, aprint “Fuori dalla funzione prova b = “, bprint “Fuori dalla funzione prova d = “, dprint “Fuori dalla funzione prova e = “, e
Variabli globali: disponibili a tutte le funzioni
Parametro della funzione: esso diventa una variabile locale. Il suo nome non ha nessuna relazione con eventuali altre variabili globali con lo stesso nome
Variabli locali: compaiono a sinistra di una istruzione di assegnazione
Variabile globale: èla stessa e che c’èall’esterno della funzione
![Page 10: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/10.jpg)
DEI - Univ. Padova (Italia)
Utilizzare una funzione
ATTENZIONE!Definire una funzione non vuol dire automaticamente eseguirla!!
Una funzione indica che il blocco di istruzioni seguenti sono identificate da un nome, e che quelle istruzioni per poter funzionare hanno bisogno di un certo numero di variabili (argomenti della funzione).
Le istruzioni della funzione sono eseguite solo quando si “richiama” la funzione, scrivendo il suo nome come una istruzione.
![Page 11: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/11.jpg)
DEI - Univ. Padova (Italia)
Utilizzare una funzione
a=10
def prova(var_in):……return res
c=prova(a)
Definisco una funzione di nome “prova” che necessitàdi un parametro di ingresso.La funzione termina quando l’indentazione torna al livello del “def”.
Chiedo all’interprete di eseguire la funzione “prova”che ho definito, dando al suo parametro di ingresso “var_in” il valore della variabile “a”
![Page 12: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/12.jpg)
DEI - Univ. Padova (Italia)
File con più funzioni
def prova(var_in):res = var_in*var_inreturn res
def stampanome(var_in):print “Ciao ”, var_in
print prova(10)print stampanome(‘Andrea’)
In un file .py ci possono essere un numero arbitrario di funzioni definite.
Una funzione può essere utilizzata (eseguite) solo dopo che sia stata definita!
![Page 13: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/13.jpg)
DEI - Univ. Padova (Italia)
Utilizzare funzioni già scritte
Una volta definite delle funzioni, è possibile utilizzarle nel workspace di Python oppure in uno script attraverso l’operazione di importazione
Questa operazione rende la definizione delle funzioni importate disponibili.
![Page 14: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/14.jpg)
DEI - Univ. Padova (Italia)
Importazione: modo 1
Come per il modulo matematico di Python, posso decidere di aver bisogno di tutte le funzioni definite in tale modulo, e di volerle tenere separate da eventuali altre funzioni.
>>>import math
In tale modo ogni oggetto (variabile o funzione) definita all’interno del modulo math, può essere utilizzato:
>>> print math.sin(0.5)>>> print math.pi
E’ necessario dire esplicitamente all’interprete che le variabili e le funzioni richieste sono all’interno del modulo mathtramite l’operatore “.”
![Page 15: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/15.jpg)
DEI - Univ. Padova (Italia)
Importazione: modo 1
Se definisco una funzione od una variabile con lo stesso nome di una appartenente al modulo math, esse sono in effetti oggetti distinti.Le variabili e funzioni del modulo math sono protetti dalla scatola del modulo:
>>> pi=3.14>>> import math>>> print pi3.14>>> print math.pi3.1415926535897931>>>
![Page 16: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/16.jpg)
DEI - Univ. Padova (Italia)
Importazione: modo 1
Spazio di lavoro
>>> import test>>> b=test.prova(10)>>> print b100
File test.py
def prova(var_in):res = var_in*var_inreturn res
def stampanome(var_in):print “Ciao ”, var_in
![Page 17: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/17.jpg)
DEI - Univ. Padova (Italia)
Importazione: modo 2
E’ possibile importare specifiche funzioni o variabili da un modulo, per poi utilizzarle senza dover indicare l’appartenenza ad un modulo.
>>>from math import pi>>>from math import sin
In tale modo ogni oggetto importato puà essere utilizzato semplicemente richiamando il suo nome:
>>> sin(0.5)0.47942553860420301>>> pi3.1415926535897931
![Page 18: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/18.jpg)
DEI - Univ. Padova (Italia)
Importazione: modo 2
Se definisco una funzione od una variabile con lo stesso nome di una importata, sovrascrivo il suo valore.
>>> from math import pi>>> print math.pi3.1415926535897931>>> pi=5>>> pi5
![Page 19: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/19.jpg)
DEI - Univ. Padova (Italia)
Importazione: modo 1
Spazio di lavoro
>>> from test import prova>>> b=prova(10)>>> print b100
File test.py
def prova(var_in):res = var_in*var_inreturn res
def stampanome(var_in):print “Ciao ”, var_in
![Page 20: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/20.jpg)
DEI - Univ. Padova (Italia)
Fattoriale in Python
Spazio di lavoro
>>> from num import fattoriale>>> fattoriale(4)24
File num.py
def fattoriale(n):if(n<0):
print "Il fattoriale di un numero negativo non e' definito"return -1
res=1for i in range(1,n+1):
res=res*i
return res
![Page 21: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/21.jpg)
DEI - Univ. Padova (Italia)
Fibonacci in Python
File num.py
# Funzione iterativa per il calcolo dei numeri di fibonaccidef fibonacci(n):
if(n<0):print "Il numero di Fibonacci di un numero negativo non e' definito"return -1
if(n<2):return n
fib1=0fib2=1for i in range(2,n):
fib=fib1+fib2fib1=fib2fib2=fib
fib=fib1+fib2
return fib
![Page 22: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/22.jpg)
DEI - Univ. Padova (Italia)
Fibonacci in Python
File num.py
# Funzione iterativa per il calcolo del fattorialedef fattoriale(n):
…return res
# Funzione iterativa per il calcolo dei numeri di fibonaccidef fibonacci(n):
if(n<0):print "Il numero di Fibonacci di un numero negativo non e' definito"return -1
if(n<2):return n
fib1=0fib2=1for i in range(2,n):
fib=fib1+fib2fib1=fib2fib2=fib
fib=fib1+fib2
return fib
![Page 23: Un piccolo esempio: scriptenrigri/Corsi/InformaticaSdM_0708/Lezione05.pdf · DEI - Univ. Padova (Italia) Un piccolo esempio: script # Script per calcolare il perimetro e l'area #](https://reader034.vdocuments.pub/reader034/viewer/2022042808/5f867f05ac5a475cf73aa288/html5/thumbnails/23.jpg)
DEI - Univ. Padova (Italia)
Fibonacci in Python
Spazio di lavoro
>>> from num import fibonacci>>> for i in range(10)
print fibonacci(i)
0112358132134>>>