Nuova ricerca

Domenico BENEVENTANO

Professore Associato presso: Dipartimento di Ingegneria "Enzo Ferrari"

Insegnamento: Fondamenti di Informatica e Laboratorio

Ingegneria Elettronica (D.M.270/04) (Offerta formativa 2020)

Obiettivi formativi

Presentare allo studente gli aspetti fondamentali dell'informatica (algoritmi, linguaggi, programmi, struttura di massima dei calcolatori). Impartire nozioni sui fondamenti della teoria dell'informazione e dell'architettura dei calcolatori. Impartire i fondamenti della programmazione, sapere programmare in linguaggio C.

Prerequisiti

Nessuno

Programma del corso

Gli argomenti principali del corso sono:
- introduzione: cos'e' un calcolatore - macchina di Von Neumann - rappresentazione dell'informazione - numeri interi, reali (ieee-754), char, boole - memorizzazione dei dati al calcolatore - ciclo delle istruzioni - il concetto di algoritmo - diagrammi di flusso - macchine e linguaggi - compilazione/interpretazione
- il linguaggio c: struttura di un programma c - tipi di dato fondamentali - variabili e costanti - operatore condizionale - operatori aritmetici, relazionali e logici - conversione di tipi - generalità su input e output
- strutture di controllo: istruzione semplice e composta - istruzione if else - istruzioni ripetitive: while, do while e for - istruzioni goto, break e continue - istruzione switch --ripetizioni innestate
- dati strutturati: vettori monodimensionali - puntatori e aritmetica dei puntatori - stringhe - array multidimensionali - cenni di complessita' computazionale - ricerca lineare e dicotomica - record - composizione di tipi strutturati
- funzioni: astrazione di operazioni - funzioni: definizione, chiamata e dichiarazione - procedure - record di attivazione - regole di visibilita' - array, stringhe, record e funzioni come parametri - passaggio per valore e per riferimento - concetto di ricorsione e definizioni
- liste e ordinamento di vettori: il concetto di lista - rappresentazione statica - rappresentazione collegata mediante puntatori - algoritmi di ordinamento di un vettore: selection sort, bubble sort, insert sort, quick sort e merge sort
- file in C: il concetto di file - file di testo e file binari - lettura/scrittura sequenziale - accesso diretto ai file

Il corso è organizzato con una parte di laboratorio che introduce gli studenti all'uso del computer e di un sistema di sviluppo e compilazione per semplici programmi in C.

Metodi didattici

Lezioni frontali, esercitazioni pratiche, attività pratiche di laboratorio.

Testi di riferimento

Libri consigliati:
- KELLEY A., POHL I., C: Didattica e Programmazione, Pearson Addison Wesley, 4a edizione, 2004. Testo di riferimento per il linguaggio C, consigliato per un approfondimento di tale linguaggio di programmazione.
- KERNIGHAN B. W., RITCHIE D.M., Il linguaggio C, Jackson, seconda edizione, 2007.
- BELLINI, A. GUIDI, Linguaggio C - Guida alla programmazione, McGraw-Hill, 1999
- BENEVENTANO D, Bergamaschi S., Sartori C., Lezioni di Fondamenti di Informatica - Linguaggio di Riferimento C, Progetto Leonardo, ed. Esculapio Bologna

Verifica dell'apprendimento

Prova scritta e prova pratica di laboratorio, esame orale facoltativo.

Risultati attesi

Conoscenza e capacità di comprensione: Tramite lezioni in aula, lo studente avrà solide conoscenze e capacità di comprensione degli aspetti fondamentali dell'informatica (algoritmi, linguaggi, programmi, struttura di massima dei calcolatori) e della programmazione in linguaggio ANSI C.

Capacità di applicare conoscenza e comprensione: Tramite esercitazioni in aula ed esercitazioni pratiche al computer, lo studente sarò in grado di utilizzare le funzionalità di base del linguaggio ANSI C e di applicare le conoscenze acquisite nella soluzione di classici problemi dell’informatica di base.

Autonomia di giudizio: Grazie alla risoluzione di esercizi individuali ed esercizi pratici in laboratorio, lo studente sarà in grado di valutare criticamente le scelte progettuali e implementative adottate e i risultati ottenuti.

Capacità di apprendimento: Le attività descritte consentiranno allo studente di acquisire gli strumenti metodologici per potere provvedere autonomamente al proprio aggiornamento nel campo dell’informatica e dei linguaggi di programmazione.