PROGRAMMAZIONE II E LABORATORIO F - NModulo PROGRAMMAZIONE II
Anno accademico 2024/2025 - Docente: MISAEL MONGIOVI'Risultati di apprendimento attesi
Modalità di svolgimento dell'insegnamento
Prerequisiti richiesti
Frequenza lezioni
Contenuti del corso
Namespace, oggetti stringa, valori di default per i parametri di funzioni, reference; Standard input e standard output in C++ (cout, cin, cerr, controllo errori di interpretazione dell’input); Input e output su file in C++ (fstream);
La programmazione ad oggetti:
Classi e oggetti: funzioni membro, metodi set, get e predicati, costruttori e distruttori standard, overloading e overriding di funzioni membro, overloading di funzioni, altri costruttori. Classi derivate: ereditarietà e polimorfismo: Classi derivate, tipi di ereditarietà, distruttori, ereditarietà multipla e composizione, binding, funzioni virtuali, polimorfismo, vantaggi del polimorfismo. Template: Genericità, template in C++, template di funzioni, template di classi. Sovraccaricamento degli operatori: Sovraccaricamento degli operatori unari e binari, conversione di dati e operatori di conversione di tipi.
Cenni sulla complessità: notazioni asintotiche. Complessità di un problema computazionale, limite superiore, alcuni semplici casi di esempio sul calcolo del limite superiore del tempo di esecuzione.
Algoritmi di ordinamento che sfruttano il concetto di ricorsione:
Merge Sort Quick Sort
Liste: Implementazione di un insieme mediante liste, liste ordinate e liste non ordinate; operazioni con le liste: inserimento, cancellazione e ricerca. Pile e code: Implementazione di pile e code mediante OOP. Alberi: Gli alberi, struttura di un albero binario, alberi binari di ricerca ed operazioni base: inserimento, ricerca e cancellazione, visite preorder, postorder e inorder. Grafi: Definizione di grafo, grafi orientati e non orientati, inserimento di un nodo, rappresentazione con matrici di adiacenza e con liste di adiacenza, inserimento di un arco. Visita in ampiezza e visita in profondità.
Esercitazioni: Risoluzione guidata di specifici problemi che hanno lo scopo di sfruttare i concetti e le tecniche discusse a lezione.
Testi di riferimento
Il testo è consigliato agli studenti che intendono approfondire il tema della programmazione C++ avanzata. Ogni capitolo del libro è costituito da più "temi" presentati sotto forma di brevi trattazioni indipendenti che forniscono consigli specifici, spiegazioni sulle sottigliezze del C++ ed esempi di codice esaurienti. La descrizione articolata di ogni tema rende chiaro cosa fare, cosa non fare e perché.
Programmazione del corso
Argomenti | Riferimenti testi | |
---|---|---|
1 | Introduzione alla OOP | |
2 | Introduzione al C++ | |
3 | Costrutti del linguaggio C++ (es. array, puntatori e riferimenti, allocazione dinamica della memoria) | |
4 | Classi e oggetti | |
5 | Template | |
6 | Introduzione alla complessità computazionale | |
7 | Ordinamento e ricerca | |
8 | Ricorsione | |
9 | Classi derivate | |
10 | Sovraccarico degli operatori | |
11 | Listi | |
12 | Pile e code | |
13 | Alberi | |
14 | Grafi |
Verifica dell'apprendimento
Modalità di verifica dell'apprendimento
L'esame si svolgerà in tre prove, la prima scritta, la seconda pratica e la terza orale.
- Prima prova scritta: l'esame scritto consisterà di una serie di quesiti a risposta multipla su tutto il programma didattico.
- Seconda prova pratica: gli studenti che superano la prima prova potranno accedere alla prova di laboratorio. Durante la seconda prova, gli studenti riceveranno la descrizione di un problema da risolvere mediante l'implementazione di un codice in un tempo commisurato alla difficoltà della prova (tipicamente 2/3 ore).
- Terza prova orale: dopo la scadenza della consegna della soluzione, gli studenti che consegnano una soluzione funzionante dovranno svolgere la prova orale. Durante la prova orale verranno posti dei quesiti riguardanti le scelte implementative effettuate durante la seconda prova, nonché dei quesiti sui contenuti del corso.
Esempi di domande e/o esercizi frequenti
I testi degli esercizi svolti in laboratorio in C++ saranno disponibili online, verranno inoltre effettuate delle esercitazioni e simulazioni d'esame durante il corso. Inoltre è consigliato l'utilizzo della piattaforma di apprendimento Coding Contest attraverso la quale sarà possibile esercitarsi durante le ore di studio e autovalutarsi sui contenuti appresi a lezione.
Esempi di domande prova scritta: Qual è l'output del seguente programma ? Scegliere la corretta definizione di una funzione virtuale pura Cosa intendiamo dire quando diciamo che un algorimo X è asintoticamente più efficiente di un altro algoritmo Y ? |