29227 - FONDAMENTI DI INFORMATICA T

Anno Accademico 2020/2021

  • Docente: Sandro Manservisi
  • Crediti formativi: 6
  • SSD: ING-INF/05
  • Lingua di insegnamento: Italiano
  • Moduli: Sandro Manservisi (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)

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.
III. Elementi di analisi numerica e di calcolo computazionale
  • 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:
Bellini, Guidi. Linguaggio C. McGraw-Hill
Kelley, Pohl. C-Didattica e programmazione. Pearson

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://iol.unibo.it/

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 Sandro Manservisi

Consulta il sito web di Francesco Teodori

SDGs

Istruzione di qualità

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