FONDAMENTI DI INFORMATICA

Vincenzo LOIA FONDAMENTI DI INFORMATICA

0612400005
DIPARTIMENTO DI INGEGNERIA INDUSTRIALE
CORSO DI LAUREA
INGEGNERIA ELETTRONICA
2014/2015

OBBLIGATORIO
ANNO CORSO 1
ANNO ORDINAMENTO 2012
PRIMO SEMESTRE
CFUOREATTIVITÀ
660LEZIONE
Obiettivi
- RISULTATI DI APPRENDIMENTO PREVISTI E COMPETENZE DA ACQUISIRE

Il corso fornisce agli studenti gli elementi basilari per la risoluzione di problemi attraverso la formulazione di algoritmi implementati nel linguaggio di programmazione C, gli aspetti fondamentali relativi alla rappresentazione delle informazioni e al loro utilizzo all’interno del sistema, al funzionamento di moderni sistemi di elaborazione delle informazioni.
Il corso propone numerose esercitazioni pratiche in cui gli studenti acquisiscono tecniche di problem solving e la capacità di implementare le proprie soluzioni in un linguaggio ad alto livello. I concetti vengono presentati durante le lezioni frontali e le soluzioni sono realizzate implementando programmi in linguaggio C durante le ore di esercitazione.

- CONOSCENZA E CAPACITA’ DI COMPRENSIONE
Conoscenze dell’architettura di un calcolatore e della codifica delle informazioni, dei costrutti di un linguaggio di programmazione ad alto livello, della rappresentazione degli algoritmi attraverso pseudocodice e diagrammi di flusso, degli algoritmi notevoli, delle principali strutture dati.

- CAPACITA’ DI APPLICARE CONOSCENZA E COMPRENSIONE
Capacità di sviluppare algoritmi di complessità non elevata attraverso la scomposizione in sotto-problemi, capacità di tradurre detti algoritmi in linguaggio C adottando metodologie di programmazione strutturata, curando la comprensibilità dei programmi, la capacità di verificare il corretto funzionamento dei programmi.

- AUTONOMIA DI GIUDIZIO
Saper valutare e scegliere gli opportuni costrutti del linguaggio di programmazione per la codifica di un algoritmo.

- ABILITÀ COMUNICATIVE
Lo studente acquisirà la terminologia propria dell’informatica e del linguaggio di programmazione C.

- CAPACITÀ DI APPRENDERE
Il corso mira a sviluppare la capacità di apprendimento degli studenti che consenta loro di aggiornare in autonomia continuamente le proprie conoscenze e competenze, di applicare le metodologie acquisite in ambiti diversi da quelli investigati durante il corso, utilizzando fonti di informazioni diverse dai libri di testo adottati, quali informazioni recuperabili online.
Prerequisiti
Nessuno.
Contenuti
- Concetti di Base (4H lezione 1H esercitazione)

Introduzione: Informazione, Algoritmi, Hardware e Software

Architettura di un sistema per l’elaborazione dell’informazione: elementi della macchina di von Neumann, codifica dei dati e delle informazioni, (Codifica dei numeri, dei caratteri, operazioni binarie)

Algebra di Boole

- Fondamenti di Programmazione (20 H lezione 10H esercitazione)

Linguaggi di programmazione ad alto e basso livello. Linguaggio C. Tipi e variabili. Tipi semplici (il tipo int, float e double, char, definiti dall’utente).

Operatori. Espressioni. Assegnazione. Istruzioni di selezione. istruzioni cicliche.

Tipi strutturati (Array, Matrici, strutture, puntatori, gestione delle stringhe)

Costruzione incrementale dei programmi con processo top-down. Decomposizione funzionale. Funzioni, prototipi, chiamata per valore e per riferimento, effetti collaterali, le regole di visibilità, procedure e funzioni predefinite, standard library del C.

File. File e flusso, file ad accesso sequenziale, ad accesso casuale, file di testo, operazioni di lettura e scrittura.

- Sviluppo algoritmi (15 H lezione 10H esercitazione)).

Ambienti di sviluppo. Compilatori ed interpreti. Algoritmi di base.

Sviluppo di algoritmi su vettori e matrici (minimo, massimo, media, mediana, moda, trasposta di una matrice, prodotto scalare, prodotto matriciale), di ricerca (lineare, binaria), di ordinamento (bubble sort, selection sort), di approssimazione radici di funzioni/polinomi, introduzione all’utilizzo dei puntatori e dell’allocazione dinamica della memoria.
Metodi Didattici
Il corso prevede lezioni in aule tradizionali ed esercitazioni pratiche sugli argomenti trattati in classe. Le esercitazioni prevedono la risoluzione di problemi attraverso la formulazione di algoritmi che vengono tradotti in linguaggio C e testati per verificarne la correttezza.
Verifica dell'apprendimento
La verifica del raggiungimento degli obiettivi può avvenire in due modalità:

- Durante l’erogazione del corso
a) Prova intercorso di verifica. Da svolgere durante il periodo di sospensione delle lezioni. Essa verterà su esercizi pratici relativi allo sviluppo di un programma in linguaggio C e quesiti teorici sulla parte di programma svolto nella prima parte del corso.

b) Prova di fine corso. Essa verterà su esercizi pratici e quesiti teorici sulla parte di programma svolto nella prima parte del corso.

c) Colloquio orale. Discussione della prova scritta e del listato funzionante del programma C presentato dallo studente al colloquio.

- Appelli successivi

a) Prova scritta, relativa allo sviluppo di un programma in linguaggio C, e sugli argomenti trattati al corso.

b) Colloquio orale. La discussione partirà dai contenuti della prova scritta e dal listato funzionante del programma C presentato dallo studente al colloquio.

Testi
PAUL J. DEITEL - HARVEY M. DEITEL, IL LINGUAGGIO C - FONDAMENTI E TECNICHE DI PROGRAMMAZIONE, PEARSON.
MATERIALE FORNITO NEL SITO WEB DEL CORSO.

S. CERI, D. MANDRIOLI, L. SBATTELLA, P. CREMONESI, G. CUGOLA - INFORMATICA: ARTE E MESTIERE, TERZA EDIZIONE MCGRAW-HILL ITALIA.

PER APPROFONDIRE ALCUNI ASPETTI RELATIVI AL C:
B.W. KERNIGHAN, D. RITCHIE, LINGUAGGIO C, PEARSON-PRENTICE HALL, II EDIZIONE.
Altre Informazioni
L’insegnamento è erogato in presenza con frequenza obbligatoria. Materiale aggiuntivo: slide e dispense fornite dal docente.
  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2016-09-30]