Programmazione II e Laboratorio di Programmazione II - A.A. 2023-24
Indice degli argomenti
-
-
Variazione del calendario effettuate in data 15/4.
-
-
-
Slide contenenti informazioni generali sul corso, il programma, il materiale didattico e le modalità di esame.
-
-
Questa sezione contiene, presentazioni, appunti e materiale relativo all'utilizzo del sistema operativo Linux.
Si ricorda che, per perseguire gli obiettivi del corso, è necessario acquisire una buona capacità di utilizzo del sistema, del suo ambiente, dei principali comandi di interazione e di sviluppo software.
Tuttavia, Linux in sè non è parte del programma del corso. I concetti e i principi relativi alla sua architettura e al suo funzionamento saranno affrontati in altri corsi. Qui si richiede semplicemente di acquisire un po' di esperienza nel suo utilizzo per scrivere, compilare ed effettuare il debug di programmi scritti in C++.
I vari argomenti sono presentati mediante semplici esempi. Per una comprensione più completa e approfondita, si rimanda al contenuto della sezione manualistica più in basso.
-
documento PDF Caricato il 5/03/2024 13:35
Slide contenenti le istruzioni per l'installazione passo-passo di una macchina virtuale Linux su un PC o un Laptop su cui è già installato Windows (la procedura per computer Apple è analoga). Il sistema di virtualizzazione (hypervisor) è Virtualbox. La distribuzione Linux utilizzata è Linuxmint.
-
documento PDF Caricato il 16/03/2024 10:24Alcune brevi note per migliorare l'interazione con l'ambiente Shell di Linux. Sono illustrate la funzionalità di redirezione dell'I/O su file e le pipe. Con le redirezione dell'I/O, è possibile utilizzare dei file arbitrari come contenitori per l'input e/o l'output su console per i programmi. Le pipe permetto di creare sequenze di programmi, ciascuno dei quali invia il proprio output nell'input del programma successivo.
-
documento PDF Caricato il 3/06/2024 15:22
slide. Breve introduzione all'impiego del comando make di Linux per gestire la compilazione di programmi composti da numerosi file. Alcuni esempi sono mostrati più avanti, con il codice d'esempio fornito con le lezioni.
Le slide sono di Carlo Brandolese (2012).
-
-
-
Slide sulle funzionalità di input/output su console mediante gli i/o stream di C++
-
A raccontare le favole - Pi Greco - Caduta del grave - Tavola pitagorica - Cambia soldi.
-
Slide. Desrizione del tipo bool. Le variabili reference (e loro confronto con i puntatori). Diversi metodi di passaggio dei parametri alle funzioni C++
-
Slide - Introduzione con esempi all'uso del generatore di numeri pseudo-casuali (Pseudo Random Numbers Generator - PRNG) della libreria standard del C/C++
-
Funzioni booleane - Crivello di Eratostene - Pari & Dispari (coi dadi).
-
Slide, riepilogo su array e puntatori - Aritmetica dei puntatori - Allocazione dinamica della memoria.
-
Esercizi svolti: elementi uguali in posti uguali, inversione di un array, sequenze palindrome.
-
Verifica dei quadrati magici, calcolo del numero magico, costruzione di un quadrato magico di ordine dispari.
-
-
-
Slide. Introduzione alle classi in C++ con i primi esempi - La classe string fornita dalla libreria stadard.
-
Slide . Introduzione alle classi in C++. Significato e impiego delle keyword private e public. Funzioni friend (cenni).
-
Primi esercizi con le classi: simulatore di un CC Bancario, la classe "Angoli".
-
Possibile implementazione del gioco Tic Tac Toe per due giocatori umani.
-
documento PDF Caricato il 3/04/2024 14:20
Slide - La definizione e l'impiego di parametri di default per metodi e funzioni, costruttori e distruttori (seconda parte), allocazione dinamica della memoria, espressioni di assegnamento tra oggetti.
-
Implementazione della classe Angolo.
-
Slide. Scopo, regole e funzionamento di: sovraccarico (overload) di funzioni e funzioni template.
-
Slide. Classi: puntatore this; esempi con funzioni e classi template. Algoritmo di ordinamento "selelection sort".
-
Slide - Riepilogo sugli operatori bitwise del C/C++, dell'operatore "virgola" e quello condizionale ?:
-
Codice degli esempi presentati a lezione. Estrazione di dati dagli array: massimo e secondo massimo; classe sequenza e algoritmo di ordinamento "selection sort".
-
Slide. L'utilizzo del qualificatore const in C++ in relazione a riferimenti e puntatori. Classi const e classi con membri e metodi const.
-
Slide. Ridefinizione degli operatori in C++: regole e esempi. Esempio di utilizzo degli operatori bitwise: una classe bitarray.
-
Ridefinizione degli operatori (seconda parte): ridefinizione degli operatori di assegnamento e di accesso per gli array; Attributi e metodi "di classe" (il qualificatore static); Il gioco del 15.
-
Slide - Introduzione alla gestione dei file in C++ (prima parte)
-
Codice sorgente del "Gioco del 15" discusso a lezione.
-
Slide. File di testo ad accesso sequenziale.
-
Slide. Implementazione del principio OOP della ereditarietà con le classi di C++.
-
Slide. Il polimorfismo in C++ nell'ambito delle gerarchie di classi. Funzioni membro virtuali.
-
Slide. Esercitazione su gerarchie di classi: il Tic-tac-toe versione 2. Ereditarietà vs. Friendship.
-
Slide - Metodi virtuali puri e classi astratte - Ereditarietà multipla (cenni) - Completamento esercitazione su Tic-Tac-Toe.
-
Slide. Ereditarietà multipla: cenni sul "dilemma del diamante"ed ereditarietà virtuale. Uso dei distruttori virtuali.
-
-
-
Introduzione alle strutture dati "elementari" (stack, code, liste). Definizione generale di stack. Implementazione di uno stack mediante un array.
-
Slide. Introduzione alle liste a puntatori ed esempi sul loro utilizzo per implementare stack e code (queue).
-
Slide. Liste a doppi puntatori: operatori di enumerazione degli elementi - Gestione delle eccezioni in C++.
-
Slide. Ulteriori operazioni su liste a puntatori. Alberi e alberi binari: definizioni, implementazioni e algoritmi di visita (profondità e livelli).
-
documento PDF Caricato il 5/06/2024 13:40
Slide. Implementazione di alberi mediante array. Alberi binari di ricerca.
-
Slide . Generalità sugli algoritmi di ordinamento. Casi di studio: Selection sort e Merge sort.
-
-
-
-
-
Sono fornite due soluzioni: una basata sull'ereditarietà e l'altra sui template. In entrambe le cartelle sono forniti dei makefile che permettono di compilare le varie soluzioni proposte. Per maggiori chiarimenti battere il comando make help. Ulteriori dettagli sono contenuti nel makfile stesso in forma di commento.
-
-
-
Manuale di riferimento all'interprete di comandi bash. A cura di Chet Ramey e Brian Fox (settembre 2022).
-
Breve tutorial per la comprensione e l'utilizzo delle più comuni direttive del preprocessore C/C++ - A cura di www.tutorialspoint.com (ultima vistia 3 aprile 20204).
-
Manuale dell'editor di testo nano (versione 7.2). Versioni più aggiornate possono essere pubblicate sul sito ufficiale:
-
Manuale utente di VirtualBox versione 7.0.14 - Versioni più aggiornate possono essere pubblicate sul sito https://www.virtualbox.org.
-