Appunti di Laboratorio Il Linguaggio Python - Lezione 1 Giancarlo de Gasperis, Dario Del Moro, Luca Giovannelli Dipartimento di Fisica, Università di Roma Tor Vergata A.A. 2016/2017 GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 1 / 23
Introduzione al corso Luca, Dario e Giancarlo Chi dott. Giancarlo de Gasperis (Dip. di Fisica, Corridoio C1, Stanza C133) tel: 06-7259-4091 E-Mail: giancarlo.degasperis@roma2.infn.it dott. Dario Del Moro (Dip. di Fisica, Corridoio D1, Stanza D113) tel: 06-7259-4431 E-Mail: dario.delmoro@roma2.infn.it dott. Luca Giovannelli (Dip. di Fisica, Corridoio D1, Stanza D133) tel: 06-7259-4431 E-Mail: luca.giovannelli@roma2.infn.it GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 2 / 23
Introduzione al corso Cosa Obiettivi del Corso Programmazione Strutturata Il linguaggio Python GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 3 / 23
Introduzione al corso come Testi consigliati per Python A Primer on Scientific Programming with Python H.P. Langtangen (Springer) A Student s Guide to Python for Physical Modeling J. M. Kinder and P. Nelson (Princeton University Press) An Introduction to Python and Computer Programming Y. Zhang (Springer) Risorse su internet: The Hitchhiker s Guide to Python: http://docs.python-guide.org/en/latest/intro/learning/ Interactive Python tutorial su Python.org http://http://www.learnpython.org/ Codecademy: https://www.codecademy.com/learn/python Stackoverflow: http://stackoverflow.com/questions/tagged/python Python compiler: python.org: https://www.python.org/downloads/ GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 4 / 23
Introduzione al corso come Preludio: La Programmazione La programmazione é l ideazione e la realizzazione di un programma software usando un set di istruzioni basiche. I linguaggi di programmazione sostituiscono le istruzioni per l hardware con istruzioni piú semplici da interpretare e gestire per il programmatore. Con linguaggio di programmazione, si puó scrivere del software complesso, creando delle funzioni personalizzate da una combinazione di istruzioni elementari. Questa é l ultima frontiera dell utilizzo del computer ed é necessaria quando il software esistente non soddisfa le nostre necessitá, come l esigenza di calcolare delle nuove equazioni o simulare degli esperimenti specifici. GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 5 / 23
Spyder IDE Spyder: The Scientific PYthon Development EnviRonment GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 6 / 23
Spyder IDE Spyder: the text editor GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 7 / 23
Spyder IDE Spyder: the interactive console GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 8 / 23
Spyder IDE Interludio 1: La struttura di un computer e il meccanismo di esecuzione del codice Python L hardware del computer é costituito da tre componenti principali: CPU, Memoria e Unitá (Devices). Il computer é gestito da un Sistema Operativo (OS), che mette in comunicazione l hardware ed il software, fornendo interfacce basilari per i programmi al fine di controllare l hardware. Browsers, text editors, music players, e quasi tutti gli altri programmi sono gestiti dall OS. Python é solo un altro programma che viene eseguito all interno dell OS. La sua funzione é di interpretare ed eseguire del codice Python. IPython é un altro programma, che fornisce una interfaccia interattiva verso Python. Dato un codice in Python, Python lo esegue (traducendolo in istruzioni per il computer) sull hardware del computer attraverso il sistema operativo. From: Y. Zhang, An Introduction to Python and Computer Programming GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 9 / 23
Python-calcolatrice Usare il Python come una calcolatrice La nostra prima formula: R = a 2 + b 3 c 4 Calcolare il valore di R per: a = 117 b = 15 c = 13 > > > print 117**2 + 15**3-13**4 L espressione consiste in alcuni numeri, connessi da operatori matematici. I numeri in questo esempio sono delle costanti numeriche di tipo integer. Un operatore (e.g. +, -, *) indica la funzione matematica tra i suoi operandi e di conseguenza il valore dell espressione (e.g. 3 + 5). Quando una espressione matematica é inserita, la console la calcola automaticamente e mostra il risultato nella linea seguente. GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 10 / 23
Python-calcolatrice Usare il Python come una calcolatrice La nostra seconda formula: y(t) = v 0 t 1 2 gt2 0 < t < 2v 0 /g Calcolare la posizione y per: g = 9.81m/s 2 v 0 = 5m/s t = 0.6s > > > print 5.0*0.6-0.5*9.81*0.6**2.0 I numeri in questo esempio sono delle costanti numeriche di tipo floating point. GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 11 / 23
Costanti e Variabili Definire le Variabili Per convenienza di notazione e per rendere i programmi piú facili da mantenere, possiamo assegnare dei nomi ai valori matematici. Possiamo dichiarare un nome per la Variabile che sará associato alla posizione della memoria che ne contiene il valore. > > > v0 =5.0 > > > g =9.81 > > > t =0.1 > > > h = v0*t-0.5*g*t**2 Il segno = usato NON é un operatore matematico. É un comando di assegnazione, che associa il nome della Variabile ad una locazione di memoria che contiene il valore corrente della variabile. Per i nomi delle variabili esistono delle regole: Devono iniziare per lettera o underscore (_) e contenere una sequenza di numeri, lettere o underscore. NON possono essere usati alcuni nomi giá riservati per delle keywords di Python. GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 12 / 23
Costanti e Variabili L operatore di assegnazione Assegnare valori a variabili L operatore = assegna alla variabile alla sua sinistra il valore dell espressione alla sua destra: l operazione a = b + 42 assegna alla variabile a il valore di b incrementato di 42 1 Viene valutata l espressione a dx; 2 Il risultato viene convertito al tipo della variabile a sx; 3 Il risultato è assegnato alla variabile a sx. L espressione a destra dell operatore di assegnazione può contenere qualsiasi combinazione valida di variabili, costanti e operatori aritmetici e logici. Notate che espressioni come a=a+1 sono legittime! GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 13 / 23
Costanti e Variabili Alcuni tipi di Variabili & Valori permessi Costanti e variabili intere: possono assumere valori positivi e negativi, nell intervallo [ 2 31, 2 31 1] Costanti e variabili a virgola mobile: numeri che contengono cifre decimali. I numeri reali possono essere positivi o negativi e possono essere scritti con o senza esponente: Numeri reali senza esponente: 1., -10., 7.5, 0., -99.6 Numeri reali con esponente: <mantissa>e<esponente> e.g.: 0.123E+6, -999.0E-4, 123.4E-6 Costanti e variabili di caratteri: è una serie di caratteri (o stringa) racchiusa tra una coppia di virgolette semplici o doppie. Costanti e variabili logiche: assumono i valori True o False I floating point possono essere rappresentati con 32 o 64 bit. Se la parola è di 32 bit, se ne usano 24 per la mantissa e 8 per l esponente. GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 14 / 23
Costanti e Variabili Gli Operatori Matematici Le cinque operazioni fondamentali Gli operatori binari matematici standard del Python sono: + Addizione - Sottrazione * Moltiplicazione / Divisione ** Elevamento a potenza % Operatore MOD La loro priorità nelle espressioni è quella nota. l associatività è da sinistra a destra. È possibile usare le parentesi tonde ( ), che vengono valutate per prime, per associare opportunamente diverse espressioni. GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 15 / 23
Costanti e Variabili Attenzione 1 Non è possibile affiancare due operatori: a*-b a*(-b); a**-b a**(-b) 2 Moltiplicazione implicita non ammessa: x(y+z) x*(y+z) 3 Le parentesi tonde permettono di raggruppare i termini delle espressioni: 2**((8+2)/5) = 2**(10/5) = 2**2 = 4 GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 16 / 23
Costanti e Variabili Le Operazioni Matematiche Operazioni con numeri interi: possono essere svolte solo con costanti e variabili intere e generano sempre un numero intero. Se la divisione di due interi non è un intero, il computer tronca automaticamente la parte decimale del risultato: 3/4 = 0, 4/4 = 1 6/4 = 1... Operazioni con numeri reali: riguardano costanti e variabili reali e il risultato generato è un numero reale: 3./4. = 0.75, 4./4. = 1., 5./4. = 1.25... La rappresentazione dei numeri reali può non essere esatta, in quanto la precisione è limitata! GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 17 / 23
Costanti e Variabili Errore di Arrotondamento Numerico I numeri floating point non possono rappresentare tutti i numeri reali : > > > x =1./7. > > > print x+x+x+x+x+x+x 0.9999999999999998 > > > print 3.3%2 1.2999999999999998 Per rappresentare gli infiniti numeri reali serve infinita memoria. I floating point rappresentano solo 2 32 numeri diversi tra loro. Tali numeri prendono il nome di numeri macchina. Tutti gli altri numeri reali sono arrotondati al numero macchina piú vicino. Se rappresentati a 32 bit i floating point hanno un errore percentuale di round-off di 10 7. Se rappresentati a 64 bit i floating point hanno un errore percentuale di round-off di 10 16. GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 18 / 23
Costanti e Variabili Operazioni tra Operandi di diverso tipo In generale operazioni binarie tra operandi dello stesso tipo daranno un risultato dello stesso tipo degli operandi. Un operazione si dice mista se interessa operandi di tipo differente. 3/2.0 =??? Le espressioni miste sono pericolose perché possono essere interpretate male e possono fornire risultati imprevisti! Generalmente nelle operazioni miste i numeri interi vengono trasformati in numeri reali prima di effettuare le operazioni: 3/2.0 = 3.0/2.0 = 1.5 Esempio: n= (3+4)/2 +1.0 print n 4.0 n= (3+4.)/2 +1.0 print n 4.5 GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 19 / 23
Operatori Logici Operatori relazionari Gli operatori relazionali sono operatori con due operandi numerici o di caratteri che forniscono un risultato di tipo logico. Operatore Operatore Utilizzo Significato Algebrico in Python in Python > > x > y x è maggiore di y? < < a < b a è minore di b? = == x == y x è uguale a y? >= x >= y x è maggiore o uguale a y? <= a <= b a è minore o uguale a b? Il risultato sarà il valore logico True oppure False a seconda se la condizione è VERA oppure FALSA. Esempio: 3 < 4 True 3 == 4 False GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 20 / 23
Operatori Logici Operatori logici Un operatore logico è un operatore binario che elabora dati logici, numerici o caratteri e fornisce un risultato di tipo logico. Operatore Operatore Espressione Significato Logico in Python in Python OR or x or y OR logico AND and a and b AND logico NOT not not y NOT logico Tavola della verità: x y x and y x or y True True True True True False False True False True False True False False False False x True False not x False True GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 21 / 23
Operatori Logici Interludio 2: Python vs Java vs C++ Tra i tre, C++ é stato inventato per primo. Le sue istruzioni sono le piú vicine alle istruzioni hardware. Di conseguenza, C++ é veloce e puó essere molto ottimizzato. Tuttavia, C++ richiede una buona conoscenza dell hardware ed é poco intuitivo. Java é stato inventato decadi dopo il C++. Ha un alto livello di astrazione rispetto al C++, ció lo rende piú facile da comprendere e utilizzare. Come controparte, la sua esecuzione é piú lenta. Python é ancora piú semplice concettualmente e piú lontano dall hardware. Di conseguenza, dei tre é il piú facile da apprendere e dominare, ma i suoi programmi sono i piú lenti da eseguire. From: Y. Zhang, An Introduction to Python and Computer Programming GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 22 / 23
Operatori Logici Esercizi: (a) 1 + 3 * 2-5 + 4 (b) 1 + 3 * (2-5) + 4 (c) 5**2**2*3+1 (d) 5**(2**2)*3+1 (e) 1 + 3/2 (f) 1 + 3.0/2 (g) -2-1 (h) -(2-1) (i) 3.0 + 3/2 (j) 3 + 3/2.0 (k) - 1**0.5 (l) 10 5 (m) 10 (n) le radici di x 2 7x + 10 = 0 (o) log(2 + 5) (p) l area del cerchio di raggio 5.5 (q) sin(2.5) (r) le radici di x 2 2x + 10 = 0 (s) 4! (t) Σ 128 k=32 k (v) Π 17 k=3 k GdG, DDM, LG (Fisica, Tor Vergata) Laboratorio di Calcolo ed Informatica A.A. 2016/2017 23 / 23