UNIVERSITÀ DI NAPOLI “FEDERICO II” DIPARTIMENTO DI INGEGNERIA ELETTRICA E DELLE TECNOLOGIE DELL’INFORMAZIONE CORSO DI LAUREA IN INGEGNERIA INFORMATICA Fondamenti di Informatica N-Z A.A. 2016/17 1. L’INFORMAZIONE E LE SUE RAPPRESENTAZIONI: L’informatica ed il mondo moderno; il concetto di “informazione”; rappresentazione e codifica dell’informazione, la rappresentazione digitale; numeri in binario; rappresentazione dei numeri relativi; rappresentazione dei numeri reali; gli operatori booleani; convergenza digitale; codifica delle informazioni testuali. 2. INTRODUZIONE ALGEBRA DI BOOLE: Logica proposizionale. Connettivi logici. Algebra di Boole. Proprietà. Funzioni booleane e tabelle di verità. Teorema di De Morgan;Porte logiche, esempio di circuito combinatorio (Half Adder) 3. IL MODELLO DI ESECUTORE: Processi e processori; Modello di Von Neumann; Le memorie; La CPU; Il bus; Il clock; Firmware, software e middleware; Evoluzione del modello di Von Neumann; Il modello astratto di esecutore; I microprocessori; Un modello di processore; 4: ALGORITMI E PROGRAMMI: Informatica come studio di algoritmi; La soluzione dei problemi: calcolabilità degli algoritmi; Automi a Stati Finiti; Macchina di Turing; Macchina di Turing Universale; Tesi di Church e Turing. La trattabilità degli algoritmi: complessità computazionale; La descrizione degli algoritmi; Sequenza statica e dinamica di algoritmi; I linguaggi di programmazione; I metalinguaggi: BNF; La programmazione strutturata e la progettazione dei programmi di piccole dimensioni: cenni. 5. LA STRUTTURA DEI PROGRAMMI: Le frasi di un linguaggio di programmazione. Strutture di Controllo. Potenza espressiva e Teorema di Bohm-Jacopini. Modularità e parametrizzazione del codice; Sottoprogrammi: procedure e funzioni. Scambio dei parametri. 6. I DATI: Informazione e dato; La classificazione dei tipi; I tipi atomici; tipo booleano; tipo carattere; tipo intero; tipo reale: tipi strutturati. Array monodimensionali; Matrici; Il tipo stringa di caratteri; Il record; Array di record; puntatori; file testo, puntatori. 7. ASTRAZIONE SUI DATI: Il tipo pila; Lista a puntatori 8. IL LINGUAGGIO C++: Introduzione: Le caratteristiche generali del linguaggio C; Programmi e gestione tipi; typedef; funzioni; Meccanismi di sostituzione per valore, per riferimento e per indirizzo; array; struct;; libreri per la gestione delle stringhe di caratteri; Puntatori; Scope e Visibilità, tempo di legame (binding), Variabili globali e locali: Classi di memorizzazione; Specifica dell’algoritmo in C: Strutture di Controllo; La gestione dell’I/O in C++; File testo in C++. 9. ALGORITMI DI BASE IN C++:Inserimento in un vettore.; Eliminazione in un vettore; Eliminazione di una colonna da una matrice; Eliminazione di una riga da una matrice; Ricerca incerta (o sequenziale); Ricerca binaria; La ricerca del valore massimo in un vettore.; La posizione del valore minimo in un vettore; Ordinamento di un vettore con i metodi selection sort, insertion sort e ”bubble sort”; Esempi di programmi completi in C++: gestione di un elenco telefonico. 10. LA TRADUZIONE DEI PROGRAMMI: Il processo di traduzione; La compilazione;collegamento; Il caricamento; Gli interpreti; La verifica della correttezza dei programmi; Gli ambienti integrati; L’ambiente DEV-C++; Progettazione ed implementazione di librerie di programmi. LIBRI CONSIGLIATI Chianese, Moscato, Picariello - Alla scoperta dei fondamenti dell’informatica: un viaggio nel mondo dei bit, Liguori editore Burattini, Chianese, Moscato, Picariello, Sansone - Che C serve, Maggioli Editore