Home
Research
Publications
Professional Activities
Teaching
News
Links

Fondamenti di Informatica e Laboratorio

Programma del Corso
--------------------------------------

  • Introduzione
  • Elaborazione automatica dell'informazione: Algoritmi e programmi. Una notazione grafica per esprimere algoritmi. Linguaggi di programmazione. Il progetto di programmi.
  • Rappresentazione dell'informazione: Sistemi numerici. Conversione fra sistemi numerici. Sistema di numerazione binaria. Operazioni tra numeri binari. Overflow e underflow. Rappresentazione dei numeri interi. Rappresenzione dei numeri con segno. Rappresentazione in virgola fissa e virgola mobile. Codici. Rappresentazione dei Caratteri. Algebra di Boole. Funzioni logiche. Espressione logiche. Applicazioni dell'algebra booleana.
  • Struttura di un elaboratore e sistema di elaborazione: Struttura di un elaboratore: memoria centrale, unita centrale, funzionamento elementare dell'elaboratore. Sistema di elaborazione: unita' di memoria ausiliaria, unita' di ingresso uscita, interfacciamento di unita' periferiche, collegamenti di elaboratori in rete.
  • Sistema di elaborazione: software di base: Traduzione ed esecuzione dei programmi, sistema operativo, ambiente di programmazione. Linguaggi di programmazione: linguaggi imperativi, linguaggi funzionali, linguaggi dichiarativi basati sulla logica. Compilatori. Linker.
  • Elementi fondamentali del linguaggio C: Sintassi del C. Struttura di un programma C. Compilazione di un programma. Tipi di dato e rappresentazioni. Tipi di dato principali. Identificatori. Variabili. Modificatori di accesso. Specificatori di classe di memorizzazione. Costanti. Operatori. Strutture di controllo. Istruzione di selezione. Istruzioni di iterazione. Istruzioni di salto. Istruzioni di espressione. Istruzione blocco.
  • Array, stringhe e puntatori: Array monodimensionali. Puntatori ad array. Array come argomento di una funzione. Stringhe. Array di stringhe. Array multidimensionali. Variabili puntatore. Operatori ed espressioni con puntatori. Puntatori ad array. Puntatori a funzioni. Allocazione dinamica.
  • Funzioni: Astrazioni funzionali: funzioni. Regole di visibilita' delle funzioni. Argomenti delle funzioni. Argomenti di main. Istruzione return. Valori restituiti da una funzione. Dichiarazioni e campo di azione degli identificatori. Tecniche di legame dei parametri. Effetti collaterali ed implementazione delle funzioni.
  • Strutture, unioni e tipi definiti dall'utente: Strutture. Array di strutture. Strutture come argomenti di funzioni. Puntatori a strutture. Array e strutture all'interno di altre strutture. Campi di bit. Unione. Enumerazioni. Sizeof. Typedef.
  • I/O da console e da file: Lettura e scrittura di caratteri e stringhe da consolle. I/O formattato da console. Canali. File.
  • Ricorsione
  • Allocazione dinamica della memoria
  • Complessita' Computazionale: Efficienza dei Programmi. Le Notazioni O e W. Valutazione della Complessita' di un Programma. Relazioni di Ricorrenza.
  • Algoritmi di Ordinamento: Classi di algoritmi di ordinamento. Valutazione degli algoritmi di ordinamento. Ordinamento per selezione (selection sort). Algoritmi per inserzioni (insertion sort). Algoritmi per scambio bubble sort, shall sort, quick sort. Ordinamento di file. Ordinamento di stringhe.
  • Tipi di dato astratto: Liste. Code. Pile. Alberi binari. Alberi generali. Grafi.

Testo consigliato: Bellini, Guidi - Linguaggio C. Guida alla programmazione (terza edizione), McGraw-Hill