sabato, dicembre 30, 2006

esercizi

1. Che cosa succede all'istogramma di questo link, se l'operatore di assegnazione (operator=()) viene chiamato su se stesso? In altre parole, se si programma:

istogramma mioIstogramma (/* parametri */) ;
mioIstogramma = mioIstogramma ;

che cosa succede a mioIstogramma?

2. implementare il copy constructor e l'operator=() per la classe vettore tenendo presenti le considerazioni del punto 1.

mercoledì, dicembre 27, 2006

Insieme di Mandelbrot: proposta di soluzione.

Ciao a tutti,
ho svolto l'esercizio sull'insieme di Mandelbrot.
Sul gruppo potrete trovare il file MandelbrotKri_02.cpp da scaricare .
Ditemi cosa ne pensate!! Ogni commento è gradito!
P.s.: ricordatevi di scaricare anche i file sui complessi (complessiKri.he complessiKri.cc ) altrimenti non funziona.

N.B.: il programma genera anche un file chiamato output.txt che contiene la lista dei valori assunti dalla funzione RunOut per ogni numero complesso analizzato.

A grande richiesta (da leggersi... me l'ha chiesto Enzo) potrete trovare il file MandelbrotKri_ASCII.txt che è la copia di un output ottenuto con il programma di cui sopra usando i numeri:
z1 = -3-3i
z2 = 3+3i
intervalli = 8100.

Modifica 28-dic: Ho aggiunto un altro file dell'output : MandelbrotKri_ASCII02.txt.


mercoledì, dicembre 20, 2006

procedure in una classe

Ciao!
Stavo facendo qualche "vecchio" esercizio ed avevo una curiosità.
In particolare mi stavo occupando della classe istogramma (che non ho ancora fatto perchè mi ero occupato della classe complessi, ndt).
Dopo aver creato l'header file.h ho iniziato a scrivere il file .cc con l'implementazione della funzione riempi()
dichiarata nel seguente modo nel file .h:
void riempi(const double dato);
la funzione serve a inserire un dato nell'istogramma.
Mi è venuto in mente che servirebbe qualche controllo a proposito del dato inserito, per esempio:
"Cosa si fa se il dato inserito è minore del minimo valore rappresentato o maggiore del massimo?"
a questo punto l'idea è stata (prendiamo per esempio dato < min):
i) perdere il dato (scelta sconsigliata, credo)
ii) salvare il dato, ma non rappresentarlo (sono possibili diverse soluzioni)
iii) rappresentare il dato (modificando non poco l'istogramma), in particolare in questo caso potrei:
a] modificare il minimo in modo da rappresentare il nuovo dato e aggiungere tanti bin con lo stesso step di quelli dell'istogramma precedente (in pratica, se lavorassi con carta e matita allungherei il foglio e aggiungerei tante colonne (vuote) e poi una colonna in fondo a sx nella quale rappresento il nuovo dato)
b] modificare il minimo e calcolare un nuovo step (per esempio mantendo il numero di colonne uguale a quello precedente (di nuovo in pratica, cancello con una gomma le etichette degli intervalli delle colonne dell'istogramma e metto intervalli più larghi in modo da arrivare a contenere anche l'ultimo dato )
c] chiedo all'utente di scegliere di nuovo il numero di colonne che gli aggradano
Sia i punti i), ii), iii), come pure a], b], c] richiedono scelte da parte dell'utente che sarebbe bello poter fare run-time (leggi: l'utente inserisce il dato dall'esterno il programma vede che non va bene e allora si mette a chidere all'utente come si deve comportare).
La domanda che volevo fare è la seguente:
si può inserire scrivere tutta questa procedura di controllo come una funzione all'interno di una classe, senza che sia un metodo della classe. (come se fosse una funzione a parte, insomma, perchè è una specie di sottometodo)?
Da notare che per tutto il lavoro che ci sarebbe da fare sul vettore dei bins dell'istogramma sarebbe utile avere a disposizione un bell'array dinamico riallocabile (quindi prima dovrei mettermi a fare l'esercizio sulla classe dei vettori, oppure usare gli std::vector).
Dite che è troppo complicata tutta questa procedura?
Allora... se sì abbiamo tre possibilità I), II), III)... se no abbiamo... vabbhé lasciate perdere... sto delirando.
Fatemi sapere.
Ciao ciao
Cristian

lunedì, dicembre 18, 2006

esercizio con i vector

Un esercizio semplice per prendere dimestichezza con i std::vector : provare a sostituire l'array dentro alla classe istogramma con std::vector.
Come sempre, pubblicate il risultato!

venerdì, dicembre 15, 2006

Istogramma (un po' in ritardo)

Finalmente ho capito come si riescono a fare i link per pubblicare i programmi
Per adesso, meglio tardi che mai, metto a vostra disposizione il programma sulla classe istogramma (vedi i files pubblicati da davide 1986). In particolare mi piacerebbe ricevere qualche commento sui metodi per visualizzare a schermo l'istogramma: ho tentato di ingegnarmi come meglio potevo, anche se sono sicuro che ci sono dei metodi più eleganti e precisi dei miei.

giovedì, dicembre 14, 2006

Lezione di domani

Domani si terra' regolarmente lezione.

slide sulla standard template library

qui

giovedì, dicembre 07, 2006

slides sui template

qui

mercoledì, dicembre 06, 2006

discussione sul gruppo!

Se non lo faccio io, voi non ci pensate! Informo dunque tutti quelli che consultano solo il blog (visto che il gruppo ha solo 9 membri, oltre ai docenti...) che sul gruppo di google si sta svolgendo una discussione su un esempio, uploadato da un vostro collega, di una classe template per l'allocazione dinamica di array.

venerdì, dicembre 01, 2006

classe di vettori

Trovate qui e qui due esempi di implementazione di una classe di vettori template rispetto al tipo. Divertitevi ad ampliarle, ad esempio aggiungendo il copy-constructor come abbiamo fatto a lezione, l'overloading dell'operator=, e qualche metodo per ri-definire la taglia del vettore (allungarlo, accorciarlo), per resettarlo (eliminare — rilasciare la memoria del — l'array), riallocarlo, et cetera...
Ricordo che c'è ancora una lezione prima delle vacanze di natale, il 15 dicembre.
Non vorrei spaventarvi (anzi, forse sarebbe meglio se vi spaventaste un po'...!), ma l'esame si avvicina: più aspettate a prender confidenza concreta con la programmazione, più difficile sarà prepararsi!
Buona doppia settimana, e sfruttate il fatto che settimana prossima non avrete argomenti nuovi per consolidare (!) il programma fatto fin'ora, perchè poi (finalmente) cominceremo con cose nuove...