Laboratorio di Python

Documenti analoghi
Laboratorio di Python

Laboratorio di Python

Laboratorio di Informatica

Logica booleana, Costrutto IF

Un piccolo esempio: script

Un piccolo esempio: script

Laboratorio di Python

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Il linguaggio Python

DEBUGGING. Ivan Lanese

Si può scrivere un programma anche utilizzando un editor di testo (Blocco Note, WordPad, ) ricordandosi comunque di salvarlo con l estensione.py.

Input/Output. Console e File.

Introduzione a Matlab. Renato Mainetti

STORIA E CARATTERISTICHE

Laboratorio di Python (con Linux)

Metodi Informatici per la Biologia

Funzioni, Stack e Visibilità delle Variabili in C

Laboratorio di Python

Usare Python in Linux

Lezione 6 Introduzione al C++ Mauro Piccolo

INTRODUZIONE ALLA PROGRAMMAZIONE

usare le funzioni aritmetiche e logiche di base come. Volgiamo costruire un foglio elettronico in cui registriamo i voti presi

Definizione di metodi in Java

Input/Output di numeri

Esercizi Programmazione I

Linguaggi di programmazione

La programmazione nel linguaggio C

Scilab. Introduzione a Scilab - Vettori. Corso di Informatica CdL: Chimica. Claudia d'amato.

Lezione 3. Ing. Giuseppe Chiapparo - Università di Roma Tor Vergata Corso di ingegneria degli algoritmi (parte pratica) A.A.

Foglio elettronico Microsoft Office Excel 2003

UTILIZZIAMO GLI OPERATORI MATEMATICI E COMMENTIAMO IL CODICE

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere

Ingegneria degli Algoritmi (II parte pratica)

Laboratorio di Calcolo Numerico

Fogli Elettronici. Idoneità Informatica Prof. Mauro Gaspari

Introduzione a. Funzioni di Ingresso e Uscita. Compilazione

Sviluppo di programmi

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

Caratteri e stringhe

Rappresentazione binaria delle variabili (int e char)

Fortran in pillole : prima parte

Fondamenti di Informatica T-1

