15 ottobre 2007

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

Blog Action Day

Oggi, 15 ottobre, è il Blog Action Day: ogni blogger è invitato a scrivere un post sullo stesso tema, l'ambiente.

Questo blog è un edublog, quindi un po' atipico rispetto alla stragrande maggioranza dei blog esistenti; nonostante questo ho pensato di partecipare, pensando anche al fatto che l'ambiente riguarda anche la tecnologia (ad esempio nella ricerca di soluzioni ai problemi ambientali) e che quindi i lettori del blog (studenti universitari di materie tecnologiche) saranno sicuramente sensibili al tema ;-).

L'argomento specifico che volevo affrontare è quello dell'energia, visto che da qualche tempo sui giornali italiani è ripresa la discussione sull'uso e la produzione dell'energia nucleare.

Mi sembra che si stia conducendo questa discussione in maniera poco scientifica, e con una visione molto limitata.

  1. intanto ritengo che per poter decidere se riprendere o meno
    la produzione di energia nucleare in italia sia necessario considerare i numeri (non c'è mai un quadro organico di questi dati sui quotidiani):
    • quanta energia consumiamo oggi?
    • da che fonti viene?
    • quanta ne compriamo?
    • quanto costa produrla?
    • quanto costerebbe produrla con impianti nucleari?
    • quanto costerebbe con altri metodi (es. solare, eolica, etc.)?
    • che percentuale del fabbisogno potremmo coprire realisticamente con ciascun metodo?
  2. secondo, spesso si dice che si sia interrotta, con il referendum dell'87, la ricerca sul nucleare, e che quindi oggi siamo indietro rispetto agli altri. Vero. Ma andrebbe a mio avviso presa in considerazione l'idea di spendere di più sulla ricerca energetica in generale. La decisione di quale fonte enrgetica adottare va presa dopo aver fatto un po' di ricerca, e non a priori senza fondamenti scientifici; inoltre, potremmo provare a essere leader della ricerca sulle nuove fonti di energia dove tutti cominciano a competere in questi anni.
  3. infine credo che la politica energetica oggi dovrebbe essere fatta a livello europeo, non più italiano, date le implicazioni economiche che ha nei confronti degli altri paesi (USA, Russia, etc.)
Sono solo alcune considerazioni iniziali. Cosa ne pensate? Scrivetemi la vostra opinione.

Classi

Lezione di giovedì 11 ottobre 2007, 2 ore
[37 presenti]



Argomenti:

  • Tipi di dato astratto
  • sintassi class
  • costruttori, costruttore standard
  • layout degli oggetti
  • funzioni proprie o metodi
  • accesso ai membri (campi o funzioni)
  • membri privati e pubblici
  • parametri dei metodi e oggetto di invocazione

Dispense:
Classi


Podcast della lezione:
http://multicommunity.di.uniroma1.it/podcast/panizziC++20071011.mp3


Vedi anche:

08 ottobre 2007

Test da svolgere online entro lunedì prossimo

Ho preparato questo test che siete invitati a svolgere online entro lunedì prossimo.

E' un test anonimo, non chiedo nomi o matricole.

Ogni computer non può svolgerlo più di una volta, però. Siete pregati di svolgerlo individualmente, senza parlarne con chi ancora non l'ha svolto.

A lezione, lunedì prossimo, fornirò le risposte corrette. In questo modo potrete autovalutare la vostra preparazione.

Per svolgerlo è sufficiente seguire questo link:

Test valutazione conoscenze di base C/ C++

Ricorsione

Lezione di lunedì 8 ottobre, 1 ora
[56 presenti]


Argomenti:

  • motivazioni dell'uso della ricorsione
  • motivi di non comprensione
  • principio di induzione
  • criteri di progettazione di funzioni ricorsive
  • meccanismi di funzionamento

Dispense:
Ricorsione


Podcast della lezione:
http://multicommunity.di.uniroma1.it/podcast/panizziC++20071008.mp3


Vedi anche:


04 ottobre 2007

Modularizzazione, funzioni

Lezione di giovedì 4 ottobre, 2 ore
[51 presenti]


Argomenti:

  • modularizzazione
    • decomposizione
    • astrazione
    • paradigma client server
    • criteri di modularizzazione: coesione, interfacciamento esplicito, information hiding, accoppiamento
    • strumenti offerti dal C++: funzioni, file, classi
  • funzioni
    • intestazione (interfaccia) e implementazione
    • parametri formali e attuali
    • stack e record di attivazione
    • ciclo di vita e visibilità (scope) di variabili e parametri formali
    • passaggio per valore
    • passaggio per riferimento
    • passaggio di puntatori per valore e per riferimento

Codice C++ di esempio realizzato a lezione:


Dispense:
Modularizzazione
Funzioni, passaggio di parametri, visibilità, ciclo di vita, stack e record di attivazione


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



01 ottobre 2007

Cambio orario di ricevimento

L'orario di ricevimento è stato modificato per venire incontro alle esigenze degli studenti di programmazione a oggetti.

Il nuovo orario è il seguente:

  • lunedì ore 14.45 - 15.45, Aula 3 del nuovo edificio di Fisica, città universitaria
  • lunedì ore 16.00 - 17.00 nel mio studio.

Memoria dinamica e riferimenti

Lezione di lunedì 1 ottobre 2007 - 1h
[66 presenti]

Argomenti:

  • aritmetica dei puntatori
  • allocazione in memoria dinamica, new e delete
  • uso vettori allocati dinamicamente
  • riferimenti
  • memoria statica, stack, dinamica


Dispense:
Puntatori, memoria dinamica e riferimenti


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

27 settembre 2007

Strumenti di base del C++

Lezione di giovedì 27 settembre 2007 - 2h
[65 presenti]

Argomenti:

  • tipi/variabili
  • indirizzi/valori
  • compile-time/ runtime
  • overloading operatori
  • conversioni / cast
  • valutazione espressioni
  • array
  • if-else
  • while
  • for
  • puntatori


Dispense:
stumenti di base e strutture di controllo


Podcast della lezione:
http://multicommunity.di.uniroma1.it/podcast/panizziC++20070927.mp3