- Docente: Giorgio Bornia
- Crediti formativi: 6
- SSD: ING-INF/05
- Lingua di insegnamento: Italiano
- Moduli: Giorgio Bornia (Modulo 1) Francesco Teodori (Modulo 2)
- Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
- Campus: Bologna
- Corso: Laurea in Ingegneria energetica (cod. 0924)
-
Orario delle lezioni (Modulo 1)
dal 29/04/2025 al 12/06/2025
-
Orario delle lezioni (Modulo 2)
dal 18/02/2025 al 15/04/2025
Conoscenze e abilità da conseguire
L'obiettivo del corso è quello di dare allo studente una panoramica generale sul funzionamento del computer e sul loro utilizzo per il calcolo scientifico. Alla fine del corso lo studente dovrà avere una conoscenza di base del linguaggio di programmazione C e degli elementi introduttivi di analisi numerica inerenti al calcolo delle derivate mediante differenze finite, zeri di funzioni e metodi base per l'integrazione.
Contenuti
I. Il sistema operativo Linux:
- nozioni preliminari; utilizzo della shell; comandi fondamentali; filesystem e partizioni; installazione del sistema operativo.
II. Introduzione al C++.
- Nozioni Fondamentali: variabili ed espressioni aritmetiche; cicli for; costrutto if; costanti: input e output; array; funzioni; passare argomenti per indirizzo; variabili esterne e scope.
- Puntatori e array: puntatori ed indirizzi; puntatori e argomenti di funzione; aritmetica degli indirizzi; puntatori ad array; allocazione dinamica della memoria; array di puntatori; puntatori a puntatori;
array multidimensionali; argomenti da linea di comando; puntatori alle funzioni; puntatori void; - Classi: basi delle classi; overloading degli operatori; classi autoreferenziali.
- Header file e librerie: header file; inclusione condizionata; compilare molteplici file; il Makefile
- Ancora sulle classi: metodi di una classe; costruttori e distruttori.
- Verso le applicazioni numeriche: errori e loro cause: errore assoluto, relativo e percentuale: cancellazione numerica e propagazione degli errori.
- Approssimazione e rappresentazione di una funzione: rappresentazione numerica, interpolazione di tipo Lagrangiano, polinomio e serie di Taylor. Errore di troncamento.
- Differenziazione di una funzione: approssimazione della derivata prima, seconda ed ennesima con le differenze finite in avanti e all'indietro, con errore di troncamento al primo e al secondo ordine; approssimazione della derivata prima, seconda ed ennesima con le differenze finite centrate. Equazione differenziale ordinaria del secondo ordine.
- Ricerca degli zeri di una funzione: risoluzione di un problema algebrico lineare con il metodo di Gauss. Soluzione di equazioni non lineari. Definizione del problema e metodo di bisezione. Metodo di Newton-Raphson. Metodi della secante e Regula Falsi.
- Integrazione di una funzione: metodo dei rettangoli, dei trapezi e di Simpson. Integrazione di Gauss. Errore di troncamento locale e globale e ordine della convergenza.
Testi/Bibliografia
Testo di riferimento:
Sono disponibili le dispense del docente con slides delle lezioni ed esercitazioni. Tale materiale è reperibile presso indegnamenti on line AlmaDL - Università di Bologna (https://iol.unibo.it).
Manuali di C++ consigliati:
Aguilar, L. J., & Dragoni, A. F. (2021). Fondamenti di programmazione in C++: Algoritmi, strutture dati e oggetti. Milano: McGraw-Hill.
Shtern, V. (2001). Core C [plus plus]: A software engineering approach. Upper Saddle River, N.J: Prentice Hall PTR.
Overland, B. (2001). C++ in plain English. Foster, City, CA: I.D.G. Books.
Testi integrativi:
Ceri, Mandrioli, Sbattella. Informatica: arte e
mestiere. McGraw-Hill
Monegato. Fondamenti di calcolo numerico. Levrotto &
Bella
Epperson. Introduzione all'analisi numerica.
McGraw-Hill
Metodi didattici
Lezioni frontali e esercitazioni di laboratorio informatico.
Le esercitazioni di laboratorio saranno 6 per la parte II (linguaggio C++) e 6 per la parte III (analisi numerica).
Assistenza di tutor dedicato
Materiale didattico: il materiale didattico presentato a lezione verrà messo a disposizione dello studente in formato elettronico tramite internet. Tale materiale dovrebbe essere stampato e portato alla lezione.
Per ottenere il materiale didattico: https://virtuale.unibo.it/
In considerazione della tipologia di attività e dei metodi didattici adottati, la frequenza di questa attività formativa richiede la preventiva partecipazione di tutti gli studenti ai moduli 1 e 2 di formazione sulla sicurezza nei luoghi di studio, [https://elearning-sicurezza.unibo.it/] in modalità e-learning
Modalità di verifica e valutazione dell'apprendimento
Una prova in laboratorio informatico sul linguaggio C++ e una sull'analisi numerica.
Il voto viene ripartito su due prove come segue:
-1. Prova scritta computazionale su argomenti di linguaggio C++ (parte del programma indicata con II). La prova si svolge in laboratorio con sistema operativo linux. Punteggio 0-16 (sufficiente se punteggio prova > 9)
-2. Prova scritta di calcolo computazionale su argomenti di analisi numerica (parte del programma indicata con III). La prova si svolge in laboratorio con sistema operativo linux. Punteggio 0-16 (sufficiente se punteggio prova > 9)
La somma totale dei punteggi che sono sufficenti formano il voto di esame. I voti non sufficienti non vengono sommati e la prove devono essere ripetute. La lode viene data se si supera il punteggio di 30.
Strumenti a supporto della didattica
Le lezioni vengono integrate con una serie di esercitazioni
pratiche con il calcolatore
Orario di ricevimento
Consulta il sito web di Giorgio Bornia
Consulta il sito web di Francesco Teodori
SDGs


L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.