print((math.floor(1345/10)%10); print (Math.floor(1345/100)%10); Le funzioni in JavaScript

Introduzione al C++ (continua)

Funzioni e moduli. Andrea Passerini Informatica. funzioni e moduli

Foglio Elettronico Lezione 1

Tutorial su Codelite. Luca Ceriani 2011 Federico Cerutti

Laboratorio di Python

EUROPEAN COMPUTER DRIVING LICENCE SYLLABUS VERSIONE 5.0

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Cenni sul preprocessore e il suo utilizzo

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Laboratorio di Algoritmi e Strutture Dati

EXCEL: FORMATTAZIONE E FORMULE

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Modularizzazione del software

Laboratorio di Matematica e Informatica 1

Laboratorio di Python

LA TRASMISSIONE DELLE INFORMAZIONI SECONDA PARTE 1

La simulazione con DERIVE Marcello Pedone LE SIMULAZIONI DEL LANCIO DI DADI CON DERIVE

float somma_float(float a, float b) int get_ascii(char c)

I CARATTERI E LE STRINGHE

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Informatica Generale 1 - Esercitazioni Flowgraph, algebra di Boole e calcolo binario

EXCEL: FORMATTAZIONE E FORMULE

Programmazione Orientata agli Oggetti in Linguaggio Java

LEZIONE 11 IMPARIAMO A PROGRAMMARE: I DATI E LE VARIABILI Laboratorio di Informatica per l Educazione A. A. 2014/2015

Linguistica Computazionale: esercitazioni

Programmazione in Java (I modulo)

Formule e funzioni. Manuale d uso

Programmare in C. Maurizio Palesi Salvatore Serrano. Valori. Operazioni. Un insieme di valori del tipo. Per operare su tali valori Tipi

PROGRAMMAZIONE: Le strutture di controllo

Laboratorio di Alfabetizzazione Informatica - Simulazione d esame 29 aprile 2013

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1

Modulo 2: Strutture fondamentali della programmazione Java

Lezione 6 programmazione in Java

Espressioni e Comandi

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati

Elementi di informatica

Modulo 4 Esercitazione Nr 2 Office 2007

C: panoramica. Violetta Lonati

Debug di un programma

Laboratorio di Python

MATLAB (II parte) Commenti. Input/Output (I/O) Istruzioni di Input/Output (I/O)

Laboratorio di Informatica 4 Novembre 2005

Programmazione Procedurale in Linguaggio C++

Programmazione a moduli in C

Esercizi su Python. 14 maggio Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che:

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 06 Array" Lab06 1

1. DOMANDA SULLA CONGRUENZA E IL TEOREMA DI FERMAT : (MOD 23)

Introduzione ai Laboratori di Fondamenti di Analisi dei Dati. Antonino Furnari

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Lena Cota Guido Corso di Informatica - II livello. Excel 2003 Formule. Imparare a usare le formule con la pratica

Laboratorio di Python

Funzioni di libreria. Richiedono tutte. #include <math.h> fabs(x) sqrt(x) pow(x,a) exp(x) log(x)

LEZIONE PRECEDENTE. 1 Abilità Informatiche e Telematiche. 03/04/2015 Dott. ssa Carmen De Maio

Esercitazione 1 SQL: DDL e DML di base

Espressioni. Operatori aritmetici e metodi della classe java.lang.math

Scaletta. Cenni di computabilità. Cosa fa un programma? Definizioni (1/2) Definizioni (2/2) Problemi e domande. Stefano Mizzaro 1

Transcript:

Laboratorio di Python Variabili e Funzioni Lab02 1 Marzo 2017

Outline Variabili modificabili Teoria Esempi ed esercizi Funzioni Teoria Esempi ed esercizi Esercizi per casa

Outline Variabili modificabili Teoria Esempi ed esercizi Funzioni Teoria Esempi ed esercizi Esercizi per casa

Variabili modificabili Nomi/etichette per valori Valori modificabili: possono cambiare nel tempo ( dalla Matematica) Il legame tra nome e valore si instaura e si modifica con l operatore di assegnamento =

Assegnamento In Python, = non significa uguale Si legge da destra a sinistra. Per esempio in x = 3+2 valuto (cioè calcolo il valore) di ciò che sta a destra dell uguale (in questo caso 5) associo quel valore (5) al nome x se al nome x era già legato un valore, il precedente legame viene perduto Dunque x = x + 1 ha perfettamente senso! Mentre 1 = x no! (perché 1 non è un nome legale per un identificatore) L operatore = non è commutativo.

Outline Variabili modificabili Teoria Esempi ed esercizi Funzioni Teoria Esempi ed esercizi Esercizi per casa

Esempio Che cosa stampa questo programma? 1 a = 42 2 b = a 3 a = 13 4 p r i n t ( a, b ) Se non siete sicuri, bisogna fare tracing, cioè eseguire passo passo a mente/mano il codice. Oppure farsi aiutare da http://pythontutor.com/visualize.html#mode=edit

Esempio Che cosa stampa questo programma? 1 a = 42 2 b = a 3 a = 13 4 p r i n t ( a, b ) Se non siete sicuri, bisogna fare tracing, cioè eseguire passo passo a mente/mano il codice. Oppure farsi aiutare da http://pythontutor.com/visualize.html#mode=edit Soluzione: 13, 42

Esempio Che cosa stampa questo programma? 1 a = a + 5 2 p r i n t ( a )

Esempio Che cosa stampa questo programma? 1 a = a + 5 2 p r i n t ( a ) Traceback (most recent call last): File "tracing.py", line 1, in <module> a = a + 5 NameError: name 'a' is not defined

Esempio Che cosa stampa questo programma? 1 a = a + 5 2 p r i n t ( a ) Traceback (most recent call last): File "tracing.py", line 1, in <module> a = a + 5 NameError: name 'a' is not defined Bisogna fare debug, cioè andare a caccia dell errore. Prima cosa da fare: leggere il messaggio di errore!

Esempio La variabile a non ha un valore iniziale, dunque Python non sa calcolare il valore a destra dell assegnamento. Dobbiamo dare noi un valore iniziale. 1 a = 25 2 a = a + 5 3 p r i n t ( a )

Tipi di errori sintassi runtime semantica un espressione non è scritta correttamente (Python non capisce la sequenza e non sa come interpretare il comando), non riesce ad eseguire il comando print("ciao un errore eccezionale del programma, l esecuzione del programma viene interrotta, print(3/0) il programma scritto non è quello che si pensa, l esecuzione può terminare normalmente, print("il prodotto tra 2 e 5 è", 2+5)

Debugging È quel processo nella produzione del software che ha come obiettivo l eliminazione degli errori. Durante questo processo è necessario provare (testare) il programma che si è scritto più volte. Per ogni tipo di errore vediamo la sua correzione: sintassi utilizzando i messaggi di errore dell interprete o del compilatore correggere il codice run-time prevedere e gestire gli errori che possono verificarsi a run-time per evitare l interruzione anomala del programma semantica effettuare diverse prove, su diversi input, specialmente nei casi limite, per capire se l algoritmo è corretto

Esercizio Scrivere un programma che scambia il contenuto di due variabili (indipendentemente da ciò che contengono).

Esercizio Scrivere un programma che scambia il contenuto di due variabili (indipendentemente da ciò che contengono). Soluzione 1 a = 7 2 b = 20 3 4 tmp = a 5 a = b 6 b = tmp 7 8 p r i n t ( a v a l e, a ) 9 p r i n t ( b v a l e, b )

Outline Variabili modificabili Teoria Esempi ed esercizi Funzioni Teoria Esempi ed esercizi Esercizi per casa

Struttura di una funzione 1 import modulo 2 def f u n z i o n e ( p a r a m e t r i ) : 3 commento che s p i e g a cosa f a l a f u n z i o n e 4 i s t r u z i o n i 5... 6 i s t r u z i o n i #commento b r e v e 7 return r i s u l t a t i

Definizione di funzione Una funzione ha un nome Una funzione può avere o no dei parametri (ma le parentesi servono sempre!) Una funzione ha un contenuto (il suo corpo). Il contenuto va indentato, cioè va spostato a destra rispetto alla riga di definizione, per far capire a Python che esso sta dentro la funzione. Si possono usare quattro spazi oppure un tab. Una funzione può restituire uno o più risultati (o anche nessuno...) Proprio come in matematica, definisco la funzione una volta sola (es. f (x) = x 2 Poi però posso usarla quante volte voglio (es. f (3) vale 9) (es. sia y = a, allora f (y) è uguale ad a 2 )...

Commenti Sono leggibili dagli esseri umani e ignorati dal computer Servono a documentare il codice Buona norma: subito sotto la riga in cui dichiariamo la funzione, mettere un commento (incluso tra due triplette di doppi apici) che spiega sintenticamente cosa fa la funzione Accanto a istruzioni complesse, mettere un commento breve (che inizia con #) per spiegarle

Import modulo Comando per richiamare funzioni implementate in un programma già salvato. Esempi di moduli sono: math: sono implementate funzioni matematiche ad esempio: sin(x), cos(x), sqrt(x) ecc sono definite le costanti e, pi - rispettivamente il numero di Nepero e π random: sono implementate alcune funzioni per la generazione di numeri pseudocasuali, es: randint(a,b)

Import modulo Comando per richiamare funzioni implementate in un programma già salvato. Esempi di moduli sono: math: sono implementate funzioni matematiche ad esempio: sin(x), cos(x), sqrt(x) ecc sono definite le costanti e, pi - rispettivamente il numero di Nepero e π random: sono implementate alcune funzioni per la generazione di numeri pseudocasuali, es: randint(a,b) Per usare in un programma una o più funzioni appartenenti a un modulo: importare il modulo prima del suo utilizzo es: import math richiamare la funzione in riferimento al modulo es. math.sin(90) Per sapere cosa c è dentro una libreria, consultare la documentazione: https://docs.python.org/3/library/math.html

Outline Variabili modificabili Teoria Esempi ed esercizi Funzioni Teoria Esempi ed esercizi Esercizi per casa

Esercizio 1. Cosa fa questa funzione? Aggiungere il commento di spiegazione 2. Rinominare la funzione con un nome significativo 3. Provare ad eseguire il programma. Che succede? 1 import math 2 def f u n z i o n e ( a, b ) : 3 i=a 2+b 2 4 i=math. s q r t ( i ) 5 return i

Soluzione 1 import math 2 def radicesommaquadrati ( a, b ) : 3 Funzione che c a l c o l a l a somma d e i q u a d r a t i d i due numeri p r e s i come p a r a m e t r i 4 i=a 2+b 2 # s i sommano i q u a d r a t i 5 i=math. s q r t ( i ) #s i c a l c o l a l a r a d i c e 6 return i #s i r e s t i t u i s c e i l r i s u l t a t o Con l esperienza, commenti del genere saranno superflui ;)

Soluzione 1 import math 2 def radicesommaquadrati ( a, b ) : 3 Funzione che c a l c o l a l a somma d e i q u a d r a t i d i due numeri p r e s i come p a r a m e t r i 4 i=a 2+b 2 # s i sommano i q u a d r a t i 5 i=math. s q r t ( i ) #s i c a l c o l a l a r a d i c e 6 return i #s i r e s t i t u i s c e i l r i s u l t a t o Con l esperienza, commenti del genere saranno superflui ;) Abbiamo solo definito la funzione. Per usarla proviamo a digitare nella console: radicesommaquadrati(1,1). Notiamo anche il tooltip che compare.

Modifiche alla soluzione Se vogliamo usare i valori calcolati dalla funzione in un programma, dobbiamo modificare il nostro file. Notare l indentazione. 1 import math 2 def radicesommaquadrati ( a, b ) : 3 Funzione che c a l c o l a l a somma d e i q u a d r a t i d i due numeri p r e s i come p a r a m e t r i 4 i=a 2+b 2 5 i=math. s q r t ( i ) 6 return i 7 8 x = 2 9 y = 3 10 p r i n t ( La d i s t a n z a d e l punto ( x, y ) d a l l ' o r i g i n e ( 0, 0 ) e ' ) 11 radicesommaquadrati ( x, y )

Modifiche alla soluzione Se vogliamo usare i valori calcolati dalla funzione in un programma, dobbiamo modificare il nostro file. Notare l indentazione. 1 import math 2 def radicesommaquadrati ( a, b ) : 3 Funzione che c a l c o l a l a somma d e i q u a d r a t i d i due numeri p r e s i come p a r a m e t r i 4 i=a 2+b 2 5 i=math. s q r t ( i ) 6 return i 7 8 x = 2 9 y = 3 10 p r i n t ( La d i s t a n z a d e l punto ( x, y ) d a l l ' o r i g i n e ( 0, 0 ) e ' ) 11 radicesommaquadrati ( x, y ) Perché non funziona?? Perché la funzione calcola il suo valore e lo restituisce al programma principale, che però non lo memorizza nè compie nessuna altra azione su di esso, perdendolo.

Modifiche alla soluzione Soluzione: memorizzare il valore ritornato, restituito dalla funzione in una variabile. 1 import math 2 def radicesommaquadrati ( a, b ) : 3 Funzione che c a l c o l a l a somma d e i q u a d r a t i d i due numeri p r e s i come p a r a m e t r i 4 i=a 2+b 2 5 i=math. s q r t ( i ) 6 return i 7 8 x = 2 9 y = 3 10 d i s t a n z a = radicesommaquadrati ( x, y ) 11 p r i n t ( La d i s t a n z a d e l punto ( x, y ) d a l l ' o r i g i n e ( 0, 0 ) e ', d i s t a n z a )

Modifiche alla soluzione Rendere la print più generale 1 import math 2 def radicesommaquadrati ( a, b ) : 3 Funzione che c a l c o l a l a somma d e i q u a d r a t i d i due numeri p r e s i come p a r a m e t r i 4 i=a 2+b 2 5 i=math. s q r t ( i ) 6 return i 7 8 x = 2 9 y = 3 10 d i s t a n z a = radicesommaquadrati ( x, y ) 11 p r i n t ( La d i s t a n z a d e l punto (, x,,, y, ) d a l l ' o r i g i n e ( 0, 0 ) e ', d i s t a n z a )

Modifiche alla soluzione (*) Rendere la print più elegante 1 import math 2 def radicesommaquadrati ( a, b ) : 3 Funzione che c a l c o l a l a somma d e i q u a d r a t i d i due numeri p r e s i come p a r a m e t r i 4 i=a 2+b 2 5 i=math. s q r t ( i ) 6 return i 7 8 x = 2 9 y = 3 10 d i s t a n z a = radicesommaquadrati ( x, y ) 11 p r i n t ( La d i s t a n z a d e l punto (, x,,, y, ) d a l l ' o r i g i n e ( 0, 0 ) e ', d i s t a n z a, sep=' ' )

Esercizio da fare in classe Scrivere una funzione secondiinoreminsec che prende come parametro un intero non negativo che rappresenta i secondi e restituisce a quante ore, minuti, secondi corrispondono. Suggerimento: serviranno divisioni intere e resti con valori quali 3600, 60...

Esercizio da fare in classe Scrivere una funzione secondiinoreminsec che prende come parametro un intero non negativo che rappresenta i secondi e restituisce a quante ore, minuti, secondi corrispondono. Suggerimento: serviranno divisioni intere e resti con valori quali 3600, 60... 1 def secondiinoreminsec ( s e c o n d i T o t a l i ) : 2 Converte i s e c o n d i T o t a l i i n ore, minuti, s e c o n d i 3 #d i v i s i o n e i n t e r a, o t t e n g o l e o r e p i e n e 4 o r e = s e c o n d i T o t a l i // 3600 5 #i l r e s t o d e l l a d i v i s i o n e sono i s e c o n d i che r e s t a n o 6 s e c o n d i R i m a n e n t i = s e c o n d i T o t a l i % 3600 7 #d i v i d e n d o l i per 60 vedo q u a n t i m i n u t i p i e n i r e s t a n o 8 m i n u t i = s e c o n d i R i m a n e n t i // 60 9 #i l r e s t o d e l l a d i v i s i o n e mi d i c e q u a n t i s e c o n d i ( meno d i 60) r e s t a n o 10 s e c o n d i = s e c o n d i R i m a n e n t i % 60 11 #posso r e s t i t u i r e p i u ' v a l o r i 12 return ore, minuti, s e c o n d i

Esercizi (remember) Inviarli a: labinfomate@gmail.com Mail da utilizzare: esclusivamente quella istituzionale @studio.unibo.it Non usare questa mail per altre comunicazioni; inviare solo UNA mail con gli esercizi per ogni lezione Oggetto della mail: LabNN-NumeroMatricola10Cifre (oggi sarà Lab02-NumeroMatricola10Cifre) (ESEMPIO: Lab02-0000304583) Contenuto: irrilevante Allegati (oggi che ci sono 2 esercizi): 2 file Python con estensione.py e nome dell esercizio: Es1.py, Es2.py All interno di ogni file è buona norma scrivere un commento con Nome, Cognome, Esercizio e numero del laboratorio Verranno effettuati controlli automatici sul codice consegnato (controlli di copiatura, controlli sul contenuto...) A campione, verranno corretti alcuni esercizi La consegna di almeno 10 esercitazioni permette di ottenere un voto in più all esame

Esempi di oggetti OK: Lab02-0000304583 TOLLERATI: NO: LAB02-0000304583 lab02-0000304583 Lab02 0000304583 (non ci va l underscore/trattino basso ma il meno, cioè il trattino normale) Lab-02-0000304583 Lab-02-304583 Lab01-0000304583 (non è lo 01, sono i compiti dati nello 02!) I:Lab02-0000304583 Re:Lab02-0000304583 Lab02-NumeroMatricola0000304583 LabNN-0000304583

Esercizi per casa (per il 03/03/2017 ore 8:59) (Mail: Lab02-...) 1. Scrivere una funzione che non ha nessun parametro, non restituisce nulla, ma stampa a video il valore (approssimato) di e (radice quadrata del numero di Nepero). 2. Sia C il capitale iniziale di un investimento. Sia r il tasso di interesse (espresso come decimale, es 0.03), sia n il numero di volte che gli interessi vengono calcolati ogni anno e sia t il numero di anni. Il capitale finale M si calcola allora come: M = C ( 1 + r ) nt n Scrivere una funzione che ha come parametri C, r, n, t e restituisce il valore di M, ma non stampa nulla. Nello stesso file scrivere poi un esempio che, usando la funzione, stampa: Capitale finale per investimento di 10.000, calcolo mensile, tasso 8%, per 2 anni: 11728.879317453097