Scarica in formato pdf o txt
Scarica in formato pdf o txt
Sei sulla pagina 1di 179

Python per

Data Science
Linguaggio, librerie, progetti

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Informazioni

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Chi sono
• Massimo Regoli
• Ricercatore DICII
• Dipartimento di Ingegneria Civile e Ingegneria Informatica, Università
di Roma Tor Vergata
• Email: [email protected], [email protected]
• Docente a contratto LUMSA Università

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


L'Esame
• Prova progettuale di gruppo:
• Verrà assegnato un progetto da sviluppare in Python
• La consegna del progetto dovrà includere
• Codice sorgente
• Relazione progettuale
• Slides per la presentazione del progetto
• Tutto il materiale necessario per il funzionamento del progetto
• La durata del progetto è l'anno accademico
• Prova orale
• Discussione del progetto
• Domande sul programma del corso
• No esonero!
Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)
Il gruppo di lavoro
• Il gruppo di progetto si potrà formare spontaneamente durante
l'anno accademico
• Riempimento di un form per la composizione del gruppo da parte di
un referente:
• Nome gruppo (a piacere)
• Elenco dei componenti
• Si consiglia di formare gruppi da 3 a 5 persone
• È possibile:
• Formare gruppi più piccoli (fortemente sconsigliato!)
• Modificare i gruppi se tutti sono d'accordo (sconsigliato)

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il corso – Fase 1
• Introduzione
• Algoritmo
• Programmazione
• Linguaggio
• Sintassi
• Strutture di linguaggio
• Sequenza
• Selezione
• Iterazione
• Esercitazione
• Variabile e Tipi di Variabile
• Liste e Tuple, Set
• Dizionari
• Files

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il corso – Fase 2
• Librerie Python
• Matematiche
• Scientifiche
• Statistiche
• Accesso dati
• Database
• Alcune elementari nozioni di DML e DQL di SQL

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il corso – Fase 3
• Cenni di librerie Python avanzate
• numpy
• matplotlib
• pandas
• BeautifulSoup
• SeaBorn

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il corso – Fase 4
• Sviluppo di progetti
• Sviluppo di piccole basi dati
• Sviluppo semplici applicazioni web based
• Acquisizione dati da internet
• Gestione dei dati acquisiti
• Semplici analisi statistiche

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il corso
• circa 24 lezioni
• 2 ore a lezione
• 48 ore totali (circa)
• 8 ore esercitazione in aula
• Le lezioni sono in modalità mista
• Le URL per la connessione web alla room sarà indicato sulla pagina
Moodle del corso
(https://elearning.lumsa.it/course/view.php?id=237) ed inviato per
email

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il software
• Anaconda (https://www.anaconda.com/)
• Un ambiente di sviluppo a scelta:
• PyCharm (https://www.jetbrains.com/pycharm/)
• Visual Studio Code (https://code.visualstudio.com/)
• Jupyter[Lab] (con Anaconda)
• Google Colab (on line)
• …

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Google Colab
• Google Colab è una piattaforma che permette di eseguire codice
Python direttamente sul Cloud.
• Per sfruttare le funzionalità di tale piattaforma, tutto ciò di cui
avete bisogno è un account Google, mediante il quale si può
effettuare il login ed avere accesso.
• L'account email andrà bene

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Schermata 1

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Schermata 2

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Domande?
• Domande?

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione a Python
• Python è un linguaggio di programmazione molto popolare.
• È stato ideato da Guido van Rossum e rilasciato nel 1991.
• È usato per:
• sviluppo web (lato server),
• sviluppo software,
• applicazioni scientifiche:
• machine learning
• sentiment analysis
• modelization

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione a Python
• Perché Python?
• Python funziona su diverse piattaforme (Windows, Mac, Linux,
Raspberry Pi, ecc.).
• Python ha una sintassi semplice e la curva di apprendimento è breve.
• Python ha una sintassi che consente agli sviluppatori di scrivere
programmi con meno righe rispetto ad altri linguaggi di
programmazione.
• La comunità che sviluppa in Python è enorme

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione a Python
• Perché Python?
• Python è interpretato:
• il codice può essere eseguito non appena viene scritto.
• la prototipazione può essere molto rapida.
• Python può essere usato in modo
• procedurale,
• orientato agli oggetti
• funzionale.

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione
• Python è un prodotto completamente free
• È possibile scaricarlo nelle varie versioni (2.7, 3.8) e per le varie
piattaforme (Windows, Linux/Unix, Mac OS X, …) dal sito:
https://www.Python.org/downloads/
• La differenza tra la versione 2.7 e la versione 3.8 è minima ma esiste
• In questo corso verrà presa in considerazione la versione 3.8

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione
• Scaricare il file
• https://www.Python.org/ftp/Python/3.8.1/Python-3.8.1.exe (versione
Windows)
• Mac OS X e Linux/Unix già hanno una versione di Python pre-
installata
• Se si volesse aggiornarla, scaricare il file relativo e seguire le istruzioni
per l’installazione
• Eseguire il programma per Windows seguendo le istruzioni
• Le slides di questo corso sono orientate al S.O. Windows. Le
differenze con altri S.O. sono minime

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione
• Con l’installazione di Python viene fornito anche un semplice
programma per la creazione di script in Python:
• IDLE

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione - Anaconda
• Download installer
• https://www.anaconda.com/download

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione - Anaconda - 2

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione - Jupyterlab
• Una volta installato Anaconda sarà possibile avere un ambiente
notebook alternativo sul proprio computer
• Più rapido
• Più gestibile dall'utente
• Sempre disponibile

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione - PyCharm & VS Code
• PyCharm e Visual Studio Code sono IDE gratuiti ed installabili sul
computer e permettono la gestione di progetti complessi
• Probabilmente avrete bisogno di un tale ambiente per il progetto
finale
• Quindi sarà meglio installare uno dei due ambienti (o magari
entrambi e scegliere quello più adatto a voi)

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione - PyCharm
• JetBrains
• Professional
• https://www.jetbrains.com/pycharm/download/download-
thanks.html?platform=windows
• Usando l'email della LUMSA (forse)
• Se viene riconosciuta avrete un anno la versione gratis (rinnovabile)
• Community
• https://www.jetbrains.com/pycharm/download/download-
thanks.html?platform=windows&code=PCC
• Gratuita

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione - PyCharm

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione - Visual Studio Code

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione – Visual Studio Code
• Visual Studio Code
• https://code.visualstudio.com/Download

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione - Colaboratory
• In alternativa, se avete un account gmail potete accedere a:
• https://colab.research.google.com/
• Avrete a disposizione un ambiente in stile jupiter
• Se non avete
un account
gmail, createlo

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Per il futuro
• Software di cui avrete bisogno in questo Corso
• Python 3.X
• Anaconda
• IDE
• PyCharm
• Visual Studio Code
• …

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione
• Python come calcolatrice
• Ma uno dei modi più semplici ed immediati di usare Python è come
una calcolatrice
• Nella figura nella slide successiva, alcuni calcoli evidenziano gli
operatori aritmetici che Python mette a disposizione del
programmatore

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Introduzione
• Python però è anche un linguaggio di programmazione multi
paradigma:
• Orientato agli oggetti
• Funzionale
• Procedurale

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Algoritmo

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Algoritmo
• Un algoritmo rappresenta il concetto più importante in informatica
• Un programma è sostanzialmente una sequenza di algoritmi atti a
risolvere un problema più grande
• La comunità informatica è costantemente concentrata sullo
sviluppo di nuovi algoritmi in diverse discipline:
• Algoritmi di ricerca
• Algoritmi di ordinamento
• Modellizzazioni
• Compressione
• …

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Algoritmo
• Le basi fondamentali per la creazione di un algoritmo sono:
• Istruzioni “elementari”, ovvero non ulteriormente scomponibili
(atomicità);
• Interpretabili in modo diretto e univoco dall’esecutore, sia esso
umano o artificiale (non ambiguità);
• L’algoritmo deve essere finito (finitezza)
• L’esecuzione dello schema deve avvenire entro un tempo finito
(terminazione);
• L’esecuzione dello schema algoritmico deve condurre ad un unico
risultato (effettività).

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Algoritmo
• Una volta fissato l’algoritmo questo viene tradotto in un
programma attraverso l’uso di un linguaggio di programmazione
• Una volta scritto il programma si passa alla sua esecuzione
fornendo un input adatto ed ottenendo il relativo output
(correttezza)
• La verifica della correttezza dell'output viene chiamata debugging

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Algoritmo - Scambio
• Supponiamo di avere un bicchiere d'acqua (𝐵1 ) e un bicchiere di
vino (𝐵2 )
• Lo scopo è di scambiare i contenuti dei bicchieri:
• Vino in 𝐵1
• Acqua in 𝐵2
• Soluzione?

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Algoritmo - Scambio
• Per risolvere il problema abbiamo bisogno di un terzo bicchiere 𝐵3
• L'algoritmo sarà:
• Verso il contenuto di 𝐵1 in 𝐵3
• Verso il contenuto di 𝐵2 in 𝐵1
• Verso il contenuto di 𝐵3 in 𝐵2
• In termini matematici:
𝐵1 → 𝐵3
𝐵2 → 𝐵1
𝐵3 → 𝐵2

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Algoritmo
• Lifecycle

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Algoritmo: Esempio
• Problema: Undici fiammiferi sono disposti su un tavolo:
• il primo giocatore (A) può raccogliere da 1 a 3 fiammiferi, il secondo
(B) ne raccoglie a sua volta 1, 2 o 3;
• I giocatori alternano le loro mosse finché sul tavolo non ci sono più
fiammiferi;
• Il giocatore che è costretto a raccogliere l’ultimo fiammifero è il
perdente

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Algoritmo
• Strategia vincente per il giocatore A che gioca per primo
• prima mossa:
• A raccoglie 𝑗 = 2 fiammiferi
• Mosse successive:
• se B raccoglie k fiammiferi (per regolamento deve essere
1 ≤ 𝑘 ≤ 3), allora A raccoglierà 𝑗 = 4 − 𝑘 (1 ≤ 𝑗 ≤ 3) fiammiferi

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Algoritmo

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Algoritmo

1 rimuovi 2 cerini
2 fino a che non rimane 1 cerino:
3 aspetta la mossa di B
4 se B ha rimosso 1 cerino:
5 rimuovi 3 cerini
6 se B ha rimosso 2 cerini:
7 rimuovi 2 cerini
8 se B ha rimosso 3 cerini:
9 rimuovi 1 cerino
10 ricomincia da 2
11 Hai VINTO! (è rimasto solo un
cerino)

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Algoritmo
• Un algoritmo è quindi costituito da stadi successivi
• Ogni stadio contiene una serie di attributi che determinano la fase
corrente e lo svolgersi dell'algoritmo stesso
• Ogni algoritmo deve avere:
• Un punto di entrata
• Un input
• Un punto (o più) di uscita
• Un output

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Algoritmo

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Algoritmo - Scambio

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione
• La programmazione, in informatica, è l'insieme delle attività e
tecniche che una o più persone specializzate (team), programmatori
o sviluppatori (developer), svolgono per creare un programma o
applicazione, ossia un software da far eseguire ad un computer,
scrivendo il relativo codice sorgente in un determinato linguaggio di
programmazione.
• Cit. Wikipedia

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione
• La programmazione moderna si basa sul concetto di Analisi
Strutturata del problema
• Questa favorisce la trasformazione di un algoritmo in un
programma attraverso l’uso di 3 strutture fondamentali (Teorema
di Bohm−Jacopini, 1966)

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione
• Sequenza (o blocco, in inglese suite)
• Elencazione di istruzioni che devono essere eseguite in successione
• Selezione (o condizione)
• Scelta tra due percorsi da seguire che dipende da una condizione
• Iterazione (o ciclo)
• Blocco (sequenza) di istruzioni che vengono ripetute fino a che una
certa condizione cambia di stato

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione
• Una condizione è costituita da una domanda la cui risposta può
essere soltanto:
• Vero
• Falso
• Una condizione in informatica viene usata sia nelle selezioni che
nelle iterazioni
• Il programma agisce in maniera diversa a seconda della risposta
ottenuta alla domanda posta:
• Piove? Se si prendo l'ombrello [, altrimenti non lo prendo]

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione
• Esempi di condizioni:
•𝑎 > 𝑏
• Vero se il valore a è strettamente maggiore del valore b, falso altrimenti
• 𝑎 == 𝑏
• Vero se il valore a è uguale al valore b, falso altrimenti
• 𝑠1 ! = 𝑠2
• Vero se il valore a è diverso dal valore b, falso altrimenti

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione
• Nella programmazione un importante ruolo è rappresentato dalle
variabili
• Le variabili possono essere viste come delle scatole con una
etichetta (nome della variabile) ed un contenuto (valore della
variabile)
• Le variabili possono modificare il loro valore durante lo sviluppo
del programma
• Primo caso di coppia chiave/valore (ne incontreremo altri)

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione
• Attenzione un nome di variabile deve iniziare con una lettera
(minuscola o maiuscola) o da un _ (underscore) seguita da numeri,
altre lettere e _
• Inoltre il nome di una variabile non può essere un token del
linguaggio di Python (es. if, while, dict, set, …)
• Volendo sintetizzare:

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione
• Le variabili sono tipizzate, ovvero possono ammettere valori in un
dominio ben preciso
• I tipi più comuni sono:
• Variabili intere
• Es. -2, -7, -1024, 876567, …
• Variabili float
• Es. 2.3, 3.1415, -2.76, …
• Attenzione! Punto e non virgola (notazione anglosassone)
• Variabili stringa (o sequenze di caratteri)
• Es. "Roma", "Vivaldi", "Tor Vergata", "00100"
• Variabili booleane
• Vero (True), Falso (False)

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione
• Le variabili, a seconda della loro tipologia possono essere
manipolate attraverso l'uso di operatori specifici
• Variabili intere e float
• +, -, *, /, %, **, …
• >, <, >=, <=, ==, !=
• Operatori di confronto (usabili nelle espressioni condizionali)
• Variabili stringa
• +, %, …
• >, <, >=, <=, ==, !=, in
• Operatori di confronto (lessicografico)
• Variabili booleane
• and, or, not, …

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione
• Le variabili, in alcuni casi, possono essere convertite da un tipo ad
un altro
• str(intero) → stringa
• str(float) → stringa
• int(str) → intero
• int(float) → intero
• float(str) → float
• float(int) → intero
• Attenzione però agli errori di conversione!

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione - input
• Il comando input(…) permette di acquisire da tastiera una
stringa di caratteri (sequenza di caratteri)
• Useremo spesso il comando input():

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione
• Ma che succede se l'utente alla richiesta "Dammi un numero":
inserisce sette (come parola e non 7 come numero)

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione
• Python non può convertire in intero una sequenza di caratteri che
non sia composta da SOLI numeri interi al limite preceduti dal
simbolo – (meno)
• Quindi anche se l'input fosse 3.2 il sistema darebbe errore
• Per evitare questo più avanti introdurremo delle tecniche di
intercettazione degli errori

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione
• Algebra di Boole

OPERATORE OR OPERATORE AND OPERATORE not


A B A or B A B A and B A not A
T T T T T T T F
T F T T F F F T
F T T F T F
F F F F F F

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione
• L'algebra di Boole e le relative variabili ed espressioni booleane
sono usate nelle istruzioni condizionali if e while:

• In seguito entreremo in dettaglio

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Programmazione
• Queste tipologie di variabile sono dette variabili semplici
• Una variabile, unione di più valori è detta variabile composta
• Ad esempio, in matematica, come in informatica, un vettore di
interi o di numeri float è una variabile composta
• Più avanti entreremo nel dettaglio delle variabili composte

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Stringhe
• Attenzione particolare dobbiamo dare alle stringhe
• Le stringhe sono una fondamentale unità informativa
• Ad esempio nella Sentiment Analysis dove vengono analizzate
proprio sequenze di caratteri rappresentanti frasi o messaggi
• Una stringa, come già detto, in Python può essere delimitata da:

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Stringhe
• La classe tipo stringa in Python si chiama <str>
• La classe tipo <str> ammette metodi propri, quali:
• endswith(), startswith()
• is[alpha|alnum|digit|numeric|…]()
• split()
• strip(), rstrip(), lstrip()
• upper(), lower()
• find(), rfind(), replace()

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Metodi
• Un metodo nella programmazione ad oggetti è una funzione che
un oggetto può eseguire
• Quando introdurremo la programmazione ad oggetti
approfondiremo queste caratteristiche e proprietà degli oggetti
appartenenti ad una classe per il momento limitiamoci a dare delle
definizioni formali:

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Definizioni OOP
• Riassumiamo di seguito i principali termini di programmazione
orientata agli oggetti.
• classe:
• una classe descrive il contenuto degli oggetti che le appartengono:
descrive un aggregato di campi dati (chiamati variabili di istanza o
attributi), e definisce le operazioni (detti metodi).
• oggetto:
• un oggetto è un elemento (o istanza) di una classe;
• gli oggetti ereditano i comportamenti della loro classe.
• L'oggetto è il componente effettivo del programma, mentre la classe
specifica come vengono create le istanze e come si comportano.
• metodo:
• un metodo è un'azione che un oggetto è in grado di eseguire.

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esempio OOP
• Animale (Classe)
• nome (attributi)
• movimento
• riproduzione
• copertura
• Fuffy (Oggetto → Istanza di classe Animale)
• fuffy (attributi specifici dell'oggetto)
• cammina
• mammifero
• pelo

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Stringhe
• Le stringhe vengono considerate da Python anche come liste di
caratteri o vettori ed è possibile applicare lo slicing tipico delle liste
Python alle stringhe
• più avanti introdurremo le liste in Python

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esempio

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il Linguaggio

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il linguaggio
• Un linguaggio di programmazione in informatica è un linguaggio
formale dotato cioè di una grammatica generativa
• Python è quindi dotato di una grammatica
• In un linguaggio di programmazione il rispetto della sintassi è
obbligatorio
• Python, come ogni linguaggio di programmazione si basa su tre
strutture fondamentali:
• blocco
• ciclo
• selezione

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il linguaggio - blocco
• In Python un blocco (in inglese suite) è un insieme di istruzioni con
la stessa indentatura (distanza dal margine sinistro della riga)
• Le istruzioni vengono eseguite nell'ordine dall'alto verso il basso
• Le istruzioni in un blocco DEVONO avere tutte la stessa indentatura
• Torneremo su questo più avanti

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il linguaggio - selezione
• Una selezione in Python è rappresentata dal token if
• La parte tra parentesi graffe è intesa opzionale (cioè si può omettere
se non necessaria)
• NB: il simbolo : (due punti) rappresenta l’inizio di un blocco

if <condizione>:
BLOCCO
[
elif <condizione>:
BLOCCO
]
[
else:
BLOCCO
]

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il linguaggio

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il linguaggio
• Nella slide precedente si notano 2 cose:
• I blocchi di istruzione sono spostati di un numero di spazi a destra
fissato rispetto alla condizione if
• L’inizio di un blocco è rappresentato dal simbolo : (due punti) ed è
obbligatorio (regola sintattica)
• Il blocco finisce quando l'indentatura rientra

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esempio

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il linguaggio - ciclo
• Un ciclo in Python può essere rappresentato:
• Dal token while
• Dal token for

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il linguaggio - while

while <condizione>:
BLOCCO
[break statement]
[continue statement]
[
else:
BLOCCO # after false condition
]

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il linguaggio - for

for var in <iterator>:


BLOCCO
[break statement]
[continue statement]
[
else:
BLOCCO # after completition
]

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il linguaggio - else
• Il blocco all'interno della clausola else sia per il for che per il while
viene eseguito SOLO SE il ciclo si è compiuto e non è stato
interrotto da un break

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Iteratori
• In Python qualunque oggetto in grado di essere trattato come una
sequenza è definito un oggetto iterable (iterabile).
• L’oggetto restituito dalla funzione range() è un iterabile
• Una sequenza di caratteri (stringa) è un iterabile
• Una lista è un iterabile
• Anche un oggetto di tipo file di testo è un iterabile

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il linguaggio

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il linguaggio
• Per entrare nel dettaglio di queste strutture sintattiche
introduciamo un concetto nuovo:
• i file di programma
• Uso di:
• Jupyter
• PyCharm
• IDLE
• altro e altro ancora

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il linguaggio
• Un file di programma è un normale file di testo contenente
istruzioni in un determinato linguaggio (in questo caso in
linguaggio Python)
• Quando viene passato un file di programma all’interprete, questo
lo legge e lo esegue riga per riga
• Spesso per aiutarsi, il programmatore, durante lo sviluppo di un
programma complesso fa uso di uno strumento chiamato
debugger

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il linguaggio
• Un debugger in informatica è un programma progettato per
l'analisi e l'eliminazione dei bug (debugging), ovvero errori di
programmazione interni al codice di altri programmi
• Ad esempio, il programma IDLE messo a disposizione con Python
ha un rudimentale (ma efficace) debugger che permette di
analizzare come si comporta un algoritmo passo per passo
• Successivamente verranno introdotti strumenti più efficaci per il
completo ciclo di vita dello sviluppo in Python (IDE o notebook)

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il linguaggio
• Più avanti introdurremo uno strumento appartenente alla classe
dei programmi IDE (integrated development environment)
• Gli IDE, come suggerisce l'acronimo, permettono di affrontare
contemporaneamente più aspetti della fase di progetto:
• Sviluppo
• Esecuzione
• Debugging
• Deployment
• L'IDE più utilizzato in ambiente Python è PyCharm sviluppato da
JetBrains e gratuito nella versione Community
• Jupyter Lab rappresenta una alternativa soprattutto per i
datascientist

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il linguaggio

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Uso di colaboratory
• Il programma che abbiamo scritto è trasportabile anche all'interno
della suite colaboratory o jupiter:

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il linguaggio
• Una struttura di programmazione, che esula dalle tre già viste nel
teorema di J-B è quella della gestione delle eccezioni
• Molto utile per evitare errori inaspettati nel programma
• Una eccezione in informatica è un errore di programma
• Questo può accadere per vari motivi:
• Conversioni errate
• File non trovati
• Connessione ad internet mancante o caduta
• … (ne incontreremo parecchie!)

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il linguaggio - eccezioni

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il linguaggio
• Le parole ZeroDivisionError, ValueError,
FileNotFoundError sono i codici di errore che Python
fornisce al programmatore nel caso venga sollevata una eccezione
• Questi errori si possono intercettare per permettere al programma
di continuare senza interruzione (crash)
• Il costrutto va sotto il costrutto di try…except
• Il programmatore dovrà fornire una via di uscita al programma
• Vediamo un esempio:

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Il linguaggio

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esempio

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Strutture dati

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Liste, tuple e set
• Una lista è un insieme multidimensionale numerabile di elementi
eterogenei mutabile in contenuto e dimensione
• È paragonabile ad un vettore o ad una matrice in matematica
(anche se…)

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Liste: mutabilità
• Ogni elemento di una lista è indirizzabile tramite indice
• Gli indici iniziano da 0 (C-style)
• Gli indici multidimensionali seguono la sintassi C

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Liste: accesso
• Inoltre sono possibili varie forme di slicing
• (ricordate le stringhe?)

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Stringhe: accesso

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Liste
• Una lista è un oggetto iterabile

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


List comprehension
• Il costrutto nominato list comprehension è un tipo di espressione
caratteristica di Python che permette di creare una lista come
risultato di un'operazione da fare sugli elementi di un'altra lista
• Il costrutto e composto da:
• Un oggetto di tipo sequenza su cui iterare (e.g. la lista L)
• Una variabile (o più) che raccolga di volta in volta gli elementi
• Una espressione che faccia qualche operazione che coinvolga
l’elemento cui la variabile si riferisce
• Le parole riservate for ed in, e le parentesi quadre a delimitazione
• Opzionalmente uso del costrutto if

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


List comprehension

😫😫

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


List comprehension

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


List comprehension
• Questa tecnica è molto utile per l'accesso selettivo a dati
complessi come strutture, record, …
• Molto simile al formalismo matematico dell'enunciazione dei
teoremi

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Liste: metodi
• Una lista è una classe Python (list)
• Pertanto è dotata di alcuni metodi per la gestione, l'accesso e la
manipolazione del dato stesso
• I metodi più importanti sono elencati nella prossima slide:

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Liste: metodi
• append: aggiunge un elemento alla lista
• clear: svuota la lista (lista vuota)
• copy: copia la lista (¡ assegnazione è per indirizzo !)
• count: occorrenze di un elemento in una lista (*)
• extend: concatena liste
• index: posizione di un elemento in una lista (*)
• insert: inserisce elemento in posizione data
• pop: elimina un elemento per indice
• remove: elimina un (il primo) elemento per valore
• reverse: inverte la lista
• sort: ordina una lista omogenea (ed ordinabile)

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esercizio 1
• Data una stringa di caratteri di lunghezza arbitraria
• Contare le vocali
• Contare le consonanti
• Rispondere alla domanda: esistono caratteri non alfabetici?

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Assegnazioni
• Alcune strutture Python vengono assegnate per indirizzo, altre per
valore:

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Override
• Le liste presentano l'override (§) di alcuni operatori
• +: concatena liste
• *: replica liste

§: Nella programmazione ad oggetti override è l'operazione di riscrittura di un metodo ereditato.

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Override

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Override

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Override
• L'operatore in ritorna True o False se un elemento è o non è
presente in una lista:

• Quindi anche in una stringa:

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Tuple
• Una tupla è una lista non modificabile
• Gli unici metodi ammessi sono quelli con l'asterisco nella slide dei
metodi per le liste descritta in precedenza
• Utili per avere oggetti immutabili nel tempo
• Usate spesso come parametri di passaggio o valori di ritorno di
funzioni a più variabili

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Tuple

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Set
• I set sono una raccolta non ordinata di oggetti distinti.
• Possiamo usare un set per alcune operazioni matematiche come
• l'unione,
• l'intersezione,
• la differenza di set
• Possiamo anche usare i set per rimuovere i duplicati da una lista.

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Set
• Il set non registra la posizione dell'elemento.
• Non supporta:
• l'indicizzazione,
• la suddivisione in sezioni
• altre operazioni correlate alla sequenza.

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Set
• In Python ci sono fondamentalmente due tipi di set.
• set
• frozenset.
• Il tipo di set è modificabile, mentre il frozenset è immutabile.
• Possiamo eseguire add(), remove() sul set, ma non è possibile per
frozenset.

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esempio

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esempio

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


set: metodi
• add(e): aggiunge un elemento
• clear(): pulisce il set
• copy(): crea una nuova copia
• difference[_update](s): differenza tra insiemi (statico,
dinamico)
• discard(e), remove(e): elimina elementi il secondo solleva
eccezione
• intersection[_update](s): intersezione
• is{disjoint | subset | superset}(s): true | false
• pop(): elimina un elemento a caso ritornandolo
• simmetric_difference[_update](s): differenza
simmetrica
• update(h): inserisce liste e altri oggetti in un set
Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)
Esempi

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Dizionari
• I dizionari (o dict) sono un struttura per memorizzare elementi
simile ad un elenco (o list) Python.
• Ma, invece di accedere agli elementi usando il suo indice numerico
(o posizione), si assegna una chiave fissata e si accede all'elemento
usando la chiave.
• Questa tecnica va sotto il nome di coppia "chiave-valore", che può
essere, in alcuni casi, una struttura dati più conveniente rispetto ad
un semplice elenco.
• In Data Science l'uso di dizionari è molto sfruttato per le
caratteristiche di questo tipo di dati
• Vedi JSON

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Dizionari
• Immaginatevi un dizionario nel mondo reale
• Per cercare il significato di una parola, si cerca la parola stessa e
non il possibile indice della parola (i.e. la posizione nell'elenco).
• I dizionari Python funzionano con lo stesso concetto, la parola di
cui si sta cercando il significato è la chiave e il significato della
parola è il valore, non è necessario conoscere l'indice della parola
in un dizionario per trovarne il significato.

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Dizionari
• In Python un dizionario si inizializza indicandolo con le parentesi
graffe {}
• Le coppie chiave valore vengono inserite usando la sintassi chiave:
valore
• Sia chiave che valore possono essere tipizzate

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Dizionari: metodi
• Come per list e tuple la classe dict ha dei metodi di base associati
• Permettono l'accesso alla struttura del dizionario
• Permettono modifiche alla struttura del dizionario

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Metodi
• clear(): svuota un dizionario
• copy(): copia un dizionario (vedi list)
• fromkeys(klist): crea un dizionario da una lista di
chiavi
• get(k): ritorna il valore di una chiave
• items(): crea una lista di tuple chiave/valore (iterable)
• keys(): crea una lista di chiavi (iterable)
• pop(k): elimina una chiave
• setdefault(k, v): aggiunge (solo se non esiste) una
chiave con un default
• update(d): aggiorna una dizionario con un altro dizionario
• values(): crea lista di valori (iterable)

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Dizionari
• Un dizionario in Data Science risulta molto comodo quando si
utilizzano
• File in formato csv
• Ogni colonna una chiave
• Tabelle SQL
• Ogni campo della query è una chiave
• File in formato json
• I dizionari python sono molto simili al formato json

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Dizionari
• Il tipo dizionario implementa alcuni metodi proprietari molto utili
• Come abbiamo visto, un metodo associato ad un tipo dati è una
funzione che si accede con la tecnica della notazione punto
• La sintassi è: nomevar.nomefunz(params)
• La funzione nomefunz agisce sulla variabile nomevar e
restituisce zero o più valori

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esempio 1

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esempio 2

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esempio 3.1
• Per accedere ad un campo (r/w) si possono usare:
• le parentesi quadre []
• il metodo get(key[, value])
• se il campo non esiste ritorna None o value
• il metodo setdefault(key, default)
• se il campo non esiste lo crea con il default e lo ritorna
• se il campo esiste non lo cambia e lo ritorna

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esempio 3.2

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esempio 4

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esercizio 2
• Data una stringa di caratteri di lunghezza arbitraria
• Contare le vocali
• Contare le consonanti
• Creare un dizionario in cui le chiavi sono le lettere e i valori le
occorrenze relative

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esercizio 2
• Date due liste di dimensione uguale (vedi sotto) costruire una lista
di dizionari la cui chiave è un elemento della prima lista ed il valore
il corrispondente (per indice) della seconda lista:
l1 = ["ROMA", "MILANO", "NAPOLI", "TORINO",
"PALERMO", "GENOVA", "BOLOGNA",
"FIRENZE", "BARI"]

l2 = [2837332, 1396059, 962589, 870952,


657960, 574090, 390625,
372038, 322316]

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esercizio 3
• Usando le due liste dell'esercizio precedente
• Creare una lista di dizionari nominata cities con 2 chiavi
• city
• population
• Alla fine dovrete ottenere:

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


zip
• Come suggerimento per l'esercizio 3 vediamo cosa fa la funzione
zip di Python
• La funzione zip() di Python crea un iteratore che aggrega
elementi da due o più iterabili.
• È possibile utilizzare l'iteratore risultante per risolvere in modo
rapido e coerente problemi di programmazione comuni, come la
creazione di dizionari
• Sintassi: zip(*iterables)

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


zip

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Funzioni built-in
• Altre funzioni built-in di python sono (lista cliccabile):
Built-in Functions
abs() dict() help() min() setattr()
all() dir() hex() next() slice()
any() divmod() id() object() sorted()
ascii() enumerate() input() oct() staticmethod()
bin() eval() int() open() str()
bool() exec() isinstance() ord() sum()
bytearray() filter() issubclass() pow() super()
bytes() float() iter() print() tuple()
callable() format() len() property() type()
chr() frozenset() list() range() vars()
classmethod() getattr() locals() repr() zip()
compile() globals() map() reversed() __import__()
complex() hasattr() max() round()
delattr() hash() memoryview() set()

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Files
• Nella programmazione un ruolo fondamentale è ricoperto dal
concetto di file
• Un file è un contenitore di informazioni
• File binari (video, immagini, suoni, dati, …)
• File testuali (html, txt, csv, json, …)
• Python ha un tipo dati file con cui è in grado di
• Creare,
• Modificare,
• Leggere files

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Files
• Un file può essere aperto
• In modalità
• Lettura (read)
• Scrittura (write)
• Modifica
• Con attributo
• Testo
• Binario

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Files
• In Python si utilizza la funzione open() per inizializzare una variabile
di tipo file
• La sintassi è:
• f = open(filename, mode)
• Dove mode può essere:
• "r": read
• "w": write
• "a": append
• A cui si può aggiungere
• "b": per i file binari

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Files

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Files
• Nella totalità dei casi in questo corso useremo solo file di tipo
testuale
• Ad esempio supponiamo di voler copiare le righe pari di un file di
testo chiamato tutte.txt (già esistente!) su un file chiamato pari.txt
e le righe dispari su un file chiamato dispari.txt

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Files
• Dovremmo quindi:
• Aprire
• un file in lettura
• due files in scrittura
• Leggere tutte le righe del file in lettura
• Leggere le righe del file in lettura
• Se si è letta una riga pari scriverla sul primo file
• altrimenti sul secondo file
• Chiudere tutti i file

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Files

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Files
• I file binari sono più complessi da trattare
• I dati da scrivere su un file binario devono essere del tipo byte
• Quindi per scrivere su un file binario bisogna convertire le nostra
informazioni in formato byte (usando ad esempio la funzione
bytearray())
• Il metodo read([n]) dell'ogegtto file ritorna un array di byte di al più
n elementi rappresentanti i prossimi n bytes del file (se n è omesso
viene letto tutto il restante file)

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Files
• I prossimi 3 esercizi dovranno essere svolti
• analizzando il problema
• descrivendo la soluzione
• implementando la soluzione
• verificando la correttezza della implementazione

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esercizio 1
• Usando Python:
• Scrivere su un file 'proverbio.txt' un proverbio a scelta
• Aprire il file proverbio.txt
• Leggerne tutto il contenuto
• Scrivere i caratteri in posizione pari su un file 'propari.txt'
• Scrivere i caratteri in posizione dispari su un file 'prodisp.txt'
• Suggerimento:
• Questa volta leggete TUTTO il file e poi…

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esercizio 2
• Usando la funzione di sistema input:
• Apra un file in scrittura
• Fino a che l'utente non scrive la parola 'fine'
• Leggere una serie di parole da input
• Scrivere su un file la parola inserita
• Chiudere il file

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esercizio 3
• Creare un file con un testo a scelta suddiviso in righe e colonne
(vedi ad esempio: https://it.lipsum.com/)
• Il file potrebbe essere potenzialmente enorme
• Fino a che l'utente non scrive la singola lettera 'q'
• Leggere una parola da input
• Se la parola è presente nel file indicare la riga e la colonna
• Altrimenti scrivere 'Parola non presente'
• Suggerimento
• Aprire e chiudere il file ad ogni ciclo (non caricare il file in memoria)
• Una parola non è spezzabile in due righe

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esempio 4
• Supponiamo di avere un file csv con 5 colonne per riga separate da
virgola
• 4 colonne float
• 1 colonna intero ∈ 1, 2, 3
• La prima riga contiene la descrizione dei campi
• Leggere i dati l'intero file
• ed inserirli in un array di vettori
• ed inserirli in un array di dizionari

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esempio 4.a

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esempio 4.b

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Funzioni
• Una funzione è un blocco di codice che viene eseguito solo quando
viene chiamata.
• È possibile passare dati, noti come parametri, in una funzione.
• Una funzione può restituire dati come risultato.
• Una funzione può essere rappresentata come l'omonima di Analisi
1:

𝑓∶𝐷→𝐶
∀ 𝑥 ∈ 𝐷 ∃ 𝑦 ∈ 𝐶 | 𝑦 = 𝑓(𝑥)

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esempio
• Jupyter

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Funzioni – 2
• Rappresentano nuove istruzioni che agiscono sui dati utilizzati dal
programma, “nascondendo” la sequenza delle operazioni
effettivamente eseguite dalla macchina.
• Vengono realizzate mediante la definizione di unità di programma
(sottoprogrammi) distinte dal programma principale.
• D’ora in poi:
• il programma è una collezione di unità di programma (o funzioni)

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Funzioni – 3
• Si stabilisce un identificatore del sottoprogramma;
• si esplicita il corpo del sottoprogramma (cioè, l’insieme di
istruzioni che verrà eseguito ogni volta che il sottoprogramma
verrà chiamato);
• si stabiliscono le modalità di comunicazione tra l’unità di
programma che usa il sottoprogramma ed il sottoprogramma
stesso (definizione dei parametri formali).

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Parametri
• I parametri (formali o attuali) costituiscono il mezzo di
comunicazione tra unità chiamante ed unità chiamata.
• Supportano lo scambio di informazioni tra chiamante e
sottoprogramma.
• Parametri formali:
• sono quelli specificati nella definizione del sotto-programma.
• Le istruzioni del corpo del sottoprogramma utilizzano i parametri
formali.
• Parametri attuali:
• sono i valori effettivamente forniti dall’unità chiamante al
sottoprogramma all’atto della chiamata.

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Esempio
• Jupyter

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Vantaggi
• Riutilizzo del codice: sintetizzando in un sottoprogramma un
sottoalgoritmo, si ha la possibilità di invocarlo più volte, sia
nell’ambito dello stesso programma, che nell’ambito di programmi
diversi (evitando di dover replicare ogni volta lo stesso codice).
• Migliore leggibilità: si ha in fatti una maggiore capacità di
astrazione.
• Sviluppo top-down: si delega a funzioni/procedure da sviluppare in
una fase successiva la soluzione di sottoproblemi.
• Testo del programma più breve: minore probabilità di errori,
dimensione del codice eseguibile più piccola.

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Struttura dichiarativa

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Uso di default value
• Un parametro di una funzione può avere un valore di default
• In questo caso può non essere omesso nella chiamata

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Parametri formali
• I parametri formali possono essere usati per quelle funzioni che
hanno molti valori di default e se ne vuole fornire solo un
sottoinsieme
• I parametri con valori di default devono essere inseriti alla fine
della lista dei parametri formali

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)


Return
• Le funzioni in Python possono:

• Non ritornare valori

• Ritornare un valore

• Ritornare più valori

Massimo Regoli FONDAMENTI DI INFORMATICA [FINF)

Potrebbero piacerti anche