Docente
Beatrice Palano





Programma del corso di Informatica

Il corso è articolato in lezioni frontali ed esercitazioni (laboratorio).





Registro del corso di Informatica -- teoria
(contenuti del corso lezione per lezione)

  1. Presentazione del corso: struttura, contenuti, programma, modalità d'esame. Motivazioni: cos'è l'informatica, la programmazione in ambito informatico, sua centralità. Nozione ingenua di algoritmo, esempi. Algoritmi per il calcolo del massimo comun divisore. Algoritmo di Euclide, esempi di esecuzione. Considerazioni su correttezza ed efficienza degli algoritmi. Progetto di semplici algoritmi numerici.
  2. Definizione più precisa di algoritmo, esempi di non-algoritmi. Dall'algoritmo al programma: esecutore e linguaggio di programmazione. Rappresentazione dell'informazione, digitalizzazione (immagini, suono, testo). Sistemi di rappresentazione numerica in varie basi. Rappresentazione dei numeri in binario, digitalizzazione. Conversione da decimale a binario e viceversa. Range di rappresentazione. Bit, byte e multipli.
  3. Errori di memorizzazione. Sistemi di calcolo, hardware e software. Classificazione del software: sistemi operativi, utilità, applicazioni. Architettura dei sistemi di calcolo, macchina di Von Neumann. CPU, RAM, BUS, periferiche, principali funzionalità, caratteristiche e unità di misura delle loro prestazioni.
  4. Le memorie di massa. Esecuzione dei programmi sulla macchina di Von Neumann, ciclo macchina fasi fetch-decode-execute. Linguaggio macchina, forma delle istruzioni e architettura interna della CPU: ALU, CU. Programmazione a basso livello, svantaggi. Programmazione ad alto livello, vantaggi: comodità, portabilità. Linguaggi ad alto livello, compilatori e interpreti. Possibili errori nelle diverse fasi (sintassi e semantica).
  5. Programmazione strutturata e Teorema di Boehm-Jacopini. Le strutture di controllo: sequenza, selezione e iterazione. Motivazioni. Forme di selezione, esempi. Le variabili e il loro utilizzo. Forme di iterazione, esempi. Differenza tra while e for.
  6. Il linguaggio python. Programma "Salve Mondo!", creazione e interpretazione (con editor o idle3). Istruzioni di stampa. Variabili e loro struttura interna (garbage collector). Tipi in python, int, float, str, tipizzazione dinamica. Istruzioni di input e modificatori di tipo. Variabili numeriche e operazioni su tipi omo/eterogenei, promozioni di tipo implicite. Programmi che utilizzano espressioni. Troncamento e arrotondamento su float.
  7. Il costrutto di selezione in python, if-else. Esempio. Il costrutto if-elif, esempio. Espressioni booleane e operatori booleani: and, or, not. Valutazioni di espressioni booleane in python (short circuit evaluation). Variabili di tipo boolean. Il costrutto iterazione, while e for. Esempi.
  8. Ancora su selezione e iterazione in python. While e if nidificati. Esempi. Varianti del range del for. For nidificati. Esempi. Introduzione alle funzioni in python e la modularizzazione del codice. Approccio divide et impera nella produzione del software. Funzioni predefinite e definite dall'utente: produttive e void. Esempi: calcolo del binomiale e test di primalità. Sintassi di definizione delle funzioni.
  9. Ancora su funzioni. Parametri formali, parametri attuali, variabili locali e passaggio dei parametri per valore. Ritorno mediante return. Test di primalità e utilizzo in un main. Struttura modulare di un programma python. Visibilità delle variabili. Funzioni a più parametri. Librerie predefinite, utilizzo. Creazione di librerie di funzioni direttive di importazioni, utilizzo. Funzioni con return a più valori.
  10. I file in python, file di lettura, scrittura e append. La funzione open e le tre modalità di apertura. Apertura di file in scrittura, l'istruzione write. Memorizzazione di un brano di testo arbitrariamente lungo. Organizzazione dei file a record e lettura dei record. L'istruzione strip. Lettura e scrittura di dati numerici. Lettura di file con while e for. Elaborazione di dati da file e scrittura risultati in file.
  11. Liste in python, significato e principali funzionalità. Costruzione di liste, scansione indiretta e con indice. Ripetizioni di liste, concatenazione. Sottoliste da liste. Appendere elementi a liste. Principali metodi sulle liste. Copia di liste, superficiale e profonda. Elaborazione di stream di dati con utilizzo di liste.
  12. Definizione di matrici. Uso delle matrici. Le stringhe. Accesso ai caratteri delle strighe: singoli caratteri, per porzioni. Concatenazione di stringhe. Ricerca di sottostringhe. Metodi per creare stringhe. Metodi per dividere stringhe.





Testo consigliato