Informatica 1 per Matematica 2002/2003
Programma del Corso
Per materiale didattico e altre informazioni
si consulti anche il sito del corso in
questo portale.
- 10 Aprile 2003. Introduzione al corso e ai
sussidi didattici. Breve Storia del Calcolatore.
Abaco, Regolo, calcolatori meccanici ed elettromeccanici.
Calcolatori di prima, seconda,
terza e quarta generazione.
- 11 Aprile 2003.
Il concetto di Algoritmo.
Etimologia del nome e definizione informale.
I 10 punti caratterizzanti la nozione. Esempi
di algoritmi. Utilizzo del teorema di Cantor per
evidenziare limiti della nozione.
- 15 Aprile 2003.
Diagrammi di flusso.
Sintassi e semantica intutiva. Esempi di algoritmo: massimo tra
due numeri, scambio di variabili, algoritmo naive
per il MCD e algoritmo di Euclide. Rappresentazione
testuale dei diagrammi di flusso.
- 24 Aprile 2003.
Strutture while, if e repeat.
Simulazione delle ultime due mediante la prima.
Diagrammi strutturati e fortemente strutturati.
Il Teorema di Böhm-Jacopini.
Linguaggi di Programmazione: Panoramica generale.
- 2 Maggio 2003.
Compilazione ed Interpretazione.
La Programmazione Imperativa usando Java.
Sintassi: Parole riservate, Identificatori, Variabili,
Tipi Primitivi, Costanti, Letterali.
- 6 Maggio 2003. LABORATORIO:
Stesura, compilazione, ed esecuzione di semplici programmi Java.
Programmi per l'input e l'output.
- 6 Maggio 2003. LABORATORIO:
Massimo di due e tre numeri,
calcolo del fattoriale e del MCD con l'algoritmo di Euclide.
- 8 Maggio 2003.
Operatori ed Espressioni e loro tipi.
Istruzione di Assegnamento. Struttura di
un programma Java mediante grammatica BNF.
Commenti in Java.
Sequenza, blocco, istruzione if-(then)-else,
- 9 Maggio 2003.
Istruzioni while e for. Esempi:
Somma e Media di una sequenza di numeri di lunghezza non nota
a priori.
Test di Primalità. Vettori e matrici.
Dichiarazione, allocazione ed uso. Esempi.
- 13 Maggio 2003. LABORATORIO. Test sui tipi delle espressioni
e degli assegnamenti. Realizzazione dei due programmi visti nella
lezione precedente (Somma e media e Primalità).
- 13 Maggio 2003. LABORATORIO.
Esercizi con il ciclo for, stampa di semplici figure bidimensionali.
Accettazione di vettori e loro stampa. Calcolo di massimo e minimo
degli elementi di un vettore e/o di una matrice.
Stampa di matrici bidimensionali.
Integrazione con l'esercizio sopra di stampa figure bidimensionali.
- 15 Maggio 2003.
Sottoprogrammi, procedure, funzioni, Metodi.
Definizione ed Uso dei metodi in Java. Parametri formali e
parametri attuali. Passaggio parametri per valore.
Passaggio parametri
per indirizzo. Esempi ed esercizi.
- 16 Maggio 2003.
Esempio: metodo per il MCD. Variabili locali e globali (cenni).
Definizioni ricorsive. Principi generali.
Definizione ricorsiva in Java del Fattoriale e dell'algoritmo
di Euclide.
Descrizione ricorsiva del problema
della torre di Hanoi e sua definizione in Java.
- 19 Maggio 2003. LABORATORIO. Realizzazione dei programmi
visti a lezione nelle 2 lezioni precedenti.
Due ulteriori
esercizi:
- 20 Maggio 2003. Esercitazione.
Descrizione della successione di Fibonacci, sua definizione
ricorsiva in Java. Studio dei valori e del numero di chiamate
ricorive. Ottimizzazione del codice mediante memorizzazione di
risultati parziali.
Cenno di soluzione degli esercizi sui "quadrati ricorsivamente
annidati". Algoritmi su interi "lunghi".
- 21 Maggio 2003.Criteri di valutazione degli algoritmi:
comprensibilità, chiarezza, efficienza.
Misura del tempo di esecuzione: benchmarking e analisi.
Dipendenza dalla dimensione (e non dal valore!)
dell'input. Confronto tra complessità
lineare, n log n, quadratica e esponenziale.
Effetti dell'evoluzione dell'HW sulle varie
famiglie di algoritmi.
Limiti superiori al tempo d'esecuzione
lgoritmi. La notazione "O" grande.
- 23 Maggio 2003. Principali risultati
ed esempi della notazione "O" grande.
Calcolo della complessità degli algoritmi:
assunzione di tempo costante per assegnamenti,
input/output, e test in assenza di chiamate di funzione.
Tempo per istruzioni if-else, for, e while.
Esempi ed esercizi.
Calcolo della complessità di metodi
non ricorsivi.
- 26 Maggio. Esercitazione in Laboratorio.
- 27 Maggio. Definizione della relazione di ricorrenza ed esempi
di risoluzione per il calcolo della complessità di metodi
ricorsivi.
Esempio: Ricerca lineare e binaria di un elemento di un vettore.
- 29 Maggio. Esempio: Ordinamento di un vettore:
bubble sort e merge sort. Esempio. Raggiungibilità
in un grafo.
Questionario sulla didattica.
- 30 Maggio.
Rappresentazione dell'Informazione.
Rappresentazione di numeri interi: senza segno,
con modulo e segno, in complemento a due ed
in eccesso k. Esempi di operazioni in complemento a 2.
Rappresentazione di numeri "reali":
IEEE floating point. Limiti e errori.
- 3 Giugno.
Rappresentazione di caratteri:
codice ASCII e codice UNICODE.
Rappresentazione di suoni. Campionatura. Esempi pratici.
Rappresentazione degli spartiti: MIDI.
Rappresentazione di immagini.
Bitmap: bianco e nero, livelli di grigio e
colori RGB (red, green, blue).
- 5 Giugno.
Cenni sulla compressione di immagini (formati GIF e JPG).
Architettura del calcolatore: gerarchia di
macchine astratte.
Architettura di Von Neumann e a Bus.
La CPU: le sue parti principali e il ciclo
"accedi, decodifica, esegui".
La memoria principale. Composizionalità della memoria.
Bus Dati e Bus Indirizzi.
- 6 Giugno.
Memoria Cache: memorizzazione
ed accesso ai dati.
La Memoria Secondaria. Dischi magnetici e Ottici.
Principali caratteristiche.
Modalità d'esame.
Testo di Riferimento
- Aho-Ullman. Fondamenti di Informatica. Zanichelli.
Altri testi o siti di appoggio e indice delle lezioni in cui
sono rilevanti
Home page