29 ottobre 2007

Calendario

Come avevo anticipato, ecco il calendario delle prossime lezioni:

  • lunedì 5 novembre non c'è lezione
  • giovedì 8 novembre: esercitazione
  • lunedì 12 novembre non c'è lezione (sospensione per prove intermedie)
  • giovedì 15 novembre: esonero
Il prossimo ricevimento studenti è lunedì 12 novembre.

L'argomento della lezione di oggi conclude la parte di programma che sarà materia di esonero. Tutta questa parte è trattata nei capitoli 1-4 delle dispense.
Dopo l'esonero inizieremo il capitolo 5. Giovedì 12 novembre invece faremo un'esercitazione sugli argomenti del capitolo 4.

Gestione della copia

Lezione di lunedì 29 ottobre, 1 ora
[>50 presenti]

Argomenti:

  • interferenza
  • passaggio per riferimento nel costruttore di copia
  • copia profonda
  • distruttore
  • operatore di assegnazione
Podcast:
registrazione audio di questa lezione, in formato wav

Dispense:
Gestione della memoria: costruttore di copia, operatore di assegnazione, distruttore, interferenza


Vedi anche:

25 ottobre 2007

Esercitazione: Lista

Lezione di giovedì 25 ottobre, 2 ore
[32 presenti, con 18 laptop]

Argomenti:

  • Tipo di dato astratto
  • implementazione delle funzioni del TDA mediante metodi C++
  • restituzione valori o modifica degli oggetti
  • elemento e lista: 2 classi?
  • dichiarazione e definizione
  • condivisione di memoria, side-effect, interferenza

Podcast:
registrazione audio di questa lezione, in formato MP3

Dispense:
Gestione della memoria: costruttore di copia, operatore di assegnazione, distruttore, interferenza


Vedi anche:

22 ottobre 2007

Costruttore di copia

Lezione di lunedì 22 ottobre 2007, 1 ora
[35 presenti]



Argomenti:

  • costruttore di copia
  • passaggio per riferimento costante

Dispense:
Gestione della memoria: costruttore di copia, operatore di assegnazione, distruttore, interferenza


Vedi anche:

Metodi, parametri, overloading

Lezione di giovedì 18 ottobre 2007, 2 ore

[45 presenti]



Argomenti:

  • definizione dei metodi
  • operatore .
  • compilazione, linking, dipendenze
  • oggetto d'invocazione costante
  • parametri per riferimento costanti
  • overloading

Dispense:
Esempi; Overloading degli operatori


Podcast della lezione:
http://multicommunity.di.uniroma1.it/podcast/panizziC++20071018.wav


Vedi anche:

Bando Percorso di Eccellenza

Vi informo che è aperto il seguente bando:
Bando Percorso di Eccellenza Lauree Triennali

21 ottobre 2007

Domande su svolgimento lezioni, esonero, esami

In questo post e nei relativi commenti raccolgo le domande che mi arrivano per email le cui risposte potrebbero essere di interesse per tutti.
Invito chi ha domande su questi argomenti a farle commentando questo post anziché inviandomi una email direttamente. Ogni volta che viene inserito un commento mi arriva una notifica per email.

17 ottobre 2007

Avviso

Diffondo volentieri questa informazione, per chi fosse interessato:

Cari Amici,
come gia anticipato dal Magnifico Rettore nelle scorse settimane, la Sapienza ha bandito un concorso di idee sulla residenzialità per studenti.
L’obiettivo - al fine di interpretare adeguatamente i desideri degli studenti e rispondere alle loro esigenze con soluzioni fortemente innovative sia in termini di offerta di servizi sia in termini di qualità degli spazi - è acquisire suggerimenti e proposte per una residenzialità che non deve limitarsi a offrire il servizio alloggio, ma deve costituire lo strumento per un maggiore interscambio con i docenti, per attivare corsi di tutoraggio, per incentivare processi di socializzazione e infine per garantire adeguate condizioni di sicurezza: in altri termini deve agevolare gli studenti nel percorso formativo per consentire loro di laurearsi nei tempi prestabiliti, acquisire esperienze da spendere sul mercato del lavoro e incrementare la propria autonomia.
Il concorso è aperto agli under 30 ed è articolato in due sezioni: a) studenti b) laureati.
Possono partecipare studenti e/o laureati di qualunque Facoltà della Sapienza.
La scadenza è fissata per le ore 12 di lunedì 19 novembre 07.
Il testo del bando e la documentazione è disponibile sull’home page della Sapienza
www.uniroma1.it

Considerato il significato dell’iniziativa, Vi prego di stimolare la più ampia partecipazione.

Vi ringrazio per la collaborazione e Vi saluto cordialmente.

