I
settimana |
Argomento
|
1
trasp/p col .pdf b/n .pdf |
6
trasp/p col .pdf b/n .pdf |
27-Sett-2005 I
|
Introduzione ai corsi di laurea della classe 9 - Ingegneria dell'informazione (prof. S. Zampieri). Presentazione del corso di Fondamenti di Informatica 1. Cenni storici sull'evoluzione dell'informatica. Elaboratore, programmi, programmazione, algoritmi. Algoritmo per il calcolo dei numeri primi: il crivello di Eratostene. | ||
28-Sett-2005 II
|
Il modello di Von Neumann. CPU, ALU, clock, registri, il registro contatore di programma, ciclo fetch-decode-execute.La memoria primaria, memoria ROM e RAM. Memoria secondaria, dispositivi a tecnologia magnetica e ottica. Il bus, linee dati, linee indirizzi, bus di controllo. I dispositivi di ingresso/uscita. Istruzioni macchina, linguaggio assembly e programma assemblatore. Linguaggi ad alto livello, programma compilatore | ||
29-Sett-2005 III
ing. Roberto Valli |
Introduzione al laboratorio. Cenni al sistema operativo Linux. Il File System di Linux. Interprete dei comandi (shell) e comandi principali. | ||
30-Sett-2005 IV anticipo |
Il
linguaggio Java, primo programma
Hello.java. Standard Output : System.out.
Analisi
del
programma. Errori sintattici e logici. Messaggi di errore
del
compilatore. Processo di produzione di un programma. Compilazione in
java
e concetto di bytecode. Interprete java. Linguaggi
compilati e linguaggi
interpretati a confronto. Struttura lessicale e lessemi. |
II
settimana |
Argomento
|
1
trasp/p col .pdf b/n .pdf |
6
trasp/p col .pdf b/n .pdf |
03-Ott-2005 V
|
La rappresentazione dell'informazione. Notazione posizionale in base n per i numeri naturali. Codifica dei numeri naturali in base binaria. Conversione dei numeri naturali da base decimale a binaria e viceversa. Conversione della parte frazionaria dei numeri razionali. Rappresentazione dei numeri interi in bit di segno e modulo e rappresentazione in complemento a due. Somma algebrica fra numeri interi in complemento a due. Condizioni di trabocco (overflow). Inverso rispetto alla somma di un numero intero in complemento a due. Rappresentazione dei numeri razionali in virgola mobile secondo standard IEEE754. Distanza fra due numeri razionali rappresentabili successivi in singola precisione. Codifica dei testi: rappresentazione dei caratteri secondo lo standard Unicode (http://www.unicode.org/) e ASCII. Il sottoinsieme Control and Basic Latin del codice Unicode.Codifica delle immagini: cenni ai formati gif, jpeg, mpeg. | ||
04-Ott-2005 VI
|
Linguaggio
Java - Tipi
di dati fondamentali int e double.
Variabili,
costanti: definizione,
inizializzazione. Enunciati di assegnazione. Altri tipi di dati
fondamentali: byte,
short, long, float. Commenti. |
||
05-Ott-2005 VII
|
Cenni alle classi involucro Byte, Short, Integer, Long, Float e Double del pacchetto java.lang della libreria standard. Coversione fra tipi di dati fondamentali. Operatori aritmetici: +, -, *, /, %. Divisione intera e in virgola mobile. L'eccezione java.lang.ArithmeticException. Le costanti della libreria standard Double.NaN, Double.POSITIVE_INFINITY e Double_NEGATIVE_INFINITY. Errori di arrotondamento. La classe java.lang.Math: metodi round(), pow(), sqrt() ecc. La classe java.lang.String. Definizione e inizializzazione di variabili riferimento a oggetti di classe String. Operatore di concatenazione fra stringhe. Metodi della classe String: length(), substring(), toUpperCase(), toLowerCase(). | ||
06-Ott-2005 VIII
|
Il tipo di dati fondamentale char. Il metodo charAt() della classe java.lang.String. Esempi di programmazione con oggetti di classe String. Sequenze di escape: \",\\,\u, \n. Acquisire dati in ingresso ai programmi: i metodi showInputDialog() e showMessageDialog() della classe javax.swing.JOptionPane. Importare le classi. I pacchetti di classi: enunciato import. Il riferimento costante null. Standard Input : System.in. Acquisire stringhe da Standard Input tramite la classe java.util.Scanner. Costruttori Scanner(InputStream in) e Scanner(String str), metodi nextInt(), nextDouble(), next(), nextLine(). Convertire stringhe in numeri: i metodi Integer.parseInt() e Double.parseDouble(), eccezione java.lang.NumberFormatException. Il metodo printf() della classe jav.io.PrintStream e relativi specificatori di formato. Il metodo format() della class String. |
III
settimana |
Argomento
|
1
trasp/p col .pdf b/n .pdf |
6
trasp/p col .pdf b/n .pdf |
10-Ott-2005 IX
|
Convertire
i numeri in stringhe: la famiglia di metodi java.lang.String.valueOf(...).
Notazione java per le costanti numeriche. Discussione delle
esercitazioni del laboratorio. Classi e oggetti. Esempio di classe:
BankAccount. |
||
11-Ott-2005 X
|
Uso delle classi. Variabili riferimento.Oggetto come istanza di una classe: operatore new. Progetto delle classi. Variabili di esemplare. Programmazione della classe BankAccount. Metodi: firme, parametri espliciti. Enunciato return. Specificatori di accesso public e private. Incapsulamento. Costruttori. Parametro implicito: this. | ||
12-Ott-2005 XI
|
Iterazioni.
Ciclo while. Enunciati semplici, composti, blocchi di enunciati.
Operatori relazionali in java: >, >=, <, >=, ==, !=.
Espressioni booleane. Il tipo di dati fondamentali boolean.
Variabili booleane. Costanti booleane true, false.
Operatori booleani in java: !, &&, e
||.
Precedenze degli operatori booleani. Tabelle di verità degli
operatori
booleani &&, ||, !. Leggi di De
Morgan. Decisioni. Enunciato if. Clausola
else.
Alternative multiple. Diramazioni annidate. |
||
13-Ott-2005 |
Lezioni sospese
dalla Facolta' di Ingegneria su mozione del Senato Accademico |
||
14-Ott-2005 XII Recupero lezione del 13-Ott-2005 |
Confronti fra numeri
in virgola
mobile. Confronti fra stringhe: i metodi equals(...),
equalsIgnoreCase(...), compareTo(...)
della classe String. Concetto di ordinamento lessicografico. Ciclo e
mezzo.
Enunciati break
e continue.
Ciclo for. Ciclo do. Esercizi: semplici classi eseguibile che usano
costrutti iterativi e decisionali (EnumeratoreMultipli,
EnumeratoreMultipliAcapo, EnumeratoreMultipliInColonna).
Esempio di programmazione di classi:
la classe
Punto per descrivere un punto nel
piano cartesiano e la sua interfaccia
pubblica. |
IV
settimana |
Argomento
|
1
trasp/p col .pdf b/n .pdf |
6
trasp/p col .pdf b/n .pdf |
17-Ott-2005 XIII
|
Programmare le classi. Invocare un costruttore da un altro costruttore: enunciato this(). Parametri formali e parametri effettivi dei metodi. Passaggio dei parametri nei metodi. Metodi accessori e metodi modificatori. Metodi predicativi. Metodi privati. Visibilita' e ciclo di vita delle variabili locali, di esemplare, parametro. Specificatori d'accesso public, private, protected.Garbage collector. | ||
18-Ott-2005 XIV
|
Scomporre
una stringa in token usando la classe java.util.Scanner;
i metodi predicativi della classe: hasNext(),
hasNextInt(),
hasNextDouble(),
hasNextLine(),
eccezione java.util.NoSuchElementException.
Esempio: contare le parole di un testo. Variabili statiche. Ambito di
visibilita'. Costanti pubbliche statiche. Complementi di sintassi java:
l'enunciato switch,
l'operatore di
selezione. Correzione di alcune domande del test a risposte
multiple di autovalutazione del 17-Ott-2005. |
||
19-Ott-2005 XV
|
Copiare riferimenti a oggetti. Precondizioni dei parametri dei metodi. Lancio di oggetti eccezione da programma: enunciato throw. Asserzioni: enunciato assert. java.lang.AssertionError. Array. Indici. Definizione di un array. Dichiarazione di variabili riferimento ad array. Accesso agli elementi di un array. Dimensione di un array: la variabile pubblica length. Errore di limiti negli array: java.lang.ArrayIndexOutOfBoundException. Inizializzazione di un array. Copia di un array.Il metodo System.arraycopy(). | ||
20-Ott-2005 XVI
|
Array come parametri espliciti dei metodi. Array come dati di ritorno dei metodi. Enunciato for generalizzato. Semplici algoritmi sugli array: ricerca di un elemento particolare, ricerca del minimo e del massimo, cancellazione di un elemento. Inserimento di un elemento. Array riempiti solo in parte. Ridimensionamento di array dinamici. Modello della memoria in java: Java Stack e Java Heap. Re-indirizzamento di standard input e output da sistema operativo |
V
settimana |
Argomento
|
1
trasp/p col .pdf b/n .pdf |
6
trasp/p col .pdf b/n .pdf |
24-Ott-2005 XVII
|
Array
bidimensionali (cenni). Pacchetti. Eccezioni.
Lancio di eccezioni: enunciato throw.
Gestione delle eccezioni: enunciato try/catch .
Eccezioni a gestione facoltativa: RuntimeExceptions.
Eccezioni a gestione obbligatoria: Exceptions.
Esercitazione: un contenitore generico di testo
(AnalizzatoreDiTesto.html, AnalizzatoreDiTesto.java). |
||
25-Ott-2005 XVIII
|
Eccezioni: la clausola throws. Argomenti passati sulla riga di comando. Esempio di uso di array parzialmente riempiti e di ridimensionamento dinamico di array: la classe TextContainer. Esempio di classe di prova TextContainerTester. Rendere eseguibile una classe per prova. L'ambiente integrato di programmazione BlueJ. Prova dei metodi di una classe tramite l'interfaccia BlueJ. | ||
26-Ott-2005 XIX
|
Flussi. Lettura e
scrittura di file di testo in java. Le classi java.io.FileReader,
java.io.FileWriter,
java.io.FileNotFoundException,
java.io.Exception.
Le classi java.io.Scanner
e java.io.PrintWriter
per la lettura e scrittura di righe di testo e di stringhe. Lettura e
scrittura di file binari in java. Le classi java.io.FileInputStream
e java.io.FileOutputStream.
Esempi d lettura/scrittura a righe e a caratteri su file di
testo. Esempi d lettura/scrittura a byte su file binari . |
||
27-Ott-2005 XX
|
Array paralleli: esempio. Ricorsione. Metodo ricorsivo per il calcolo del fattoriale. Ricorsione come algoritmo. Algoritmi ricorsivi e algoritmi iterativi. Caso base e semplificazione dell'invocazione ricorsiva. Ricorsione infinita: java.lang.StackOverflowError. Ricorsione in coda, ricorsione multipla. Esempio di algoritmi ricorsivi: la torre di Hanoi. |
VI
settimana |
Argomento
|
1
trasp/p col .pdf b/n .pdf |
6
trasp/p col .pdf b/n .pdf |
31-Ott-2005 |
Sospensione
delle lezioni |
||
01-Nov-2005 |
Festività |
||
02-Nov-2005 XXI
|
Ordinamento per selezione: algoritmo e codifica. Analisi teorica delle prestazioni. Complessita' temporale e suo andamento asintotico O(n2). Notazione O-grande, Omega-grande, Theta-grande. Ricerca lineare con e senza sentinella: algoritmo, codifica, complessita' temporale e andamento asintotico O(n). Ricerca binaria in array ordinati: algoritmo ricorsivo e iterativo, complessita' temporale e andamento asintotico O(log n). Numeri casuali.: il metodo statico Math.random(), la classe java.util.Random. | ||
03-Nov-2005 XXII
|
Ordinamento per fusione: algoritmo, codifica, complessità temporale e andamento asintotico O(nlog n). Ordinamento per inserimento: algoritmo, codifica, complessita' temporale nel caso migliore O(n), medio O(n2), peggiore O(n2). Confronto fra algoritmi di ordinamento. Cenni alle espressioni canoniche (regular expressions). Il metodo useDelimiter(String pattern) della classe java.util.Scanner. Esercitazione. |
VII
settimana |
Argomento
|
1
trasp/p col .pdf b/n .pdf |
6
trasp/p col .pdf b/n .pdf |
07-Nov-2005 XXIII
|
Ereditarieta', clausola extends. Riutilizzo del codice. Superclassi e sottoclassi. Sovrascivere i metodi della superclasse. La superclasse universale java.lang.Object. La rappresentazione UML. Ereditare metodi. Sovrascivere metodi. Il riferimento implicito super. Sovrascrivere il metodo String toString() della classe java.lang.Object. I costruttori della sottoclasse. Invocazione dei costruttori della superclasse: super(...). Questionario a risposte multiple effettuato nel laboratorio del 4-nov-2005. | ||
08-Nov-2005 XXIV
|
Conversione fra riferimenti. Conversioni forzate: java.lang.ClassCastException. Polimorfismo: selezione anticipata e posticipata. Operatore booleano instanceof. Definire eccezioni. Ordinare stringhe. Ordinare oggetti. Interfacce. Interfaccia java.lang.Comparable: firma del metodo int compareTo(Object obj). | ||
09-Nov-2005 XXV
|
Requisiti per la realizzazione dell'interfaccia comparable. Interfaccia Comparable parametrica in java 5.0. Algoritmi di ordinamento per oggetti Comparable. Sovrascrivere il metodo equals(). Compatibilita' dei metodi equals() e compareTo() negli oggetti Comparable. Metodi della classe java.util.Arrays. Esempio di codifica di una classe che realizza l'interfaccia Comparable: la classe Studente. Esempio di contenitore generico di oggetti ordinati di tipo Comparable. | ||
10-Nov-2005 XVI
|
Ordinare oggetti secondo criteri di ordinamento multipli. Esempio: la classe StudenteEsteso. Tipi di dati astratti e strutture dati. ADT Pila: interfaccia Stack. Realizzazione con array riempito solo in parte a lunghezza fissa o dinamicamente ridimensionabile. Specificatore di accesso protected. Prestazioni dei metodi dell'ADT Stack realizzato con array riempito solo in parte. Analisi ammortizzata in caso di realizzazione con array ridimensionabile. Classi inolucro. Auto-boxing e unboxing in java 5.0. Java stack. Frames. Meccanismo di di invocazioni di metodi. |
VIII
settimana |
Argomento
|
1
trasp/p col .pdf b/n .pdf |
6
trasp/p col .pdf b/n .pdf |
14-Nov-2005 XXVII
|
ADT
Coda: interfaccia Queue.
Realizzazione con array riempito solo in parte a dimensione fissa.
Realizzazione con array ridimensionabile.Realizzazione con array
circolare riempito solo in parte: andamento
asintotico della complessita' O(1). Estrarre oggetti da una struttura
dati. Esempio di utilizzo di strutture dati: calcolatrice a notazione
polacca inversa, controllo di parentesi. |
||
15-Nov-2005 XXIII
|
Struttura dati Lista Concatenata. Realizzazione della classe ListNode. Realizzazione della classe LinkedList. Analisi della complessità temporale dei metodi della classe. Esempi: realizzazione delle classi LinkedListStack e LinkedListQueue. | ||
16-Nov-2005 XXIX
|
Cenni alle classi interne. Iteratore di una lista concatenata. Interfaccia ridotta ListIterator. Realizzazione della classe LinkedListIterato: metodi hasNext(), next(), add() e remove(). Accesso in sequenza ai dati di una catena tramite iteratore.Piu' di un iteratore nella lista concatenata. Lista concatenata doppia. Tipo di dati astratto Lista: interfaccia List. Liste con rango. Cenni alle classi java.util.Vector, java.util.LinkedList e alle interfacce java.util.List, java.util.ListIterator. Esercitazione: array bidimensionali. Esercitazione: calcolo ricorsivo delle possibili permutazioni di una stringa. | ||
17-Nov-2005 XXX
|
ADT Dizionario.
Prestazioni in caso di realizzazione con array parzialmente riempito
ordinato e non ordinato. ADT Tabella. Esempio di realizzazione di una
tabella. Prestazioni in caso di realizzazione con array. uso della
memoria: fattore di riempimento. Funzione di hash. Gestione delle
collisioni. Tabella hash con bucket. Tabella hash con chiave generica.
Il metodo hashCode() della classe Object. Funzione hash per le
stringhe. Funzione hash per oggetti |
IX
settimana |
Argomento
|
1
trasp/p col .pdf b/n .pdf |
6
trasp/p col .pdf b/n .pdf |
21-Nov-2005 XXXI |
Esempio
di dizionario. realizzazione con array riempito parzialmente non
ordinato, con array riempito parzialmente mantenuto ordinato, con
tabella hash. Realizzazione semplificata dei bucket come liste
concatenate interne. |
||
22-Nov-2005 XXXII |
Esempio
di uso di classi della libreria standard: java.util.Vector
e
java.util.ArrayList, java.util.HashMap.
Cenni alla programmazione generica.
Il sistema operativo. Processi, contesto dei processi, context switch.
Stati dei processi. Scheduling dei processi. Memoria virtuale:
indirizzi fisici e virtuali. |
||
23-Nov-2005 XXXIII |
Esercitazione:
codifica di semplici strutture dati (dizionari). |
||
24-Nov-2005 XXXIV |
Il
flusso di errore standard: oggetto pubblico PrintStream
System.err. Il tipo di dati astratti Insieme e interfaccia Set.
Esempio di realizzazione di un insieme. Metodi per le operazioni di
unione, intersezione e differenza: andamento asintotico O(n2).
Insiemi ordinati. Metodi per le operazioni unione, intersezione e
differenza: andamento asintotico O(n log n). |
X
settimana |
Argomento
|
1
trasp/p col .pdf b/n .pdf |
6
trasp/p col .pdf b/n .pdf |
28-Nov-2005 XXXV |
Valutazione
della didattica da parte degli studenti. Riepilogo dei tipi di dati
astratti e delle loro realizzazioni. ADT Container, Stack, Queue, List,
Dictionary, Table, HashTable, Set, SortedSet. Cenni alle classi della
libreria standard che realizzano ADT: ArratList,
Vector,
LinkedList, Hashtable,
HashMap,
HashSet |
||
29-Nov-2005 XXXVI |
Modalita' delle prove d'esame. Questionario a risposte multiple:
correzione delle domande poste agli studenti nella simulazione
effettuata nel laboratorio 9. Riepilogo del linguaggio java. Paradigmi
di programmazione: scomposizione funzionale, programmazione
strutturata, modularizzazione, programmazione orientata agli oggetti. |