26 novembre 2007

Template, complessità, standard library

Lezione di giovedì 22 novembre


Argomenti:

  • template
  • template functions
  • complessità: caso peggiore, caso medio, ammortata
  • Standard Library: introduzione
  • Contenitori
  • Esempi contenitore list
Podcast:
registrazione audio di questa lezione, in formato wav


Codice scritto a lezione:

19 novembre 2007

Correzione in aula dell'esonero

Lezione di lunedì 19 novembre
[circa 50 presenti]

Argomenti:

  • soluzioni del test
  • scrittura, compilazione e run del programma
Podcast:
registrazione audio di questa lezione, in formato wav

Il test:
si trova qui

Risposte del test:
1c,2a,3b,4a,5a,6b,7b,8c,9c,10c,11b,12a,13d,14b,15b,16c,17c,18a,19a,20c,21c,22b,23a,24c,25b,26b,27b,28b,29a,30a

Il bonus:

si trova qui

Soluzione del programma bonus:

Risultati del test

L'esonero di giovedì scorso è stato svolto da 68 persone.
Ecco i risultati del test a risposta multipla. Ci sono stati 13 insufficienti, e la media è 21.46.
Chi è insufficiente (segnato in rosso) dovrà ripetere il test in sede d'esame.

Risultati test del 15/11/2007

12 novembre 2007

Regole per l'esonero

L'esonero si svolgerà giovedì prossimo, 15 novembre, in aula 1 NEF (la solita), alle 16.

L'esonero è organizzato in due parti, di 40 minuti ciascuna, con un intervallo di pochi minuti (per ritirare la prima e consegnare la seconda parte).

Non è necessario iscriversi, chi è presente può partecipare.

L'esonero verte su tutti gli argomenti del programma svolti finora (capitoli 1, 2, 3 e 4 delle dispense).

Prima parte: TEST
La prima parte è un test a risposta multipla, su carta, si risponde barrando la risposta corretta.
Totale punti: 30, farà media con il voto del progetto.
Ogni domanda ha lo stesso peso.
Risposte sbagliate o non date valgono zero punti.
Durante il test:

E’ PROIBITO CONSULTARE LIBRI O ALTRO MATERIALE

E’ PROIBITO COMUNICARE CON ALTRE PERSONE PRESENTI O A DISTANZA


Seconda parte: BONUS
La seconda parte è un programma da scrivere al PC. E' cioè necessario utilizzare il laptop per compilare e provare il programma.
Durante il bonus:

E’ POSSIBILE CONSULTARE LIBRI ETC.
E' POSSIBILE SVOLGERE IL PROGRAMMA CON ALTRE PERSONE


Al termine dei 40 minuti, è necessario consegnare il codice sorgente usando una penna usb (che verrà immediatamente restituita) o un supporto magnetico (che non verrà restituito).

Tutti i file vanno salvati in una cartella denominata <cognome>. Se l’esercizio è svolto in gruppo il nome della cartella è il cognome del primo partecipante (primo in ordine alfabetico). In questo caso, indicare sul file principale i nomi, cognomi e numeri di matricola di tutti i partecipanti.

Il bonus sarà valutato con un voto in trentesimi che, moltiplicato per 0.1, andrà a sommarsi al voto finale. Quindi il bonus può aumentare da zero a tre punti il voto finale.

Tutti i partecipanti a uno stesso gruppo del bonus prendono, ovviamente, lo stesso voto.

I gruppi che si formano per realizzare il bonus insieme sono estemporanei, e non hanno niente a che vedere con i gruppi che dovrete costituire per realizzare il progetto.


Altro esercizio

Dichiarare e definire una classe C++ per la gestione di alberi binari, come descritto nel seguente Tipo di dato astratto. La classe deve evitare correttamente il fenomeno dell'interferenza.


TDA Albero
DOMINI: albero, intero, booleano
FUNZIONI:
creavuoto: ()-> albero // crea un albero vuoto
crea: (albero x intero x albero)->albero
// crea un nuovo albero dati due sottoalberi e il valore per la radice
sottoalberosin: (albero)->albero // restituisce il sottoalbero sinistro
sottoalberodes: (albero)->albero // restituisce il sottoalbero destro
radice: (albero)->intero // restituisce il valore della radice
IsEmpty: (albero)->booleano // restituisce true se l'albero è vuoto


Scrivere un main() che costruisce un albero leggendo 7 valori da tastiera e poi costruisce un nuovo albero speculare al primo. Infine stampa i due alberi in notazione parentetica, utilizzando una funzione apposita.

Es:
7
3 6
1 2 4 5

7
6 3
5 4 2 1


Stampa:
(7 (6 (5) (4)) (3 (2) (1)))

Chi risolve questo esercizio posti la sua soluzione come commento a questo post, così posso rispondere per fornire un aiuto, fare considerazioni, segnalare errori.

Esercizio

Ecco il testo dell'esercizio della seconda parte dell'esonero dell'anno scorso (parte bonus).
N.B: l'anno scorso non avevo concluso il capitolo delle classi al momento dell'esonero, quindi l'esercizio non riguardava le classi. Quest'anno invece l'esercizio che proporrò richiederà anche la dichiarazione e definizione di una classe.

Si scriva un programma C++ che:

a) legga dieci valori int da tastiera e li memorizzi in un array v. I valori saranno forniti in ordine crescente.

b) Allochi un array w di dimensione n pari al numero di elementi differenti di v, e vi copi tali elementi.

c) Sostituisca ad ogni elemento w[i] la somma degli elementi w[i]+...+w[n-1] (MEDIANTE FUNZIONE RICORSIVA)

d) Chiami, per ogni w[i], la funzione int Sum(int* p) che sommi il valore w[i] ad un accumulatore interno e restituisca il totale t accumulato (DEFINIRE LA FUNZIONE Sum())

e) Stampi v, w e t.

Ogni punto deve essere svolto realizzando almeno una funzione separata, chiamata dal main.

v, w e t devono essere dichiarate nel main.


Soluzione

07 novembre 2007

Non c'è lezione domani!

A causa di un impegno istituzionale in dipartimento, domani (giovedì 8 novembre) non posso tenere la lezione.
Quindi il prossimo appuntamento è a ricevimento lunedì o sul blog, e poi all'esonero di giovedì 15.
Spiacente,
EP