DEIS - Università di Bologna Laboratorio d'Informatica Avanzata

Fondamenti di Informatica 1


Lucidi delle Lezioni

I lucidi delle lezioni sono disponibili in formato Acrobat PDF, che ne consente la visualizzazione e la stampa su qualsiasi computer e su qualsiasi stampante senza perdita di qualità.

File Descrizione
-Presentazione corso Considerazione generali sul corso
1-Introduzione Introduzione all'Informatica. Architetture a rete. Internet e servizi di rete.
2-Hardware e Software Generalità sull'elaboratore, hardware e software, memorie di massa, sistemi operativi.
3-Architetture La struttura interna di un elaboratore e l'architettura di Von Neumann. Ciclo fetch/decode/execute. ALU, unità di controllo, registri. Memoria centrale e indirizzamento. Periferiche. Gerarchie di memorie e memorie cache.
4-Algoritmi e Computabilità Il concetto di algoritmo e sue proprietà. Algoritmi equivalenti. Automa esecutore. Modelli matematici e gerarchia di macchine la Macchina di Turing. Esempio di programma con la TM. Problema risolubile, funzione computabile, computabilità. Funzioni non computabili l'halt della TM. Insiemi ricorsivamente enumerabili e insiemi ricorsivi. Insiemi ricorsivi e linguaggi di programmazione.
5-Progetto del Software e Linguaggi Progetto e sviluppo del software metodologie. Linguaggi di alto livello, linguaggi come sistema matematico. Sintassi e sematica. Linguaggi e grammatiche concetto di grammatica, notazione BNF e EBNF. Alberi sintattici e diagrammi sintattici. Grammatiche, Linguaggi e Macchine per riconoscere linguaggi. Classificazione di Chomsky.
6-Linguaggio macchina Un semplice linguaggio macchina di esempio codice operativo, operandi, tipi di indirizzamento. Micro-istruzioni. Esempio di programma in l.m. Il linguaggio assembler e l'assemblatore. Traduzione dei linguaggi di alto livello in linguaggio macchina compilatori e interpreti.
7-Introduzione al C Progetto e Linguaggio. Linguaggi di computazione e linguaggi di coordinazione. Il linguaggio C. Il concetto di espressione. Espressioni in C espressioni aritmetiche, logiche, relazionali, condizionali. Il concetto di variabile, L-Value e R-Value. Espressioni con variabili. Espressione di assegnamento ed effetti collaterali. Associatività e priorità degli operatori. Grammatica delle espressioni aritmetiche alberi di derivazione. Costanti in C. Esempi di programmi C basati su espressioni. Il concetto di istruzione e di controllo. Teorema di Jacopini-Bohm. Istruzioni di composizione (blocco), di scelta e di iterazione. Esempi ed esercizi.
-Tipi in C Tipi di dato astratto. Classificazione dei tipi di dato. Tipi predefiniti int, char, float, double e loro varianti. Compatibilità fra tipi di dato. Regole di conversione implicita. Compatibilità di tipo e assegnamento. Tipi definiti dall'utente typedef. Tipi enumerativi. Il tipo boolean. Equivalenza fra tipi equivalenza nominale ed equivalenza strutturale. Unicità e ordine di definizione degli identificatori.
9-Progetti e Preprocessore C Compilazione e collegamento. Il concetto di progetto. Progetti in Rhide e in Turbo C++. Il pre-processore C motivazioni e sintassi. Esempio uso di gcc per vedere la fase di pre-processing. Le macro semplici, parametriche, con effetti collaterali.
1-Funzioni in C Architetture multi-componente. Il modello cliente/servitore. Costruzione di componenti software funzioni e procedure. Comunicazione fra componenti passaggio dei parametri. Dichiarazione e definizione di funzioni e procedure. Passaggio dei parametri per valore e per riferimento. Esempi. Funzioni e macro, analogie e differenze.
11-Progetti su più file Progetti su più file. Compilazione e collegamento. Il concetto di header file. Esempi. Problemi header file con definizioni di tipo. Inclusione multipla. Uso delle direttive al preprocessore per risolvere problemi di inclusioni multipla.
12-Variabili globali Variabili globali definizione. Esempi e problemi in progetti con inclusione multipla. Dichiarazione di variabili globali. Globalità e protezione variabili statiche. Esercizi.
13-Ricorsione Ricorsione. Definizione di funzioni ricorsive. Esempi. Ricorsione lineare e non lineare. Ricorsione tail. Iterazione e ricorsione analogie e differenze. Esercizi.
14-Record di attivazione Il modello a run-time della macchine virtuale C. Record di attivazione delle funzioni. Passaggio per valore e per riferimento. Link dinamico. Esempi ed esercizi.
15-Puntatori Realizzazione in C del passaggio per riferimento la visibilità della macchina sottostante. Gli operatori di estrazione di indirizzo e dereferenziamento. Puntatori definizione ed esempi. Uso di puntatori in procedure con parametri da passare per riferimento.
16-Tipi strutturati Tipi strutturati vettori e strutture. Vettori il concetto, l'uso, la realizzazione in C il passaggio dei vettori come parametri a funzioni. Stringhe di caratteri. Esempi ed esercizi. Strutture concetto, uso, esempi.
17-Libreria di I/O Coordinazione e computazione la libreria di I/O standard. Funzioni per l'I/O a carattere, a linee, formattato. Le specifiche di formato. Esempi ed esercizi. Cenni alle altre librerie standard del C.
Numeri La rappresentazione dei numeri.
1-Esercizi vari Esercizi vari in C su molti aspetti fin qui visti.
19-Conversioni Esercizi di codifica degli algoritmi di conversione numero/stringa/numero per numeri interi senza segno e con segno.
2-Esercizi record di attivazione Ulteriori esercizi sui record di attivazione.
21-Allocazione dinamica Allocazione dinamica della memoria malloc() e free(). Vettori dinamici. Esercizi.
22-Progetto di un ADT Progetto di un tipo di dato astratto definizione, operazioni primitive e non primitive, categorizzazione delle operazioni costruttori, selettori, trasformatori. Il caso dell'ADT complex passo per passo. Cambio di rappresentazione e impatto sul progetto.
23-Complessità Complessità di un algoritmo delimitazioni superiori e inferiori al comportamento asintotico. Complessità di un problema. Istruzione dominante. Esempi.
24-Algoritmi di ordinamento e ricerca Algoritmi di ordinamento naive sort, bubble sort, insert sort, quick sort, shell sort e valutazione comparativa di complessità. Algoritmi di ricerca ricerca binaria. Esempi ed esercizi.
25-Gestione dei file Gestione dei file in C apertura, chiusura. File di testo e file binari. Primitive di I/O da file di testo. Esempi. Primitive di I/O da file binari esempi. Riflessioni su analogie e differenze fra file di testo e file binari, con particolare riferimento alle conversioni numeriche.
26-Matrici e tabelle Matrici sparse. Tabelle con funzioni di accesso. Tabelle hash.
27-Liste Il concetto di lista. Realizzazione sequenziale e collegata. Implementazione tramite vettori e tramite strutture dinamiche. L'ADT lista primitive fondamentali e funzioni derivate. Discussione e implementazione sia in modo ricorsivo che in modo iterativo.
2-Esercizio liste Esercizio d'esame completo sulle liste.
29-Altri tipi di liste Liste bidirezionali e multiple
3-Stack e code Altre strutture dati stack e code (circolari), intese sia come ADT sia come singole astrazioni di dato. Implementazioni con vettori e con liste. Il tema della genericità il costrutto union e i puntatori void*. Uso dei void* per creare funzioni generiche e per costruire contenitori generici.
31-Esercizio l'ADT insieme Il tipo di dato astratto "insieme" costruito mediante vettore caratteristico e mediante liste.
32-Grafi e alberi Grafi definizione, proprietà. Alberi definizione, proprietà, primitive. Alberi binari e loro peculiarità. Alberi binari di ricerca. Esempi.
33-Esercizio alberi Esercizio d'esame completo sugli alberi.
34-Compiti d'esame Due compiti d'esame discussi e risolti passo passo.

Se non disponi del programma per visualizzare (e stampare) i file PDF, puoi prelevarlo qui, cliccando col tasto destro del mouse e scegliendo l'opzione Salva oggetto con nome

ATTENZIONE salvando il secondo e il terzo file, RIFIUTATE il nome acrobat3.htm (se proposto all'atto del salvataggio), e ASSICURATEVI invece che i due file si chiamino, rispettivamente, acrobat3.r e acrobat3.r1

Per installare, copiare i tre file su altrettanti dischetti, e eseguire il programma acrobat3.exe (specificando un nome di cartella temporanea alla richiesta).
Il programma di installazione creerà il file acroread3.exe nella cartella specificata.
Per completare l'installazione, eseguire il programma acroread.exe e seguire le istruzioni a video.

Acrobat Reader 3.1 per altre piattaforme è disponibile sul sito Adobe