Programma del corso di Elementi di Informatica a.a. 2007/2008 docente: Alessandro CILARDO Libro di testo: Fadini-Savy, "Fondamenti di Informatica I", Liguori Editore, I ed. Marzo 1997. Argomenti del corso (ed in parentesi i riferimenti al libro di testo): Introduzione. (Introduzione) o L’informatica e i suoi fondamenti I modelli fondamentali (Parte Prima : Fondamenti Teorici, Cap. I TUTTO tranne parr. 6, 7, 8 e 9) o Informatica: approccio teorico e tecnico o Il concetto di elaborazione o Il concetto di algoritmo o Il modello di automa o Stati e registri: grandezze numeriche ed analogiche o Algoritmi Linguaggi e Programmi o Modello penna e carta o Il modello di Von Neumann La macchina astratta generalizzata (Parte Prima : Fondamenti Teorici, Cap. II TUTTO tranne par. 6) o Valore, tipo e attributo di un’informazione o Informazione e dati. Il bit o Tipi semplici e strutturati o Le azioni elaborative della macchina di Von Neumann o Un esempio di elaborazione o Hardware e software. Macchina base e macchine virtuali o Memoria, processore e registro PI o Gli strati di un sistema di elaborazione Struttura fondamentale degli elaboratori (Parte Terza : Fondamenti di Architettura, Cap. I TUTTO) o Gli elaboratori numerici o Schema di principio di un elaboratore o Organi di un calcolatore: unità di ingresso e uscita o Organi di un elaboratore: la memoria centrale o Memorie di massa o Unità logico-aritmetica o Il processore e l’unità centrale o Linguaggi macchina ed assemblativo o Le istruzioni del linguaggio macchina o Esempio: l’istruzione move. I modelli dell’algebra di Boole (Parte Prima : Fondamenti Teorici, Cap. III TUTTO, tranne paragrafo 6) o Definizione di algebra di Boole. o Variabili e funzioni booleane. o Eguaglianze notevoli e Teorema di De Morgan o L’algebra degli insiemi o L’algebra della logica delle proposizioni Introduzione alla programmazione ed ai linguaggi (Parte Seconda : Fondamenti di Programmazione, Cap. I TUTTO) o Elaborazione o Campi di impiego degli elaboratori o Un elenco di applicazioni o Linguaggi simbolici o Caratteristiche dei linguaggi più diffusi: C e C++ o Hardware e software o Sistemi operativi I Tipi Semplici (Parte Seconda : Fondamenti di Programmazione, Cap. II TUTTO) o I tipi: introduzione o Variabili e costanti o I tipi nei linguaggi di programmazione o Definizioni e notazioni per le operazioni sui tipi o Tipo intero o Tipo reale o Tipo carattere o Tipo enumerativo o Tipo sottocampo o Tipo booleano o Relazioni e predicati o Funzioni per la trasformazione di tipo (leggere) I Tipi Strutturati Fondamentali (Parte Seconda : Fondamenti di Programmazione, Cap. III TUTTO tranne par. 8) o I tipi strutturati o Gli array o Allocazione degli array o Gli array nel linguaggio C++ o Il tipo record o struttura o Il tipo record in C o Dimensioni delle strutture dati in C++ o Il tipo astratto stringa di caratteri o La stringa nei linguaggi di programmazione o Riepilogo Le Istruzioni Semplici (Parte Seconda : Fondamenti di Programmazione, Cap. IV TUTTO) o Dati ed istruzioni o Istruzioni di ingresso o Istruzioni di uscita o Esempi di istruzioni di ingresso e uscita o Istruzioni di calcolo o Istruzioni di calcolo e assegnazione nel C++ o Esempi di istruzioni di assegnazioni o Sottoprogrammi procedure e funzioni o I sottoprogrammi nel linguaggio C++ o Istruzioni per il controllo di sequenza o Istruzioni di controllo non strutturate (leggere) o Riepilogo Le Istruzioni Strutturate (Parte Seconda : Fondamenti di Programmazione, Cap. V TUTTO) o La programmazione strutturata o Il costrutto sequenza o Costrutti di selezione o Esempi di istruzione di selezione o Costrutti di iterazione o Esempi di strutture di iterazione o Equivalenza dei programmi o Altri costrutti per il controllo di sequenza o Modalità di scrittura o Riepilogo Programmi con struttura di selezione (Parte Seconda : Fondamenti di Programmazione, Cap. VI TUTTO) o Caratteristiche de programmi o Uso di sottoprogrammi o Problemi ed algoritmi o Esempi di programmi semplici o Esempio di programmi con strutture di selezione o Esempi di sottoprogrammi Programmi con cicli (Parte Seconda : Fondamenti di Programmazione, Cap. VII TUTTO tranne parr. 5, 6, 7, 8, 9 e 10) o Generalità o Schemi di programmi con cicli ripetitivi o Cicli ripetitivi: esempi introduttivi o Cicli ripetitivi: tabellazione di funzioni Programmi con array (Parte Seconda : Fondamenti di Programmazione, Cap. VIII parr. 1, 2, 3, 4) o Introduzione o Elaborazione di vettori o Elaborazione su vettori. Esempi o Elaborazione su matrici. Esempi o Ordinamento di vettori: algoritmi selection sort, bubble sort, insertion sort. Programmi con files (Slides distribuite al corso) o L’input-output su file o La libreria fstream.h o Le classi ifstream e ofstream o Esempi di semplici programmi C++ che utilizzano files Struttura dei programmi (Parte Seconda : Fondamenti di Programmazione, Cap. XIII TUTTO) o I linguaggi di programmazione o Compilatori, interpreti e supporto al run time o Il ciclo di vita di un programma o Le unità strutturali di un programma o Portata, visibilità e tempo di legame o Ciclo di vita delle variabili o Struttura del programma o Struttura dei programmi C++ o Preelaborazione del testo origine: il caso del C++ Sviluppo dei programmi (Parte Seconda : Fondamenti di Programmazione, Cap. XIV TUTTO) o Ambiente di sviluppo del software o Le fasi di sviluppo del programma o La documentazione dei programmi o Sviluppo dei programmi basato sulla documentazione o Uno schema di documentazione dei programmi o Errori di programmazione o Errori nei programmi o Tecniche per limitare gli errori Rappresentazione e codifica dei dati (Parte Terza: Fondamenti di Architettura, Cap. III TUTTO) o La funzione intero ed il resto in modulo o Il bit: tipo elementare e misura dell’informazione o La codifica o Rappresentazione in macchina dei dati o Il bit: tipo atomico assoluto. Il flip-flop o Codifica in bit diretta ed indiretta o Codici ridondanti. Il bit di parità o Il sistema di numerazione posizionale o La numerazione binaria. Il bit come cifra binaria o Le numerazioni ottale ed esadecimale o La numerazione decimale. Sistemi BCD o Conversione di base o Rappresentazione dei caratteri. Codice ASCII Rappresentazione dei numeri ed elementi di aritmetica (Parte Terza: Fondamenti di Architettura, Cap. IV parr. da 1 a 7, 10, 11) o Rappresentazione dei numeri. Generalità o Rappresentazione dei numeri naturali o Aritmetica dei numeri naturali o Rappresentazione in segno e modulo o Classi dei resti modulo-M o Rappresentazione dei numeri negativi in complementi o Rappresentazione in complementi alla base o Rappresentazione dei frazionari o Virgola fissa e virgola mobile