Fondamenti di Informatica A 1999/2000
Contenuti
- Introduzione generale. Introduzione al Corso, testi, modalita’ di esame.
- Concetti fondamentali di Internet, web, HTML.
- Il web per la interazione docente-studenti.
- Generalità sull'elaboratore dal punto di vista dell'utente. Sistema operativo.
- Introduzione alla struttura di un elaboratore. CPU, periferiche, memoria. Memorie di massa: caratteristiche e tipi principali. Memoria centrale: RAM, ROM. Il software e il sistema operativo. Classificazione dei sistemi operativi. Il software di comunicazione e il software applicativo.
- Classificazione dei sistemi operativi e ambienti di programmazione.
- Architettura di un elaboratore: CPU, memoria, periferiche. CPU: unità di controllo, ALU, registri. Gerarchia delle memorie, memoria cache. Ciclo fetch / decode / execute. Indirizzamento della memoria: instruction register e program counter.
- Il problema del progetto: dal problema all'algoritmo. Algoritmi e loro proprietà. Algoritmi equivalenti.
- Algoritmi, macchine, linguaggi. La macchina di Turing. Universal Turing Machine come interprete di un linguaggio. UTM e macchina di Von Neumann: computazione e interazione. Linguaggi di coordinazione.
- Linguaggi di alto livello: generalità. Diverse sorgenti: linguaggi imperativi, logici, funzionali.
- Linguaggi, grammatiche e macchine per riconoscere linguaggi. Il concetto di grammatica formale e grammatica BNF. Regole di produzione e alberi sintattici. Esempi.
- Il linguaggio C: generalità. Costanti e tipi predefiniti. Il concetto di espressione. Operatori e operandi: una duplice classificazione. Espressioni aritmetiche, relazionali, logiche e condizionali. Priorità e associatività degli operatori. Ordine di valutazione degli operandi come regola semantica. Riassunto degli operatori.
- Grammatica formale delle espressioni aritmetiche: grammatica ricorsiva a sinistra e albero sintattico di una espressione. Controesempi: grammatica non ricorsiva e grammatica ricorsiva a destra.
- Struttura di un programma C: il main. Il concetto di variabile: L-value e R-value. Definizione di variabili in C. Espressioni che contengono variabili. Due esempi (il problema della conversione Celsius / Fahrenheit e il problema del triangolo) dalla specifica, al progetto, alla codifica in C.
- Costruzione di un’applicazione: compilazione, collegamento. Librerie di sistema. La costruzione manuale e gli ambienti di sviluppo Djgpp/Rhide e TurboC. Il concetto di progetto. Progetti in Djgpp e in Turbo C. Il debugger. Esempi di sessione passo-passo dalla scrittura, alla costruzione, all’esecuzione con il debugger dei due programmi sopra sviluppati.
- Funzioni in C. L’approccio funzionale. Record di attivazione.
- Progetti in C. Progetti su più file e preprocessore.
- Iterazione
- Procedure
- Pre-processore e #define
- Array e stringhe
- Numeri
- I/O in C
- File. File binari e di testo in C
- Tipi. Tipi di dato astratto (ADT)
- Allocazione dinamica della memoria
- CGI e HTML
- Complessità e algoritmi di ordinamento
- Computabilità e linguaggi
- Introduzione alla programmazione a oggetti
- Introduzione al linguaggio Java. Architettura, classi, funzioni statiche. Il main. Esempi. Classi e oggetti: l’operatore new. Riferimenti a oggetti.
- Uso dei riferimenti in Java. Il costruttore. Tipi primitivi in Java vs. oggetti. Riferimenti e passaggio dei parametri. Stringhe in Java. Array in Java.
- I package in Java
- Oggetti composti: concetto ed esempio (l’Orologio a partire dal Counter).
- Progettazione incrementale: il principio di embedding e la delegazione. Esempio: dal Counter al Counter2 con decremento. Limiti di questo approccio.
- L’ereditarietà in Java. Esempi. Polimorfismo e late binding.
- Ereditarietà: tassonomie. Object e i suoi metodi. Classi finali. Esercizio di specializzazione: il componente Finestra.
- Eccezioni in Java. Rudimenti di grafica: uso di un componente già pronto. Overloading e specializzazione di componenti.
- Il package Swing: generalità, JFrame, JPanel. Disegno di linee e semplici forme geometriche. Componenti attivi. Eventi e ascoltatori degli eventi. JLabel, JButton, JTextField. Esempi.
- Interfacce in Java: esercizio reali/complessi.
- Il package Swing: JTextField e JCheckBox. JRadioButton. Esercizi applicativi. Una piccola calcolatrice.
- Applet in Java. Storia, differenze con le applicazioni, esempi. Il problema della versione della machcina virtuale e l’HTML converter.
- Il package di I/O: stream di byte e stream di caratteri. Reader e writer. I/O da file: esempi. I/O da console. Esempi.
- Il package di rete: URL e l’accesso a siti web. Il concetto di socket. Esempi di applicazioni client/server via socket.