Nella settimana dal 6 al 10 novembre non ci sono lezioni per consentire la preparazione e lo svolgimento delle prove intermedie.
Venerdì 3 novembre non c'è lezione.
27 ottobre 2006
Avviso: prove intermedie - sospensione lezioni
Posted by
Emanuele Panizzi
at
17:45
3
comments
Informazioni sulla prova di esonero
La prova di esonero si terrà il 10 novembre 2006 alle ore 14 in aula 1 nef.
Sarà divisa in due parti: un test e un programma.
Prima parte: test
E' un test contenente 30 domande a scelta multipla sugli argomenti trattati nel corso fino alla data dell'esonero, da svolgere individualmente.
Tempo concesso: 40 minuti.
Non sarà possibile:
- discutere con i colleghi
- consultare libri o appunti
- usare computer
- comunicare con telefonino
Seconda parte: programma
Consiste nella realizzazione di un programma C++. Si consiglia di portare con sé il computer laptop per editare, compilare ed eseguire (provare) il programma prima di ricopiarlo sul foglio di carta. NB: la consegna è accettata esclusivamente su carta. La prova può essere svolta in collaborazione con i colleghi; in questo caso si può consegnare un unico programma scrivendo sul foglio protocollo il nome e il numero di matricola di tutti coloro che hanno collaborato.
Tempo concesso: 40 minuti.
Sarà possibile usare il pc, consultare libri e appunti, scambiare idee con tutti i colleghi presenti.
Il voto del programma, nell'intervallo 0..30, sarà moltiplicato per 0,1 e il risultato verrà sommato alla media del test e del progetto. Questa parte è superata in tutti i casi (non c'è sbarramento al 18). Questa parte non è obbligatoria, ma non potrà essere sostenuta in sede di esame.
Il voto finale dell'esame è:
(vototest+votoprogetto)/2+votoprogramma*0,1
All'esame, se il voto finale è >30, viene automaticamente assegnata la lode.
Posted by
Emanuele Panizzi
at
17:19
6
comments
Definizione delle funzioni proprie
Lezione del 27 ottobre
[52 presenti]
Argomenti trattati:
- layout dell'oggetto
- puntatore this
- definizione dei metodi (funzioni proprie) della classe
- accesso ai campi dell'oggetto
- oggetto di invocazione costante
- parametri costanti e ritorno per riferimento
- overloading
Podcast della lezione:
http://multicommunity.di.uniroma1.it/podcast/panizziC++20061027.mp3
Codice C++ di esempio realizzato a lezione:
Dispense online:
Classi
Posted by
Emanuele Panizzi
at
17:05
0
comments
25 ottobre 2006
Classi
Lezione del 24 ottobre
[59 presenti]
Argomenti trattati:
- tipo di dato astratto
- classi e oggetti
- dichiarazione della classe
- campi e funzioni proprie
- costruttore
- information hiding: parte pubblica e parte privata
- oggetto di invocazione
Podcast della lezione:
http://multicommunity.di.uniroma1.it/podcast/panizziC++20061024.mp3
Codice C++ di esempio realizzato a lezione:
Dispense online:
Classi
Posted by
Emanuele Panizzi
at
10:55
1 comments
23 ottobre 2006
Esercizi sulla ricorsione
Per esercitarsi sulla ricorsione utilizzando le strutture dati viste fin'ora:
- Scrivere una funzione ricorsiva che calcoli la somma degli elementi di un array di int
- Scrivere una funz. ric. che restituisca il massimo valore degli elementi di un array di interi.
- Scrivere una funzione ric. che, dato il puntatore a una stringa, conti il numero di spazi in essa contenuti.
- Scrivere una f.ric. che, dati due array di interi ordinati, stampi tutti gli elementi prendendoli ordinatamente dai due array: ad esempio, dati i due array
- 1|3|4|5|7|8|10|11
- 1|2|6|7|20|21
Fare attenzione a progettare correttamente l'intestazione delle funzioni (tipo di ritorno e tipo dei parametri formali).
Posted by
Emanuele Panizzi
at
15:51
1 comments
Labels: esercizi
Ricorsione
Lezione del 20 ottobre
[53 presenti]
Argomenti trattati:
- principio di induzione
- funzioni ricorsive in C++
- principio di funzionamento
Podcast della lezione:
http://multicommunity.di.uniroma1.it/podcast/panizziC++20061020.mp3
Codice C++ di esempio realizzato a lezione:
Dispense online:
Ricorsione
Posted by
Emanuele Panizzi
at
15:44
0
comments
18 ottobre 2006
Visibilità e ciclo di vita delle variabili
Lezione del 17 ottobre
[54 presenti]
Argomenti trattati:
- visibilità delle variabili (scope)
- ciclo di vita delle variabili
Podcast della lezione:
http://multicommunity.di.uniroma1.it/podcast/panizziC++20061017.mp3
Codice C++ di esempio realizzato a lezione:
Dispense online:
Funzioni, passaggio di parametri, visibilità, ciclo di vita, stack e record di attivazione
Posted by
Emanuele Panizzi
at
10:59
0
comments
Labels: scope
17 ottobre 2006
Sui prototipi delle funzioni
Risposta alla domanda 2 dello studente Emanuele del 14 ottobre scorso.
In C++ è necessario dichiarare le funzioni prima di utilizzarle. Questo si può fare in due modi:
- anteponendo il codice dell'intera funzione a tutte le funzioni che la usano (come abbiamo fatto negli esempi in aula)
- b) anteponendo il solo "prototipo" cioè l'intestazione della funzione.
#include
using namespace std;
// int f();
main()
{ int x = 2;
cout << f(x) << endl;
system("PAUSE");
}
int f(int i)
{ return 100*i; }
Nella compilazione di un programma che invoca una funzione è necessario conoscere solo gli elementi dell'intestazione della funzione: il nome, il tipo di ritorno, il numero e i tipi dei parametri che la funzione accetta. Questo permette al compilatore di effettuare il type checking (controllo dei tipi) e di produrre il giusto codice assembly per la chiamata e il ritorno dalla funzione. Non è invece necessario conoscere il contenuto del corpo della funzione, la cui compilazione può essere effettuata separatamente.
Normalmente le intestazioni di tutte le funzioni di un file .cpp vengono raccolte in un file .h che poi viene incluso da tutti i file che vogliono usare quelle funzioni.
Posted by
Emanuele Panizzi
at
15:22
0
comments
Funzioni e passaggio di parametri
Lezione del 13 ottobre
[59 presenti]
Argomenti trattati:
- funzioni
- passaggio di parametri per valore
- passaggio di parametri per riferimento
- passaggio di puntatori
- stack e record di attivazione
http://multicommunity.di.uniroma1.it/podcast/panizziC++20061013.mp3
Codice C++ di esempio realizzato a lezione:
Dispense online:
Funzioni, passaggio di parametri, visibilità, ciclo di vita, stack e record di attivazione
Posted by
Emanuele Panizzi
at
15:00
0
comments
11 ottobre 2006
Modularizzazione
Lezione del 10 ottobre
[61 presenti]
Argomenti trattati:
- decomposizione, astrazione
- coesione, interfacciamento esplicito fra moduli, accoppiamento, information hiding
- variabili globali nella modularizzazione
- modularizzazione mediante funzioni
- modularizzazione mediante file
- modularizzazione mediante tipo astratto
- modularizzazione mediante namespace
http://multicommunity.di.uniroma1.it/podcast/panizziC++20061010.mp3
Dispense online:
Modularizzazione
Posted by
Emanuele Panizzi
at
11:03
6
comments
09 ottobre 2006
Memoria dinamica
Lezione del 6 ottobre
[34 presenti]
Argomenti trattati:
- memoria dinamica
- variabili ed array allocati dinamicamente
- new, delete
- dichiarazione per riferimento
- stringhe come array di char
http://multicommunity.di.uniroma1.it/podcast/panizzi6ott2006.mp3
Codice C++ di esempio realizzato a lezione:
Dispense online:
Puntatori, memoria dinamica e riferimenti
Posted by
Emanuele Panizzi
at
13:00
0
comments
04 ottobre 2006
Puntatori
Lezione del 3 ottobre
[72 presenti]
Argomenti trattati:
- operatore & (address of)
- allocazione di variabili
- puntatore, suo tipo
- allocazione di variabili puntatore
- operatore di dereferenziazione, come r-value e come l-value
- equivalenza puntatori/nomi di array
- aritmetica dei puntatori
http://multicommunity.di.uniroma1.it/podcast/panizzi03ott2006.wav
Codice di esempio realizzato a lezione:
puntatori.cpp
Dispense online:
Puntatori, memoria dinamica e riferimenti
Posted by
Emanuele Panizzi
at
13:31
1 comments
02 ottobre 2006
Lezione del 29 settembre
[57 presenti]
Argomenti trattati:
- Tipi
- Variabili
- Operatori ed espressioni
- Array
- Strutture di controllo del flusso: if-else, while, for
http://multicommunity.di.uniroma1.it/podcast/panizzi29sep2006.wav
Posted by
Emanuele Panizzi
at
15:35
1 comments