Differenze tra le versioni di "Algoritmi e strutture dati T1/2007-2008"

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

Versione attuale delle 15:21, 23 set 2010