Fondamenti di Programmazione

Lezioni

  1. I Computer e la Programmazione

    Informazioni sul corso e modalità d'esame. Il Computer e la programmazione. Hardware: memoria e dati; la CPU e i programmi, il linguaggio macchina e l'assembly. Software: linguaggi ad alto livello, sviluppo software. Python: breve storia, installazione. Esercizi.

  2. Primi Passi in Python

    Espressioni aritmetiche: + - * / ** %, tipi int float. Commenti #. Variabili e assegnamenti. Errori. Funzioni: def, parametri, return. Variabili globali e locali. print. Funzioni built-in: abs(), round(). Moduli e file: import, libreria standard (es. math), dir() help(). Esercizi.

  3. Sequenze e Iterazione

    Stringhe: apici singoli, doppi e tripli, sequenze d'escape, operatori + *, tipo str, funzione str(). Liste: operatori + *, tipo list. Tipi sequenza: indici, len(), immutabilità. Iterazione: for, range(). Esempi di iterazione. Documentazione: docstring. Esercizi.

  4. Prendere Decisioni

    Operatori Booleani: True False, tipo bool, not and or. Operatori relazionali: < > <= >= == != per valori numerici, stringhe e liste. Operatore in. Decisioni: if-elif-else. Esempi con for e if-elif-else. Esercizi.

  5. Oggetti e Metodi

    Oggetti: valore, tipo, identità, id(), type(), None, costruttori dei tipi built-in, metodi. Metodi liste: count(), index(), append(), insert(), remove(), pop(). Esempi. Slices per tipi sequenza. Esercizi.

  6. Stringhe e Testo

    Metodi delle Stringhe: lower() upper() count() find() splitlines() split() replace() isalpha(). Costrutti di assegnamento aumentato: += *= /=, ecc. Testing di un modulo: if __name__ == '__main__':. Esempi. Unicode: tipo unicode, codifiche, sequenze d'escape unicode, metodi encode() decode(). Esercizi.

  7. File e Web | Pacchetto

    File: tipo file, open(), modalità d'apertura, cwd, percorsi relativi e assoluti, metodo close(). Costrutto with. Lettura di file: metodi read() readline() readlines(), iterazione su oggetto file. Funzione enumerate(). Esempi di elaborazione di file di testo. Scrittura di file: metodi write() writelines(). Web: URL, modulo urllib2 e metodo urlopen(), esempi. Esercizi.

  8. Ricerca di Documenti e Dizionari | Pacchetto

    Dizionari: tipo dict, associazioni (chiave, valore), creazione, aggiunta e modifica di items, metodi items(), values(). Insiemi: tipo set, creazione, metodi add() remove() pop(), operatori insiemistici | & - ^. Ricerca di documenti. Funzione built-in sum(), esempi. Esercizi.

  9. Tuple, Liste di Liste e Immagini | Pacchetto

    Tuple: tipo tuple, immutabilità, operazioni, tuple packing e sequence unpacking, assegnamenti multipli. Liste di liste per rappresentare matrici. Immagini: colori RGB, rappresentazione tramite matrici di tuple, semplici operazioni su immagini, esempi. Esercizi.

  10. Immagini | Pacchetto

    Immagini: caricamento, copie, cornici, rotazioni, filtri. Modulo random: funzioni randint() uniform() seed(), Costrutto … if … else …. Esempi, Esercizi.

  11. Funzioni II

    Argomenti opzionali di funzioni. Funzioni di funzioni.

  12. Classi | Pacchetto

    Classi: Classi e oggetti. Definizione di classi. Variabili e metodi di classi. Metodi speciali: __init__, __add__, ... Esempi usando operazioni sulle immagini. Esempi, Esercizi.

  13. Ricorsione e Alberi | Pacchetto

    Ricorsione: esplorazione File System, funzioni ricorsive. Modulo os, funzioni os.listdir(), os.path.isdir(), os.path.join(), os.path.basename(). Generazione ricorsiva delle permutazioni di una sequenza. Relazione tra alberi e ricorsione: albero delle chiamate ricorsive. Esempi di uso di alberi. Rappresentazione tramite un albero di oggetti dell'albero dei file e directory; operazioni basate su visite ricorsive dell'albero. Esercizi.

  14. Documenti Strutturati | Pacchetto

    Documenti strutturati: cenni sul linguaggio HTML, albero di parsing. Costruzione dell'albero di parsing di documenti HTML, visita ed elaborazione dell'albero. Argomenti opzionali. Esempi e esercizi.

  15. Interfacce Utente

    Introduzione alle interfacce utente con la libreria Qt. Programmazioni ad eventi e callbacks.

  16. Grafica Interattica | Pacchetto

    Introduzione alla grafica interattiva. Disegno di forme. Eventi mouse e tastiera.

  17. Giochi Interattivi | Pacchetto

    Introduzione ai giochi interattivi. Logica del gioco e interazione utente. Testris e Asteroids.

  18. Simulazione Interattiva | Pacchetto

    Introduzione alla simulazione interattiva. Simulazione di particelle. Billiardo.

  19. Grafi | Pacchetto

    Grafi: nodi, archi, adiacenza. Rappresentazione in Python di grafi. Formato JSON: funzione load() del modulo json.

  20. Visite di Grafi | Pacchetto

    Visite di grafi: visita in ampiezza (BFS), distanze, albero di visita.

  21. Grafi di Pixel | Pacchetto

    Visite di grafi di pixel per trovare la strada tra due punti in immagini di mappe e per risolvere labirinti.

  22. Web Crawling | Pacchetto

    Web Crawling: grafo del Web, scaricare pagine Web, estrarre i link, visita del grafo. Uso di più processi: Pool di processi, modulo multiprocessing.