Differenze tra le versioni di "Fondamenti di architettura e programmazione T2/2008-2009"

Da WikiDsy.
 
([Quindicesima lezione], 7.11.08)
 
(44 versioni intermedie di 5 utenti non mostrate)
Riga 1: Riga 1:
==News & Avvisi ==
+
[[Categoria:Corsi 2008-2009]]
Al momento, nessuna news di particolare rilievo.
+
<!-- non cancellare le righe precedenti -->
 +
 
 +
== News & Avvisi (H-Z) ==
 +
 
 +
*Venerdì 17 ottobre, causa sciopero dei mezzi, la lezione di FAP sarà sospesa.
 +
 
 +
== Info (H-Z) ==
 +
 
 +
=== [Docenti] ===
 +
 
 +
*FAP: [http://www.ccdi.unimi.it/it/docenti/ALBERTI-MARIA%20ALBERTA-05S.html Maria Alberta Alberti];
 +
*LABORATORIO: [http://www.ccdi.unimi.it/it/docenti/ALBERTI-MARIA%20ALBERTA-05S.html Lorenzo Capra]
 +
 
 +
=== [Orario lezioni] ===
 +
 
 +
'''''Fondamenti di architettura e programmazione'''''
 +
 
 +
*Martedì: 14.30 - 17.30 (aula V3 - Venezian)
 +
*Mercoledì: 15.30 - 18.30 (aula V3 - Venezian)
 +
*Venerdì: 14.30 - 16.30 (aula V3 - Venezian)
 +
 
 +
'''''Laboratorio di Programmazione'''''
 +
 
 +
''Turno A''
 +
*Lunedì: 10.30 - 12.30 (aula V5 - Venezian)
 +
*Giovedì: 9.30 - 13.30 (aula 309 - Celoria)
 +
 
 +
''Turno B''
 +
*Lunedì: 10.30 - 12.30 (aula V5 - Venezian)
 +
*Martedì: 8.30 - 12.30 (aula Sigma - Comelico)
 +
 
 +
=== [Materiale didattico] ===
 +
 
 +
*[http://homes.dico.unimi.it/~alberti/Fond08/#materiale Fondamenti di Architettura e programmazione];
 +
*[http://homes.dico.unimi.it/~capra/FondProg08/#Materiale Laboratorio di programmazione]
 +
 
 +
=== [Testi consigliati] ===
 +
 
 +
*G. Pighizzini, M. Ferrari: Dai fondamenti agli oggetti. Corso di programmazione JAVA (II o III edizione), Addison-Wesley, Pearson Education Italia, 2005.
 +
 
 +
=== [Modalità esami] ===
 +
Sono previsti quattro compitini ('''non obbligatori''') molto probabilmente fissati per:
 +
 
 +
'''''Fondamenti di architettura e programmazione'''''
 +
 
 +
*12 novembre
 +
*12 dicembre
 +
 
 +
'''''Laboratorio di programmazione'''''
 +
 
 +
*25 novembre (Turno B) o 27 novembre (Turno A)
 +
*13 gennaio (Turno B) o 15 gennaio (Turno A)
 +
 
 +
[Sezione da completare]
 +
 
 +
== Diario del corso di FAP (H-Z) ==
 +
 
 +
=== [Prima lezione], 1.10.08 ===
 +
 
 +
* Il calcolatore nella storia
 +
* Gli algoritmi
 +
* L'algoritmo di Euclide
 +
* Come si trovano gli algoritmi
 +
* I programmi
 +
* Algoritmi e programmi
 +
* Criteri di bontà degli algoritmi
 +
 
 +
=== [Seconda lezione], 3.10.08 ===
 +
 
 +
*Ripasso generale, rivolto in particolare alla dimostrazione della quarta caratteristica dell'algoritmo, soddisfatto per l'algoritmo di Euclide
 +
*Analisi dei tempi di esecuzione dei vari algoritmi
 +
*Massima istanza
 +
*Miglioramento tecnologico
 +
*I linguaggi di programmazione
 +
*Il compilatore
 +
*L'interprete
 +
*Confrontro tra compilatore e inteprete
 +
*Java virtual Machine
 +
*Struttura del programma Java
 +
 
 +
=== [Terza lezione], 7.10.08 ===
 +
 
 +
*Il processore e il suo linguaggio
 +
*Il ciclo del processore (fetch-decode-execute)
 +
*Linguaggio di basso livello, svantaggi
 +
*Somma di due numeri e Algoritmo di Euclide in assembler
 +
*L'esigenza e il ruolo di una macchina astratta
 +
*I tre livelli dei linguaggi
 +
*Storia del linguaggio ad alto livello (dagli anni '50 agli anni '80)
 +
*I paradigmi di programmazione
 +
*Influenza del modello di macchina
 +
*La macchina Von Neumann
 +
*Componenti dei linguaggi funzionali
 +
 
 +
=== [Quarta lezione], 8.10.08 ===
 +
 
 +
*Sintassi e semantica
 +
*Descrizione delle regole sintattiche
 +
*Esempi di sintassi nella forma BNF
 +
*Grammatiche
 +
*Linguaggi regolari
 +
*Le carte sintattiche
 +
*Concetti di base della programazione oo
 +
*Java, le sue caratteristiche, la struttura
 +
*Componenti di Java (commenti, spazi vuoti, lessico, identificatori, separatori e operatori, costanti)
 +
*Gli errori (sintattici, di compilazione, logici)
 +
 
 +
=== [Quinta lezione], 10.10.08 ===
 +
 
 +
*Introduzione agli oggetti
 +
*Astrazione
 +
*Gli oggetti Software
 +
*Oggetti e cassi
 +
*Gli oggetti come astrazione
 +
*Le istanze
 +
*Incapsulamento dei dati
 +
*I messaggi
 +
*Interfaccia
 +
*Inviare messaggi
 +
*Invocazione dei metodi
 +
*Metodi e oggetti
 +
*I membri delle classi
 +
*I campi statici di classe
 +
*La classe predefinita rectangle
 +
*Creare oggetti
 +
*L'operatore new
 +
 
 +
=== [Sesta lezione], 14.10.08 ===
 +
 
 +
*Riferimenti
 +
*Gli oggetti e i loro riferimenti
 +
*Aree di memoria (Stack, Heap)
 +
*Variabili
 +
*Assegnamento
 +
*Variabili e riferimenti a oggetti
 +
*Alias
 +
*Garbage collection
 +
*Espressioni
 +
*Tipi di dati
 +
*Tipi e astrazioni
 +
*Dichiarazione e inizializzazione
 +
*La classe ConsoleInputManager
 +
*La classe ConsoleOutputManager
 +
 
 +
=== [Settima lezione], 15.10.08 ===
 +
 
 +
*Ripresa di argomenti vari (oggetti, classi, metodi, ecc..) riferendosi all'esempio di una moneta
 +
*Flusso di controllo dei metodi
 +
*Analisi di alcuni esempi in Java riguardanti il lancio di una moneta
 +
 
 +
=== [Ottava lezione], 21.10.08 ===
 +
 
 +
*La classe predefinita String
 +
*Gli oggetti Stringhe, come creari
 +
*Esempi di Classi che usano String
 +
*Campi d'istanza
 +
*Effettuare test sulle classi
 +
*Errori comuni
 +
*Costruttori vs Metodi
 +
*Concatenazione di Stringhe
 +
*Sequenza di escape
 +
*Metodi per le stringhe
 +
*Incapsulamento
 +
*I modificatori di visibilità
 +
*Dichiarazione di metodi
 +
L'istruzione Return
 +
*Passaggio di valori a parametri
 +
 
 +
=== [Nona lezione], 22.10.08 ===
 +
 
 +
*Prototipi e segnature, con esempi
 +
*Overloading di metodi
 +
*La nozione di tipo di dato
 +
*Tipi di dati e Java
 +
*Dichiarazione e inizializzazione
 +
*Tipi di dati semplici
 +
*Espressioni
 +
*Operatori su tipi aritmetici interi
 +
*Conversioni implicite ed esplicite
 +
*Intervalli numerici e precisione
 +
*Operatori di incremento/decremento
 +
 
 +
=== [Decima lezione], 24.10.08 ===
 +
*I caratteri
 +
*I caratteri ASCII
 +
*I caratteri Unicode
 +
*Formato ASCII esteso
 +
*Formato ISO10646
 +
*Il tipo Boolean
 +
*Gli operatori logici (not, and, or)
 +
*Tavole di verità
 +
*Espressioni booleane
 +
*Espressioni con operatori logici
 +
*Precedenze degli operatori
 +
 
 +
=== [Undicesima lezione], 28.10.08 ===
 +
*Rappresentazione dei numeri reali
 +
*Implementazione in Java
 +
*Rappresentazione interna
 +
*Legge di De Morgan e semplificazioni
 +
*Metodi predicativi
 +
*Lazy evaluation
 +
*I Flag
 +
*Operatori di incremento e decremento
 +
*Operatori di assegnamento
 +
*Operatore condizionale
 +
*Precedenze di operatori
 +
*Associatività degli operatori
 +
*Conversioni tra tipi primitivi
 +
*Librerie di classi
 +
*Packages
 +
*Dichiarazione di import
 +
*Metodi statici di classe e loro invocazione
 +
*Numeri pseudo - casuali
 +
*Classe Random
 +
 
 +
=== [Dodicesima lezione], 29.10.08 ===
 +
*Ordine di esecuzione
 +
*Flusso di controllo
 +
*Istruzione condizionale
 +
*Istruzione if, semantica ed esempi
 +
*Istruzione if-else, semantica ed esempi
 +
*Istruzione blocco
 +
*If innestati
 +
*Confronti tra caratteri
 +
*Confronti tra stringhe
 +
*Confronti tra oggetti
 +
*Confronto con null
 +
*Confronti tra valori in virgola mobile
 +
 
 +
=== [Tredicesima lezione], 31.10.08 ===
 +
*L'istruzione Switch
 +
*Istruzioni di ripetizione
 +
*Istruzioni while, semantica
 +
*Istruzione do-while, semantica
 +
*Confronto while e do-while
 +
*Ciclo for, semantica
 +
*Variabili del ciclo for
 +
*Cicli infiniti
 +
*Istruzioni vuote nel ciclo for
 +
*Contare le iterazioni
 +
*Elaborazioni di dati in input
 +
 
 +
=== [Quattordicesima lezione], 5.11.08 ===
 +
*Analisi del codice StringMutation.java
 +
*Leggere i dati di input
 +
*Migliorare la leggibilità del ciclo
 +
*Enunciato break e continue
 +
*Cercare in una stringa di caratteri e riga di input
 +
*La classe StringTokenizer
 +
*I separatori di Token
 +
 
 +
=== [Quindicesima lezione], 7.11.08 ===
 +
*Modifica del codice LeggiNumeri.java con la classe StringTokenizer
 +
*Analisi del codice LeggiStringhe.java
 +
 
 +
== Diario del corso del Laboratorio di programmazione (H-Z) ==
 +
 
 +
''Premessa: Il lunedì è giorno di teoria, in cui vengono spesso trattati argomenti già noti in FAP, mentre il giovedì è giorno di laboratorio. ''
 +
 
 +
=== [Prima settimana] ===
 +
 
 +
====[http://homes.dico.unimi.it/~capra/FondProg08/lezione1.pdf Lunedì 6.10.08]====
 +
====[http://homes.dico.unimi.it/~capra/FondProg08/esercitazione1/ Giovedì 9.10.08]====
 +
 
 +
=== [Seconda settimana] ===
 +
 
 +
====Lunedì 12.10.08====
 +
*Importazioni di classi
 +
*Le variabili Classpath
 +
*ConsoleInputManager
 +
*Metodi di String
 +
====[http://homes.dico.unimi.it/~capra/FondProg08/esercitazione2/ Giovedì 16.10.08]====
 +
 
 +
 
 +
=== [Terza settimana] ===
 +
====Lunedì 20.10.08====
 +
*Le stringhe e metodi da conoscere:
 +
**charAt, replace, length, to Overcase/Uppercase, substring, indexOf, lastIndexOf, valueOf.
 +
*Esercizio: Istruzione che permette di trovare la stringa corrispondente ad ''s'' con l'iniziale in maiuscolo
 +
====[http://homes.dico.unimi.it/~capra/FondProg08/esercitazione3/ Giovedì 23.10.08]====
 +
 
 +
=== [Quarta settimana] ===
 +
====Lunedì 27.10.08====
 +
*Il metodo swap e stringBuffer
 +
*I costruttori di default
 +
*I metodi statici
 +
*Le classi a involucro

Versione attuale delle 14:17, 10 nov 2008


News & Avvisi (H-Z)

  • Venerdì 17 ottobre, causa sciopero dei mezzi, la lezione di FAP sarà sospesa.

Info (H-Z)

[Docenti]

[Orario lezioni]

Fondamenti di architettura e programmazione

  • Martedì: 14.30 - 17.30 (aula V3 - Venezian)
  • Mercoledì: 15.30 - 18.30 (aula V3 - Venezian)
  • Venerdì: 14.30 - 16.30 (aula V3 - Venezian)

Laboratorio di Programmazione

Turno A

  • Lunedì: 10.30 - 12.30 (aula V5 - Venezian)
  • Giovedì: 9.30 - 13.30 (aula 309 - Celoria)

Turno B

  • Lunedì: 10.30 - 12.30 (aula V5 - Venezian)
  • Martedì: 8.30 - 12.30 (aula Sigma - Comelico)

[Materiale didattico]

[Testi consigliati]

  • G. Pighizzini, M. Ferrari: Dai fondamenti agli oggetti. Corso di programmazione JAVA (II o III edizione), Addison-Wesley, Pearson Education Italia, 2005.

[Modalità esami]

Sono previsti quattro compitini (non obbligatori) molto probabilmente fissati per:

Fondamenti di architettura e programmazione

  • 12 novembre
  • 12 dicembre

Laboratorio di programmazione

  • 25 novembre (Turno B) o 27 novembre (Turno A)
  • 13 gennaio (Turno B) o 15 gennaio (Turno A)

[Sezione da completare]

Diario del corso di FAP (H-Z)

[Prima lezione], 1.10.08

  • Il calcolatore nella storia
  • Gli algoritmi
  • L'algoritmo di Euclide
  • Come si trovano gli algoritmi
  • I programmi
  • Algoritmi e programmi
  • Criteri di bontà degli algoritmi

[Seconda lezione], 3.10.08

  • Ripasso generale, rivolto in particolare alla dimostrazione della quarta caratteristica dell'algoritmo, soddisfatto per l'algoritmo di Euclide
  • Analisi dei tempi di esecuzione dei vari algoritmi
  • Massima istanza
  • Miglioramento tecnologico
  • I linguaggi di programmazione
  • Il compilatore
  • L'interprete
  • Confrontro tra compilatore e inteprete
  • Java virtual Machine
  • Struttura del programma Java

[Terza lezione], 7.10.08

  • Il processore e il suo linguaggio
  • Il ciclo del processore (fetch-decode-execute)
  • Linguaggio di basso livello, svantaggi
  • Somma di due numeri e Algoritmo di Euclide in assembler
  • L'esigenza e il ruolo di una macchina astratta
  • I tre livelli dei linguaggi
  • Storia del linguaggio ad alto livello (dagli anni '50 agli anni '80)
  • I paradigmi di programmazione
  • Influenza del modello di macchina
  • La macchina Von Neumann
  • Componenti dei linguaggi funzionali

[Quarta lezione], 8.10.08

  • Sintassi e semantica
  • Descrizione delle regole sintattiche
  • Esempi di sintassi nella forma BNF
  • Grammatiche
  • Linguaggi regolari
  • Le carte sintattiche
  • Concetti di base della programazione oo
  • Java, le sue caratteristiche, la struttura
  • Componenti di Java (commenti, spazi vuoti, lessico, identificatori, separatori e operatori, costanti)
  • Gli errori (sintattici, di compilazione, logici)

[Quinta lezione], 10.10.08

  • Introduzione agli oggetti
  • Astrazione
  • Gli oggetti Software
  • Oggetti e cassi
  • Gli oggetti come astrazione
  • Le istanze
  • Incapsulamento dei dati
  • I messaggi
  • Interfaccia
  • Inviare messaggi
  • Invocazione dei metodi
  • Metodi e oggetti
  • I membri delle classi
  • I campi statici di classe
  • La classe predefinita rectangle
  • Creare oggetti
  • L'operatore new

[Sesta lezione], 14.10.08

  • Riferimenti
  • Gli oggetti e i loro riferimenti
  • Aree di memoria (Stack, Heap)
  • Variabili
  • Assegnamento
  • Variabili e riferimenti a oggetti
  • Alias
  • Garbage collection
  • Espressioni
  • Tipi di dati
  • Tipi e astrazioni
  • Dichiarazione e inizializzazione
  • La classe ConsoleInputManager
  • La classe ConsoleOutputManager

[Settima lezione], 15.10.08

  • Ripresa di argomenti vari (oggetti, classi, metodi, ecc..) riferendosi all'esempio di una moneta
  • Flusso di controllo dei metodi
  • Analisi di alcuni esempi in Java riguardanti il lancio di una moneta

[Ottava lezione], 21.10.08

  • La classe predefinita String
  • Gli oggetti Stringhe, come creari
  • Esempi di Classi che usano String
  • Campi d'istanza
  • Effettuare test sulle classi
  • Errori comuni
  • Costruttori vs Metodi
  • Concatenazione di Stringhe
  • Sequenza di escape
  • Metodi per le stringhe
  • Incapsulamento
  • I modificatori di visibilità
  • Dichiarazione di metodi

L'istruzione Return

  • Passaggio di valori a parametri

[Nona lezione], 22.10.08

  • Prototipi e segnature, con esempi
  • Overloading di metodi
  • La nozione di tipo di dato
  • Tipi di dati e Java
  • Dichiarazione e inizializzazione
  • Tipi di dati semplici
  • Espressioni
  • Operatori su tipi aritmetici interi
  • Conversioni implicite ed esplicite
  • Intervalli numerici e precisione
  • Operatori di incremento/decremento

[Decima lezione], 24.10.08

  • I caratteri
  • I caratteri ASCII
  • I caratteri Unicode
  • Formato ASCII esteso
  • Formato ISO10646
  • Il tipo Boolean
  • Gli operatori logici (not, and, or)
  • Tavole di verità
  • Espressioni booleane
  • Espressioni con operatori logici
  • Precedenze degli operatori

[Undicesima lezione], 28.10.08

  • Rappresentazione dei numeri reali
  • Implementazione in Java
  • Rappresentazione interna
  • Legge di De Morgan e semplificazioni
  • Metodi predicativi
  • Lazy evaluation
  • I Flag
  • Operatori di incremento e decremento
  • Operatori di assegnamento
  • Operatore condizionale
  • Precedenze di operatori
  • Associatività degli operatori
  • Conversioni tra tipi primitivi
  • Librerie di classi
  • Packages
  • Dichiarazione di import
  • Metodi statici di classe e loro invocazione
  • Numeri pseudo - casuali
  • Classe Random

[Dodicesima lezione], 29.10.08

  • Ordine di esecuzione
  • Flusso di controllo
  • Istruzione condizionale
  • Istruzione if, semantica ed esempi
  • Istruzione if-else, semantica ed esempi
  • Istruzione blocco
  • If innestati
  • Confronti tra caratteri
  • Confronti tra stringhe
  • Confronti tra oggetti
  • Confronto con null
  • Confronti tra valori in virgola mobile

[Tredicesima lezione], 31.10.08

  • L'istruzione Switch
  • Istruzioni di ripetizione
  • Istruzioni while, semantica
  • Istruzione do-while, semantica
  • Confronto while e do-while
  • Ciclo for, semantica
  • Variabili del ciclo for
  • Cicli infiniti
  • Istruzioni vuote nel ciclo for
  • Contare le iterazioni
  • Elaborazioni di dati in input

[Quattordicesima lezione], 5.11.08

  • Analisi del codice StringMutation.java
  • Leggere i dati di input
  • Migliorare la leggibilità del ciclo
  • Enunciato break e continue
  • Cercare in una stringa di caratteri e riga di input
  • La classe StringTokenizer
  • I separatori di Token

[Quindicesima lezione], 7.11.08

  • Modifica del codice LeggiNumeri.java con la classe StringTokenizer
  • Analisi del codice LeggiStringhe.java

Diario del corso del Laboratorio di programmazione (H-Z)

Premessa: Il lunedì è giorno di teoria, in cui vengono spesso trattati argomenti già noti in FAP, mentre il giovedì è giorno di laboratorio.

[Prima settimana]

Lunedì 6.10.08

Giovedì 9.10.08

[Seconda settimana]

Lunedì 12.10.08

  • Importazioni di classi
  • Le variabili Classpath
  • ConsoleInputManager
  • Metodi di String

Giovedì 16.10.08

[Terza settimana]

Lunedì 20.10.08

  • Le stringhe e metodi da conoscere:
    • charAt, replace, length, to Overcase/Uppercase, substring, indexOf, lastIndexOf, valueOf.
  • Esercizio: Istruzione che permette di trovare la stringa corrispondente ad s con l'iniziale in maiuscolo

Giovedì 23.10.08

[Quarta settimana]

Lunedì 27.10.08

  • Il metodo swap e stringBuffer
  • I costruttori di default
  • I metodi statici
  • Le classi a involucro