Foto personale

Pagina personale di Marco VILLANI

Dipartimento di Scienze Fisiche, Informatiche e Matematiche
Dipartimento di Scienze Fisiche, Informatiche e Matematiche sede ex-Fisica

Contenuti Insegnamento: Informatica generale

Corso di studio: MATEMATICA (D.M. 270/04) (offerta formativa anno 2017)
  • CFU: 9
  • SSD: ING-INF/05

Obiettivi formativi

Il corso introduce lo studente alla programmazione, utilizzando il linguaggio C, una delle scelte principali per chi scrive software in ambito scientifico. Le lezioni in aula saranno il più possibile integrate con le attività di laboratorio, per “toccare con mano” le principali soluzioni viste a lezione. Al termine del corso, lo studente avrà autonomia di giudizio (capacità di scegliere e poi codificare l’algoritmo più adatto per diversi problemi), sarà in grado di presentare e commentare dati e risultati di simulazioni, avrà la capacità di imparare ad utilizzare strumenti simili a quelli visti nel corso. Lo studente avrà così una visione completa su come progettare, strutturare ed implementare applicazioni che necessitano di un elevato utilizzo di risorse di calcolo.

Prerequisiti

Familiarità con l'uso semplice del calcolatore: accensione/spegnimento, archiviazione di file, stampa, navigazione sul Web

Programma del corso

Introduzione Descrizione delle idee di base e degli scopi del corso. Algoritmi e loro codifica. Metodi per l’analisi di problemi e codifica delle soluzioni. I diagrammi di flusso. Linguaggi di programmazione, interpreti, compilatori, linker. Algebra booleana Definizione di variabile booleana e operatori booleani. Tabelle di verità e proprietà degli operatori. Alcuni teoremi. Il linguaggio di programmazione C Costanti e variabili, tipi di dato primitivi, qualificatori, espressioni di assegnamento e condizionali, operatori, conversione dati. Stringhe di formato. Istruzioni di controllo Vettori e Matrici Array ad una dimensione e a più dimensioni. Accesso agli elementi di un array. Esercizi sugli array. Stringhe come vettori di caratteri Funzioni Prototipi di funzioni, passaggio di parametri per valore e per indirizzo, concetto di puntatore, passaggio di array come parametro di funzione. Programmazione ricorsiva Introduzione alla programmazione ricorsiva. Torri di Hanoi. Esempi ragionati. Allocazione dinamica Puntatori, operatori di deferenziamento ed indirizzo, operazioni sui puntatori, aritmetica dei puntatori, relazione fra vettori e puntatori, allocazione e deallocazione dinamica della memoria. Tipi utente Tipi definiti dall’utente (semplici e strutturati), il costruttore “struct”, uso di “typedef” e strutture, operazioni sulle strutture, accesso ai campi della struttura. File Struttura dati FILE. Tipi di file, apertura e chiusura di file, funzioni di I/O per file di testo, operazioni su file binari. Gestione di progetti Creazione e gestione di progetti (.h e .c). Parametri di ingresso. Utilizzo di makefile. Esercitazioni Il corso prevede esercitazioni sui seguenti argomenti: ambiente di sviluppo di programmi C (in ambiente Windows), progetto e realizzazione di programmi in linguaggio C, semplici esempi di calcolo numerico. La verifica del profitto avverrà tramite esame scritto e orale finale comprendente domande di teoria ed esercizi

Testi di riferimento

<p>Lucidi del corso e dispense a cura dei docenti sono disponibili con password sul sito del corso <a href="http://www.isgroup.unimore.it/test/corsi/informatica-generale">http://www.isgroup.unimore.it/test/corsi/informatica-generale</a> </p> Il libro consigliato è: "Programmazione scientifica", autori Luciano M. Barone, Giovanni Organtini, Enzo Marinari, Federico Ricci-Tersenghi, Ed. Pearson

Metodi Didattici

lezioni frontali ed esercitazioni

Verifica dell'apprendimento

La verifica del profitto avverrà tramite esame scritto e orale finale comprendente domande di teoria ed esercizi

Risultati attesi

- Conoscenza e capacità di comprensione: al termine del corso lo studente avrà le conoscenze di base della programmazione, utilizzando il linguaggio C, una delle scelte principali per chi scrive software in ambito scientifico. - Capacità di applicare conoscenza e comprensione: al termine del corso lo studente sarà in grado di applicare queste conoscenze a semplici problemi. Le lezioni in aula saranno il più possibile integrate con le attività di laboratorio, per “toccare con mano” le principali soluzioni viste a lezione. - Autonomia di giudizio: al termine del corso lo studente avrà autonomia di giudizio (capacità di scegliere e poi codificare l’algoritmo più adatto per diversi problemi) - Capacità di comunicazione: lo studente sarà in grado di presentare e commentare dati e risultati di simulazioni, e sarà in grado di relazionare oralmente sugli argomenti presentati nel corso con un linguaggio tecnico appropriato e un formalismo corretto. - Capacità di apprendimento: lo studio permetterà lo sviluppo di abilità di apprendimento autonomo e di approfondimento di argomenti collaterali a quelli presentati nel corso; avrà inoltre la capacità di imparare ad utilizzare strumenti simili a quelli visti nel corso. Lo studente avrà così una visione completa su come progettare, strutturare ed implementare applicazioni che necessitano di un elevato utilizzo di risorse di calcolo