- Programmazione C++
- Introduzione
Syllabus del corso
Obiettivi
Al termine del corso, lo studente sarà in grado di progettare e sviluppare programmi modulari e manutenibili. Sarà inoltre in grado di applicare le moderne tecniche di programmazione C++ per sviluppare applicazioni performanti e grafiche gestendo in modo corretto ed attento le risorse. le competenze acquisite consentiranno allo studente di affrontare e comprendere le applicazioni C++ più complesse.
Contenuti sintetici
Il corso si prefigge di dare allo studente le basi necessarie per affrontare lo sviluppo di applicazioni C++ in modo corretto ed attento alle problematiche di gestione delle risorse. A tal fine verranno mostrate, attraverso l'uso intensivo di casi di studio, le criticità e difficoltà inerenti al linguaggio C++ e le tecniche più adatte ad affrontarle. Verrà inoltre presentato un framework cross-platform per lo sviluppo di applicazioni C++ grafiche.
Programma esteso
Introduzione al C++.
Concetti base di programmazione C++
- tipi di dati, puntatori, reference, scoping
- casting,
C++ come linguaggio ad oggetti
- classi, costruttori e distruttori, overloading, metodi friend
- inline, constness"
Concetti avanzati di programmazione C++
- overloading degli operatori
- metodi virtual, abstract, polimorfismo
- ereditarietà
Programmazione generica
- template
- iteratori
La libreria Standard (STL)
- Le classi container
- Gli algoritmi
- Funtori
- Multithread
Uso delle librerie esterne
- Librerie statiche
- Librerie dinamiche
- La libreria OpenMP
I nuovi standard C++11, C++14
Applicazioni GUI
- Ambiente di sviluppo QT Creator
- Sviluppo di interfacce grafiche
- Gestione degli eventi
- Le librerie Qt, QTWidgets
Prerequisiti
Conoscenze di base di programmazione.
Modalità didattica
L'attività didattica sarà erogata in presenza, salvo indicazioni diverse, nazionali e/o di Ateneo, dovute al protrarsi dell'emergenza COVID-19.
Insegnamento erogato in linga italiana.
Lezioni frontali con esercitazioni e laboratorio.
Materiale didattico
Bjarne Stroustrup, The C++ Programming Language - Special Edition, Addison Wensley. La "Special Edition" è la versione riveduta e corretta della "Third Edition".
Bruce Eckel, Thinking in C++ vol. 1 e vol. 2, Prentice Hall (disponibile online)
Peter Van Weert, Marc Gregoire, C++ Standard Library Quick Reference, Apress
Lee Zhi Eng, Qt5 C++ GUI Programming Cookbook, Packt Publishing
Slides e dispense varie.
Periodo di erogazione dell'insegnamento
III° anno, primo semestre
Modalità di verifica del profitto e valutazione
La verifica dell'apprendimento comprende una prova progettuale ed una prova orale.
La prova progettuale prevede lo sviluppo di una soluzione ad un problema assegnato con le tecniche e gli strumenti visti nel corso. Il problema è definito in modo tale da verificare l'acquisizione delle competenze pratiche e di problem solving. Il testo del progetto è pubblicato un mese prima dell'appello d'esame e gli studenti hanno tre settimane per la consegna. La valutazione del progetto è in trentesimi ed è la base della valutazione finale.
La prova orale consiste in una discussione della soluzione sviluppata, domande di teoria sulle nozioni presentate a lezione e domande di ragionamento e deduzione. La valutazione della prova orale, consente di aumentare (o diminuire) la valutazione base ottenuta in precedenza nel progetto.
Sono previste due prove in itinere con domande di teoria inerenti agli argomenti del corso affrontati fino a quel momento.
Le due prove in itinere, se entrambe superate, sostituiscono le domande di teoria all'orale.
Orario di ricevimento
Su appuntamento
Sustainable Development Goals
Aims
At the end of the course, the student will be able to design and develop modular and maintainable programs. It will also be able to apply modern C++ programming techniques to develop high performance and graphic applications, and managing resources correctly. The acquired skills will enable the student to address and understand complex C++ applications.
Contents
The course aims to give the student the necessary knowledge to face the development of C ++ applications in a correct way and to address the problems related to resource management . To this end, through the intensive use of case studies, the critical issues and difficulties inherent to the C++ language and the techniques best suited to address them will be shown. A cross-platform framework for the development of C ++ graphical applications will also be presented.
Detailed program
Introduction to C++.
Basic concepts of C++ programming
- data types, pointers, reference, scoping
- casting,
C ++ as an object-oriente programming language
- classes, constructors and destructors, overloading, friend methods
- inline, constness
Advanced C ++ programming concepts
- operator overloading
- virtual methods, abstracts, polymorphism
- inheritance
Generic programming
- template
- iterators
The Standard library (STL)
- The container classes
- The algorithms
- Functors
- Multithreading
Use of external libraries
- Static libraries
- Dynamic libraries
- The OpenMP library
The new C ++ 11, C ++ 14 standards
GUI applications
- QT Creator development environment
- Development of graphical interfaces
- Event management
- The Qt libraries, QTWidgets
Prerequisites
Basic programming language skills
Teaching form
Lessons will be held in presence, unless further COVID-19 related restrictions are imposed.
Teaching given in Italian.
Lectures, exercises, and practice labs.
Textbook and teaching resource
Bjarne Stroustrup, The C++ Programming Language - Special Edition, Addison Wensley.
Bruce Eckel, Thinking in C++ vol. 1 e vol. 2, Prentice Hall (available online)
Peter Van Weert, Marc Gregoire, C++ Standard Library Quick Reference, Apress
Lee Zhi Eng, Qt5 C++ GUI Programming Cookbook, Packt Publishing
Handouts
Semester
Third year, first semester
Assessment method
The assessment includes a project and an oral.
The project serves to verify the acquisition of practical skills and problem solving with the development of a solution to a problem assigned. The project's text is published one month before the exam session and the students have three weeks for its delivery. The evaluation of the project is the basis of the final evaluation.
The oral exam consists in a discussion of the developed solution. There are also theoretical questions on the concepts presented in class. The evaluation of the oral exam allows to increase (or decrease) the evaluation obtained in the project.
There are two ongoing tests with theory questions relating to the topics of the course dealt with up to that moment.
The two ongoing tests, if passed both, substitute the theory questions at the oral exam.
Office hours
By appointment