Prof. Roberto Palumbo
Prorettore con delega per l'edilizia

15 ottobre 2007

Oggetto di invocazione

Lezione di lunedì 15 ottobre 2007, 1 ora
[ho dimenticato di contare i presenti, a occhio più di cinquanta]




Argomenti:

  • Analisi risultati del test svolto online; spiegazione domande e risposte
  • Oggetto di invocazione

Dispense:
Classi


Podcast della lezione:
http://multicommunity.di.uniroma1.it/podcast/panizziC++20071015.wav


Vedi anche:

Risultato test online

Come si può vedere, il risultato non è completamente incoraggiante. Consiglio di confrontare con le proprie risposte, e approfondire gli argomenti su cui avete fatto errori.
Le risposte corrette le ho segnate in rosso. Le risposte più quotate sono segnate in grassetto.

La domanda 3, in cui la risposta più data non è quella corretta, è la più preoccupante!
Per le altre domande, spesso la percentuale di risposte sbagliate è davvero alta!







Response Summary

Total Started Survey:
43
Total Completed Survey:
40 (93%)

Page: Passaggio di parametri
1. int cubo(int x);

Response
Percent
Response
Count
x per valore, ritorno per valore 76.7% 33
x per riferimento, ritorno per valore 14.0% 6
x per valore, ritorno per riferimento 4.7% 2
x per riferimento, ritorno per riferimento 4.7% 2

answered question 43

skipped question 0

2. Per cambiare il segno di una variabile int mediante una funzione la cui chiamata nel main è la seguente: CambioSegno(i); l’intestazione della funzione deve essere:

Response
Percent
Response
Count
void CambioSegno(int x); 19.1% 8
void CambioSegno(int& x); 66.7% 28
int CambioSegno(int* px); 14.3% 6

answered question 42

skipped question 1

3. Il parametro attuale a in: main() { int a; f(a); } è passato:

Response
Percent
Response
Count
per valore 52.4% 22
per riferimento
0.0% 0
non si può stabilire senza guardare la dichiarazione della funzione 47.6% 20

answered question 42

skipped question 1

4. In questo programma: void f(int val, int& rif) { val++; rif++; } main() { int i = 1; int j = 1; f(i,j); cout <<>

Response
Percent
Response
Count
1 1 7.1% 3
1 2 78.6% 33
2 1 4.8% 2
2 2 9.5% 4

answered question 42

skipped question 1


Page: Passaggio di parametri con puntatori
5. Si consideri il passaggio del parametro nel seguente programma: void f(int* v) { // ... } main() { int v[1000]; f(v); } Si tratta di:

Response
Percent
Response
Count
passaggio per valore dell’array v 5.0% 2
passaggio per valore del puntatore alla prima locazione dell’array 60.0% 24
passaggio per riferimento dell’array 12.5% 5
pass per riferimento del puntatore alla prima locazione 22.5% 9

answered question 40

skipped question 3

6. Questa funzione: int* f() { int l; // ... return &l; }

Response
Percent
Response
Count
è corretta 22.5% 9
crea un errore a runtime perché l’indirizzo restituito al chiamante non esiste più 30.0% 12
rende il programma imprevedibile perché il contenuto della locazione puntata può essere cambiato 47.5% 19

answered question 40

skipped question 3

7. void f(int*& p) { p++; }

Response
Percent
Response
Count
corretta, modifica il parametro attuale 47.5% 19
corretta, incrementa l’oggetto puntato dal parametro attuale 35.0% 14
errata 17.5% 7

answered question 40

skipped question 3


Page: Memoria dinamica
8. delete p;

Response
Percent
Response
Count
dichiara libera la locazione di memoria puntata da p 87.2% 34
cancella il contenuto della locazione puntata da p 7.7% 3
cancella il contenuto del puntatore p 5.1% 2

answered question 39

skipped question 4

9. int* v = new int[100]; Data questa dichiarazione si può affermare che v[0] e *v:

Response
Percent
Response
Count
sono equivalenti 72.5% 29
indicano rispettivamente un int e un puntatore 17.5% 7
sono equivalenti, ma la seconda è sconsigliabile 10.0% 4
solo la seconda è corretta
0.0% 0

answered question 40

skipped question 3

10. In questa funzione, il cui scopo è quello di allocare un array di 100 elementi interi e associarne l'indirizzo della prima locazione al parametro attuale: void Alloca(...p) { p = new int[100]; } i puntini di sospensione vanno sostituiti con:

Response
Percent
Response
Count
int* 37.5% 15
int& 12.5% 5
int*& 42.5% 17
nessuna delle precedenti 7.5% 3

answered question 40

skipped question