Docente
|
LAZZERETTI RICCARDO
(programma)
Parte 1
- Nozioni introduttive
Introduzione al corso.
Architettura generale di un calcolatore e schema di Von Neumann.
Concetto di algoritmo.
- Nozioni elementari sulla programmazione in Python
Uso della shell e I/O di base.
Uso dell'ambiente di sviluppo IDLE.
- Aspetti di base della programmazione in Python
Espressioni aritmetiche e tipi di dati elementari.
Variabili e istruzioni di assegnazione.
Rappresentazione dell'informazione.
Set di caratteri e funzioni chr, ord.
Il tipo di dato stringa.
- Decisioni - costrutti if ed else-if (elif)
Istruzioni if ed else-if (elif).
Operatori relazionali.
Variabili booleane e operatori.
Diramazioni annidate e alternative multiple.
- Cicli
Ciclo for.
Ciclo while.
Algoritmi che usano cicli.
Cicli annidati.
- Funzioni e moduli
Introduzione alla programmazione Python con funzioni.
Moduli e loro uso.
Esecuzione di script.
- Liste
Proprietà di base.
Operazioni sulle liste.
Algoritmi elementari che fanno uso di liste.
Tuple.
Rappresentazione di tabelle e matrici.
Nozioni elementari sulla gestione della memoria: riferimenti/puntatori a oggetti.
- File e file system
Apertura, chiusura e manipolazione di file testo.
Funzioni di base per l'accesso al file system.
PARTE 2
- Dizionari
Accesso e manipolazione di dizionari.
Uso di dizionari per realizzare strutture dati complesse.
- Ricorsione
Esempi di base: fattoriale, numeri di Fibonacci.
La ricorsione in pratica: progetto e implementazione di semplici algoritmi ricorsivi in Python.
Funzionamento della ricorsione: pila dei record di attivazione; contenuto e uso della pila da parte dell'ambiente di esecuzione.
Esempi di evoluzione della pila di esecuzione per funzioni ricorsive: il caso del fattoriale.
Applicazioni: visita dell'albero delle directory e ricerca di un file a partire da una directory data.
- Problemi di ordinamento e ricerca
Il problema di caratterizzare e confrontare l'efficienza di algoritmi e programmi.
Cenni alla complessita' computazionale.
Algoritmi per la ricerca sequenziale e per quella binaria.
Analisi qualitativa e sperimentale dei costi per la ricerca binaria e per quella sequenziale.
- Grafi e alberi
Grafi e relazioni tra oggetti di una collezione.
Grafi: definizioni e nozioni fondamentali.
Rappresentazione di grafi: matrice di adiacenza e liste di incidenza.
Rappresentazione di grafi in Python: uso di dizionari per la rappresentazione del vettore dei nodi e della lista di adiacenza.
Semplici esempi di grafi rappresentati mediante liste di adiacenza memorizzate in file testo; costruzione delle corrispondenti rappresentazioni mediante dizionari in Python.
Rappresentazione di grafi mediante matrice di adiacenza.
Realizzazione di un modulo Python per il caricamento di grafi a partire da file di testo e per la realizzazione di funzionalità di base: in particolare, calcolo del grado, visite in profondità e ampiezza.
Semplici algoritmi per la verifica di proprietà di grafi.
Horstmann e R. N. Necaise. Concetti di informatica e fondamenti di Python.
Ed. Apogeo, 2014.
Dispense e altro materiale (anche on line) proposto dai docenti, reperibili su:
https://piazza.com/uniroma1.it/spring2018/1017401/home
|