<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://wiki.dsy.it/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Joliet+Jake</id>
	<title>WikiDsy - Contributi utente [it]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.dsy.it/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Joliet+Jake"/>
	<link rel="alternate" type="text/html" href="https://wiki.dsy.it/w/Speciale:Contributi/Joliet_Jake"/>
	<updated>2026-05-03T16:17:42Z</updated>
	<subtitle>Contributi utente</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18181</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18181"/>
		<updated>2007-11-20T10:36:29Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 20/11/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
*Nuova variazione: il laboratorio di martedì si svolge in aula '''309'''&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V2&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V2&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
*Liste (''non ero presente, se potete aggiungere particolari ve ne sarei grato'')&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
*Espressioni&lt;br /&gt;
**semplici&lt;br /&gt;
***costanti&lt;br /&gt;
***variabili&lt;br /&gt;
**composte (espressioni aritmetiche, invocazione metodi)&lt;br /&gt;
*Puntatori&lt;br /&gt;
**assegnamenti fra puntatori (compatibilità di tipo)&lt;br /&gt;
**esempi&lt;br /&gt;
**Dereferenziazione di un puntatore (operatore '''*''')&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
*Pile&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***TOP(S)&lt;br /&gt;
***POP(S)&lt;br /&gt;
***PUSH(S, u)&lt;br /&gt;
**Implementazioni delle pile&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Code&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***FRONT(Q)&lt;br /&gt;
***DEQUEUE(Q)&lt;br /&gt;
***ENQUEUE(Q, u)&lt;br /&gt;
**Implementazioni delle code&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Allineamenti ed insiemi&lt;br /&gt;
**allineamenti&lt;br /&gt;
**#permutazione&lt;br /&gt;
**#disposizione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
**insiemi&lt;br /&gt;
**#combinazione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Grafi&lt;br /&gt;
**non orentati&lt;br /&gt;
**orientati&lt;br /&gt;
*Implementazioni&lt;br /&gt;
**matrice&lt;br /&gt;
**coppia di tabelle&lt;br /&gt;
**lista concatenata&lt;br /&gt;
*definizione di cammino&lt;br /&gt;
*definizione di ciclo&lt;br /&gt;
*definizione di sottografo&lt;br /&gt;
*definizione di grafo connesso&lt;br /&gt;
*relazione di connessione&lt;br /&gt;
**proprietà: transitiva, riflessiva, generalmente '''non''' simmetrica&lt;br /&gt;
*relazione di raggiungibilità&lt;br /&gt;
&lt;br /&gt;
===Lezione 23/10/2007===&lt;br /&gt;
*alberi&lt;br /&gt;
*albero di copertura&lt;br /&gt;
*foresta&lt;br /&gt;
*albero con radice&lt;br /&gt;
*rappresentazione di albero tramite tabella&lt;br /&gt;
*clique&lt;br /&gt;
*indipendent set&lt;br /&gt;
*padre,figlio,foglia,radice,fratelli,predecessore,successore, altezza, profondità&lt;br /&gt;
*albero bilanciato&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 23/10/2007===&lt;br /&gt;
*esercizi su puntatori&lt;br /&gt;
*esercizi su frazioni e passaggio parametri&lt;br /&gt;
&lt;br /&gt;
===Lezione 25/10/2007===&lt;br /&gt;
*visita di grafi per ampiezza&lt;br /&gt;
*esercizi&lt;br /&gt;
===Laboratorio 25/10/2007===&lt;br /&gt;
*ripasso tipi di dato&lt;br /&gt;
*revisione esercizi del laboratorio precedente&lt;br /&gt;
===Lezione 26/10/2007===&lt;br /&gt;
*alberi ordinati&lt;br /&gt;
**rappresentazione in memoria&lt;br /&gt;
***liste di adiacenza&lt;br /&gt;
***3 vettori&lt;br /&gt;
**Tipi di attraversamento&lt;br /&gt;
***in preordine&lt;br /&gt;
***in postordine&lt;br /&gt;
*alberi binari&lt;br /&gt;
**alberi binari completi&lt;br /&gt;
**rappresentazione in memoria&lt;br /&gt;
***2 vettori&lt;br /&gt;
**Tipi di attraversamento&lt;br /&gt;
***in preordine&lt;br /&gt;
***in postordine&lt;br /&gt;
***in ordine simmetrico&lt;br /&gt;
&lt;br /&gt;
===Lezione 29/10/2007===&lt;br /&gt;
'''ero assente'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 30/10/2007===&lt;br /&gt;
*ricorsione terminale&lt;br /&gt;
*procedura di ricerca binaria&lt;br /&gt;
**tempi e spazi (criterio uniforme)&lt;br /&gt;
*attraversamento in preordine&lt;br /&gt;
**procedura&lt;br /&gt;
**versione iterativa&lt;br /&gt;
*attraversamento in profondità&lt;br /&gt;
**procedura&lt;br /&gt;
**versione iterativa&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 30/10/2007===&lt;br /&gt;
*esercizi su equazioni e interi&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/11/2007===&lt;br /&gt;
'''vacanza'''&lt;br /&gt;
===Lezione 05/11/2007===&lt;br /&gt;
*Mergesort&lt;br /&gt;
**ordine di grandezza (tempo e spazio) di Mergesort&lt;br /&gt;
&lt;br /&gt;
===Lezione 06/11/2007===&lt;br /&gt;
'''non c'ero'''&lt;br /&gt;
===Lezione 08/11/2007===&lt;br /&gt;
'''non c'ero'''&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 08/11/2007===&lt;br /&gt;
*aritmetica dei puntatori&lt;br /&gt;
*esercizi sugli array&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/11/2007===&lt;br /&gt;
*prodotto di matrici&lt;br /&gt;
*algoritmo di strasse&lt;br /&gt;
*esercizi vari con calcolo di tempi di cacolo e spazi di memoria&lt;br /&gt;
&lt;br /&gt;
===Settimana 12/11/2007-&amp;gt;16/11/2007 ===&lt;br /&gt;
'''non ero a Milano'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/11/2007===&lt;br /&gt;
*strutture dati astratte&lt;br /&gt;
*dizionari&lt;br /&gt;
*dizionari ordinati&lt;br /&gt;
*partizioni&lt;br /&gt;
*hashing&lt;br /&gt;
&lt;br /&gt;
===Lezione 20/11/2007===&lt;br /&gt;
*alberi di ricerca binaria&lt;br /&gt;
*rappresentazione in memoria&lt;br /&gt;
*operazioni&lt;br /&gt;
**member&lt;br /&gt;
**insert&lt;br /&gt;
**delete&lt;br /&gt;
**min&lt;br /&gt;
**max&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 20/11/2007===&lt;br /&gt;
*esercizi su insertionsort, quicksort&lt;br /&gt;
===Lezione 22/11/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18177</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18177"/>
		<updated>2007-11-19T16:17:48Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 08/11/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
*Nuova variazione: il laboratorio di martedì si svolge in aula '''309'''&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V2&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V2&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
*Liste (''non ero presente, se potete aggiungere particolari ve ne sarei grato'')&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
*Espressioni&lt;br /&gt;
**semplici&lt;br /&gt;
***costanti&lt;br /&gt;
***variabili&lt;br /&gt;
**composte (espressioni aritmetiche, invocazione metodi)&lt;br /&gt;
*Puntatori&lt;br /&gt;
**assegnamenti fra puntatori (compatibilità di tipo)&lt;br /&gt;
**esempi&lt;br /&gt;
**Dereferenziazione di un puntatore (operatore '''*''')&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
*Pile&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***TOP(S)&lt;br /&gt;
***POP(S)&lt;br /&gt;
***PUSH(S, u)&lt;br /&gt;
**Implementazioni delle pile&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Code&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***FRONT(Q)&lt;br /&gt;
***DEQUEUE(Q)&lt;br /&gt;
***ENQUEUE(Q, u)&lt;br /&gt;
**Implementazioni delle code&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Allineamenti ed insiemi&lt;br /&gt;
**allineamenti&lt;br /&gt;
**#permutazione&lt;br /&gt;
**#disposizione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
**insiemi&lt;br /&gt;
**#combinazione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Grafi&lt;br /&gt;
**non orentati&lt;br /&gt;
**orientati&lt;br /&gt;
*Implementazioni&lt;br /&gt;
**matrice&lt;br /&gt;
**coppia di tabelle&lt;br /&gt;
**lista concatenata&lt;br /&gt;
*definizione di cammino&lt;br /&gt;
*definizione di ciclo&lt;br /&gt;
*definizione di sottografo&lt;br /&gt;
*definizione di grafo connesso&lt;br /&gt;
*relazione di connessione&lt;br /&gt;
**proprietà: transitiva, riflessiva, generalmente '''non''' simmetrica&lt;br /&gt;
*relazione di raggiungibilità&lt;br /&gt;
&lt;br /&gt;
===Lezione 23/10/2007===&lt;br /&gt;
*alberi&lt;br /&gt;
*albero di copertura&lt;br /&gt;
*foresta&lt;br /&gt;
*albero con radice&lt;br /&gt;
*rappresentazione di albero tramite tabella&lt;br /&gt;
*clique&lt;br /&gt;
*indipendent set&lt;br /&gt;
*padre,figlio,foglia,radice,fratelli,predecessore,successore, altezza, profondità&lt;br /&gt;
*albero bilanciato&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 23/10/2007===&lt;br /&gt;
*esercizi su puntatori&lt;br /&gt;
*esercizi su frazioni e passaggio parametri&lt;br /&gt;
&lt;br /&gt;
===Lezione 25/10/2007===&lt;br /&gt;
*visita di grafi per ampiezza&lt;br /&gt;
*esercizi&lt;br /&gt;
===Laboratorio 25/10/2007===&lt;br /&gt;
*ripasso tipi di dato&lt;br /&gt;
*revisione esercizi del laboratorio precedente&lt;br /&gt;
===Lezione 26/10/2007===&lt;br /&gt;
*alberi ordinati&lt;br /&gt;
**rappresentazione in memoria&lt;br /&gt;
***liste di adiacenza&lt;br /&gt;
***3 vettori&lt;br /&gt;
**Tipi di attraversamento&lt;br /&gt;
***in preordine&lt;br /&gt;
***in postordine&lt;br /&gt;
*alberi binari&lt;br /&gt;
**alberi binari completi&lt;br /&gt;
**rappresentazione in memoria&lt;br /&gt;
***2 vettori&lt;br /&gt;
**Tipi di attraversamento&lt;br /&gt;
***in preordine&lt;br /&gt;
***in postordine&lt;br /&gt;
***in ordine simmetrico&lt;br /&gt;
&lt;br /&gt;
===Lezione 29/10/2007===&lt;br /&gt;
'''ero assente'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 30/10/2007===&lt;br /&gt;
*ricorsione terminale&lt;br /&gt;
*procedura di ricerca binaria&lt;br /&gt;
**tempi e spazi (criterio uniforme)&lt;br /&gt;
*attraversamento in preordine&lt;br /&gt;
**procedura&lt;br /&gt;
**versione iterativa&lt;br /&gt;
*attraversamento in profondità&lt;br /&gt;
**procedura&lt;br /&gt;
**versione iterativa&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 30/10/2007===&lt;br /&gt;
*esercizi su equazioni e interi&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/11/2007===&lt;br /&gt;
'''vacanza'''&lt;br /&gt;
===Lezione 05/11/2007===&lt;br /&gt;
*Mergesort&lt;br /&gt;
**ordine di grandezza (tempo e spazio) di Mergesort&lt;br /&gt;
&lt;br /&gt;
===Lezione 06/11/2007===&lt;br /&gt;
'''non c'ero'''&lt;br /&gt;
===Lezione 08/11/2007===&lt;br /&gt;
'''non c'ero'''&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 08/11/2007===&lt;br /&gt;
*aritmetica dei puntatori&lt;br /&gt;
*esercizi sugli array&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/11/2007===&lt;br /&gt;
*prodotto di matrici&lt;br /&gt;
*algoritmo di strasse&lt;br /&gt;
*esercizi vari con calcolo di tempi di cacolo e spazi di memoria&lt;br /&gt;
&lt;br /&gt;
===Settimana 12/11/2007-&amp;gt;16/11/2007 ===&lt;br /&gt;
'''non ero a Milano'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/11/2007===&lt;br /&gt;
*strutture dati astratte&lt;br /&gt;
*dizionari&lt;br /&gt;
*dizionari ordinati&lt;br /&gt;
*partizioni&lt;br /&gt;
*hashing&lt;br /&gt;
&lt;br /&gt;
===Lezione 20/11/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18176</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18176"/>
		<updated>2007-11-19T16:11:48Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 09/11/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*Si prega di iscriversi al compitino dal sito del corso&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 5 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
*Paradigma ad oggetti&lt;br /&gt;
*classi&lt;br /&gt;
*moduli&lt;br /&gt;
*ereditarietà&lt;br /&gt;
*concetti base&lt;br /&gt;
**astrazione&lt;br /&gt;
**incapsulamento dei dati&lt;br /&gt;
**ereditarietà&lt;br /&gt;
**polimorfismo&lt;br /&gt;
*Ciclo dal codice sorgente all'esecuzione (compilatore/interprete)&lt;br /&gt;
*Programma = classi + metodi&lt;br /&gt;
*commenti in Java&lt;br /&gt;
*tipi di errori&lt;br /&gt;
*#di compilazione (sintattici)&lt;br /&gt;
*#di esecuzione (semantici)&lt;br /&gt;
*#logici (non si ottiene il risultato voluto)&lt;br /&gt;
*Riprendiamo il concetto di ''Astrazione''&lt;br /&gt;
**Oggetti e classi come astrazioni&lt;br /&gt;
**'''Oggetti''': limitano l'accesso al loro interno, hanno uno ''stato''(descritto dai suoi campi) ed un ''comportamento''(descritto dai suoi metodi)&lt;br /&gt;
**una ''classe'' genera ''oggetti''detti anche ''istanze della classe''&lt;br /&gt;
*Riprendiamo il concetto di ''Incapsulamento dei dati'', realizzato attraverso&lt;br /&gt;
*#Interfaccia&lt;br /&gt;
*#Più livelli di accesso&lt;br /&gt;
*#*''public''&lt;br /&gt;
*#*''private''&lt;br /&gt;
*#*''protected''&lt;br /&gt;
*invocazione metodi&lt;br /&gt;
*costanti = variabili ''static''&lt;br /&gt;
*costruttori&lt;br /&gt;
*variabili&lt;br /&gt;
*assegnamento&lt;br /&gt;
*espressioni&lt;br /&gt;
*tipi di dato&lt;br /&gt;
*garbage collection&lt;br /&gt;
*Alias&lt;br /&gt;
*Dichiarazione ed inizializzazione&lt;br /&gt;
*Overloading&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*Tipi di dato come astrazione&lt;br /&gt;
*dichiarazione ed inizializzazione: che differenza c'è a livello di memoria&lt;br /&gt;
*differenza fra ''campo'' e ''variabile''&lt;br /&gt;
*''ConsoleInputManager'' e ''ConsoleOutputManager''&lt;br /&gt;
*esempio di campo privato ed effetti sull'accessibilità.&lt;br /&gt;
*esempio di sovrascrittura del metodo ''toString'' ed effetti&lt;br /&gt;
*concatenazione di stringhe&lt;br /&gt;
*sequenze di escape&lt;br /&gt;
*metodi per le stringhe&lt;br /&gt;
**toUpperCase&lt;br /&gt;
**charAt&lt;br /&gt;
**concat&lt;br /&gt;
**length&lt;br /&gt;
**substring&lt;br /&gt;
**compareTo&lt;br /&gt;
**replace&lt;br /&gt;
**startWith&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
Si è fatta lezione anzichè laboratorio (vedere [http://www.ccdi.unimi.it/it/avvisi/5316.html avviso]).&lt;br /&gt;
&lt;br /&gt;
*Ripresi i metodi per le stringhe&lt;br /&gt;
*parametri espliciti e impliciti (es. ''nome.compareTo(&amp;quot;Andrea&amp;quot;)'', '''nome''' è implicito e '''&amp;quot;Andrea&amp;quot;''' esplicito)&lt;br /&gt;
*Tipo '''Random'''-&amp;gt; funzione ''nextInt(int)''&lt;br /&gt;
*Segnatura (o firma) di un metodo&lt;br /&gt;
*Prototipo&lt;br /&gt;
*Overloading di metodi: si può solo con una diversa segnatura (tipicamente stesso nome ma diverso tipo e/o numero e/o ordine dei parametri)&lt;br /&gt;
*analisi di Frazione.java&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*tipo = nome + valori + operazoni lecite&lt;br /&gt;
*tipi primitivi&lt;br /&gt;
*espressioni ed operatori&lt;br /&gt;
*Conversioni implicite ed esplicite (''casting'')&lt;br /&gt;
*Precisionedei tipi e perdita di precisione&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 24/10/2007===&lt;br /&gt;
*boolean&lt;br /&gt;
*operatori logici&lt;br /&gt;
*legge di De Morgan&lt;br /&gt;
*metodi predicativi&lt;br /&gt;
*Lazy evaluation&lt;br /&gt;
*operatori&lt;br /&gt;
**incremento e decremento: a++, ++a, a--, --a&lt;br /&gt;
**assegnamento: a += b&lt;br /&gt;
**condizionale: ''condizione'' '''?''' ''espr1'' ''':''' ''espr2''&lt;br /&gt;
*precedenze fra operatori&lt;br /&gt;
*conversioni&lt;br /&gt;
*modi di conversione:&lt;br /&gt;
**casting&lt;br /&gt;
**durante assegnamento&lt;br /&gt;
**promozione in una espressione&lt;br /&gt;
*librerie, packages, import&lt;br /&gt;
*metodi statici di classe&lt;br /&gt;
*numeri pseudo-casuali&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 26/10/2007===&lt;br /&gt;
*esercizi sui tipi di dato e conversioni&lt;br /&gt;
&lt;br /&gt;
===Lezione 29/10/2007===&lt;br /&gt;
*ripasso numeri pseudo-casuali, esempi&lt;br /&gt;
*campi di istanza e campi di classe&lt;br /&gt;
*Istruzioni di selezione&lt;br /&gt;
**if&lt;br /&gt;
**if/else&lt;br /&gt;
*confronti fra caratteri (basati su valore ASCII)&lt;br /&gt;
*confronti fra oggetti: serve il metodo ''equals'', attenzione all'operatore ''==''&lt;br /&gt;
*'''String''' è un oggetto, quindi anche per esso vale il punto precedente&lt;br /&gt;
*confronto fra float/ double: come per gli oggetti, meglio usare ''compareTo'' per motivi di compatibilità di precisione&lt;br /&gt;
*''switch''&lt;br /&gt;
&lt;br /&gt;
===Lezione 31/10/2007===&lt;br /&gt;
''da svolgersi''&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/11/2007===&lt;br /&gt;
'''vacanza'''&lt;br /&gt;
&lt;br /&gt;
===05/11/2007===&lt;br /&gt;
&lt;br /&gt;
[http://wiki.dsy.it/w/Programmazione_Turno_2/2007-2008#Date.2C_compitini_ed_esami COMPITINO]&lt;br /&gt;
&lt;br /&gt;
===Lezione 07/11/2007===&lt;br /&gt;
'''non ci sono andato'''&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/11/2007===&lt;br /&gt;
*esercizi vari&lt;br /&gt;
&lt;br /&gt;
===Settimana 12/11/2007-&amp;gt;16/11/2007 ===&lt;br /&gt;
'''non ero a Milano'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/11/2007===&lt;br /&gt;
*array (dichiarazione, inizializzazione)&lt;br /&gt;
*array di array&lt;br /&gt;
*ripasso classe tokenizer e suoi metodi&lt;br /&gt;
*Stringbuffer&lt;br /&gt;
*Costruttori (approfondimento)&lt;br /&gt;
*this (approfondmento)&lt;br /&gt;
**utilizzo per chiamare costruttori dentro costruttori&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18154</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18154"/>
		<updated>2007-11-07T12:57:54Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* 05/11/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*Si prega di iscriversi al compitino dal sito del corso&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 5 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
