Programma del corso di Fondamenti di Informatica Anno Accademico 2000/2001 1. Informatica generale - Cenni introduttivi. Automazione e informazione: concetti generali e cenni storici. L'informatica come strumento per la soluzione di problemi. Il concetto di algoritmo. Rappresentazione ed elaborazione delle informazioni. - Circuiti logici programmabili. Reti di interruttori ed espressioni logiche. Circuiti programmabili. Dati e istruzioni. L'unità aritmetico-logica (ALU) di un personal computer. - Rappresentazione delle informazioni. Numeri interi: codifica binaria e conversione di base. Numeri razionali: rappresentazione in virgola mobile e suoi limiti. Caratteri: codice ASCII. Immagini: digitalizzazione, pixel, risoluzione, codifica. Segnali digitali e analogici. Discretizzazione: campionamento e quantizzazione. - Sistemi per l’elaborazione delle informazioni. Architettura di un sistema informatico: hardware e software. Architettura dell'hardware: microprocessore, memoria principale, memoria di massa, periferiche, bus, dispositivi di interfaccia (input/output). Architettura del software: sistema operativo, programmi di utilità, applicazioni. Prestazioni di un calcolatore elettronico. Processi: programmi in esecuzione. - Gestione della memoria. Memoria principale: il concetto di cache, struttura gerarchica della memoria, il concetto di memoria virtuale. Memoria di massa: l'astrazione di file system. Esplorazione e gestione del file system in ambiente MS Windows 95. - Applicazioni. Editor, word processor, foglio elettronico, database. Uso elementare di comuni programmi applicativi: MS WordPad per la creazione di file di testo, MS Word per l’elaborazione di testi formattati (esempio applicativo ed esercitazione libera), MS Excel per la rappresentazione e l’elaborazione di dati (esempio applicativo ed esercitazione libera). - Banche dati. Definizione generale. Database relazionali: tabelle, record, campi. Chiavi e indici. Forme di indicizzazione ed efficienza dei database: tabelle non ordinate, ordinamento fisico, ordinamento logico a lista, ordinamento logico ad albero binario. Inserimento, ricerca e aggiornamento dei dati. Ridondanza e coerenza. Progetto di database: forme normali e normalizzazione di I, II e III tipo (esercitazione libera). - Reti di calcolatori. Descrizione strutturale (topologica) e funzionale. Reti commutate e dedicate. Commutazione di circuito e di pacchetto. Velocità di trasmissione. Protocolli di comunicazione: livelli ISO-OSI. Gerarchia di reti. Reti di reti. Reti locali e globali. - Internet. Cenni storici. Domini e indirizzi. Connessione a Internet attravesro MoDem. Servizi Internet e loro modalità di funzionamento: trasferimento di file (esempio pratico), telnet (esempio 1 pratico), posta elettronica, world-wide web. Client e server. Caratteristiche del World Wide Web: ipertesto multimediale, aperto e distribuito. Cenni di HTML. - Sicurezza in Internet. Riservatezza della comunicazione, autenticità dei messaggi, identità degli interlocutori. Crittografia a chiave pubblica. Certificati e firme digitali. Commercio elettronico: transazioni elettroniche con carta di credito, denaro elettronico. 2. Elementi di programmazione in C. - Introduzione. Considerazioni economiche. Algoritmi: pseudolinguaggi e diagrammi di flusso. Dominio di applicazione di un algoritmo. Linguaggi di programmazione formali. Compilatori e interpreti. Programmi. Variabili, costanti, espressioni. Valutazione di espressioni. Esecuzione di un programma. Complessità, efficienza ed equivalenza. - Linguaggio minimo. Dati e operatori. Istruzioni di input e output. Istruzioni di assegnamento. Istruzioni condizionali. Cicli. Istruzioni composte. Macroistruzioni. - Programmazione strutturata. Individuazione di sotto-problemi comuni. Procedure e funzioni: dichiarazione, definizione e invocazione. Parametri formali e valori attuali. Passaggio di parametri d’ingresso e valori di ritorno. Stili di programmazione: top-down, bottom-up. Librerie di funzioni. Estensioni del linguaggio. - Tipi di variabili e puntatori. Allocazione di memoria. Tipi di variabili e uso della memoria. Puntatori. Uso dei puntatori nel passaggio di parametri a funzioni e procedure. - Introduzione al linguaggio C. Ciclo di vita di un programma: progetto, editing, compilazione, linking, esecuzione, debugging, manutenzione. Codice sorgente, file oggetto, programma eseguibile. Struttura di un programma C. Programma principale (main), funzioni, librerie. - Elementi del linguaggio. Dichiarazione di variabili: tipi. Librerie standard. Funzioni printf() e scanf(). Construtti if(), for() e while(). Uso di puntatori in C: operatori unari & e *. Vettori mono e multi-dimensionali: dichiarazione e uso. Testi consigliati: - Marco Boni, Informatica, Apogeo, Milano, 1996 - Dispense distribuite dal docente Modalità d’esame La valutazione del livello d’apprendimento è basata sulle esercitazioni individuali svolte, sull’esito di una prova scritta e sull’esito di un esame orale. Le esercitazioni, a tema libero, prevedono l’uso di comuni strumenti software di produttività (quali MS Word e MS Excel) disponibili sui computer del laboratorio. 2