Home page  Libri di testo  Programma  Diario lezioni Laboratorio Test ed Esami
Informatica 1

Laboratorio di Programmazione & Informatica 1
A.A. 2021-2022

Diario delle lezioni


In questa pagina sono elencati gli argomenti trattati in ogni lezione.
I codici C mostrati come esempi e i file powerpoint mostrati a lezione si trovano nella scheda file del canale Lezioni del corso su Teams.
I testi degli esercizi assegnati in laboratorio si trovano nella sezione "Laboratorio".


Data
Ora
Argomento
LUN 7/3/22
9-11
Lez1 Presentazione del corso.
Introduzione all'informatica e centralità del concetto di algoritmo. L'algoritmo di Euclide: dalla descrizione in linguaggio naturale alla codifica in linguaggio C.
LUN 7/3/22
14-16
Lab1 Il primo (classico!) programma in C: Scrivere un messaggio sullo schermo.
Il concetto di variabile in un programma. Identificatori per le variabili.
Il secondo programma: "Sommare due numeri interi e scrivere il risultato sullo schermo.
Il terzo programma (variante): "Richiedere due numeri interi all'utente e stampare sullo schermo la loro somma".
Esercizi proposti con codice lab01_1,2,3,4.
GIO 10/3/22
9-11
Lez2 Analisi dettagliata di un semplice programma.
Sintassi per gli identificatori e per la dichiarazione di variabili. Istruzione di assegnamento. Esempio: Scambiare il valore di due variabili.
Espressioni aritmetiche e logiche. Operatori aritmetici, condizionali e logici in C. La programmazione strutturata e il controllo del flusso di un programma. Il Teorema di Boehm e Jacopini.
La struttura di selezione if e la struttura di ripetizione while . Istruzioni composte. Sintassi delle istruzioni if e while .
GIO 10/3/22
11-13
Lab2 Analisi di semplici programmi che utilizzano la struttura di selezione if e la struttura di ripetizione while. Esercizi Proposti
LUN 14/3/22
9-11
Lez3 Rappresentazione dei dati in C. I 5 tipi elementari char, int, float, double e i modificatori short, long, long long, signed, unsigned . Rappresentazione numeri in sistema binario, (decimale) e esadecimale. Occupazione in memoria dei vari tipi di dati. Problemi di approssimazione nella rappresentazione dei numeri reali.
Operatore unario sizeof( ) e costanti predefinite sui limiti dei tipi elementari.
Esempio: visualizzazione occupazione in memoria dei vari tipi di dati e dei valori max e min gestiti dal compilatore.[tipididati.c sizetipididati.c]
Parametri di conversione per printf e scanf dei vari tipi di dati. Funzioni getchar( ),putchar( ). Problemi possibili nell'input di caratteri alternato a input numerici [charInput1.c].
Operatore di casting. Codifica delle informazioni non numeriche: codice ASCII e sue estensioni.
Esempio: stampa dei valori char corrispondenti ai numeri da 0 ... 255. [tipochar3.c]
Esempio: conversione caratteri da maiuscolo a minuscolo operando sul valore ASCII. [MaiusMinus.c]
La struttura di selezione if ...else . Esempi di utilizzo di strutture if ...else nidificate. Il problema del dangling else (else appeso). Problema: trovare il max tra 3 numeri utilizzando 2 confronti. Problema: ordinare 3 numeri utilizzando 3 confronti.b>Lez
LUN 14/3/22
14-16
Lab 3 Correzione esercizi del Lab2. Analisi di semplici programmi realizzati con l'istruzione while. Esercizi Proposti
GIO 17/3/22
9-11
Lez4 La struttura di ripetizione do ...while . Equivalenza tra le due strutture di ripetizione introdotte. Operatori di incremento e decremento ++, --. Operatori di assegnamento +=, -=, *=. La ripetizione definita: la struttura for . Esempi. Equivalenza tra le strutture di ripetizione introdotte.
Definire strutture di ripetizione nidificate. Esempi.
GIO 17/3/22
11-13
Lab4 Analisi di semplici programmi che utilizzano le strutture di ripetizione while, do..while, for. Esercizi Proposti
LUN 21/3/22
9-11
Lez 5 Usi particolari dei cicli for quando mancano alcune condizioni. Esempi. Uscita forzata da una istruzione: break e continue . Uscita forzata da un programma: exit e return . La struttura di selezione switch . Esempi.
Ordinare 3 numeri con max 3 confronti senza variabili ausiliarie. Calcolo del primo e secondo massimo tra n interi.
LUN 21/3/22
14-16
Lab 5 Correzione esercizi del Lab3 e Lab4. Esercizi Proposti
GIO 24/3/22
9-11
Lez6 Definizione di funzioni nei programmi in C. Sintassi. Meccanismo del passaggio dei parametri e variabili locali alle funzioni. Esempio quadratiVari.c .
GIO 24/3/22
11-13
Lab6 Esempi di programmi che utilizzano funzioni. Esercizi Proposti
LUN 28/3/22
9-11
Lez Lezione cancellata
LUN 28/3/22
14-16
Lab Lezione cancellata
GIO 31/3/22
9-11
Lez 7 Parametri e variabili locali di una funzione. Stack delle chiamate di funzione.
Funzioni ricorsive. Esempi. Le torri di Hanoi: l'algoritmo ricorsivo e dimostrazione che la complessità è esponenziale. Esempio di implementazione in C.
GIO 31/3/22
11-13
Lab 7 Esempi di programmi che utilizzano funzioni ricorsive. Esercizi Proposti
LUN 4/4/22
9-11
Lez 8
Cenni su analisi della complessità di un algoritmo. Notazione O e Ω per indicare limiti superiori e inferiori della complessità di algoritmi e problemi. Esempi di tempi di calcolo in relazione alle funzioni f(n)= n, nlogn, n^2, n^3, 2^n.
Il gioco "indovina il numero" e un algoritmo di complessità logaritmica per risolverlo.
Funzioni della libreria matematica. Generatore di numeri casuali. Esempi: dado1.c, dado2.c,lancidado.c.
LUN 4/4/22
14-16
Lab 8 Correzione degli esercizi del laboratorio 5 e 6. Esempi di programmi che utilizzano generatore random. Esercizi Proposti
GIO 7/4/22
9-11
Lez 9 La struttura dati array in C. Dichiarazione e inizializzazione di array. Allocazione della memoria per una variabile di tipo array. Passaggio di array a funzioni.
Esempi (codice vettore.c, dado2.c, questionario.c )
GIO 7/4/22
11-13
Lab 9 Esercitazione di autovalutazione sul programma finora svolto. Primi esercizi su vettori. Esercizi Proposti
LUN 11/4/22
9-11
Lez 10 Il problema del searching . Operazioni di ricerca su un array: ricerca sequenziale e ricerca binaria (in versione iterativa e ricorsiva). Calcolo della complessitita' come numeri di confronti effettuati nel caso peggiore.
Il problema dell'ordinamento. Algoritmi di ordinamento su vettori. Algoritmo SelectionSort come iterazioni di ricerca del minimo o del massimo. Dimostrazione della correttezza e analisi della complessità a partire dalla complessità dell'algoritmo che calcola il minimo tra n numeri.
Algoritmo BubbleSort. Dimostrazione della correttezza e analisi della complessità. Valutazione sperimentale dell'algoritmo BubbleSort e nuova versione che riconosce quando il vettore è già ordinato.
Algoritmo InsertionSort. Dimostrazione della correttezza e analisi della complessità.
LUN 11/4/22
14-16
Lab 10 Correzione degli esercizi della settimana precedente sulla gestione degli array nelle funzioni. La Congettura di Collatz.
MAR 12/4/22
11-13
Lez 11 (Scienza dei Media) Definizione di lower bound di un problema. Albero di decisione e calcolo del lower bound per il problema del sorting.
La tecnica algoritmica del divide et impera e una sua applicazione al problema dell'ordinamento: l'algoritmo MergeSort . Descrizione informale, codice C e calcolo dei confronti effettuati. L'algoritmo QuickSort . Descrizione informale e codice C.
MAR 12/4/22
14-16
Lez 11 (Matematica) Definizione di lower bound di un problema. Albero di decisione e calcolo del lower bound per il problema del sorting.
La tecnica algoritmica del divide et impera e una sua applicazione al problema dell'ordinamento: l'algoritmo MergeSort . Descrizione informale, codice C e calcolo dei confronti effettuati. L'algoritmo QuickSort . Descrizione informale e codice C.
GIO 14/4/22
9-11
Lezione sospesa per Vacanze di Pasqua
GIO 14/4/22
11-13
Lezione sospesa per Vacanze di Pasqua
LUN 18/4/22
9-11
Lezione sospesa per Vacanze di Pasqua
LUN 18/4/22
14-16
Lezione sospesa per Vacanze di Pasqua
GIO 21/4/22
9-11
Lez 12 Definizione di variabili puntatore. Esempi. Operatori & e *. Esempi di variabili puntatore. Stampa degli indirizzi di memoria mediante stampa con %p. Simulare il passaggio di parametri a funzioni per riferimento tramite puntatori. Funzioni malloc
GIO 21/4/22
11-13
Lab 12 Esercitazione su gestione vettori. Esercizi Proposti
LUN 25/4/22
9-11
Lezione sospesa per Festa della Liberazione
LUN 25/4/22
14-16
Lezione sospesa per Festa della Liberazione
MAR 26/4/22
11-13
Lez 13(Scienza dei Media) Matrici bidimensionali in C. Proprietà ed esempi. Inizializzazioni con valori random e stampa di matrici in modo diretto o utilizzando utilizzando funzioni che gestiscono array unidimensionali.
Esame dettagliata del codice dei file array2dim.c e matriciCompleto.c.
Esercizio: rifare in autonomia e completare il codice di matriciCompleto.c Esercizi Proposti
MAR 26/4/22
14-16
Lez 13(Matematica) Matrici bidimensionali in C. Proprietà ed esempi. Inizializzazioni con valori random e stampa di matrici in modo diretto o utilizzando utilizzando funzioni che gestiscono array unidimensionali.
GIO 28/4/22
9-11
Lez 14 Operatori incremento e decremento sui puntatori. Relazione tra puntatori e array. (Esempi: provapunt.c, vettori-punt.c .)
Stringhe come array di char. Immissione e stampa di stringhe. Esempi. La libreria string.h.
GIO 28/4/22
11-13
Lab 14 Esempi di definizione di stringhe usando puntatori. (Esempi: copiastringhe.c, lunghezza.c .)
Esercizi su stringhe e array.
LUN 2/5/22
9-11
Lez 15 Gestione dei file in C. Gestione di un file ad accesso sequenziale: apertura, chiusura, lettura e scrittura. File di testo. Esempi (codici file1.c, file2.c,file2-w.c, file1-1.c, filecopia.c ).
LUN 2/5/22
14-16
Lab 15 Correzione degli esercizi baricentro , maxsum, bandiera.
LUN 2/5/22
16-18
Lab 15 bis (con Tutor) Esercizi su stringhe e matrici.
GIO 5/5/22
9-11
Lez 16 Le strutture in C: dichiarazioni di variabili tipo struct . Inizializzazioni di variabili struct. Operazioni su variabili struc, operatore punto e operatore freccia. Parola chiave typedef .
Esempio di una struttura che rappresenta una carta da gioco. Programma che inizializza un mazzo di carte e poi lo "mescola". (file mazzoDiCarte.c).
GIO 5/5/22
11-13
Lab 16
Esempio e applicazione di array di struct e analisi del codice provaCampionato.c come base per il nuovo esercizio proposto.
Esercizi Proposti
LUN 9/5/22
9-11
Lez 17 Riepilogo su utilizzo della memoria tramite puntatori. Operatori sizeof( ), malloc e free.
Strutture autoreferenzianti per creare strutture dati dinamiche. Definizione di un nodo-lista. Definizione di una lista come puntatore ad un nodo-lista. Stampa di una lista. Operazioni di inserimento in versione con lista passata per riferimento o per valore e ricorsiva. Esempi.
LUN 9/5/22
14-16
Lab 17 Correzione esercizi " MatriceAmicizia, Campionato e CambiamoLeParole".
LUN 9/5/22
16-18
Lab 17 bis (con Tutor) Esercizi di gestione e manipolazione stringhe. Esercizi Proposti
GIO 12/5/22
9-11
Lez 18 Riepilogo su definizione di una lista come puntatore ad un nodo-lista e alle operazioni di stampa e inserimento. Funzione per inserire un elemento in una lista mantenendola ordinata. Operazioni di cancellazione di un elemento in versione con lista passata per riferimento o per valore. Esempi.
GIO 12/5/22
11-13
Lab 18 Esercizi su stringhe e matrici.
LUN 16/5/22
9-11
lezione cancellata
LUN 16/5/22
14-16
Lez 19 Correzione esercizi della settimana precedente
LUN 16/5/22
16-18
Lab 19 (con Tutor) Simulazione di una prova d'esame.
GIO 19/5/22
9-11
Lez 20 Strutture dati astratte "pila" e "coda". Implementazioni in C usando strutture a puntatori e usando vettori. Esempi. (codici esePilanew.c e eseCodanew.c, esepila vettore.c, eselistavettore.c )
GIO 19/5/22
11-13
Lab 20 Esercizi su matrici e liste.
LUN 23/5/22
9-11
Lez 21 Esempi di esercizi sulle liste.
LUN 23/5/22
14-16
Lab 21 Esempi di utilizzo della struttura dati pila. Algoritmo di simulazione di una coda con due pile e complessità. (codice pile_coda.c).
Valutazione valore di verita' di semplici formule booleane. (codice formulaBooleanaconPila.c)
Forma postfissa per le espressioni aritmetiche. Valutazione di espressioni aritmetiche in forma postfissa usando una pila. Algoritmo di trasformazione di una espressione aritmetica da forma infissa a forma postfissa.
LUN 23/5/22
16-18
Lab 21bis (con Tutor) Esercitazione su compiti d'esame precedenti.
GIO 26/5/22
9-11
PREAPPELLO
GIO 26/5/22
11-13
PREAPPELLO
LUN 30/5/22
9-11
lezione cancellata
LUN 30/5/22
14-16
Lez 22 Correzione degli esercizi del preAppello
LUN 30/5/22
16-18
Lab 22 (con Tutor)
GIO 2/6/22
9-11
Lezione sospesa per Festa della Repubblica
GIO 2/6/22
11-13
Lezione sospesa per Festa della Repubblica
LUN 6/6/22
9-11
Lez 23 ultima lezione Definizione della struttura dati astratta "albero". Notazioni e definizioni. Alberi binari e loro implementazione in C con una struttura nodo con due puntatori. Visita in pre-ordine, in-ordine e post-ordine. (File: alberoBinario.cpp)Cenni su alberi binari di ricerca.
LUN 6/6/22
14-16
Lab 23 ultima lezione Visite di alberi in ampiezza (BFS) e in profondita' (DFS): implementazione utilizzando come struttura dati di appoggio una coda e una pila. (File: visitaAlbero.cpp).
Definizione di grafo. Esempi. Notazioni e definizioni fondamentali. Implementzione di un grafo in C.