*Paradigma ad oggetti&lt;br /&gt;
*classi&lt;br /&gt;
*moduli&lt;br /&gt;
*ereditarietà&lt;br /&gt;
*concetti base&lt;br /&gt;
**astrazione&lt;br /&gt;
**incapsulamento dei dati&lt;br /&gt;
**ereditarietà&lt;br /&gt;
**polimorfismo&lt;br /&gt;
*Ciclo dal codice sorgente all'esecuzione (compilatore/interprete)&lt;br /&gt;
*Programma = classi + metodi&lt;br /&gt;
*commenti in Java&lt;br /&gt;
*tipi di errori&lt;br /&gt;
*#di compilazione (sintattici)&lt;br /&gt;
*#di esecuzione (semantici)&lt;br /&gt;
*#logici (non si ottiene il risultato voluto)&lt;br /&gt;
*Riprendiamo il concetto di ''Astrazione''&lt;br /&gt;
**Oggetti e classi come astrazioni&lt;br /&gt;
**'''Oggetti''': limitano l'accesso al loro interno, hanno uno ''stato''(descritto dai suoi campi) ed un ''comportamento''(descritto dai suoi metodi)&lt;br /&gt;
**una ''classe'' genera ''oggetti''detti anche ''istanze della classe''&lt;br /&gt;
*Riprendiamo il concetto di ''Incapsulamento dei dati'', realizzato attraverso&lt;br /&gt;
*#Interfaccia&lt;br /&gt;
*#Più livelli di accesso&lt;br /&gt;
*#*''public''&lt;br /&gt;
*#*''private''&lt;br /&gt;
*#*''protected''&lt;br /&gt;
*invocazione metodi&lt;br /&gt;
*costanti = variabili ''static''&lt;br /&gt;
*costruttori&lt;br /&gt;
*variabili&lt;br /&gt;
*assegnamento&lt;br /&gt;
*espressioni&lt;br /&gt;
*tipi di dato&lt;br /&gt;
*garbage collection&lt;br /&gt;
*Alias&lt;br /&gt;
*Dichiarazione ed inizializzazione&lt;br /&gt;
*Overloading&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*Tipi di dato come astrazione&lt;br /&gt;
*dichiarazione ed inizializzazione: che differenza c'è a livello di memoria&lt;br /&gt;
*differenza fra ''campo'' e ''variabile''&lt;br /&gt;
*''ConsoleInputManager'' e ''ConsoleOutputManager''&lt;br /&gt;
*esempio di campo privato ed effetti sull'accessibilità.&lt;br /&gt;
*esempio di sovrascrittura del metodo ''toString'' ed effetti&lt;br /&gt;
*concatenazione di stringhe&lt;br /&gt;
*sequenze di escape&lt;br /&gt;
*metodi per le stringhe&lt;br /&gt;
**toUpperCase&lt;br /&gt;
**charAt&lt;br /&gt;
**concat&lt;br /&gt;
**length&lt;br /&gt;
**substring&lt;br /&gt;
**compareTo&lt;br /&gt;
**replace&lt;br /&gt;
**startWith&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
Si è fatta lezione anzichè laboratorio (vedere [http://www.ccdi.unimi.it/it/avvisi/5316.html avviso]).&lt;br /&gt;
&lt;br /&gt;
*Ripresi i metodi per le stringhe&lt;br /&gt;
*parametri espliciti e impliciti (es. ''nome.compareTo(&amp;quot;Andrea&amp;quot;)'', '''nome''' è implicito e '''&amp;quot;Andrea&amp;quot;''' esplicito)&lt;br /&gt;
*Tipo '''Random'''-&amp;gt; funzione ''nextInt(int)''&lt;br /&gt;
*Segnatura (o firma) di un metodo&lt;br /&gt;
*Prototipo&lt;br /&gt;
*Overloading di metodi: si può solo con una diversa segnatura (tipicamente stesso nome ma diverso tipo e/o numero e/o ordine dei parametri)&lt;br /&gt;
*analisi di Frazione.java&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*tipo = nome + valori + operazoni lecite&lt;br /&gt;
*tipi primitivi&lt;br /&gt;
*espressioni ed operatori&lt;br /&gt;
*Conversioni implicite ed esplicite (''casting'')&lt;br /&gt;
*Precisionedei tipi e perdita di precisione&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 24/10/2007===&lt;br /&gt;
*boolean&lt;br /&gt;
*operatori logici&lt;br /&gt;
*legge di De Morgan&lt;br /&gt;
*metodi predicativi&lt;br /&gt;
*Lazy evaluation&lt;br /&gt;
*operatori&lt;br /&gt;
**incremento e decremento: a++, ++a, a--, --a&lt;br /&gt;
**assegnamento: a += b&lt;br /&gt;
**condizionale: ''condizione'' '''?''' ''espr1'' ''':''' ''espr2''&lt;br /&gt;
*precedenze fra operatori&lt;br /&gt;
*conversioni&lt;br /&gt;
*modi di conversione:&lt;br /&gt;
**casting&lt;br /&gt;
**durante assegnamento&lt;br /&gt;
**promozione in una espressione&lt;br /&gt;
*librerie, packages, import&lt;br /&gt;
*metodi statici di classe&lt;br /&gt;
*numeri pseudo-casuali&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 26/10/2007===&lt;br /&gt;
*esercizi sui tipi di dato e conversioni&lt;br /&gt;
&lt;br /&gt;
===Lezione 29/10/2007===&lt;br /&gt;
*ripasso numeri pseudo-casuali, esempi&lt;br /&gt;
*campi di istanza e campi di classe&lt;br /&gt;
*Istruzioni di selezione&lt;br /&gt;
**if&lt;br /&gt;
**if/else&lt;br /&gt;
*confronti fra caratteri (basati su valore ASCII)&lt;br /&gt;
*confronti fra oggetti: serve il metodo ''equals'', attenzione all'operatore ''==''&lt;br /&gt;
*'''String''' è un oggetto, quindi anche per esso vale il punto precedente&lt;br /&gt;
*confronto fra float/ double: come per gli oggetti, meglio usare ''compareTo'' per motivi di compatibilità di precisione&lt;br /&gt;
*''switch''&lt;br /&gt;
&lt;br /&gt;
===Lezione 31/10/2007===&lt;br /&gt;
''da svolgersi''&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/11/2007===&lt;br /&gt;
'''vacanza'''&lt;br /&gt;
&lt;br /&gt;
===05/11/2007===&lt;br /&gt;
&lt;br /&gt;
[http://wiki.dsy.it/w/Programmazione_Turno_2/2007-2008#Date.2C_compitini_ed_esami COMPITINO]&lt;br /&gt;
&lt;br /&gt;
===Lezione 07/11/2007===&lt;br /&gt;
'''non ci sono andato'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/11/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18153</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18153"/>
		<updated>2007-11-07T12:56:23Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 05/11/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
*Nuova variazione: il laboratorio di martedì si svolge in aula '''309'''&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V2&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V2&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
*Liste (''non ero presente, se potete aggiungere particolari ve ne sarei grato'')&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
*Espressioni&lt;br /&gt;
**semplici&lt;br /&gt;
***costanti&lt;br /&gt;
***variabili&lt;br /&gt;
**composte (espressioni aritmetiche, invocazione metodi)&lt;br /&gt;
*Puntatori&lt;br /&gt;
**assegnamenti fra puntatori (compatibilità di tipo)&lt;br /&gt;
**esempi&lt;br /&gt;
**Dereferenziazione di un puntatore (operatore '''*''')&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
*Pile&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***TOP(S)&lt;br /&gt;
***POP(S)&lt;br /&gt;
***PUSH(S, u)&lt;br /&gt;
**Implementazioni delle pile&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Code&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***FRONT(Q)&lt;br /&gt;
***DEQUEUE(Q)&lt;br /&gt;
***ENQUEUE(Q, u)&lt;br /&gt;
**Implementazioni delle code&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Allineamenti ed insiemi&lt;br /&gt;
**allineamenti&lt;br /&gt;
**#permutazione&lt;br /&gt;
**#disposizione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
**insiemi&lt;br /&gt;
**#combinazione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Grafi&lt;br /&gt;
**non orentati&lt;br /&gt;
**orientati&lt;br /&gt;
*Implementazioni&lt;br /&gt;
**matrice&lt;br /&gt;
**coppia di tabelle&lt;br /&gt;
**lista concatenata&lt;br /&gt;
*definizione di cammino&lt;br /&gt;
*definizione di ciclo&lt;br /&gt;
*definizione di sottografo&lt;br /&gt;
*definizione di grafo connesso&lt;br /&gt;
*relazione di connessione&lt;br /&gt;
**proprietà: transitiva, riflessiva, generalmente '''non''' simmetrica&lt;br /&gt;
*relazione di raggiungibilità&lt;br /&gt;
&lt;br /&gt;
===Lezione 23/10/2007===&lt;br /&gt;
*alberi&lt;br /&gt;
*albero di copertura&lt;br /&gt;
*foresta&lt;br /&gt;
*albero con radice&lt;br /&gt;
*rappresentazione di albero tramite tabella&lt;br /&gt;
*clique&lt;br /&gt;
*indipendent set&lt;br /&gt;
*padre,figlio,foglia,radice,fratelli,predecessore,successore, altezza, profondità&lt;br /&gt;
*albero bilanciato&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 23/10/2007===&lt;br /&gt;
*esercizi su puntatori&lt;br /&gt;
*esercizi su frazioni e passaggio parametri&lt;br /&gt;
&lt;br /&gt;
===Lezione 25/10/2007===&lt;br /&gt;
*visita di grafi per ampiezza&lt;br /&gt;
*esercizi&lt;br /&gt;
===Laboratorio 25/10/2007===&lt;br /&gt;
*ripasso tipi di dato&lt;br /&gt;
*revisione esercizi del laboratorio precedente&lt;br /&gt;
===Lezione 26/10/2007===&lt;br /&gt;
*alberi ordinati&lt;br /&gt;
**rappresentazione in memoria&lt;br /&gt;
***liste di adiacenza&lt;br /&gt;
***3 vettori&lt;br /&gt;
**Tipi di attraversamento&lt;br /&gt;
***in preordine&lt;br /&gt;
***in postordine&lt;br /&gt;
*alberi binari&lt;br /&gt;
**alberi binari completi&lt;br /&gt;
**rappresentazione in memoria&lt;br /&gt;
***2 vettori&lt;br /&gt;
**Tipi di attraversamento&lt;br /&gt;
***in preordine&lt;br /&gt;
***in postordine&lt;br /&gt;
***in ordine simmetrico&lt;br /&gt;
&lt;br /&gt;
===Lezione 29/10/2007===&lt;br /&gt;
'''ero assente'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 30/10/2007===&lt;br /&gt;
*ricorsione terminale&lt;br /&gt;
*procedura di ricerca binaria&lt;br /&gt;
**tempi e spazi (criterio uniforme)&lt;br /&gt;
*attraversamento in preordine&lt;br /&gt;
**procedura&lt;br /&gt;
**versione iterativa&lt;br /&gt;
*attraversamento in profondità&lt;br /&gt;
**procedura&lt;br /&gt;
**versione iterativa&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 30/10/2007===&lt;br /&gt;
*esercizi su equazioni e interi&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/11/2007===&lt;br /&gt;
'''vacanza'''&lt;br /&gt;
===Lezione 05/11/2007===&lt;br /&gt;
*Mergesort&lt;br /&gt;
**ordine di grandezza (tempo e spazio) di Mergesort&lt;br /&gt;
&lt;br /&gt;
===Lezione 06/11/2007===&lt;br /&gt;
'''non c'ero'''&lt;br /&gt;
===Lezione 08/11/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18152</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18152"/>
		<updated>2007-11-07T12:54:09Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 01/11/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
*Nuova variazione: il laboratorio di martedì si svolge in aula '''309'''&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V2&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V2&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
*Liste (''non ero presente, se potete aggiungere particolari ve ne sarei grato'')&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
*Espressioni&lt;br /&gt;
**semplici&lt;br /&gt;
***costanti&lt;br /&gt;
***variabili&lt;br /&gt;
**composte (espressioni aritmetiche, invocazione metodi)&lt;br /&gt;
*Puntatori&lt;br /&gt;
**assegnamenti fra puntatori (compatibilità di tipo)&lt;br /&gt;
**esempi&lt;br /&gt;
**Dereferenziazione di un puntatore (operatore '''*''')&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
*Pile&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***TOP(S)&lt;br /&gt;
***POP(S)&lt;br /&gt;
***PUSH(S, u)&lt;br /&gt;
**Implementazioni delle pile&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Code&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***FRONT(Q)&lt;br /&gt;
***DEQUEUE(Q)&lt;br /&gt;
***ENQUEUE(Q, u)&lt;br /&gt;
**Implementazioni delle code&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Allineamenti ed insiemi&lt;br /&gt;
**allineamenti&lt;br /&gt;
**#permutazione&lt;br /&gt;
**#disposizione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
**insiemi&lt;br /&gt;
**#combinazione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Grafi&lt;br /&gt;
**non orentati&lt;br /&gt;
**orientati&lt;br /&gt;
*Implementazioni&lt;br /&gt;
**matrice&lt;br /&gt;
**coppia di tabelle&lt;br /&gt;
**lista concatenata&lt;br /&gt;
*definizione di cammino&lt;br /&gt;
*definizione di ciclo&lt;br /&gt;
*definizione di sottografo&lt;br /&gt;
*definizione di grafo connesso&lt;br /&gt;
*relazione di connessione&lt;br /&gt;
**proprietà: transitiva, riflessiva, generalmente '''non''' simmetrica&lt;br /&gt;
*relazione di raggiungibilità&lt;br /&gt;
&lt;br /&gt;
===Lezione 23/10/2007===&lt;br /&gt;
*alberi&lt;br /&gt;
*albero di copertura&lt;br /&gt;
*foresta&lt;br /&gt;
*albero con radice&lt;br /&gt;
*rappresentazione di albero tramite tabella&lt;br /&gt;
*clique&lt;br /&gt;
*indipendent set&lt;br /&gt;
*padre,figlio,foglia,radice,fratelli,predecessore,successore, altezza, profondità&lt;br /&gt;
*albero bilanciato&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 23/10/2007===&lt;br /&gt;
*esercizi su puntatori&lt;br /&gt;
*esercizi su frazioni e passaggio parametri&lt;br /&gt;
&lt;br /&gt;
===Lezione 25/10/2007===&lt;br /&gt;
*visita di grafi per ampiezza&lt;br /&gt;
*esercizi&lt;br /&gt;
===Laboratorio 25/10/2007===&lt;br /&gt;
*ripasso tipi di dato&lt;br /&gt;
*revisione esercizi del laboratorio precedente&lt;br /&gt;
===Lezione 26/10/2007===&lt;br /&gt;
*alberi ordinati&lt;br /&gt;
**rappresentazione in memoria&lt;br /&gt;
***liste di adiacenza&lt;br /&gt;
***3 vettori&lt;br /&gt;
**Tipi di attraversamento&lt;br /&gt;
***in preordine&lt;br /&gt;
***in postordine&lt;br /&gt;
*alberi binari&lt;br /&gt;
**alberi binari completi&lt;br /&gt;
**rappresentazione in memoria&lt;br /&gt;
***2 vettori&lt;br /&gt;
**Tipi di attraversamento&lt;br /&gt;
***in preordine&lt;br /&gt;
***in postordine&lt;br /&gt;
***in ordine simmetrico&lt;br /&gt;
&lt;br /&gt;
===Lezione 29/10/2007===&lt;br /&gt;
'''ero assente'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 30/10/2007===&lt;br /&gt;
*ricorsione terminale&lt;br /&gt;
*procedura di ricerca binaria&lt;br /&gt;
**tempi e spazi (criterio uniforme)&lt;br /&gt;
*attraversamento in preordine&lt;br /&gt;
**procedura&lt;br /&gt;
**versione iterativa&lt;br /&gt;
*attraversamento in profondità&lt;br /&gt;
**procedura&lt;br /&gt;
**versione iterativa&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 30/10/2007===&lt;br /&gt;
*esercizi su equazioni e interi&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/11/2007===&lt;br /&gt;
'''vacanza'''&lt;br /&gt;
===Lezione 05/11/2007===&lt;br /&gt;
*Mergesort&lt;br /&gt;
===Lezione 06/11/2007===&lt;br /&gt;
'''non c'ero'''&lt;br /&gt;
===Lezione 08/11/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18133</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18133"/>
		<updated>2007-10-30T11:34:21Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 30/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
*Nuova variazione: il laboratorio di martedì si svolge in aula '''309'''&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V2&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V2&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
*Liste (''non ero presente, se potete aggiungere particolari ve ne sarei grato'')&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
*Espressioni&lt;br /&gt;
**semplici&lt;br /&gt;
***costanti&lt;br /&gt;
***variabili&lt;br /&gt;
**composte (espressioni aritmetiche, invocazione metodi)&lt;br /&gt;
*Puntatori&lt;br /&gt;
**assegnamenti fra puntatori (compatibilità di tipo)&lt;br /&gt;
**esempi&lt;br /&gt;
**Dereferenziazione di un puntatore (operatore '''*''')&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
*Pile&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***TOP(S)&lt;br /&gt;
***POP(S)&lt;br /&gt;
***PUSH(S, u)&lt;br /&gt;
**Implementazioni delle pile&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Code&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***FRONT(Q)&lt;br /&gt;
***DEQUEUE(Q)&lt;br /&gt;
***ENQUEUE(Q, u)&lt;br /&gt;
**Implementazioni delle code&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Allineamenti ed insiemi&lt;br /&gt;
**allineamenti&lt;br /&gt;
**#permutazione&lt;br /&gt;
**#disposizione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
**insiemi&lt;br /&gt;
**#combinazione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Grafi&lt;br /&gt;
**non orentati&lt;br /&gt;
**orientati&lt;br /&gt;
*Implementazioni&lt;br /&gt;
**matrice&lt;br /&gt;
**coppia di tabelle&lt;br /&gt;
**lista concatenata&lt;br /&gt;
*definizione di cammino&lt;br /&gt;
*definizione di ciclo&lt;br /&gt;
*definizione di sottografo&lt;br /&gt;
*definizione di grafo connesso&lt;br /&gt;
*relazione di connessione&lt;br /&gt;
**proprietà: transitiva, riflessiva, generalmente '''non''' simmetrica&lt;br /&gt;
*relazione di raggiungibilità&lt;br /&gt;
&lt;br /&gt;
===Lezione 23/10/2007===&lt;br /&gt;
*alberi&lt;br /&gt;
*albero di copertura&lt;br /&gt;
*foresta&lt;br /&gt;
*albero con radice&lt;br /&gt;
*rappresentazione di albero tramite tabella&lt;br /&gt;
*clique&lt;br /&gt;
*indipendent set&lt;br /&gt;
*padre,figlio,foglia,radice,fratelli,predecessore,successore, altezza, profondità&lt;br /&gt;
*albero bilanciato&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 23/10/2007===&lt;br /&gt;
*esercizi su puntatori&lt;br /&gt;
*esercizi su frazioni e passaggio parametri&lt;br /&gt;
&lt;br /&gt;
===Lezione 25/10/2007===&lt;br /&gt;
*visita di grafi per ampiezza&lt;br /&gt;
*esercizi&lt;br /&gt;
===Laboratorio 25/10/2007===&lt;br /&gt;
*ripasso tipi di dato&lt;br /&gt;
*revisione esercizi del laboratorio precedente&lt;br /&gt;
===Lezione 26/10/2007===&lt;br /&gt;
*alberi ordinati&lt;br /&gt;
**rappresentazione in memoria&lt;br /&gt;
***liste di adiacenza&lt;br /&gt;
***3 vettori&lt;br /&gt;
**Tipi di attraversamento&lt;br /&gt;
***in preordine&lt;br /&gt;
***in postordine&lt;br /&gt;
*alberi binari&lt;br /&gt;
**alberi binari completi&lt;br /&gt;
**rappresentazione in memoria&lt;br /&gt;
***2 vettori&lt;br /&gt;
**Tipi di attraversamento&lt;br /&gt;
***in preordine&lt;br /&gt;
***in postordine&lt;br /&gt;
***in ordine simmetrico&lt;br /&gt;
&lt;br /&gt;
===Lezione 29/10/2007===&lt;br /&gt;
'''ero assente'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 30/10/2007===&lt;br /&gt;
*ricorsione terminale&lt;br /&gt;
*procedura di ricerca binaria&lt;br /&gt;
**tempi e spazi (criterio uniforme)&lt;br /&gt;
*attraversamento in preordine&lt;br /&gt;
**procedura&lt;br /&gt;
**versione iterativa&lt;br /&gt;
*attraversamento in profondità&lt;br /&gt;
**procedura&lt;br /&gt;
**versione iterativa&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 30/10/2007===&lt;br /&gt;
*esercizi su equazioni e interi&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/11/2007===&lt;br /&gt;
'''vacanza'''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18132</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18132"/>
		<updated>2007-10-29T16:47:55Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 26/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
*Nuova variazione: il laboratorio di martedì si svolge in aula '''309'''&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V2&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V2&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
*Liste (''non ero presente, se potete aggiungere particolari ve ne sarei grato'')&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
*Espressioni&lt;br /&gt;
**semplici&lt;br /&gt;
***costanti&lt;br /&gt;
***variabili&lt;br /&gt;
**composte (espressioni aritmetiche, invocazione metodi)&lt;br /&gt;
*Puntatori&lt;br /&gt;
**assegnamenti fra puntatori (compatibilità di tipo)&lt;br /&gt;
**esempi&lt;br /&gt;
**Dereferenziazione di un puntatore (operatore '''*''')&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
*Pile&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***TOP(S)&lt;br /&gt;
***POP(S)&lt;br /&gt;
***PUSH(S, u)&lt;br /&gt;
**Implementazioni delle pile&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Code&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***FRONT(Q)&lt;br /&gt;
***DEQUEUE(Q)&lt;br /&gt;
***ENQUEUE(Q, u)&lt;br /&gt;
**Implementazioni delle code&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Allineamenti ed insiemi&lt;br /&gt;
**allineamenti&lt;br /&gt;
**#permutazione&lt;br /&gt;
**#disposizione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
**insiemi&lt;br /&gt;
**#combinazione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Grafi&lt;br /&gt;
**non orentati&lt;br /&gt;
**orientati&lt;br /&gt;
*Implementazioni&lt;br /&gt;
**matrice&lt;br /&gt;
**coppia di tabelle&lt;br /&gt;
**lista concatenata&lt;br /&gt;
*definizione di cammino&lt;br /&gt;
*definizione di ciclo&lt;br /&gt;
*definizione di sottografo&lt;br /&gt;
*definizione di grafo connesso&lt;br /&gt;
*relazione di connessione&lt;br /&gt;
**proprietà: transitiva, riflessiva, generalmente '''non''' simmetrica&lt;br /&gt;
*relazione di raggiungibilità&lt;br /&gt;
&lt;br /&gt;
===Lezione 23/10/2007===&lt;br /&gt;
*alberi&lt;br /&gt;
*albero di copertura&lt;br /&gt;
*foresta&lt;br /&gt;
*albero con radice&lt;br /&gt;
*rappresentazione di albero tramite tabella&lt;br /&gt;
*clique&lt;br /&gt;
*indipendent set&lt;br /&gt;
*padre,figlio,foglia,radice,fratelli,predecessore,successore, altezza, profondità&lt;br /&gt;
*albero bilanciato&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 23/10/2007===&lt;br /&gt;
*esercizi su puntatori&lt;br /&gt;
*esercizi su frazioni e passaggio parametri&lt;br /&gt;
&lt;br /&gt;
===Lezione 25/10/2007===&lt;br /&gt;
*visita di grafi per ampiezza&lt;br /&gt;
*esercizi&lt;br /&gt;
===Laboratorio 25/10/2007===&lt;br /&gt;
*ripasso tipi di dato&lt;br /&gt;
*revisione esercizi del laboratorio precedente&lt;br /&gt;
===Lezione 26/10/2007===&lt;br /&gt;
*alberi ordinati&lt;br /&gt;
**rappresentazione in memoria&lt;br /&gt;
***liste di adiacenza&lt;br /&gt;
***3 vettori&lt;br /&gt;
**Tipi di attraversamento&lt;br /&gt;
***in preordine&lt;br /&gt;
***in postordine&lt;br /&gt;
*alberi binari&lt;br /&gt;
**alberi binari completi&lt;br /&gt;
**rappresentazione in memoria&lt;br /&gt;
***2 vettori&lt;br /&gt;
**Tipi di attraversamento&lt;br /&gt;
***in preordine&lt;br /&gt;
***in postordine&lt;br /&gt;
***in ordine simmetrico&lt;br /&gt;
&lt;br /&gt;
===Lezione 29/10/2007===&lt;br /&gt;
'''ero assente'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 30/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18131</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18131"/>
		<updated>2007-10-29T16:44:38Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 26/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
*Nuova variazione: il laboratorio di martedì si svolge in aula '''309'''&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V2&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V2&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
*Liste (''non ero presente, se potete aggiungere particolari ve ne sarei grato'')&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
*Espressioni&lt;br /&gt;
**semplici&lt;br /&gt;
***costanti&lt;br /&gt;
***variabili&lt;br /&gt;
**composte (espressioni aritmetiche, invocazione metodi)&lt;br /&gt;
*Puntatori&lt;br /&gt;
**assegnamenti fra puntatori (compatibilità di tipo)&lt;br /&gt;
**esempi&lt;br /&gt;
**Dereferenziazione di un puntatore (operatore '''*''')&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
*Pile&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***TOP(S)&lt;br /&gt;
***POP(S)&lt;br /&gt;
***PUSH(S, u)&lt;br /&gt;
**Implementazioni delle pile&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Code&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***FRONT(Q)&lt;br /&gt;
***DEQUEUE(Q)&lt;br /&gt;
***ENQUEUE(Q, u)&lt;br /&gt;
**Implementazioni delle code&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Allineamenti ed insiemi&lt;br /&gt;
**allineamenti&lt;br /&gt;
**#permutazione&lt;br /&gt;
**#disposizione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
**insiemi&lt;br /&gt;
**#combinazione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Grafi&lt;br /&gt;
**non orentati&lt;br /&gt;
**orientati&lt;br /&gt;
*Implementazioni&lt;br /&gt;
**matrice&lt;br /&gt;
**coppia di tabelle&lt;br /&gt;
**lista concatenata&lt;br /&gt;
*definizione di cammino&lt;br /&gt;
*definizione di ciclo&lt;br /&gt;
*definizione di sottografo&lt;br /&gt;
*definizione di grafo connesso&lt;br /&gt;
*relazione di connessione&lt;br /&gt;
**proprietà: transitiva, riflessiva, generalmente '''non''' simmetrica&lt;br /&gt;
*relazione di raggiungibilità&lt;br /&gt;
&lt;br /&gt;
===Lezione 23/10/2007===&lt;br /&gt;
*alberi&lt;br /&gt;
*albero di copertura&lt;br /&gt;
*foresta&lt;br /&gt;
*albero con radice&lt;br /&gt;
*rappresentazione di albero tramite tabella&lt;br /&gt;
*clique&lt;br /&gt;
*indipendent set&lt;br /&gt;
*padre,figlio,foglia,radice,fratelli,predecessore,successore, altezza, profondità&lt;br /&gt;
*albero bilanciato&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 23/10/2007===&lt;br /&gt;
*esercizi su puntatori&lt;br /&gt;
*esercizi su frazioni e passaggio parametri&lt;br /&gt;
&lt;br /&gt;
===Lezione 25/10/2007===&lt;br /&gt;
*visita di grafi per ampiezza&lt;br /&gt;
*esercizi&lt;br /&gt;
===Laboratorio 25/10/2007===&lt;br /&gt;
*ripasso tipi di dato&lt;br /&gt;
*revisione esercizi del laboratorio precedente&lt;br /&gt;
===Lezione 26/10/2007===&lt;br /&gt;
* a&lt;br /&gt;
&lt;br /&gt;
===Lezione 29/10/2007===&lt;br /&gt;
'''ero assente'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 30/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18130</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18130"/>
		<updated>2007-10-29T16:40:34Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* AVVISI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*Si prega di iscriversi al compitino dal sito del corso&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 5 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
*Paradigma ad oggetti&lt;br /&gt;
*classi&lt;br /&gt;
*moduli&lt;br /&gt;
*ereditarietà&lt;br /&gt;
*concetti base&lt;br /&gt;
**astrazione&lt;br /&gt;
**incapsulamento dei dati&lt;br /&gt;
**ereditarietà&lt;br /&gt;
**polimorfismo&lt;br /&gt;
*Ciclo dal codice sorgente all'esecuzione (compilatore/interprete)&lt;br /&gt;
*Programma = classi + metodi&lt;br /&gt;
*commenti in Java&lt;br /&gt;
*tipi di errori&lt;br /&gt;
*#di compilazione (sintattici)&lt;br /&gt;
*#di esecuzione (semantici)&lt;br /&gt;
*#logici (non si ottiene il risultato voluto)&lt;br /&gt;
*Riprendiamo il concetto di ''Astrazione''&lt;br /&gt;
**Oggetti e classi come astrazioni&lt;br /&gt;
**'''Oggetti''': limitano l'accesso al loro interno, hanno uno ''stato''(descritto dai suoi campi) ed un ''comportamento''(descritto dai suoi metodi)&lt;br /&gt;
**una ''classe'' genera ''oggetti''detti anche ''istanze della classe''&lt;br /&gt;
*Riprendiamo il concetto di ''Incapsulamento dei dati'', realizzato attraverso&lt;br /&gt;
*#Interfaccia&lt;br /&gt;
*#Più livelli di accesso&lt;br /&gt;
*#*''public''&lt;br /&gt;
*#*''private''&lt;br /&gt;
*#*''protected''&lt;br /&gt;
*invocazione metodi&lt;br /&gt;
*costanti = variabili ''static''&lt;br /&gt;
*costruttori&lt;br /&gt;
*variabili&lt;br /&gt;
*assegnamento&lt;br /&gt;
*espressioni&lt;br /&gt;
*tipi di dato&lt;br /&gt;
*garbage collection&lt;br /&gt;
*Alias&lt;br /&gt;
*Dichiarazione ed inizializzazione&lt;br /&gt;
*Overloading&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*Tipi di dato come astrazione&lt;br /&gt;
*dichiarazione ed inizializzazione: che differenza c'è a livello di memoria&lt;br /&gt;
*differenza fra ''campo'' e ''variabile''&lt;br /&gt;
*''ConsoleInputManager'' e ''ConsoleOutputManager''&lt;br /&gt;
*esempio di campo privato ed effetti sull'accessibilità.&lt;br /&gt;
*esempio di sovrascrittura del metodo ''toString'' ed effetti&lt;br /&gt;
*concatenazione di stringhe&lt;br /&gt;
*sequenze di escape&lt;br /&gt;
*metodi per le stringhe&lt;br /&gt;
**toUpperCase&lt;br /&gt;
**charAt&lt;br /&gt;
**concat&lt;br /&gt;
**length&lt;br /&gt;
**substring&lt;br /&gt;
**compareTo&lt;br /&gt;
**replace&lt;br /&gt;
**startWith&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
Si è fatta lezione anzichè laboratorio (vedere [http://www.ccdi.unimi.it/it/avvisi/5316.html avviso]).&lt;br /&gt;
&lt;br /&gt;
*Ripresi i metodi per le stringhe&lt;br /&gt;
*parametri espliciti e impliciti (es. ''nome.compareTo(&amp;quot;Andrea&amp;quot;)'', '''nome''' è implicito e '''&amp;quot;Andrea&amp;quot;''' esplicito)&lt;br /&gt;
*Tipo '''Random'''-&amp;gt; funzione ''nextInt(int)''&lt;br /&gt;
*Segnatura (o firma) di un metodo&lt;br /&gt;
*Prototipo&lt;br /&gt;
*Overloading di metodi: si può solo con una diversa segnatura (tipicamente stesso nome ma diverso tipo e/o numero e/o ordine dei parametri)&lt;br /&gt;
*analisi di Frazione.java&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*tipo = nome + valori + operazoni lecite&lt;br /&gt;
*tipi primitivi&lt;br /&gt;
*espressioni ed operatori&lt;br /&gt;
*Conversioni implicite ed esplicite (''casting'')&lt;br /&gt;
*Precisionedei tipi e perdita di precisione&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 24/10/2007===&lt;br /&gt;
*boolean&lt;br /&gt;
*operatori logici&lt;br /&gt;
*legge di De Morgan&lt;br /&gt;
*metodi predicativi&lt;br /&gt;
*Lazy evaluation&lt;br /&gt;
*operatori&lt;br /&gt;
**incremento e decremento: a++, ++a, a--, --a&lt;br /&gt;
**assegnamento: a += b&lt;br /&gt;
**condizionale: ''condizione'' '''?''' ''espr1'' ''':''' ''espr2''&lt;br /&gt;
*precedenze fra operatori&lt;br /&gt;
*conversioni&lt;br /&gt;
*modi di conversione:&lt;br /&gt;
**casting&lt;br /&gt;
**durante assegnamento&lt;br /&gt;
**promozione in una espressione&lt;br /&gt;
*librerie, packages, import&lt;br /&gt;
*metodi statici di classe&lt;br /&gt;
*numeri pseudo-casuali&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 26/10/2007===&lt;br /&gt;
*esercizi sui tipi di dato e conversioni&lt;br /&gt;
&lt;br /&gt;
===Lezione 29/10/2007===&lt;br /&gt;
*ripasso numeri pseudo-casuali, esempi&lt;br /&gt;
*campi di istanza e campi di classe&lt;br /&gt;
*Istruzioni di selezione&lt;br /&gt;
**if&lt;br /&gt;
**if/else&lt;br /&gt;
*confronti fra caratteri (basati su valore ASCII)&lt;br /&gt;
*confronti fra oggetti: serve il metodo ''equals'', attenzione all'operatore ''==''&lt;br /&gt;
*'''String''' è un oggetto, quindi anche per esso vale il punto precedente&lt;br /&gt;
*confronto fra float/ double: come per gli oggetti, meglio usare ''compareTo'' per motivi di compatibilità di precisione&lt;br /&gt;
*''switch''&lt;br /&gt;
&lt;br /&gt;
===Lezione 31/10/2007===&lt;br /&gt;
''da svolgersi''&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/11/2007===&lt;br /&gt;
'''vacanza'''&lt;br /&gt;
&lt;br /&gt;
===05/11/2007===&lt;br /&gt;
&lt;br /&gt;
[http://wiki.dsy.it/w/Programmazione_Turno_2/2007-2008#Date.2C_compitini_ed_esami COMPITINO]&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18129</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18129"/>
		<updated>2007-10-29T16:36:57Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* 05/11/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 5 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
*Paradigma ad oggetti&lt;br /&gt;
*classi&lt;br /&gt;
*moduli&lt;br /&gt;
*ereditarietà&lt;br /&gt;
*concetti base&lt;br /&gt;
**astrazione&lt;br /&gt;
**incapsulamento dei dati&lt;br /&gt;
**ereditarietà&lt;br /&gt;
**polimorfismo&lt;br /&gt;
*Ciclo dal codice sorgente all'esecuzione (compilatore/interprete)&lt;br /&gt;
*Programma = classi + metodi&lt;br /&gt;
*commenti in Java&lt;br /&gt;
*tipi di errori&lt;br /&gt;
*#di compilazione (sintattici)&lt;br /&gt;
*#di esecuzione (semantici)&lt;br /&gt;
*#logici (non si ottiene il risultato voluto)&lt;br /&gt;
*Riprendiamo il concetto di ''Astrazione''&lt;br /&gt;
**Oggetti e classi come astrazioni&lt;br /&gt;
**'''Oggetti''': limitano l'accesso al loro interno, hanno uno ''stato''(descritto dai suoi campi) ed un ''comportamento''(descritto dai suoi metodi)&lt;br /&gt;
**una ''classe'' genera ''oggetti''detti anche ''istanze della classe''&lt;br /&gt;
*Riprendiamo il concetto di ''Incapsulamento dei dati'', realizzato attraverso&lt;br /&gt;
*#Interfaccia&lt;br /&gt;
*#Più livelli di accesso&lt;br /&gt;
*#*''public''&lt;br /&gt;
*#*''private''&lt;br /&gt;
*#*''protected''&lt;br /&gt;
*invocazione metodi&lt;br /&gt;
*costanti = variabili ''static''&lt;br /&gt;
*costruttori&lt;br /&gt;
*variabili&lt;br /&gt;
*assegnamento&lt;br /&gt;
*espressioni&lt;br /&gt;
*tipi di dato&lt;br /&gt;
*garbage collection&lt;br /&gt;
*Alias&lt;br /&gt;
*Dichiarazione ed inizializzazione&lt;br /&gt;
*Overloading&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*Tipi di dato come astrazione&lt;br /&gt;
*dichiarazione ed inizializzazione: che differenza c'è a livello di memoria&lt;br /&gt;
*differenza fra ''campo'' e ''variabile''&lt;br /&gt;
*''ConsoleInputManager'' e ''ConsoleOutputManager''&lt;br /&gt;
*esempio di campo privato ed effetti sull'accessibilità.&lt;br /&gt;
*esempio di sovrascrittura del metodo ''toString'' ed effetti&lt;br /&gt;
*concatenazione di stringhe&lt;br /&gt;
*sequenze di escape&lt;br /&gt;
*metodi per le stringhe&lt;br /&gt;
**toUpperCase&lt;br /&gt;
**charAt&lt;br /&gt;
**concat&lt;br /&gt;
**length&lt;br /&gt;
**substring&lt;br /&gt;
**compareTo&lt;br /&gt;
**replace&lt;br /&gt;
**startWith&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
Si è fatta lezione anzichè laboratorio (vedere [http://www.ccdi.unimi.it/it/avvisi/5316.html avviso]).&lt;br /&gt;
&lt;br /&gt;
*Ripresi i metodi per le stringhe&lt;br /&gt;
*parametri espliciti e impliciti (es. ''nome.compareTo(&amp;quot;Andrea&amp;quot;)'', '''nome''' è implicito e '''&amp;quot;Andrea&amp;quot;''' esplicito)&lt;br /&gt;
*Tipo '''Random'''-&amp;gt; funzione ''nextInt(int)''&lt;br /&gt;
*Segnatura (o firma) di un metodo&lt;br /&gt;
*Prototipo&lt;br /&gt;
*Overloading di metodi: si può solo con una diversa segnatura (tipicamente stesso nome ma diverso tipo e/o numero e/o ordine dei parametri)&lt;br /&gt;
*analisi di Frazione.java&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*tipo = nome + valori + operazoni lecite&lt;br /&gt;
*tipi primitivi&lt;br /&gt;
*espressioni ed operatori&lt;br /&gt;
*Conversioni implicite ed esplicite (''casting'')&lt;br /&gt;
*Precisionedei tipi e perdita di precisione&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 24/10/2007===&lt;br /&gt;
*boolean&lt;br /&gt;
*operatori logici&lt;br /&gt;
*legge di De Morgan&lt;br /&gt;
*metodi predicativi&lt;br /&gt;
*Lazy evaluation&lt;br /&gt;
*operatori&lt;br /&gt;
**incremento e decremento: a++, ++a, a--, --a&lt;br /&gt;
**assegnamento: a += b&lt;br /&gt;
**condizionale: ''condizione'' '''?''' ''espr1'' ''':''' ''espr2''&lt;br /&gt;
*precedenze fra operatori&lt;br /&gt;
*conversioni&lt;br /&gt;
*modi di conversione:&lt;br /&gt;
**casting&lt;br /&gt;
**durante assegnamento&lt;br /&gt;
**promozione in una espressione&lt;br /&gt;
*librerie, packages, import&lt;br /&gt;
*metodi statici di classe&lt;br /&gt;
*numeri pseudo-casuali&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 26/10/2007===&lt;br /&gt;
*esercizi sui tipi di dato e conversioni&lt;br /&gt;
&lt;br /&gt;
===Lezione 29/10/2007===&lt;br /&gt;
*ripasso numeri pseudo-casuali, esempi&lt;br /&gt;
*campi di istanza e campi di classe&lt;br /&gt;
*Istruzioni di selezione&lt;br /&gt;
**if&lt;br /&gt;
**if/else&lt;br /&gt;
*confronti fra caratteri (basati su valore ASCII)&lt;br /&gt;
*confronti fra oggetti: serve il metodo ''equals'', attenzione all'operatore ''==''&lt;br /&gt;
*'''String''' è un oggetto, quindi anche per esso vale il punto precedente&lt;br /&gt;
*confronto fra float/ double: come per gli oggetti, meglio usare ''compareTo'' per motivi di compatibilità di precisione&lt;br /&gt;
*''switch''&lt;br /&gt;
&lt;br /&gt;
===Lezione 31/10/2007===&lt;br /&gt;
''da svolgersi''&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/11/2007===&lt;br /&gt;
'''vacanza'''&lt;br /&gt;
&lt;br /&gt;
===05/11/2007===&lt;br /&gt;
&lt;br /&gt;
[http://wiki.dsy.it/w/Programmazione_Turno_2/2007-2008#Date.2C_compitini_ed_esami COMPITINO]&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18128</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18128"/>
		<updated>2007-10-29T16:36:04Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Date, compitini ed esami */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 5 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
*Paradigma ad oggetti&lt;br /&gt;
*classi&lt;br /&gt;
*moduli&lt;br /&gt;
*ereditarietà&lt;br /&gt;
*concetti base&lt;br /&gt;
**astrazione&lt;br /&gt;
**incapsulamento dei dati&lt;br /&gt;
**ereditarietà&lt;br /&gt;
**polimorfismo&lt;br /&gt;
*Ciclo dal codice sorgente all'esecuzione (compilatore/interprete)&lt;br /&gt;
*Programma = classi + metodi&lt;br /&gt;
*commenti in Java&lt;br /&gt;
*tipi di errori&lt;br /&gt;
*#di compilazione (sintattici)&lt;br /&gt;
*#di esecuzione (semantici)&lt;br /&gt;
*#logici (non si ottiene il risultato voluto)&lt;br /&gt;
*Riprendiamo il concetto di ''Astrazione''&lt;br /&gt;
**Oggetti e classi come astrazioni&lt;br /&gt;
**'''Oggetti''': limitano l'accesso al loro interno, hanno uno ''stato''(descritto dai suoi campi) ed un ''comportamento''(descritto dai suoi metodi)&lt;br /&gt;
**una ''classe'' genera ''oggetti''detti anche ''istanze della classe''&lt;br /&gt;
*Riprendiamo il concetto di ''Incapsulamento dei dati'', realizzato attraverso&lt;br /&gt;
*#Interfaccia&lt;br /&gt;
*#Più livelli di accesso&lt;br /&gt;
*#*''public''&lt;br /&gt;
*#*''private''&lt;br /&gt;
*#*''protected''&lt;br /&gt;
*invocazione metodi&lt;br /&gt;
*costanti = variabili ''static''&lt;br /&gt;
*costruttori&lt;br /&gt;
*variabili&lt;br /&gt;
*assegnamento&lt;br /&gt;
*espressioni&lt;br /&gt;
*tipi di dato&lt;br /&gt;
*garbage collection&lt;br /&gt;
*Alias&lt;br /&gt;
*Dichiarazione ed inizializzazione&lt;br /&gt;
*Overloading&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*Tipi di dato come astrazione&lt;br /&gt;
*dichiarazione ed inizializzazione: che differenza c'è a livello di memoria&lt;br /&gt;
*differenza fra ''campo'' e ''variabile''&lt;br /&gt;
*''ConsoleInputManager'' e ''ConsoleOutputManager''&lt;br /&gt;
*esempio di campo privato ed effetti sull'accessibilità.&lt;br /&gt;
*esempio di sovrascrittura del metodo ''toString'' ed effetti&lt;br /&gt;
*concatenazione di stringhe&lt;br /&gt;
*sequenze di escape&lt;br /&gt;
*metodi per le stringhe&lt;br /&gt;
**toUpperCase&lt;br /&gt;
**charAt&lt;br /&gt;
**concat&lt;br /&gt;
**length&lt;br /&gt;
**substring&lt;br /&gt;
**compareTo&lt;br /&gt;
**replace&lt;br /&gt;
**startWith&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
Si è fatta lezione anzichè laboratorio (vedere [http://www.ccdi.unimi.it/it/avvisi/5316.html avviso]).&lt;br /&gt;
&lt;br /&gt;
*Ripresi i metodi per le stringhe&lt;br /&gt;
*parametri espliciti e impliciti (es. ''nome.compareTo(&amp;quot;Andrea&amp;quot;)'', '''nome''' è implicito e '''&amp;quot;Andrea&amp;quot;''' esplicito)&lt;br /&gt;
*Tipo '''Random'''-&amp;gt; funzione ''nextInt(int)''&lt;br /&gt;
*Segnatura (o firma) di un metodo&lt;br /&gt;
*Prototipo&lt;br /&gt;
*Overloading di metodi: si può solo con una diversa segnatura (tipicamente stesso nome ma diverso tipo e/o numero e/o ordine dei parametri)&lt;br /&gt;
*analisi di Frazione.java&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*tipo = nome + valori + operazoni lecite&lt;br /&gt;
*tipi primitivi&lt;br /&gt;
*espressioni ed operatori&lt;br /&gt;
*Conversioni implicite ed esplicite (''casting'')&lt;br /&gt;
*Precisionedei tipi e perdita di precisione&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 24/10/2007===&lt;br /&gt;
*boolean&lt;br /&gt;
*operatori logici&lt;br /&gt;
*legge di De Morgan&lt;br /&gt;
*metodi predicativi&lt;br /&gt;
*Lazy evaluation&lt;br /&gt;
*operatori&lt;br /&gt;
**incremento e decremento: a++, ++a, a--, --a&lt;br /&gt;
**assegnamento: a += b&lt;br /&gt;
**condizionale: ''condizione'' '''?''' ''espr1'' ''':''' ''espr2''&lt;br /&gt;
*precedenze fra operatori&lt;br /&gt;
*conversioni&lt;br /&gt;
*modi di conversione:&lt;br /&gt;
**casting&lt;br /&gt;
**durante assegnamento&lt;br /&gt;
**promozione in una espressione&lt;br /&gt;
*librerie, packages, import&lt;br /&gt;
*metodi statici di classe&lt;br /&gt;
*numeri pseudo-casuali&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 26/10/2007===&lt;br /&gt;
*esercizi sui tipi di dato e conversioni&lt;br /&gt;
&lt;br /&gt;
===Lezione 29/10/2007===&lt;br /&gt;
*ripasso numeri pseudo-casuali, esempi&lt;br /&gt;
*campi di istanza e campi di classe&lt;br /&gt;
*Istruzioni di selezione&lt;br /&gt;
**if&lt;br /&gt;
**if/else&lt;br /&gt;
*confronti fra caratteri (basati su valore ASCII)&lt;br /&gt;
*confronti fra oggetti: serve il metodo ''equals'', attenzione all'operatore ''==''&lt;br /&gt;
*'''String''' è un oggetto, quindi anche per esso vale il punto precedente&lt;br /&gt;
*confronto fra float/ double: come per gli oggetti, meglio usare ''compareTo'' per motivi di compatibilità di precisione&lt;br /&gt;
*''switch''&lt;br /&gt;
&lt;br /&gt;
===Lezione 31/10/2007===&lt;br /&gt;
''da svolgersi''&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/11/2007===&lt;br /&gt;
'''vacanza'''&lt;br /&gt;
&lt;br /&gt;
===05/11/2007===&lt;br /&gt;
'''COMPITINO'''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18127</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18127"/>
		<updated>2007-10-29T16:35:13Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Laboratorio 26/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 1 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
*Paradigma ad oggetti&lt;br /&gt;
*classi&lt;br /&gt;
*moduli&lt;br /&gt;
*ereditarietà&lt;br /&gt;
*concetti base&lt;br /&gt;
**astrazione&lt;br /&gt;
**incapsulamento dei dati&lt;br /&gt;
**ereditarietà&lt;br /&gt;
**polimorfismo&lt;br /&gt;
*Ciclo dal codice sorgente all'esecuzione (compilatore/interprete)&lt;br /&gt;
*Programma = classi + metodi&lt;br /&gt;
*commenti in Java&lt;br /&gt;
*tipi di errori&lt;br /&gt;
*#di compilazione (sintattici)&lt;br /&gt;
*#di esecuzione (semantici)&lt;br /&gt;
*#logici (non si ottiene il risultato voluto)&lt;br /&gt;
*Riprendiamo il concetto di ''Astrazione''&lt;br /&gt;
**Oggetti e classi come astrazioni&lt;br /&gt;
**'''Oggetti''': limitano l'accesso al loro interno, hanno uno ''stato''(descritto dai suoi campi) ed un ''comportamento''(descritto dai suoi metodi)&lt;br /&gt;
**una ''classe'' genera ''oggetti''detti anche ''istanze della classe''&lt;br /&gt;
*Riprendiamo il concetto di ''Incapsulamento dei dati'', realizzato attraverso&lt;br /&gt;
*#Interfaccia&lt;br /&gt;
*#Più livelli di accesso&lt;br /&gt;
*#*''public''&lt;br /&gt;
*#*''private''&lt;br /&gt;
*#*''protected''&lt;br /&gt;
*invocazione metodi&lt;br /&gt;
*costanti = variabili ''static''&lt;br /&gt;
*costruttori&lt;br /&gt;
*variabili&lt;br /&gt;
*assegnamento&lt;br /&gt;
*espressioni&lt;br /&gt;
*tipi di dato&lt;br /&gt;
*garbage collection&lt;br /&gt;
*Alias&lt;br /&gt;
*Dichiarazione ed inizializzazione&lt;br /&gt;
*Overloading&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*Tipi di dato come astrazione&lt;br /&gt;
*dichiarazione ed inizializzazione: che differenza c'è a livello di memoria&lt;br /&gt;
*differenza fra ''campo'' e ''variabile''&lt;br /&gt;
*''ConsoleInputManager'' e ''ConsoleOutputManager''&lt;br /&gt;
*esempio di campo privato ed effetti sull'accessibilità.&lt;br /&gt;
*esempio di sovrascrittura del metodo ''toString'' ed effetti&lt;br /&gt;
*concatenazione di stringhe&lt;br /&gt;
*sequenze di escape&lt;br /&gt;
*metodi per le stringhe&lt;br /&gt;
**toUpperCase&lt;br /&gt;
**charAt&lt;br /&gt;
**concat&lt;br /&gt;
**length&lt;br /&gt;
**substring&lt;br /&gt;
**compareTo&lt;br /&gt;
**replace&lt;br /&gt;
**startWith&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
Si è fatta lezione anzichè laboratorio (vedere [http://www.ccdi.unimi.it/it/avvisi/5316.html avviso]).&lt;br /&gt;
&lt;br /&gt;
*Ripresi i metodi per le stringhe&lt;br /&gt;
*parametri espliciti e impliciti (es. ''nome.compareTo(&amp;quot;Andrea&amp;quot;)'', '''nome''' è implicito e '''&amp;quot;Andrea&amp;quot;''' esplicito)&lt;br /&gt;
*Tipo '''Random'''-&amp;gt; funzione ''nextInt(int)''&lt;br /&gt;
*Segnatura (o firma) di un metodo&lt;br /&gt;
*Prototipo&lt;br /&gt;
*Overloading di metodi: si può solo con una diversa segnatura (tipicamente stesso nome ma diverso tipo e/o numero e/o ordine dei parametri)&lt;br /&gt;
*analisi di Frazione.java&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*tipo = nome + valori + operazoni lecite&lt;br /&gt;
*tipi primitivi&lt;br /&gt;
*espressioni ed operatori&lt;br /&gt;
*Conversioni implicite ed esplicite (''casting'')&lt;br /&gt;
*Precisionedei tipi e perdita di precisione&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 24/10/2007===&lt;br /&gt;
*boolean&lt;br /&gt;
*operatori logici&lt;br /&gt;
*legge di De Morgan&lt;br /&gt;
*metodi predicativi&lt;br /&gt;
*Lazy evaluation&lt;br /&gt;
*operatori&lt;br /&gt;
**incremento e decremento: a++, ++a, a--, --a&lt;br /&gt;
**assegnamento: a += b&lt;br /&gt;
**condizionale: ''condizione'' '''?''' ''espr1'' ''':''' ''espr2''&lt;br /&gt;
*precedenze fra operatori&lt;br /&gt;
*conversioni&lt;br /&gt;
*modi di conversione:&lt;br /&gt;
**casting&lt;br /&gt;
**durante assegnamento&lt;br /&gt;
**promozione in una espressione&lt;br /&gt;
*librerie, packages, import&lt;br /&gt;
*metodi statici di classe&lt;br /&gt;
*numeri pseudo-casuali&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 26/10/2007===&lt;br /&gt;
*esercizi sui tipi di dato e conversioni&lt;br /&gt;
&lt;br /&gt;
===Lezione 29/10/2007===&lt;br /&gt;
*ripasso numeri pseudo-casuali, esempi&lt;br /&gt;
*campi di istanza e campi di classe&lt;br /&gt;
*Istruzioni di selezione&lt;br /&gt;
**if&lt;br /&gt;
**if/else&lt;br /&gt;
*confronti fra caratteri (basati su valore ASCII)&lt;br /&gt;
*confronti fra oggetti: serve il metodo ''equals'', attenzione all'operatore ''==''&lt;br /&gt;
*'''String''' è un oggetto, quindi anche per esso vale il punto precedente&lt;br /&gt;
*confronto fra float/ double: come per gli oggetti, meglio usare ''compareTo'' per motivi di compatibilità di precisione&lt;br /&gt;
*''switch''&lt;br /&gt;
&lt;br /&gt;
===Lezione 31/10/2007===&lt;br /&gt;
''da svolgersi''&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/11/2007===&lt;br /&gt;
'''vacanza'''&lt;br /&gt;
&lt;br /&gt;
===05/11/2007===&lt;br /&gt;
'''COMPITINO'''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18126</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18126"/>
		<updated>2007-10-29T16:29:24Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 24/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 1 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
*Paradigma ad oggetti&lt;br /&gt;
*classi&lt;br /&gt;
*moduli&lt;br /&gt;
*ereditarietà&lt;br /&gt;
*concetti base&lt;br /&gt;
**astrazione&lt;br /&gt;
**incapsulamento dei dati&lt;br /&gt;
**ereditarietà&lt;br /&gt;
**polimorfismo&lt;br /&gt;
*Ciclo dal codice sorgente all'esecuzione (compilatore/interprete)&lt;br /&gt;
*Programma = classi + metodi&lt;br /&gt;
*commenti in Java&lt;br /&gt;
*tipi di errori&lt;br /&gt;
*#di compilazione (sintattici)&lt;br /&gt;
*#di esecuzione (semantici)&lt;br /&gt;
*#logici (non si ottiene il risultato voluto)&lt;br /&gt;
*Riprendiamo il concetto di ''Astrazione''&lt;br /&gt;
**Oggetti e classi come astrazioni&lt;br /&gt;
**'''Oggetti''': limitano l'accesso al loro interno, hanno uno ''stato''(descritto dai suoi campi) ed un ''comportamento''(descritto dai suoi metodi)&lt;br /&gt;
**una ''classe'' genera ''oggetti''detti anche ''istanze della classe''&lt;br /&gt;
*Riprendiamo il concetto di ''Incapsulamento dei dati'', realizzato attraverso&lt;br /&gt;
*#Interfaccia&lt;br /&gt;
*#Più livelli di accesso&lt;br /&gt;
*#*''public''&lt;br /&gt;
*#*''private''&lt;br /&gt;
*#*''protected''&lt;br /&gt;
*invocazione metodi&lt;br /&gt;
*costanti = variabili ''static''&lt;br /&gt;
*costruttori&lt;br /&gt;
*variabili&lt;br /&gt;
*assegnamento&lt;br /&gt;
*espressioni&lt;br /&gt;
*tipi di dato&lt;br /&gt;
*garbage collection&lt;br /&gt;
*Alias&lt;br /&gt;
*Dichiarazione ed inizializzazione&lt;br /&gt;
*Overloading&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*Tipi di dato come astrazione&lt;br /&gt;
*dichiarazione ed inizializzazione: che differenza c'è a livello di memoria&lt;br /&gt;
*differenza fra ''campo'' e ''variabile''&lt;br /&gt;
*''ConsoleInputManager'' e ''ConsoleOutputManager''&lt;br /&gt;
*esempio di campo privato ed effetti sull'accessibilità.&lt;br /&gt;
*esempio di sovrascrittura del metodo ''toString'' ed effetti&lt;br /&gt;
*concatenazione di stringhe&lt;br /&gt;
*sequenze di escape&lt;br /&gt;
*metodi per le stringhe&lt;br /&gt;
**toUpperCase&lt;br /&gt;
**charAt&lt;br /&gt;
**concat&lt;br /&gt;
**length&lt;br /&gt;
**substring&lt;br /&gt;
**compareTo&lt;br /&gt;
**replace&lt;br /&gt;
**startWith&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
Si è fatta lezione anzichè laboratorio (vedere [http://www.ccdi.unimi.it/it/avvisi/5316.html avviso]).&lt;br /&gt;
&lt;br /&gt;
*Ripresi i metodi per le stringhe&lt;br /&gt;
*parametri espliciti e impliciti (es. ''nome.compareTo(&amp;quot;Andrea&amp;quot;)'', '''nome''' è implicito e '''&amp;quot;Andrea&amp;quot;''' esplicito)&lt;br /&gt;
*Tipo '''Random'''-&amp;gt; funzione ''nextInt(int)''&lt;br /&gt;
*Segnatura (o firma) di un metodo&lt;br /&gt;
*Prototipo&lt;br /&gt;
*Overloading di metodi: si può solo con una diversa segnatura (tipicamente stesso nome ma diverso tipo e/o numero e/o ordine dei parametri)&lt;br /&gt;
*analisi di Frazione.java&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*tipo = nome + valori + operazoni lecite&lt;br /&gt;
*tipi primitivi&lt;br /&gt;
*espressioni ed operatori&lt;br /&gt;
*Conversioni implicite ed esplicite (''casting'')&lt;br /&gt;
*Precisionedei tipi e perdita di precisione&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 24/10/2007===&lt;br /&gt;
*boolean&lt;br /&gt;
*operatori logici&lt;br /&gt;
*legge di De Morgan&lt;br /&gt;
*metodi predicativi&lt;br /&gt;
*Lazy evaluation&lt;br /&gt;
*operatori&lt;br /&gt;
**incremento e decremento: a++, ++a, a--, --a&lt;br /&gt;
**assegnamento: a += b&lt;br /&gt;
**condizionale: ''condizione'' '''?''' ''espr1'' ''':''' ''espr2''&lt;br /&gt;
*precedenze fra operatori&lt;br /&gt;
*conversioni&lt;br /&gt;
*modi di conversione:&lt;br /&gt;
**casting&lt;br /&gt;
**durante assegnamento&lt;br /&gt;
**promozione in una espressione&lt;br /&gt;
*librerie, packages, import&lt;br /&gt;
*metodi statici di classe&lt;br /&gt;
*numeri pseudo-casuali&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 26/10/2007===&lt;br /&gt;
*esercizi sui tipi di dato e conversioni&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18125</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18125"/>
		<updated>2007-10-29T16:24:25Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 26/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 1 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
*Paradigma ad oggetti&lt;br /&gt;
*classi&lt;br /&gt;
*moduli&lt;br /&gt;
*ereditarietà&lt;br /&gt;
*concetti base&lt;br /&gt;
**astrazione&lt;br /&gt;
**incapsulamento dei dati&lt;br /&gt;
**ereditarietà&lt;br /&gt;
**polimorfismo&lt;br /&gt;
*Ciclo dal codice sorgente all'esecuzione (compilatore/interprete)&lt;br /&gt;
*Programma = classi + metodi&lt;br /&gt;
*commenti in Java&lt;br /&gt;
*tipi di errori&lt;br /&gt;
*#di compilazione (sintattici)&lt;br /&gt;
*#di esecuzione (semantici)&lt;br /&gt;
*#logici (non si ottiene il risultato voluto)&lt;br /&gt;
*Riprendiamo il concetto di ''Astrazione''&lt;br /&gt;
**Oggetti e classi come astrazioni&lt;br /&gt;
**'''Oggetti''': limitano l'accesso al loro interno, hanno uno ''stato''(descritto dai suoi campi) ed un ''comportamento''(descritto dai suoi metodi)&lt;br /&gt;
**una ''classe'' genera ''oggetti''detti anche ''istanze della classe''&lt;br /&gt;
*Riprendiamo il concetto di ''Incapsulamento dei dati'', realizzato attraverso&lt;br /&gt;
*#Interfaccia&lt;br /&gt;
*#Più livelli di accesso&lt;br /&gt;
*#*''public''&lt;br /&gt;
*#*''private''&lt;br /&gt;
*#*''protected''&lt;br /&gt;
*invocazione metodi&lt;br /&gt;
*costanti = variabili ''static''&lt;br /&gt;
*costruttori&lt;br /&gt;
*variabili&lt;br /&gt;
*assegnamento&lt;br /&gt;
*espressioni&lt;br /&gt;
*tipi di dato&lt;br /&gt;
*garbage collection&lt;br /&gt;
*Alias&lt;br /&gt;
*Dichiarazione ed inizializzazione&lt;br /&gt;
*Overloading&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*Tipi di dato come astrazione&lt;br /&gt;
*dichiarazione ed inizializzazione: che differenza c'è a livello di memoria&lt;br /&gt;
*differenza fra ''campo'' e ''variabile''&lt;br /&gt;
*''ConsoleInputManager'' e ''ConsoleOutputManager''&lt;br /&gt;
*esempio di campo privato ed effetti sull'accessibilità.&lt;br /&gt;
*esempio di sovrascrittura del metodo ''toString'' ed effetti&lt;br /&gt;
*concatenazione di stringhe&lt;br /&gt;
*sequenze di escape&lt;br /&gt;
*metodi per le stringhe&lt;br /&gt;
**toUpperCase&lt;br /&gt;
**charAt&lt;br /&gt;
**concat&lt;br /&gt;
**length&lt;br /&gt;
**substring&lt;br /&gt;
**compareTo&lt;br /&gt;
**replace&lt;br /&gt;
**startWith&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
Si è fatta lezione anzichè laboratorio (vedere [http://www.ccdi.unimi.it/it/avvisi/5316.html avviso]).&lt;br /&gt;
&lt;br /&gt;
*Ripresi i metodi per le stringhe&lt;br /&gt;
*parametri espliciti e impliciti (es. ''nome.compareTo(&amp;quot;Andrea&amp;quot;)'', '''nome''' è implicito e '''&amp;quot;Andrea&amp;quot;''' esplicito)&lt;br /&gt;
*Tipo '''Random'''-&amp;gt; funzione ''nextInt(int)''&lt;br /&gt;
*Segnatura (o firma) di un metodo&lt;br /&gt;
*Prototipo&lt;br /&gt;
*Overloading di metodi: si può solo con una diversa segnatura (tipicamente stesso nome ma diverso tipo e/o numero e/o ordine dei parametri)&lt;br /&gt;
*analisi di Frazione.java&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*tipo = nome + valori + operazoni lecite&lt;br /&gt;
*tipi primitivi&lt;br /&gt;
*espressioni ed operatori&lt;br /&gt;
*Conversioni implicite ed esplicite (''casting'')&lt;br /&gt;
*Precisionedei tipi e perdita di precisione&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 24/10/2007===&lt;br /&gt;
'''non c'ero'''&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 26/10/2007===&lt;br /&gt;
*esercizi sui tipi di dato e conversioni&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18114</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18114"/>
		<updated>2007-10-25T10:38:10Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 24/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 1 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
*Paradigma ad oggetti&lt;br /&gt;
*classi&lt;br /&gt;
*moduli&lt;br /&gt;
*ereditarietà&lt;br /&gt;
*concetti base&lt;br /&gt;
**astrazione&lt;br /&gt;
**incapsulamento dei dati&lt;br /&gt;
**ereditarietà&lt;br /&gt;
**polimorfismo&lt;br /&gt;
*Ciclo dal codice sorgente all'esecuzione (compilatore/interprete)&lt;br /&gt;
*Programma = classi + metodi&lt;br /&gt;
*commenti in Java&lt;br /&gt;
*tipi di errori&lt;br /&gt;
*#di compilazione (sintattici)&lt;br /&gt;
*#di esecuzione (semantici)&lt;br /&gt;
*#logici (non si ottiene il risultato voluto)&lt;br /&gt;
*Riprendiamo il concetto di ''Astrazione''&lt;br /&gt;
**Oggetti e classi come astrazioni&lt;br /&gt;
**'''Oggetti''': limitano l'accesso al loro interno, hanno uno ''stato''(descritto dai suoi campi) ed un ''comportamento''(descritto dai suoi metodi)&lt;br /&gt;
**una ''classe'' genera ''oggetti''detti anche ''istanze della classe''&lt;br /&gt;
*Riprendiamo il concetto di ''Incapsulamento dei dati'', realizzato attraverso&lt;br /&gt;
*#Interfaccia&lt;br /&gt;
*#Più livelli di accesso&lt;br /&gt;
*#*''public''&lt;br /&gt;
*#*''private''&lt;br /&gt;
*#*''protected''&lt;br /&gt;
*invocazione metodi&lt;br /&gt;
*costanti = variabili ''static''&lt;br /&gt;
*costruttori&lt;br /&gt;
*variabili&lt;br /&gt;
*assegnamento&lt;br /&gt;
*espressioni&lt;br /&gt;
*tipi di dato&lt;br /&gt;
*garbage collection&lt;br /&gt;
*Alias&lt;br /&gt;
*Dichiarazione ed inizializzazione&lt;br /&gt;
*Overloading&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*Tipi di dato come astrazione&lt;br /&gt;
*dichiarazione ed inizializzazione: che differenza c'è a livello di memoria&lt;br /&gt;
*differenza fra ''campo'' e ''variabile''&lt;br /&gt;
*''ConsoleInputManager'' e ''ConsoleOutputManager''&lt;br /&gt;
*esempio di campo privato ed effetti sull'accessibilità.&lt;br /&gt;
*esempio di sovrascrittura del metodo ''toString'' ed effetti&lt;br /&gt;
*concatenazione di stringhe&lt;br /&gt;
*sequenze di escape&lt;br /&gt;
*metodi per le stringhe&lt;br /&gt;
**toUpperCase&lt;br /&gt;
**charAt&lt;br /&gt;
**concat&lt;br /&gt;
**length&lt;br /&gt;
**substring&lt;br /&gt;
**compareTo&lt;br /&gt;
**replace&lt;br /&gt;
**startWith&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
Si è fatta lezione anzichè laboratorio (vedere [http://www.ccdi.unimi.it/it/avvisi/5316.html avviso]).&lt;br /&gt;
&lt;br /&gt;
*Ripresi i metodi per le stringhe&lt;br /&gt;
*parametri espliciti e impliciti (es. ''nome.compareTo(&amp;quot;Andrea&amp;quot;)'', '''nome''' è implicito e '''&amp;quot;Andrea&amp;quot;''' esplicito)&lt;br /&gt;
*Tipo '''Random'''-&amp;gt; funzione ''nextInt(int)''&lt;br /&gt;
*Segnatura (o firma) di un metodo&lt;br /&gt;
*Prototipo&lt;br /&gt;
*Overloading di metodi: si può solo con una diversa segnatura (tipicamente stesso nome ma diverso tipo e/o numero e/o ordine dei parametri)&lt;br /&gt;
*analisi di Frazione.java&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*tipo = nome + valori + operazoni lecite&lt;br /&gt;
*tipi primitivi&lt;br /&gt;
*espressioni ed operatori&lt;br /&gt;
*Conversioni implicite ed esplicite (''casting'')&lt;br /&gt;
*Precisionedei tipi e perdita di precisione&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 24/10/2007===&lt;br /&gt;
'''non c'ero'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 26/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18113</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18113"/>
		<updated>2007-10-25T10:37:22Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 25/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
*Nuova variazione: il laboratorio di martedì si svolge in aula '''309'''&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V2&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V2&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
*Liste (''non ero presente, se potete aggiungere particolari ve ne sarei grato'')&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
*Espressioni&lt;br /&gt;
**semplici&lt;br /&gt;
***costanti&lt;br /&gt;
***variabili&lt;br /&gt;
**composte (espressioni aritmetiche, invocazione metodi)&lt;br /&gt;
*Puntatori&lt;br /&gt;
**assegnamenti fra puntatori (compatibilità di tipo)&lt;br /&gt;
**esempi&lt;br /&gt;
**Dereferenziazione di un puntatore (operatore '''*''')&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
*Pile&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***TOP(S)&lt;br /&gt;
***POP(S)&lt;br /&gt;
***PUSH(S, u)&lt;br /&gt;
**Implementazioni delle pile&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Code&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***FRONT(Q)&lt;br /&gt;
***DEQUEUE(Q)&lt;br /&gt;
***ENQUEUE(Q, u)&lt;br /&gt;
**Implementazioni delle code&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Allineamenti ed insiemi&lt;br /&gt;
**allineamenti&lt;br /&gt;
**#permutazione&lt;br /&gt;
**#disposizione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
**insiemi&lt;br /&gt;
**#combinazione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Grafi&lt;br /&gt;
**non orentati&lt;br /&gt;
**orientati&lt;br /&gt;
*Implementazioni&lt;br /&gt;
**matrice&lt;br /&gt;
**coppia di tabelle&lt;br /&gt;
**lista concatenata&lt;br /&gt;
*definizione di cammino&lt;br /&gt;
*definizione di ciclo&lt;br /&gt;
*definizione di sottografo&lt;br /&gt;
*definizione di grafo connesso&lt;br /&gt;
*relazione di connessione&lt;br /&gt;
**proprietà: transitiva, riflessiva, generalmente '''non''' simmetrica&lt;br /&gt;
*relazione di raggiungibilità&lt;br /&gt;
&lt;br /&gt;
===Lezione 23/10/2007===&lt;br /&gt;
*alberi&lt;br /&gt;
*albero di copertura&lt;br /&gt;
*foresta&lt;br /&gt;
*albero con radice&lt;br /&gt;
*rappresentazione di albero tramite tabella&lt;br /&gt;
*clique&lt;br /&gt;
*indipendent set&lt;br /&gt;
*padre,figlio,foglia,radice,fratelli,predecessore,successore, altezza, profondità&lt;br /&gt;
*albero bilanciato&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 23/10/2007===&lt;br /&gt;
*esercizi su puntatori&lt;br /&gt;
*esercizi su frazioni e passaggio parametri&lt;br /&gt;
&lt;br /&gt;
===Lezione 25/10/2007===&lt;br /&gt;
*visita di grafi per ampiezza&lt;br /&gt;
*esercizi&lt;br /&gt;
===Laboratorio 25/10/2007===&lt;br /&gt;
*ripasso tipi di dato&lt;br /&gt;
*revisione esercizi del laboratorio precedente&lt;br /&gt;
===Lezione 26/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18101</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18101"/>
		<updated>2007-10-23T12:13:00Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 23/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
*Nuova variazione: il laboratorio di martedì si svolge in aula '''309'''&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V2&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V2&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
*Liste (''non ero presente, se potete aggiungere particolari ve ne sarei grato'')&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
*Espressioni&lt;br /&gt;
**semplici&lt;br /&gt;
***costanti&lt;br /&gt;
***variabili&lt;br /&gt;
**composte (espressioni aritmetiche, invocazione metodi)&lt;br /&gt;
*Puntatori&lt;br /&gt;
**assegnamenti fra puntatori (compatibilità di tipo)&lt;br /&gt;
**esempi&lt;br /&gt;
**Dereferenziazione di un puntatore (operatore '''*''')&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
*Pile&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***TOP(S)&lt;br /&gt;
***POP(S)&lt;br /&gt;
***PUSH(S, u)&lt;br /&gt;
**Implementazioni delle pile&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Code&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***FRONT(Q)&lt;br /&gt;
***DEQUEUE(Q)&lt;br /&gt;
***ENQUEUE(Q, u)&lt;br /&gt;
**Implementazioni delle code&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Allineamenti ed insiemi&lt;br /&gt;
**allineamenti&lt;br /&gt;
**#permutazione&lt;br /&gt;
**#disposizione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
**insiemi&lt;br /&gt;
**#combinazione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Grafi&lt;br /&gt;
**non orentati&lt;br /&gt;
**orientati&lt;br /&gt;
*Implementazioni&lt;br /&gt;
**matrice&lt;br /&gt;
**coppia di tabelle&lt;br /&gt;
**lista concatenata&lt;br /&gt;
*definizione di cammino&lt;br /&gt;
*definizione di ciclo&lt;br /&gt;
*definizione di sottografo&lt;br /&gt;
*definizione di grafo connesso&lt;br /&gt;
*relazione di connessione&lt;br /&gt;
**proprietà: transitiva, riflessiva, generalmente '''non''' simmetrica&lt;br /&gt;
*relazione di raggiungibilità&lt;br /&gt;
&lt;br /&gt;
===Lezione 23/10/2007===&lt;br /&gt;
*alberi&lt;br /&gt;
*albero di copertura&lt;br /&gt;
*foresta&lt;br /&gt;
*albero con radice&lt;br /&gt;
*rappresentazione di albero tramite tabella&lt;br /&gt;
*clique&lt;br /&gt;
*indipendent set&lt;br /&gt;
*padre,figlio,foglia,radice,fratelli,predecessore,successore, altezza, profondità&lt;br /&gt;
*albero bilanciato&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 23/10/2007===&lt;br /&gt;
*esercizi su puntatori&lt;br /&gt;
*esercizi su frazioni e passaggio parametri&lt;br /&gt;
&lt;br /&gt;
===Lezione 25/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18100</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18100"/>
		<updated>2007-10-23T12:09:49Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Laboratorio 23/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
*Nuova variazione: il laboratorio di martedì si svolge in aula '''309'''&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V2&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V2&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
*Liste (''non ero presente, se potete aggiungere particolari ve ne sarei grato'')&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
*Espressioni&lt;br /&gt;
**semplici&lt;br /&gt;
***costanti&lt;br /&gt;
***variabili&lt;br /&gt;
**composte (espressioni aritmetiche, invocazione metodi)&lt;br /&gt;
*Puntatori&lt;br /&gt;
**assegnamenti fra puntatori (compatibilità di tipo)&lt;br /&gt;
**esempi&lt;br /&gt;
**Dereferenziazione di un puntatore (operatore '''*''')&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
*Pile&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***TOP(S)&lt;br /&gt;
***POP(S)&lt;br /&gt;
***PUSH(S, u)&lt;br /&gt;
**Implementazioni delle pile&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Code&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***FRONT(Q)&lt;br /&gt;
***DEQUEUE(Q)&lt;br /&gt;
***ENQUEUE(Q, u)&lt;br /&gt;
**Implementazioni delle code&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Allineamenti ed insiemi&lt;br /&gt;
**allineamenti&lt;br /&gt;
**#permutazione&lt;br /&gt;
**#disposizione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
**insiemi&lt;br /&gt;
**#combinazione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Grafi&lt;br /&gt;
**non orentati&lt;br /&gt;
**orientati&lt;br /&gt;
*Implementazioni&lt;br /&gt;
**matrice&lt;br /&gt;
**coppia di tabelle&lt;br /&gt;
**lista concatenata&lt;br /&gt;
*definizione di cammino&lt;br /&gt;
*definizione di ciclo&lt;br /&gt;
*definizione di sottografo&lt;br /&gt;
*definizione di grafo connesso&lt;br /&gt;
*relazione di connessione&lt;br /&gt;
**proprietà: transitiva, riflessiva, generalmente '''non''' simmetrica&lt;br /&gt;
*relazione di raggiungibilità&lt;br /&gt;
&lt;br /&gt;
===Lezione 23/10/2007===&lt;br /&gt;
''da svolgersi''&lt;br /&gt;
===Laboratorio 23/10/2007===&lt;br /&gt;
*esercizi su puntatori&lt;br /&gt;
*esercizi su frazioni e passaggio parametri&lt;br /&gt;
&lt;br /&gt;
===Lezione 25/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18086</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18086"/>
		<updated>2007-10-22T15:44:52Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 22/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
*Nuova variazione: il laboratorio di martedì si svolge in aula '''309'''&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V2&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V2&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
*Liste (''non ero presente, se potete aggiungere particolari ve ne sarei grato'')&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
*Espressioni&lt;br /&gt;
**semplici&lt;br /&gt;
***costanti&lt;br /&gt;
***variabili&lt;br /&gt;
**composte (espressioni aritmetiche, invocazione metodi)&lt;br /&gt;
*Puntatori&lt;br /&gt;
**assegnamenti fra puntatori (compatibilità di tipo)&lt;br /&gt;
**esempi&lt;br /&gt;
**Dereferenziazione di un puntatore (operatore '''*''')&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
*Pile&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***TOP(S)&lt;br /&gt;
***POP(S)&lt;br /&gt;
***PUSH(S, u)&lt;br /&gt;
**Implementazioni delle pile&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Code&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***FRONT(Q)&lt;br /&gt;
***DEQUEUE(Q)&lt;br /&gt;
***ENQUEUE(Q, u)&lt;br /&gt;
**Implementazioni delle code&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Allineamenti ed insiemi&lt;br /&gt;
**allineamenti&lt;br /&gt;
**#permutazione&lt;br /&gt;
**#disposizione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
**insiemi&lt;br /&gt;
**#combinazione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Grafi&lt;br /&gt;
**non orentati&lt;br /&gt;
**orientati&lt;br /&gt;
*Implementazioni&lt;br /&gt;
**matrice&lt;br /&gt;
**coppia di tabelle&lt;br /&gt;
**lista concatenata&lt;br /&gt;
*definizione di cammino&lt;br /&gt;
*definizione di ciclo&lt;br /&gt;
*definizione di sottografo&lt;br /&gt;
*definizione di grafo connesso&lt;br /&gt;
*relazione di connessione&lt;br /&gt;
**proprietà: transitiva, riflessiva, generalmente '''non''' simmetrica&lt;br /&gt;
*relazione di raggiungibilità&lt;br /&gt;
&lt;br /&gt;
===Lezione 23/10/2007===&lt;br /&gt;
''da svolgersi''&lt;br /&gt;
===Laboratorio 23/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18085</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18085"/>
		<updated>2007-10-22T15:41:12Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 22/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
*Nuova variazione: il laboratorio di martedì si svolge in aula '''309'''&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V2&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V2&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
*Liste (''non ero presente, se potete aggiungere particolari ve ne sarei grato'')&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
*Espressioni&lt;br /&gt;
**semplici&lt;br /&gt;
***costanti&lt;br /&gt;
***variabili&lt;br /&gt;
**composte (espressioni aritmetiche, invocazione metodi)&lt;br /&gt;
*Puntatori&lt;br /&gt;
**assegnamenti fra puntatori (compatibilità di tipo)&lt;br /&gt;
**esempi&lt;br /&gt;
**Dereferenziazione di un puntatore (operatore '''*''')&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
*Pile&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***TOP(S)&lt;br /&gt;
***POP(S)&lt;br /&gt;
***PUSH(S, u)&lt;br /&gt;
**Implementazioni delle pile&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Code&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***FRONT(Q)&lt;br /&gt;
***DEQUEUE(Q)&lt;br /&gt;
***ENQUEUE(Q, u)&lt;br /&gt;
**Implementazioni delle code&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Allineamenti ed insiemi&lt;br /&gt;
**allineamenti&lt;br /&gt;
**#permutazione&lt;br /&gt;
**#disposizione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
**insiemi&lt;br /&gt;
**#combinazione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Grafi&lt;br /&gt;
**non orentati&lt;br /&gt;
**orientati&lt;br /&gt;
===Lezione 23/10/2007===&lt;br /&gt;
''da svolgersi''&lt;br /&gt;
===Laboratorio 23/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18084</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18084"/>
		<updated>2007-10-22T15:39:10Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 22/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 1 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
*Paradigma ad oggetti&lt;br /&gt;
*classi&lt;br /&gt;
*moduli&lt;br /&gt;
*ereditarietà&lt;br /&gt;
*concetti base&lt;br /&gt;
**astrazione&lt;br /&gt;
**incapsulamento dei dati&lt;br /&gt;
**ereditarietà&lt;br /&gt;
**polimorfismo&lt;br /&gt;
*Ciclo dal codice sorgente all'esecuzione (compilatore/interprete)&lt;br /&gt;
*Programma = classi + metodi&lt;br /&gt;
*commenti in Java&lt;br /&gt;
*tipi di errori&lt;br /&gt;
*#di compilazione (sintattici)&lt;br /&gt;
*#di esecuzione (semantici)&lt;br /&gt;
*#logici (non si ottiene il risultato voluto)&lt;br /&gt;
*Riprendiamo il concetto di ''Astrazione''&lt;br /&gt;
**Oggetti e classi come astrazioni&lt;br /&gt;
**'''Oggetti''': limitano l'accesso al loro interno, hanno uno ''stato''(descritto dai suoi campi) ed un ''comportamento''(descritto dai suoi metodi)&lt;br /&gt;
**una ''classe'' genera ''oggetti''detti anche ''istanze della classe''&lt;br /&gt;
*Riprendiamo il concetto di ''Incapsulamento dei dati'', realizzato attraverso&lt;br /&gt;
*#Interfaccia&lt;br /&gt;
*#Più livelli di accesso&lt;br /&gt;
*#*''public''&lt;br /&gt;
*#*''private''&lt;br /&gt;
*#*''protected''&lt;br /&gt;
*invocazione metodi&lt;br /&gt;
*costanti = variabili ''static''&lt;br /&gt;
*costruttori&lt;br /&gt;
*variabili&lt;br /&gt;
*assegnamento&lt;br /&gt;
*espressioni&lt;br /&gt;
*tipi di dato&lt;br /&gt;
*garbage collection&lt;br /&gt;
*Alias&lt;br /&gt;
*Dichiarazione ed inizializzazione&lt;br /&gt;
*Overloading&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*Tipi di dato come astrazione&lt;br /&gt;
*dichiarazione ed inizializzazione: che differenza c'è a livello di memoria&lt;br /&gt;
*differenza fra ''campo'' e ''variabile''&lt;br /&gt;
*''ConsoleInputManager'' e ''ConsoleOutputManager''&lt;br /&gt;
*esempio di campo privato ed effetti sull'accessibilità.&lt;br /&gt;
*esempio di sovrascrittura del metodo ''toString'' ed effetti&lt;br /&gt;
*concatenazione di stringhe&lt;br /&gt;
*sequenze di escape&lt;br /&gt;
*metodi per le stringhe&lt;br /&gt;
**toUpperCase&lt;br /&gt;
**charAt&lt;br /&gt;
**concat&lt;br /&gt;
**length&lt;br /&gt;
**substring&lt;br /&gt;
**compareTo&lt;br /&gt;
**replace&lt;br /&gt;
**startWith&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
Si è fatta lezione anzichè laboratorio (vedere [http://www.ccdi.unimi.it/it/avvisi/5316.html avviso]).&lt;br /&gt;
&lt;br /&gt;
*Ripresi i metodi per le stringhe&lt;br /&gt;
*parametri espliciti e impliciti (es. ''nome.compareTo(&amp;quot;Andrea&amp;quot;)'', '''nome''' è implicito e '''&amp;quot;Andrea&amp;quot;''' esplicito)&lt;br /&gt;
*Tipo '''Random'''-&amp;gt; funzione ''nextInt(int)''&lt;br /&gt;
*Segnatura (o firma) di un metodo&lt;br /&gt;
*Prototipo&lt;br /&gt;
*Overloading di metodi: si può solo con una diversa segnatura (tipicamente stesso nome ma diverso tipo e/o numero e/o ordine dei parametri)&lt;br /&gt;
*analisi di Frazione.java&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*tipo = nome + valori + operazoni lecite&lt;br /&gt;
*tipi primitivi&lt;br /&gt;
*espressioni ed operatori&lt;br /&gt;
*Conversioni implicite ed esplicite (''casting'')&lt;br /&gt;
*Precisionedei tipi e perdita di precisione&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 24/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18078</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18078"/>
		<updated>2007-10-19T16:40:22Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 19/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
*Nuova variazione: il laboratorio di martedì si svolge in aula '''309'''&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V2&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V2&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
*Liste (''non ero presente, se potete aggiungere particolari ve ne sarei grato'')&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
*Espressioni&lt;br /&gt;
**semplici&lt;br /&gt;
***costanti&lt;br /&gt;
***variabili&lt;br /&gt;
**composte (espressioni aritmetiche, invocazione metodi)&lt;br /&gt;
*Puntatori&lt;br /&gt;
**assegnamenti fra puntatori (compatibilità di tipo)&lt;br /&gt;
**esempi&lt;br /&gt;
**Dereferenziazione di un puntatore (operatore '''*''')&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
*Pile&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***TOP(S)&lt;br /&gt;
***POP(S)&lt;br /&gt;
***PUSH(S, u)&lt;br /&gt;
**Implementazioni delle pile&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Code&lt;br /&gt;
**Insiemi utili per la definizione&lt;br /&gt;
**Operazioni&lt;br /&gt;
***IS_EMPTY&lt;br /&gt;
***FRONT(Q)&lt;br /&gt;
***DEQUEUE(Q)&lt;br /&gt;
***ENQUEUE(Q, u)&lt;br /&gt;
**Implementazioni delle code&lt;br /&gt;
***Tabella&lt;br /&gt;
***Lista concatenata&lt;br /&gt;
*Allineamenti ed insiemi&lt;br /&gt;
**allineamenti&lt;br /&gt;
**#permutazione&lt;br /&gt;
**#disposizione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
**insiemi&lt;br /&gt;
**#combinazione&lt;br /&gt;
**#*semplice&lt;br /&gt;
**#*complessa&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18077</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18077"/>
		<updated>2007-10-19T16:31:54Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 18/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
*Nuova variazione: il laboratorio di martedì si svolge in aula '''309'''&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V2&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V2&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
*Liste (''non ero presente, se potete aggiungere particolari ve ne sarei grato'')&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
*Espressioni&lt;br /&gt;
**semplici&lt;br /&gt;
***costanti&lt;br /&gt;
***variabili&lt;br /&gt;
**composte (espressioni aritmetiche, invocazione metodi)&lt;br /&gt;
*Puntatori&lt;br /&gt;
**assegnamenti fra puntatori (compatibilità di tipo)&lt;br /&gt;
**esempi&lt;br /&gt;
**Dereferenziazione di un puntatore (operatore '''*''')&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18076</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18076"/>
		<updated>2007-10-19T16:31:16Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Laboratorio 18/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
*Nuova variazione: il laboratorio di martedì si svolge in aula '''309'''&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V2&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V2&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
*Classi (''non ero presente, se potete aggiungere particolari ve ne sarei grato'')&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
*Espressioni&lt;br /&gt;
**semplici&lt;br /&gt;
***costanti&lt;br /&gt;
***variabili&lt;br /&gt;
**composte (espressioni aritmetiche, invocazione metodi)&lt;br /&gt;
*Puntatori&lt;br /&gt;
**assegnamenti fra puntatori (compatibilità di tipo)&lt;br /&gt;
**esempi&lt;br /&gt;
**Dereferenziazione di un puntatore (operatore '''*''')&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18075</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18075"/>
		<updated>2007-10-19T16:28:12Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 18/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
*Nuova variazione: il laboratorio di martedì si svolge in aula '''309'''&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V2&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V2&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
*Classi (''non ero presente, se potete aggiungere particolari ve ne sarei grato'')&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18074</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18074"/>
		<updated>2007-10-19T16:28:00Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Laboratorio 18/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
*Nuova variazione: il laboratorio di martedì si svolge in aula '''309'''&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V2&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V2&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
''da svolgersi''&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18073</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18073"/>
		<updated>2007-10-19T16:25:37Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 19/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 1 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
*Paradigma ad oggetti&lt;br /&gt;
*classi&lt;br /&gt;
*moduli&lt;br /&gt;
*ereditarietà&lt;br /&gt;
*concetti base&lt;br /&gt;
**astrazione&lt;br /&gt;
**incapsulamento dei dati&lt;br /&gt;
**ereditarietà&lt;br /&gt;
**polimorfismo&lt;br /&gt;
*Ciclo dal codice sorgente all'esecuzione (compilatore/interprete)&lt;br /&gt;
*Programma = classi + metodi&lt;br /&gt;
*commenti in Java&lt;br /&gt;
*tipi di errori&lt;br /&gt;
*#di compilazione (sintattici)&lt;br /&gt;
*#di esecuzione (semantici)&lt;br /&gt;
*#logici (non si ottiene il risultato voluto)&lt;br /&gt;
*Riprendiamo il concetto di ''Astrazione''&lt;br /&gt;
**Oggetti e classi come astrazioni&lt;br /&gt;
**'''Oggetti''': limitano l'accesso al loro interno, hanno uno ''stato''(descritto dai suoi campi) ed un ''comportamento''(descritto dai suoi metodi)&lt;br /&gt;
**una ''classe'' genera ''oggetti''detti anche ''istanze della classe''&lt;br /&gt;
*Riprendiamo il concetto di ''Incapsulamento dei dati'', realizzato attraverso&lt;br /&gt;
*#Interfaccia&lt;br /&gt;
*#Più livelli di accesso&lt;br /&gt;
*#*''public''&lt;br /&gt;
*#*''private''&lt;br /&gt;
*#*''protected''&lt;br /&gt;
*invocazione metodi&lt;br /&gt;
*costanti = variabili ''static''&lt;br /&gt;
*costruttori&lt;br /&gt;
*variabili&lt;br /&gt;
*assegnamento&lt;br /&gt;
*espressioni&lt;br /&gt;
*tipi di dato&lt;br /&gt;
*garbage collection&lt;br /&gt;
*Alias&lt;br /&gt;
*Dichiarazione ed inizializzazione&lt;br /&gt;
*Overloading&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*Tipi di dato come astrazione&lt;br /&gt;
*dichiarazione ed inizializzazione: che differenza c'è a livello di memoria&lt;br /&gt;
*differenza fra ''campo'' e ''variabile''&lt;br /&gt;
*''ConsoleInputManager'' e ''ConsoleOutputManager''&lt;br /&gt;
*esempio di campo privato ed effetti sull'accessibilità.&lt;br /&gt;
*esempio di sovrascrittura del metodo ''toString'' ed effetti&lt;br /&gt;
*concatenazione di stringhe&lt;br /&gt;
*sequenze di escape&lt;br /&gt;
*metodi per le stringhe&lt;br /&gt;
**toUpperCase&lt;br /&gt;
**charAt&lt;br /&gt;
**concat&lt;br /&gt;
**length&lt;br /&gt;
**substring&lt;br /&gt;
**compareTo&lt;br /&gt;
**replace&lt;br /&gt;
**startWith&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
Si è fatta lezione anzichè laboratorio (vedere [http://www.ccdi.unimi.it/it/avvisi/5316.html avviso]).&lt;br /&gt;
&lt;br /&gt;
*Ripresi i metodi per le stringhe&lt;br /&gt;
*parametri espliciti e impliciti (es. ''nome.compareTo(&amp;quot;Andrea&amp;quot;)'', '''nome''' è implicito e '''&amp;quot;Andrea&amp;quot;''' esplicito)&lt;br /&gt;
*Tipo '''Random'''-&amp;gt; funzione ''nextInt(int)''&lt;br /&gt;
*Segnatura (o firma) di un metodo&lt;br /&gt;
*Prototipo&lt;br /&gt;
*Overloading di metodi: si può solo con una diversa segnatura (tipicamente stesso nome ma diverso tipo e/o numero e/o ordine dei parametri)&lt;br /&gt;
*analisi di Frazione.java&lt;br /&gt;
&lt;br /&gt;
===Lezione 22/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18072</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18072"/>
		<updated>2007-10-19T16:24:56Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 19/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 1 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
*Paradigma ad oggetti&lt;br /&gt;
*classi&lt;br /&gt;
*moduli&lt;br /&gt;
*ereditarietà&lt;br /&gt;
*concetti base&lt;br /&gt;
**astrazione&lt;br /&gt;
**incapsulamento dei dati&lt;br /&gt;
**ereditarietà&lt;br /&gt;
**polimorfismo&lt;br /&gt;
*Ciclo dal codice sorgente all'esecuzione (compilatore/interprete)&lt;br /&gt;
*Programma = classi + metodi&lt;br /&gt;
*commenti in Java&lt;br /&gt;
*tipi di errori&lt;br /&gt;
*#di compilazione (sintattici)&lt;br /&gt;
*#di esecuzione (semantici)&lt;br /&gt;
*#logici (non si ottiene il risultato voluto)&lt;br /&gt;
*Riprendiamo il concetto di ''Astrazione''&lt;br /&gt;
**Oggetti e classi come astrazioni&lt;br /&gt;
**'''Oggetti''': limitano l'accesso al loro interno, hanno uno ''stato''(descritto dai suoi campi) ed un ''comportamento''(descritto dai suoi metodi)&lt;br /&gt;
**una ''classe'' genera ''oggetti''detti anche ''istanze della classe''&lt;br /&gt;
*Riprendiamo il concetto di ''Incapsulamento dei dati'', realizzato attraverso&lt;br /&gt;
*#Interfaccia&lt;br /&gt;
*#Più livelli di accesso&lt;br /&gt;
*#*''public''&lt;br /&gt;
*#*''private''&lt;br /&gt;
*#*''protected''&lt;br /&gt;
*invocazione metodi&lt;br /&gt;
*costanti = variabili ''static''&lt;br /&gt;
*costruttori&lt;br /&gt;
*variabili&lt;br /&gt;
*assegnamento&lt;br /&gt;
*espressioni&lt;br /&gt;
*tipi di dato&lt;br /&gt;
*garbage collection&lt;br /&gt;
*Alias&lt;br /&gt;
*Dichiarazione ed inizializzazione&lt;br /&gt;
*Overloading&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*Tipi di dato come astrazione&lt;br /&gt;
*dichiarazione ed inizializzazione: che differenza c'è a livello di memoria&lt;br /&gt;
*differenza fra ''campo'' e ''variabile''&lt;br /&gt;
*''ConsoleInputManager'' e ''ConsoleOutputManager''&lt;br /&gt;
*esempio di campo privato ed effetti sull'accessibilità.&lt;br /&gt;
*esempio di sovrascrittura del metodo ''toString'' ed effetti&lt;br /&gt;
*concatenazione di stringhe&lt;br /&gt;
*sequenze di escape&lt;br /&gt;
*metodi per le stringhe&lt;br /&gt;
**toUpperCase&lt;br /&gt;
**charAt&lt;br /&gt;
**concat&lt;br /&gt;
**length&lt;br /&gt;
**substring&lt;br /&gt;
**compareTo&lt;br /&gt;
**replace&lt;br /&gt;
**startWith&lt;br /&gt;
&lt;br /&gt;
===Lezione 19/10/2007===&lt;br /&gt;
Si è fatta lezione anzichè laboratorio (vedere [http://www.ccdi.unimi.it/it/avvisi/5316.html avviso]).&lt;br /&gt;
&lt;br /&gt;
*Ripresi i metodi per le stringhe&lt;br /&gt;
*parametri espliciti e impliciti (es. ''nome.compareTo(&amp;quot;Andrea&amp;quot;)'', '''nome''' è implicito e '''&amp;quot;Andrea&amp;quot;''' esplicito)&lt;br /&gt;
*Tipo '''Random'''-&amp;gt; funzione ''nextInt(int)''&lt;br /&gt;
*Segnatura (o firma) di un metodo&lt;br /&gt;
*Prototipo&lt;br /&gt;
*Overloading di metodi: si può solo con una diversa segnatura (tipicamente stesso nome ma diverso tipo e/o numero e/o ordine dei parametri)&lt;br /&gt;
*analisi di Frazione.java&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18052</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18052"/>
		<updated>2007-10-17T15:33:54Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 17/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 1 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
*Paradigma ad oggetti&lt;br /&gt;
*classi&lt;br /&gt;
*moduli&lt;br /&gt;
*ereditarietà&lt;br /&gt;
*concetti base&lt;br /&gt;
**astrazione&lt;br /&gt;
**incapsulamento dei dati&lt;br /&gt;
**ereditarietà&lt;br /&gt;
**polimorfismo&lt;br /&gt;
*Ciclo dal codice sorgente all'esecuzione (compilatore/interprete)&lt;br /&gt;
*Programma = classi + metodi&lt;br /&gt;
*commenti in Java&lt;br /&gt;
*tipi di errori&lt;br /&gt;
*#di compilazione (sintattici)&lt;br /&gt;
*#di esecuzione (semantici)&lt;br /&gt;
*#logici (non si ottiene il risultato voluto)&lt;br /&gt;
*Riprendiamo il concetto di ''Astrazione''&lt;br /&gt;
**Oggetti e classi come astrazioni&lt;br /&gt;
**'''Oggetti''': limitano l'accesso al loro interno, hanno uno ''stato''(descritto dai suoi campi) ed un ''comportamento''(descritto dai suoi metodi)&lt;br /&gt;
**una ''classe'' genera ''oggetti''detti anche ''istanze della classe''&lt;br /&gt;
*Riprendiamo il concetto di ''Incapsulamento dei dati'', realizzato attraverso&lt;br /&gt;
*#Interfaccia&lt;br /&gt;
*#Più livelli di accesso&lt;br /&gt;
*#*''public''&lt;br /&gt;
*#*''private''&lt;br /&gt;
*#*''protected''&lt;br /&gt;
*invocazione metodi&lt;br /&gt;
*costanti = variabili ''static''&lt;br /&gt;
*costruttori&lt;br /&gt;
*variabili&lt;br /&gt;
*assegnamento&lt;br /&gt;
*espressioni&lt;br /&gt;
*tipi di dato&lt;br /&gt;
*garbage collection&lt;br /&gt;
*Alias&lt;br /&gt;
*Dichiarazione ed inizializzazione&lt;br /&gt;
*Overloading&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*Tipi di dato come astrazione&lt;br /&gt;
*dichiarazione ed inizializzazione: che differenza c'è a livello di memoria&lt;br /&gt;
*differenza fra ''campo'' e ''variabile''&lt;br /&gt;
*''ConsoleInputManager'' e ''ConsoleOutputManager''&lt;br /&gt;
*esempio di campo privato ed effetti sull'accessibilità.&lt;br /&gt;
*esempio di sovrascrittura del metodo ''toString'' ed effetti&lt;br /&gt;
*concatenazione di stringhe&lt;br /&gt;
*sequenze di escape&lt;br /&gt;
*metodi per le stringhe&lt;br /&gt;
**toUpperCase&lt;br /&gt;
**charAt&lt;br /&gt;
**concat&lt;br /&gt;
**length&lt;br /&gt;
**substring&lt;br /&gt;
**compareTo&lt;br /&gt;
**replace&lt;br /&gt;
**startWith&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 19/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18051</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18051"/>
		<updated>2007-10-17T15:32:00Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 10/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 1 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
*Paradigma ad oggetti&lt;br /&gt;
*classi&lt;br /&gt;
*moduli&lt;br /&gt;
*ereditarietà&lt;br /&gt;
*concetti base&lt;br /&gt;
**astrazione&lt;br /&gt;
**incapsulamento dei dati&lt;br /&gt;
**ereditarietà&lt;br /&gt;
**polimorfismo&lt;br /&gt;
*Ciclo dal codice sorgente all'esecuzione (compilatore/interprete)&lt;br /&gt;
*Programma = classi + metodi&lt;br /&gt;
*commenti in Java&lt;br /&gt;
*tipi di errori&lt;br /&gt;
*#di compilazione (sintattici)&lt;br /&gt;
*#di esecuzione (semantici)&lt;br /&gt;
*#logici (non si ottiene il risultato voluto)&lt;br /&gt;
*Riprendiamo il concetto di ''Astrazione''&lt;br /&gt;
**Oggetti e classi come astrazioni&lt;br /&gt;
**'''Oggetti''': limitano l'accesso al loro interno, hanno uno ''stato''(descritto dai suoi campi) ed un ''comportamento''(descritto dai suoi metodi)&lt;br /&gt;
**una ''classe'' genera ''oggetti''detti anche ''istanze della classe''&lt;br /&gt;
*Riprendiamo il concetto di ''Incapsulamento dei dati'', realizzato attraverso&lt;br /&gt;
*#Interfaccia&lt;br /&gt;
*#Più livelli di accesso&lt;br /&gt;
*#*''public''&lt;br /&gt;
*#*''private''&lt;br /&gt;
*#*''protected''&lt;br /&gt;
*invocazione metodi&lt;br /&gt;
*costanti = variabili ''static''&lt;br /&gt;
*costruttori&lt;br /&gt;
*variabili&lt;br /&gt;
*assegnamento&lt;br /&gt;
*espressioni&lt;br /&gt;
*tipi di dato&lt;br /&gt;
*garbage collection&lt;br /&gt;
*Alias&lt;br /&gt;
*Dichiarazione ed inizializzazione&lt;br /&gt;
*Overloading&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*Tipi di dato come astrazione&lt;br /&gt;
*dichiarazione ed inizializzazione: che differenza c'è a livello di memoria&lt;br /&gt;
*esempio di campo privato ed effetti sull'accessibilità.&lt;br /&gt;
*esempio di sovrascrittura del metodo ''toString'' ed effetti&lt;br /&gt;
*concatenazione di stringhe&lt;br /&gt;
*sequenze di escape&lt;br /&gt;
*metodi per le stringhe&lt;br /&gt;
**toUpperCase&lt;br /&gt;
**charAt&lt;br /&gt;
**concat&lt;br /&gt;
**length&lt;br /&gt;
**substring&lt;br /&gt;
**compareTo&lt;br /&gt;
**replace&lt;br /&gt;
**startWith&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 19/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18050</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18050"/>
		<updated>2007-10-17T15:31:34Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 10/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 1 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
*Paradigma ad oggetti&lt;br /&gt;
*classi&lt;br /&gt;
*moduli&lt;br /&gt;
*ereditarietà&lt;br /&gt;
*concetti base&lt;br /&gt;
**astrazione&lt;br /&gt;
**incapsulamento dei dati&lt;br /&gt;
**ereditarietà&lt;br /&gt;
**polimorfismo&lt;br /&gt;
*Ciclo dal codice sorgente all'esecuzione (compilatore/interprete)&lt;br /&gt;
*Programma = classi + metodi&lt;br /&gt;
*commenti in Java&lt;br /&gt;
*tipi di errori&lt;br /&gt;
*#di compilazione (sintattici)&lt;br /&gt;
*#di esecuzione (semantici)&lt;br /&gt;
*#logici (non si ottiene il risultato voluto)&lt;br /&gt;
*Riprendiamo il concetto di ''Astrazione''&lt;br /&gt;
**Oggetti e classi come astrazioni&lt;br /&gt;
**'''Oggetti''': limitano l'accesso al loro interno, hanno uno ''stato''(descritto dai suoi campi) ed un ''comportamento''(descritto dai suoi metodi)&lt;br /&gt;
**una ''classe'' genera ''oggetti''detti anche ''istanze della classe''&lt;br /&gt;
*Riprendiamo il concetto di ''Incapsulamento dei dati'', realizzato attraverso&lt;br /&gt;
**Interfaccia&lt;br /&gt;
**Più livelli di accesso&lt;br /&gt;
***''public''&lt;br /&gt;
***''private''&lt;br /&gt;
***''protected''&lt;br /&gt;
*invocazione metodi&lt;br /&gt;
*costanti = variabili ''static''&lt;br /&gt;
*costruttori&lt;br /&gt;
*variabili&lt;br /&gt;
*assegnamento&lt;br /&gt;
*espressioni&lt;br /&gt;
*tipi di dato&lt;br /&gt;
*garbage collection&lt;br /&gt;
*Alias&lt;br /&gt;
*Dichiarazione ed inizializzazione&lt;br /&gt;
*Overloading&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*Tipi di dato come astrazione&lt;br /&gt;
*dichiarazione ed inizializzazione: che differenza c'è a livello di memoria&lt;br /&gt;
*esempio di campo privato ed effetti sull'accessibilità.&lt;br /&gt;
*esempio di sovrascrittura del metodo ''toString'' ed effetti&lt;br /&gt;
*concatenazione di stringhe&lt;br /&gt;
*sequenze di escape&lt;br /&gt;
*metodi per le stringhe&lt;br /&gt;
**toUpperCase&lt;br /&gt;
**charAt&lt;br /&gt;
**concat&lt;br /&gt;
**length&lt;br /&gt;
**substring&lt;br /&gt;
**compareTo&lt;br /&gt;
**replace&lt;br /&gt;
**startWith&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 19/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18049</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18049"/>
		<updated>2007-10-17T15:30:17Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 17/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 1 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
*Paradigma ad oggetti&lt;br /&gt;
*classi&lt;br /&gt;
*moduli&lt;br /&gt;
*ereditarietà&lt;br /&gt;
*concetti base&lt;br /&gt;
**astrazione&lt;br /&gt;
**incapsulamento dei dati&lt;br /&gt;
**ereditarietà&lt;br /&gt;
**polimorfismo&lt;br /&gt;
*Ciclo dal codice sorgente all'esecuzione (compilatore/interprete)&lt;br /&gt;
*Programma = classi + metodi&lt;br /&gt;
*commenti in Java&lt;br /&gt;
*tipi di errori&lt;br /&gt;
*#di compilazione (sintattici)&lt;br /&gt;
*#di esecuzione (semantici)&lt;br /&gt;
*#logici (non si ottiene il risultato voluto)&lt;br /&gt;
*Riprendiamo il concetto di ''Astrazione''&lt;br /&gt;
**Oggetti e classi come astrazioni&lt;br /&gt;
**'''Oggetti''': limitano l'accesso al loro interno, hanno uno ''stato''(descritto dai suoi campi) ed un ''comportamento''(descritto dai suoi metodi)&lt;br /&gt;
**una ''classe'' genera ''oggetti''detti anche ''istanze della classe''&lt;br /&gt;
*Riprendiamo il concetto di ''Incapsulamento dei dati''&lt;br /&gt;
''realizzato attraverso''&lt;br /&gt;
**Interfaccia&lt;br /&gt;
**Più livelli di accesso&lt;br /&gt;
***''public''&lt;br /&gt;
***''private''&lt;br /&gt;
***''protected''&lt;br /&gt;
*invocazione metodi&lt;br /&gt;
*costanti = variabili ''static''&lt;br /&gt;
*costruttori&lt;br /&gt;
*variabili&lt;br /&gt;
*assegnamento&lt;br /&gt;
*espressioni&lt;br /&gt;
*tipi di dato&lt;br /&gt;
*garbage collection&lt;br /&gt;
*Alias&lt;br /&gt;
*Dichiarazione ed inizializzazione&lt;br /&gt;
*Overloading&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
*Tipi di dato&lt;br /&gt;
*Tipi di dato come astrazione&lt;br /&gt;
*dichiarazione ed inizializzazione: che differenza c'è a livello di memoria&lt;br /&gt;
*esempio di campo privato ed effetti sull'accessibilità.&lt;br /&gt;
*esempio di sovrascrittura del metodo ''toString'' ed effetti&lt;br /&gt;
*concatenazione di stringhe&lt;br /&gt;
*sequenze di escape&lt;br /&gt;
*metodi per le stringhe&lt;br /&gt;
**toUpperCase&lt;br /&gt;
**charAt&lt;br /&gt;
**concat&lt;br /&gt;
**length&lt;br /&gt;
**substring&lt;br /&gt;
**compareTo&lt;br /&gt;
**replace&lt;br /&gt;
**startWith&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 19/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18048</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18048"/>
		<updated>2007-10-17T15:19:46Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 10/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 1 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
*Paradigma ad oggetti&lt;br /&gt;
*classi&lt;br /&gt;
*moduli&lt;br /&gt;
*ereditarietà&lt;br /&gt;
*concetti base&lt;br /&gt;
**astrazione&lt;br /&gt;
**incapsulamento dei dati&lt;br /&gt;
**ereditarietà&lt;br /&gt;
**polimorfismo&lt;br /&gt;
*Ciclo dal codice sorgente all'esecuzione (compilatore/interprete)&lt;br /&gt;
*Programma = classi + metodi&lt;br /&gt;
*commenti in Java&lt;br /&gt;
*tipi di errori&lt;br /&gt;
*#di compilazione (sintattici)&lt;br /&gt;
*#di esecuzione (semantici)&lt;br /&gt;
*#logici (non si ottiene il risultato voluto)&lt;br /&gt;
*Riprendiamo il concetto di ''Astrazione''&lt;br /&gt;
**Oggetti e classi come astrazioni&lt;br /&gt;
**'''Oggetti''': limitano l'accesso al loro interno, hanno uno ''stato''(descritto dai suoi campi) ed un ''comportamento''(descritto dai suoi metodi)&lt;br /&gt;
**una ''classe'' genera ''oggetti''detti anche ''istanze della classe''&lt;br /&gt;
*Riprendiamo il concetto di ''Incapsulamento dei dati''&lt;br /&gt;
''realizzato attraverso''&lt;br /&gt;
**Interfaccia&lt;br /&gt;
**Più livelli di accesso&lt;br /&gt;
***''public''&lt;br /&gt;
***''private''&lt;br /&gt;
***''protected''&lt;br /&gt;
*invocazione metodi&lt;br /&gt;
*costanti = variabili ''static''&lt;br /&gt;
*costruttori&lt;br /&gt;
*variabili&lt;br /&gt;
*assegnamento&lt;br /&gt;
*espressioni&lt;br /&gt;
*tipi di dato&lt;br /&gt;
*garbage collection&lt;br /&gt;
*Alias&lt;br /&gt;
*Dichiarazione ed inizializzazione&lt;br /&gt;
*Overloading&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18041</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18041"/>
		<updated>2007-10-16T09:38:01Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 10/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 1 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
*Paradigma ad oggetti&lt;br /&gt;
*classi&lt;br /&gt;
*moduli&lt;br /&gt;
*ereditarietà&lt;br /&gt;
*concetti base&lt;br /&gt;
**astrazione&lt;br /&gt;
**incapsulamento dei dati&lt;br /&gt;
**ereditarietà&lt;br /&gt;
**polimorfismo&lt;br /&gt;
*Ciclo dal codice sorgente all'esecuzione (compilatore/interprete)&lt;br /&gt;
*Programma = classi + metodi&lt;br /&gt;
*commenti in Java&lt;br /&gt;
*tipi di errori&lt;br /&gt;
*#di compilazione (sintattici)&lt;br /&gt;
*#di esecuzione (semantici)&lt;br /&gt;
*#logici (nonj si ottiene il risultato voluto)&lt;br /&gt;
*Riprendiamo il concetto di ''Astrazione''&lt;br /&gt;
**Oggetti e classi come astrazioni&lt;br /&gt;
**'''Oggetti''': limitano l'accesso al loro interno, hanno uno ''stato''(descritto dai suoi campi) ed un ''comportamento''(descritto dai suoi metodi)&lt;br /&gt;
**una ''classe'' genera ''oggetti''detti anche ''istanze della classe''&lt;br /&gt;
*Riprendiamo il concetto di ''Incapsulamento dei dati''&lt;br /&gt;
''realizzato attraverso''&lt;br /&gt;
**Interfaccia&lt;br /&gt;
**Più livelli di accesso&lt;br /&gt;
***''public''&lt;br /&gt;
***''private''&lt;br /&gt;
***''protected''&lt;br /&gt;
*invocazione metodi&lt;br /&gt;
*costanti = variabili ''static''&lt;br /&gt;
*costruttori&lt;br /&gt;
*variabili&lt;br /&gt;
*assegnamento&lt;br /&gt;
*espressioni&lt;br /&gt;
*tipi di dato&lt;br /&gt;
*garbage collection&lt;br /&gt;
*Alias&lt;br /&gt;
*Dichiarazione ed inizializzazione&lt;br /&gt;
*Overloading&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18040</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18040"/>
		<updated>2007-10-16T09:29:22Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Orari */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
*Nuova variazione: il laboratorio di martedì si svolge in aula '''309'''&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V2&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V2&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V2&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
''da svolgersi''&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18039</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18039"/>
		<updated>2007-10-16T09:28:13Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* AVVISI */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
*Nuova variazione: il laboratorio di martedì si svolge in aula '''309'''&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V1&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V1&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V1&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V1&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
''da svolgersi''&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18038</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18038"/>
		<updated>2007-10-16T09:27:19Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 10/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 1 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
*Paradigma ad oggetti&lt;br /&gt;
*classi&lt;br /&gt;
*moduli&lt;br /&gt;
*ereditarietà&lt;br /&gt;
*concetti base&lt;br /&gt;
**astrazione&lt;br /&gt;
**incapsulamento dei dati&lt;br /&gt;
**ereditarietà&lt;br /&gt;
**polimorfismo&lt;br /&gt;
*Ciclo dal codice sorgente all'esecuzione (compilatore/interprete)&lt;br /&gt;
*Programma = classi + metodi&lt;br /&gt;
*commenti in Java&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18037</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18037"/>
		<updated>2007-10-16T09:21:21Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 15/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 1 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
'''non ero presente, completate voi'''&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti in seguito'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18036</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18036"/>
		<updated>2007-10-16T09:20:50Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Laboratorio 12/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 1 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
'''non ero presente, completate voi'''&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
*classe ConsoleInputManager&lt;br /&gt;
*importazione di classi&lt;br /&gt;
*esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18035</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18035"/>
		<updated>2007-10-16T09:17:47Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Laboratorio 16/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V1&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V1&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V1&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V1&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
*Input/output&lt;br /&gt;
**caratteri e loro rappresentazione&lt;br /&gt;
**getchar()&lt;br /&gt;
**redirezione dello standard input&lt;br /&gt;
**end-of-file&lt;br /&gt;
**putchar()&lt;br /&gt;
**redirezione output&lt;br /&gt;
*Esercizi&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
''da svolgersi''&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18034</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18034"/>
		<updated>2007-10-16T09:14:04Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Laboratorio 12/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 1 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
'''non ero presente, completate voi'''&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Lezione 17/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18033</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18033"/>
		<updated>2007-10-16T09:11:31Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 15/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V1&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V1&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V1&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V1&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
'''non ero presente, aggiungerò gli argomenti appena possibile'''&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
''da svolgersi''&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18032</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18032"/>
		<updated>2007-10-16T09:09:55Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 16/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V1&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V1&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V1&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V1&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
*Vettori&lt;br /&gt;
*Matrici&lt;br /&gt;
*Record&lt;br /&gt;
*Tabelle&lt;br /&gt;
*esempi&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
''da svolgersi''&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18031</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18031"/>
		<updated>2007-10-16T09:08:23Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 15/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V1&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V1&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V1&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V1&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica'', somme di polinomi&lt;br /&gt;
*Primi due metodi per calcolare le somme:&lt;br /&gt;
**derivazione&lt;br /&gt;
**perturbazione &lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
*Terzo metodo per calcolare le somme:&lt;br /&gt;
**integrazione per funzioni decrescenti e crescenti monotone&lt;br /&gt;
*vari esempi di applicazione dell'integrazione&lt;br /&gt;
*ripresa della Formula di Stirling&lt;br /&gt;
&lt;br /&gt;
===Lezione 15/10/2007===&lt;br /&gt;
&lt;br /&gt;
===Lezione 16/10/2007===&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 16/10/2007===&lt;br /&gt;
&lt;br /&gt;
===Lezione 18/10/2007===&lt;br /&gt;
''da svolgersi''&lt;br /&gt;
===Laboratorio 18/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18012</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18012"/>
		<updated>2007-10-11T16:16:04Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 11/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V1&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V1&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V1&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V1&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
*Ripasso relazioni (o piccola, ...)&lt;br /&gt;
*Sommatorie&lt;br /&gt;
**le più comuni: ''geometrica''&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18011</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18011"/>
		<updated>2007-10-11T16:14:11Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Laboratorio 11/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V1&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V1&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V1&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V1&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
*Variabili&lt;br /&gt;
**attributi&lt;br /&gt;
**#nome&lt;br /&gt;
**#tipo&lt;br /&gt;
**#valore&lt;br /&gt;
*Funzioni&lt;br /&gt;
**parametri&lt;br /&gt;
**si raccomanda di documentarle&lt;br /&gt;
**il return di un valore di tipo errato determina un ''cast'' automatico&lt;br /&gt;
*Prototipi&lt;br /&gt;
**definizione&lt;br /&gt;
*Record di attivazione delle funzioni&lt;br /&gt;
**contenuti&lt;br /&gt;
**#variabili locali&lt;br /&gt;
**#informazioni per poter riprendere il programma chiamante all'istruzione giusta&lt;br /&gt;
**allocato nello stack di sistema con procedura LIFO&lt;br /&gt;
**''PUSH''/''POP''&lt;br /&gt;
*Variabili globali&lt;br /&gt;
*Criteri di visibilità&lt;br /&gt;
*Tempo di vita di una variabile&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18010</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=18010"/>
		<updated>2007-10-11T16:09:36Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Laboratorio 11/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V1&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V1&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V1&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V1&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Lezione 11/10/2007===&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
&lt;br /&gt;
===Lezione 12/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18009</id>
		<title>Programmazione Turno 2/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Programmazione_Turno_2/2007-2008&amp;diff=18009"/>
		<updated>2007-10-11T16:05:29Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Laboratorio 10/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
==AVVISI==&lt;br /&gt;
&lt;br /&gt;
*''Diversamente da quanto scritto negli orari ufficiali, come potete vedere sotto l'ultima ora della lezione di laboratorio del venerdì sarà in aula 403''&lt;br /&gt;
*Si prega di entrare entro e non oltre le x.45 dove x sta per l'ora di inizio della lezione, a meno di casi straordinari&lt;br /&gt;
*Si prega di spegnere i cellulari o tenerli silenziosi durante la lezione&lt;br /&gt;
*'''Si prega di iscriversi sia ai compitini che agli appelli'''&lt;br /&gt;
*'''Per iscriversi agli appelli bisogna registrarsi sul SIFA, per i compitni basta la FORM sul sito della professoressa'''&lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
*Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
*L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
==Informazioni==&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 13:30-16:30, aula V3&lt;br /&gt;
** '''Mercoledì''', 13:30-16:30, aula V3&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 12:30-15:30, aula 309&lt;br /&gt;
** '''Martedì''', 15:30-16:30, aula 403&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è riservato agli studenti presenti nello scaglione '''H-Z'''.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti Maria Alberta Alberti] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~capra Lorenzo Capra] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=259 Forum di Programmazione su DSY]&lt;br /&gt;
* [http://www.dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=24 Files di Programmazione su DSY]&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
#Introduzione&lt;br /&gt;
#* Evoluzione del computer&lt;br /&gt;
#* Evoluzione dei linguaggi di programmazione&lt;br /&gt;
#* Algoritmi e analisi degli algoritmi&lt;br /&gt;
#* Linguaggi ad alto livello e linguaggi macchina&lt;br /&gt;
#* Sintassi e semantica dei linguaggi&lt;br /&gt;
#* Compilatori e interpreti&lt;br /&gt;
#* Tipi di errore &lt;br /&gt;
#Programmazione ad oggetti con Java&lt;br /&gt;
#* Elementi base del linguaggio&lt;br /&gt;
#* Classi, metodi ed oggetti&lt;br /&gt;
#* Strutture di controllo&lt;br /&gt;
#* Ricorsione&lt;br /&gt;
#* Ereditarietà &lt;br /&gt;
#Introduzione alle strutture dati&lt;br /&gt;
#* Liste, code, pile&lt;br /&gt;
#* Alberi binari&lt;br /&gt;
#* Alberi di ricerca &lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#prog sito del corso])&lt;br /&gt;
===Modalità d'esame===&lt;br /&gt;
*L'esame consiste in una prova scritta, in una prova orale e in un progetto. &lt;br /&gt;
*È assolutamente vietato partecipare agli appelli di programmazione di due turni differenti. I docenti si riservano di prendere provvedimenti nel caso ciò accada.&lt;br /&gt;
(dal [http://homes.dico.unimi.it/~alberti/Prog07/#materiale sito])&lt;br /&gt;
&lt;br /&gt;
===Date, compitini ed esami===&lt;br /&gt;
#Primo compitino teoria: 1 novembre 2007&lt;br /&gt;
#Compitino laboratorio: 30 novembre 2007&lt;br /&gt;
#Secondo compitino teoria: 17 dicembre 2007&lt;br /&gt;
#Fine lezioni: 18 gennaio 2008&lt;br /&gt;
#PRIMO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 gennaio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 gennaio 2008&lt;br /&gt;
#SECONDO APPELLO &lt;br /&gt;
#*prova scritta teoria: 28 febbraio 2008&lt;br /&gt;
#*prova scritta laboratorio: 29 febbraio 2008&lt;br /&gt;
&lt;br /&gt;
'''N.B. 1''': l'appello di gennaio esclude quello di febbraio, chi fa il primo non può fare il secondo e dovrà aspettare l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 2''': Se si supera la prova scritta in un appello si può decidere di preparare il progetto nell'appello successivo. Se l'esito del progetto fosse negativo, all'appello successivo va ridato anche lo scritto. La stessa regola è applicata anche al progetto: la prova positiva vale anche per l'appello successivo.&lt;br /&gt;
&lt;br /&gt;
'''N.B. 3''': L'esame orale può essere sostenuto solo quando le due prove, scritto e progetto, sono positive, non prima.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/Lucidi/calendario.pdf calendario scaricabile (pdf)]&lt;br /&gt;
&lt;br /&gt;
(tratto dal [http://homes.dico.unimi.it/~alberti/Prog07/#calendario sito])&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
[http://homes.dico.unimi.it/~alberti/Prog07/ Sito del corso]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
*[http://homes.dico.unimi.it/~alberti/Prog07/#materiale Materiale sul sito del corso (lucidi, esercizi etc.)]&lt;br /&gt;
*Bibliografia&lt;br /&gt;
*#[[Dai fondamenti agli oggetti - Pighizzini Ferrari]]&lt;br /&gt;
*#J. Gosling, B. Joy, G. Steele and G. Bracha. The Java Language Specification- 2nd edition ([http://java.sun.com/docs/books/jls/ versione online]).&lt;br /&gt;
*#B. Eckel. Thinking in Java. Apogeo. ([http://homes.dico.unimi.it/~alberti/Prog07/Thinking_java.pdf In formato pdf])&lt;br /&gt;
(bibliografia tratta dal [http://homes.dico.unimi.it/~alberti/Prog07/#biblio sito])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Introduzione&lt;br /&gt;
*Definizione di informatica&lt;br /&gt;
*Cenni storici&lt;br /&gt;
&lt;br /&gt;
===Lezione 03/10/2007===&lt;br /&gt;
*Definzione di algoritmo&lt;br /&gt;
*5 caratteristiche dell'algoritmo&lt;br /&gt;
*#deve terminare dopo un numero finito di passi&lt;br /&gt;
*#ogni passo definito precisamente&lt;br /&gt;
*#input precisamente definito&lt;br /&gt;
*#output deve avere una relazione con i valori d'ingresso&lt;br /&gt;
*#operazioni effettuate sono di base e in un tempo finito&lt;br /&gt;
*Definizione di programma&lt;br /&gt;
*Definizione di procedura&lt;br /&gt;
*Criteri di bontà degli algoritmi&lt;br /&gt;
*#Tempo di esecuzione&lt;br /&gt;
*#Occupazione spazio di memoria&lt;br /&gt;
*#Adattabilità dell'algoritmo&lt;br /&gt;
*#Semplicità&lt;br /&gt;
*#Modularità&lt;br /&gt;
*#Eleganza&lt;br /&gt;
*Teoria degli algoritmi&lt;br /&gt;
**correttezza&lt;br /&gt;
**complessità&lt;br /&gt;
**decidibilità&lt;br /&gt;
*I linguaggi di programmazione&lt;br /&gt;
*Il processore&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 05/10/2007===&lt;br /&gt;
*installazione java environment su diverse piattaforme&lt;br /&gt;
*compilatore (javac.exe)&lt;br /&gt;
*interprete (java.exe)&lt;br /&gt;
*modifiche alla variabili ''path'' e ''classpath''&lt;br /&gt;
*problemi compilazione separata moduli&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Esempio algoritmo di Euclide in linguaggio macchina&lt;br /&gt;
*Problemi dei linguaggi macchina&lt;br /&gt;
**specifici della macchina&lt;br /&gt;
**non trasferibili&lt;br /&gt;
**codice poco leggibile&lt;br /&gt;
*Esigenza di una macchina astratta&lt;br /&gt;
*Compilatori ed interpreti:differenza&lt;br /&gt;
*Descrizione dei linguaggi&lt;br /&gt;
*#Grammatiche&lt;br /&gt;
*#*Una grammatica '''G''' è ua quadrupla {''T,N,P,S''} dove&lt;br /&gt;
*#**'''T''' è l'insieme dei ''simboli terminali''&lt;br /&gt;
*#**'''N''' è l'insieme dei ''simboli non terminali''&lt;br /&gt;
*#**'''P''' è l'insieme delle ''regole di produzione''&lt;br /&gt;
*#**'''S''' è il ''simbolo iniziale''&lt;br /&gt;
*#Tavole sintattiche&lt;br /&gt;
*#*'''Rettangoli''' = simboli non terminali&lt;br /&gt;
*#*'''Ovali''' = simboli terminali&lt;br /&gt;
*#*'''biforcazione''' = alternativa&lt;br /&gt;
*#Backus-Naur Form (BNF)&lt;br /&gt;
*Storia dei linguaggi&lt;br /&gt;
**primi linguaggi (anni '50)&lt;br /&gt;
***'''FORTRAN''': concetto di sottoprogramma&lt;br /&gt;
***'''ALGOL''': concetto di ricorsività&lt;br /&gt;
***'''COBOL''': concetto di file, descrizione dei dati&lt;br /&gt;
**anni '60 (linguaggi più funzionali)&lt;br /&gt;
***'''LISP''': paradigma di programmazione basato sul concetto di funzione&lt;br /&gt;
***'''APL''': molti operatori, matematico (gestione matrici, vettori...)&lt;br /&gt;
***'''SNOBOL''': manipolazione sequenze di caratteri&lt;br /&gt;
**anni '70&lt;br /&gt;
***'''PASCAL''': programmazione strutturata&lt;br /&gt;
***'''C''': alto livello, concetto di visibilità, accesso alla macchina&lt;br /&gt;
***'''PROLOG''': basato sulla logica, poi in disuso&lt;br /&gt;
**anni '80 (nasce la programmazione ad oggetti)&lt;br /&gt;
***Smalltalk&lt;br /&gt;
***C++&lt;br /&gt;
*Paradigmi di programmazione&lt;br /&gt;
**Procedurale&lt;br /&gt;
**Funzionale&lt;br /&gt;
**Modulare&lt;br /&gt;
**Ad oggetti&lt;br /&gt;
&lt;br /&gt;
(''Nota: la professoressa non ha finito i lucidi ed ha invitato gli studenti a finirli autonomamente'')&lt;br /&gt;
===Lezione 10/10/2007===&lt;br /&gt;
'''non ero presente, completate voi'''&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 12/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=17973</id>
		<title>Algoritmi e strutture dati T1/2007-2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.dsy.it/index.php?title=Algoritmi_e_strutture_dati_T1/2007-2008&amp;diff=17973"/>
		<updated>2007-10-09T15:16:05Z</updated>

		<summary type="html">&lt;p&gt;Joliet Jake: /* Lezione 09/10/2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Categoria:Corsi 2007-2008]]&lt;br /&gt;
&lt;br /&gt;
===AVVISI===&lt;br /&gt;
* La prima lezione di laboratorio sarà martedì 2 ottobre in aula '''G11'''  (Settore Didattico, via Celoria)  &lt;br /&gt;
* La lezione di martedì 2 ottobre non si terrà.&lt;br /&gt;
* Da giovedi 11 ottobre le lezioni ed i laboratori tranne il laboratorio di venerdì si svolgeranno in aula V2&lt;br /&gt;
&lt;br /&gt;
=== Orari ===&lt;br /&gt;
* ''Lezione''&lt;br /&gt;
** '''Lunedì''', 10:30-12:30, aula V1&lt;br /&gt;
** '''Martedì''', 08:30-10:30, aula V1&lt;br /&gt;
** '''Giovedì''', 08:30-10:30, aula V1&lt;br /&gt;
** '''Venerdì''', 10:30-12:30, aula 405&lt;br /&gt;
&lt;br /&gt;
* ''Laboratorio''&lt;br /&gt;
** '''Martedì''', 10:30-12:30, aula 309&lt;br /&gt;
** '''Giovedì''', 10:30-12:30, aula V1&lt;br /&gt;
&lt;br /&gt;
===Scaglione alfabetico ===&lt;br /&gt;
&lt;br /&gt;
Il turno è unico.&lt;br /&gt;
&lt;br /&gt;
===Docenti===&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~goldwurm/home.html Massimiliano Goldwurm] (teoria)&lt;br /&gt;
&lt;br /&gt;
[http://homes.dsi.unimi.it/~fiorenti/ Camillo Fiorentini] (laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Programma===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGRAMMA Programma del corso]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#PROGLAB Programma di laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Orari ricevimento===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ORARI Massimiliano Goldwurm]&lt;br /&gt;
* [http://homes.dsi.unimi.it/~fiorenti/labalg07.html Camillo Fiorentini]&lt;br /&gt;
&lt;br /&gt;
===Altre informazioni e links===&lt;br /&gt;
* [http://homes.dsi.unimi.it/~goldwurm/algo/#ESAMI Modalità d'esame]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=207 Forum di Algoritmi su DSY]&lt;br /&gt;
* [http://dsy.it/forum/forumdisplay.php?s=&amp;amp;forumid=25 Files di Algoritmi su DSY]&lt;br /&gt;
&lt;br /&gt;
===Siti del corso===&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/ Sito del corso]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~fiorenti/labalg07.html Sito del laboratorio]&lt;br /&gt;
&lt;br /&gt;
===Materiale didattico===&lt;br /&gt;
&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TESTI Dispense e testi consigliati]&lt;br /&gt;
*[http://homes.dsi.unimi.it/~goldwurm/algo/#TEMI Esercizi e temi d'esame]&lt;br /&gt;
*Ultimi temi d'esame ([http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.ps ps],[http://homes.dsi.unimi.it/~goldwurm/algo/ultimitemi.pdf pdf])&lt;br /&gt;
&lt;br /&gt;
==Diario del corso==&lt;br /&gt;
&lt;br /&gt;
===Lezione 01/10/2007===&lt;br /&gt;
*Definizione di algoritmo&lt;br /&gt;
*Definizione di problema&lt;br /&gt;
*Tipi di problemi&lt;br /&gt;
*#di decisione&lt;br /&gt;
*#di ricerca&lt;br /&gt;
*#di conteggio&lt;br /&gt;
*#di ottimizzazione&lt;br /&gt;
*Complessità di un algoritmo&lt;br /&gt;
*Tipi di difficoltà (problematiche)&lt;br /&gt;
*#SINTESI&lt;br /&gt;
*#ANALISI&lt;br /&gt;
*#CLASSIFICAZIONE&lt;br /&gt;
&lt;br /&gt;
===Lezione 02/10/2007===&lt;br /&gt;
lezione annullata&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 02/10/2007===&lt;br /&gt;
*Presentazione&lt;br /&gt;
*Caratteristiche del linguaggio C&lt;br /&gt;
*Differenze e somiglianze con JAVA&lt;br /&gt;
**C è per la programmazione strutturata, non ad oggetti&lt;br /&gt;
**In C non esistono i metodi ma le funzioni, + o - eguali ai metodi statici di JAVA&lt;br /&gt;
**C non è cross-latform, va ricompilato per ogni computer&lt;br /&gt;
**(...)&lt;br /&gt;
*Compilazione: codice sorgente -&amp;gt; pre-processore -&amp;gt; codice sorgente preprocessato -&amp;gt; compilatore -&amp;gt; codice oggetto -&amp;gt; linker -&amp;gt; codice eseguibile&lt;br /&gt;
* #INCLUDE&lt;br /&gt;
&lt;br /&gt;
===Lezione 04/10/2007===&lt;br /&gt;
'''non ho potuto partecipare alla lezione, aggiungete particolari se riuscite'''&lt;br /&gt;
&lt;br /&gt;
*Macchina RAM&lt;br /&gt;
*Istruzioni macchina RAM&lt;br /&gt;
*Semantica del linguaggio RAM &lt;br /&gt;
*Nozione di stato&lt;br /&gt;
*Nozione di transizione fra stati&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 04/10/2007===&lt;br /&gt;
Processo dal file srgente alleseguibile:&lt;br /&gt;
*Passaggio 1: pre-processazione&lt;br /&gt;
**gcc -E ''nomefile''.c esegue solo la precompilazione&lt;br /&gt;
**Direttive al pre-processore&lt;br /&gt;
**# #DEFINE&lt;br /&gt;
**# #INCLUDE&lt;br /&gt;
*Passaggio 2: compilazione&lt;br /&gt;
**gcc -c ''nomefile''.c esegue la precompilazione e la compilazione&lt;br /&gt;
**risultato in file codice oggetto binario (xxx'''.o''')&lt;br /&gt;
**le funzioni di cui c'è il prototipo (inserito o meno in fase di pre-compilazione) '''non''' sono sostituite dal loro codice, lo fa il ''linker'' al passaggio successivo.&lt;br /&gt;
*Passaggio 3: linking&lt;br /&gt;
**collega i prototipi al loro codice&lt;br /&gt;
**Modularità&lt;br /&gt;
***gcc x1.o x2.o unisce i due files compilati separatamente&lt;br /&gt;
***ci deve essere '''un solo main''' in almeno uno dei file uniti assieme&lt;br /&gt;
***'''non''' ci devono essere più definizioni della stessa funzione&lt;br /&gt;
&lt;br /&gt;
ALTRO:&lt;br /&gt;
*gcc -ansi ''nomefile''.c esegue la compilazione secondo lo standard ANSI&lt;br /&gt;
*gcc -pedantic ''nomefile''.c esegue la compilazione con un livello di dettaglio del debug estremamente avanzato&lt;br /&gt;
*gcc -Wall ''nomefile''.c esegue la compilazione con tutti i warning&lt;br /&gt;
&lt;br /&gt;
===Lezione 05/10/2007===&lt;br /&gt;
*Proprietà della computazione&lt;br /&gt;
*Criteri di costo&lt;br /&gt;
**Uniforme&lt;br /&gt;
**Logaritmico&lt;br /&gt;
*Esempi&lt;br /&gt;
&lt;br /&gt;
===Lezione 08/10/2007===&lt;br /&gt;
*Criterio uniforme e criterio logaritmico&lt;br /&gt;
*Costo delle operazioni della macchina RAM con criterio logaritmico&lt;br /&gt;
*Esempi di valutazione di spazio e tempo con i due criteri e paragone dei risultati&lt;br /&gt;
&lt;br /&gt;
===Lezione 09/10/2007===&lt;br /&gt;
*Notazione asintotica&lt;br /&gt;
*Relazioni e loro significato&lt;br /&gt;
**asintotico&lt;br /&gt;
**O grande&lt;br /&gt;
**o piccolo&lt;br /&gt;
**Omega grande&lt;br /&gt;
**Ordine di grandezza&lt;br /&gt;
*Regole generali di confronto&lt;br /&gt;
*Rapporti fra relazioni&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 09/10/2007===&lt;br /&gt;
*printf&lt;br /&gt;
*scanf&lt;br /&gt;
*if..then&lt;br /&gt;
*esempi ed esercizi in classe (vedere dispense di laboratorio)&lt;br /&gt;
&lt;br /&gt;
===Laboratorio 11/10/2007===&lt;br /&gt;
''da svolgersi''&lt;/div&gt;</summary>
		<author><name>Joliet Jake</name></author>
		
	</entry>
</feed>