Programmazione di calcolatori
Fruizione del corso
Piattaforma di riferimento per Aula Virtuale: Microsoft Teams (FA-002 Programmazione di calcolatori)
Obiettivi Formativi/educational objectives
Il corso si pone l'obiettivo di introdurre gli studenti all’uso del calcolatore elettronico come strumento per la risoluzione di problemi. Vengono presentati i metodi per la soluzione di classi di problemi (algoritmi) ed i concetti base dei linguaggi di programmazione, dai tipi di dato e le strutture di controllo, sino alla programmazione a oggetti.
Il linguaggio di programmazione di riferimento è il C++.
-------------------------------------------------------------------------------------------------------------
The aim of this course is to introduce students to the use of the electronic calculator as a tool for solving problems. The course topics include the methods for solving classes of problems (algorithms) and the basic concepts of programming languages, from data types and control structures, to object-oriented programming technique. In this course we use C++ language.
Prerequisiti/ Prerequisites
Si richiede una buona capacità di analisi e formalizzazione di problemi di tipo logico matematico, unita alla conoscenza della matematica e del calcolo elementare.
-------------------------------------------------------------------------------------------------------------
It’s required a good capacity for analysis and formulating logical mathematical problems, combined with the knowledge of mathematics and elementary calculus skills.
Contenuti del Corso/Course contents
Introduzione alla programmazione strutturata:
- teoria di base dei linguaggi di programmazione e compilatori
- Informatica cenni storici, algoritmi, diagrammi di flusso
Linguaggio C++
- dati primitivi e tipi standard, operatori matematici e logici, strutture di controllo di flusso, istruzioni condizionali e cicli pre/post condizionali
- gestione dei dati e dei file: dati scalari e strutturati, struct, array, vector, stream I/O e accesso ai file (di testo) in lettura e scrittura.
Le Funzioni e i puntatori
- procedure e funzioni, parametri formali e attuali, passaggio parametri per valore e riferimento, polimorfismo, implementazione di funzioni notevoli in file header di libreria.
- puntatori, passaggio per indirizzo tra funzioni ed utilizzo esplicito nel codice. Dereferenziazione, uso memoria stack e heap
Programmazione a oggetti
- Classi e oggetti definizioni: membri pubblici, privati e protected. Metodi costruttore e distrutture. Getter e Setter standard. Metodi standard (esempio di visualizzazione e 'stampa' su file). Overloading di funzioni
- ereditarietà e polimorfismo: metodi virtual e override
- puntatori e istanze/oggetti, memorizzazione di vector, casting di puntatori. Allocazione in memoria heap.
- Cenni ed esempi relativi a: associazione tra classi, classi astratte, erdeitarietà multipla.
GUI ed Eventi
- esempi in Qt (solo se il l'avanzamento del programma lo consentirà)
Algoritmi notevoli
- presentazione per ciascun argomento sopra indicato di algoritmi esemplificativi e di riferimento
- tracce per il programma da realizzare durante la prova d'esame
-------------------------------------------------------------------------------------------------------------
Introduction to structured programming:
- basic theory of programming languages and compilers
- historical information about Information technology, algorithms, flow chart diagrams
C++ language:
- primitive data and standard types, mathematical and logical operators, flow- control structures, conditional statements and cycles
- data and file management: scalar and structured data, structs, arrays, vector, I/O stream and text files access for reading and writing.
Functions and pointers:
- procedures and functions, formal and actual parameters, parameters passed by value and passed by reference, polymorphism, user functions in header files library.
– use of pointers , pointers passed by address between functions and explicit use of pointers in the code. Dereferencing, stack and heap memory use
Object-oriented programming
- Classes and object definitions: public, private and protected members. Constructor and destructor methods. Standard getters and setters . Standard methods (for example display method and file storage methos). Function overloading
- inheritance and polymorphism: virtual and override methods
- pointers and instances / objects, vector storage, pointer casting. Heap memory allocation for objects
- Notes and examples related to: association between classes, abstract classes, multiple inheritance.
GUI and Events
- Qt examples (only if the progress of the program allows it)
Important algorithms
- example and reference algorithms for course’s topics
- exam simulation
Metodi Didattici/Teaching Methods
Lezione frontale ed esercitazione in Aula Virtuale con modalità didattica a distanza. Assegnazione di esercizi notevoli da svolgere di volta in volta e di approfondimenti. Condivisione di codice tramite cloud.
Simulazioni d'esame e temi esemplificativi assegnati con soluzioni.
-------------------------------------------------------------------------------------------------------------
Frontal lessons and exercises in Virtual Classroom.
Assignment of significant exercises for each lesson and in-depth code analysis. Cloud code sharing. Exam simulations assigned with solutions.
Verifica dell'apprendimento/Verification of learning
Prova pratica di programmazione C++ al calcolatore.
Prova scritta/orale su tutto il programma nello stesso giorno (verranno forniti temi/quesiti notevoli e approfondimenti)
In alternativa assegnazione di un progetto sw da realizzare preventivamente ed illustrare durante prova orale.
-------------------------------------------------------------------------------------------------------------
Practical test of C++ programming on the computer.
Written / oral exam on the whole program in the
same day (example questions will be provided)
Alternatively, sw project to be created and illustrated during the oral exam.
Testi di riferimento/Reference books
Appunti pdf slide lezioni ed esempi di codice forniti in itinere e condivisi in cloud.
Uso di manuali e testi a piacere
Testi consigliati per approfondimento:
Learn Qt 5 di Nicholas Sherriff ed. Packt Publishing
Qt 5 Quanto Basta vol.1 e 2 di Gianbattista Gualeni, ed. Youcanprint
C++. Linguaggio, libreria standard, principi di programmazione di Bjarne Stroustrup, ed. Pearson
Programming: Principles and Practice Using C++ 2nd Edition di Bjarne Stroustrup Ed Addison-Wesley Professional
Sitografia: guida bene fatta sul C++ e reference alle librerie http://www.cplusplus.com/
Risultati di apprendimento attesi/Expected learning outcomes
Al termine del corso e dopo il superamento dell'esame lo studente avrà sviluppato le seguenti competenze:
- capacità di analisi del dominio di un problema e di individuare e descrivere le caratteristiche formali dello stesso, eliminando le ambiguità e operando scelte e ipotesi
- capacità di modellare gli aspetti e le caratteristiche del dominio del problema in oggetto con dati, strutturati e non e capacità di individuare le funzionalità che operando sugli stessi consentono di soddisfare le esigenze del committente.
- capacità di implementare soluzioni improntate al riuso del codice attraverso la scrittura e l'uso di librerie, ma anche attraverso l'utilizzo di astrazioni e l'uso di modelli più avanzati (OOP)
- capacità di comprendere il funzionamento di un codice fornito e adattarlo alle proprie esigenze
-------------------------------------------------------------------------------------------------------------
At the end of the course and after passing the exam, the student will have developed the following skills:
- ability to analyze the domain of a problem and to identify and describe the formal characteristics of the same
- ability to model the aspects and characteristics of the domain of the problem, using structured and non-structured data and the ability to identify the main functionalities, making it possible to satisfy the customer's needs.
- ability to implement solutions based on code/software reuse, with the use of libraries, but also through the use of abstractions and the use of more advanced modelling technique (OOP)
- ability to understand the operation of the sw provided and ability to transform and adapt it to new needs
Normative di sicurezza per gli ambienti di lavoro
Obiettivo del corso è l'apprendimento delle procedure di gestione dei processi organizzativi e applicativi delle normative legate alla sicurezza sul lavoro in azienda.
Durante le lezioni vengono definite le principali procedure che permetteranno allo studente di acquisire le competenze anche professionali utili allo svolgimento degli incarchi di responsabilità all'interno di aziende industriali.
L'Ingegnere industriale è elettivo nel ruolo di incaricato alla sicurezza sul lavoro, in abbinamento alle competenze tecniche professionali.
Il corso ha inoltre un a significativa parte di esercitazioni di analisi di documentazioni, schemi operativi e manuali professionali per la specifica sperimentazione di reali prassi operative.