Il corso ha la finalità di fornire conoscenze sulla rappresentazione dell’informazione nei calcolatori, sull’architettura dell’elaboratore, sul software di base, sul sistema operativo, sugli algoritmi, sui linguaggi di programmazione, su compilatori e interpreti e sulle reti di calcolatori. Verranno forniti gli strumenti metodologici per risolvere algoritmicamente un problema e le tecniche della programmazione strutturata. Gli studenti saranno in grado di sviluppare autonomamente un programma in linguaggio C con particolare riferimento alla gestione di strutture dati complesse (biblioteche, archivi, etc.).
Lezioni frontali, esercitazioni e laboratorio.
Non sono richieste specifiche conoscenze o abilità in ingresso
Obbligatoria
Introduzione: Algoritmi e Programmi
Elaborazione automatica dell'informazione. Algoritmi e programmi. Un linguaggio di programmazione. Il progetto di un programma. La programmazione strutturata. Diagrammi di flusso e pseudocodice. Rappresentazione dell'informazione. Sistemi di codifica. Sistemi di numerazione e algoritmi di conversione. Aritmetica intera e in virgola mobile. Rappresentazione di dati multimediali.
Architettura di un sistema di elaborazione
La struttura di un elaboratore: memoria centrale, unità centrale, funzionamento elementare dell'elaboratore (ciclo macchina). Dispositivi periferici e memorie di massa. Classificazione dei sistemi di elaborazione.
Software di base e Sistemi Operativi
Traduzione ed esecuzione di programmi. Ambiente di Programmazione. Compilatori vs. interpreti. Architettura e funzionalità del Sistema Operativo. Gestione dei processi. Gestione della memoria. Gestione delle periferiche. Gestione del file system.
Reti di Calcolatori e Internet
Generalità sulle reti di calcolatori. Reti locali. Reti geografiche. I protocolli di rete. Cenni su Internet e sulle più diffuse applicazioni di rete.
Il linguaggio di programmazione "C": sintassi e semantica
Istruzioni di Assegnazione. Strutture di controllo. Tipi di dato in C: tipi semplici (int, char, float, double) e strutturati (array e stringhe, strutture). Il tipo puntatore. Le funzioni. Campo d'azione degli identificatori. Dichiarazioni e campo d'azione degli identificatori. Variabili locali, globali e statiche. Tecniche di passaggio dei parametri. La ricorsione. I File: file di testo e file binari. Primitive di accesso ai file. Algoritmi di ordinamento e ricerca Ricerca sequenziale e binaria. Algoritmi di ordinamento. Strutture dati.
Strutture dati dinamiche. Allocazione dinamica della memoria. Liste, Pile, Code ed Alberi. Primitive e relative implementazioni in C. Esempi di programmi.
1) Bellini, A. Guidi - "Linguaggio C - guida alla programmazione", 4a ed. McGraw-Hill
2) D. Sciuto, G. Buonanno, L. Mari, , "Introduzione ai sistemi informatici" 5a ed. McGrawHill
DIspense del docente.
Il materiale didattico utilizzato a lezione e in laboratorio sarà reso disponibile su Studium.
Argomenti | Riferimenti testi | |
1 | Informazione e sua codifica | Libro 2: Capitolo 2 |
2 | Problemi e algoritmi | Libro 2: Capitolo 3 |
3 | Linguaggi per la formalizzazione dell’informazione | Libro 2: Capitolo 4 |
4 | Infrastruttura Hardware | Libro 2: Capitolo 6, Slides del docente |
5 | Infrastruttura Software | Libro 2: Capitolo 7, Slides del docente |
6 | Infrastruttura di Rete | Libro 2: Capitolo 8 |
7 | Introduzione ANSI C: Tipi di dati, istruzioni di assegnazione e strutture di controllo. | Libro1: Capitoli 1, 2 e 11; Dispense del docente |
8 | ANSI C: Istruzioni interative | Libro 1: Capitolo 3; Dispense del docente |
9 | ANSI C: Tipi di dati strutturato: array e stringhe, strutture | Libro 1: Capitoli 4 e 6. Dispense del docente |
10 | ANSI C: Funzioni, ricerche, ordinamenti e fusioni | Libro1: Capitoli 5 e 7; Dispense del docente |
11 | ANSI C: Puntatori e gestione dinamica della memoria | Libro1: Capitoli 9 e 12; Dispense del docente |
12 | ANSI C: File e strutture dati | Libro1: Capitoli 13 e 14; Dispense del docente |
L'esame consiste in una prova di teoria (scritta) e in una prova pratica di programmazione in laboratorio. Le due prove sono indipendenti, e ciscuna prova superata resta valida fino ad ottobre 2018. L'esame è superato quando entrambe le prove sono state superate.
Esempi di esercizi e prove di laboratorio sono disponibili su http://studium.unict.it