lunedì, settembre 16, 2013

Aula esame 17 settembre

L'esami indata 17 settembre si svolgerà nella sala riunioni INFN, in U2 al quarto piano (salendo dagli ascensori vicino all'ingresso, verso destra).

lunedì, settembre 02, 2013

Appello d'Esame Settembre 2013

Ciao a tutti,
L'esame per il corso di Laboratorio Informatica si svolgerà il giorno 17 settembre 2013, a partire dalle ore 10 in aula da definire.

Per iscriversi all'esame vi chiediamo di spedire una mail alla casella appositamente creata per il corso:

unimib.labinfo@gmail.com

Al seguente link troverete il pdf con il testo dell'esame e le istruzioni per lo svolgimento:

TestoEsame

Per agevolare la comprensione di alcuni temi d'esame, vengono forniti anche dei documenti aggiuntivi che possono essere di integrazione alla comprensione di alcuni dei problemi presentati.

In particolare:
I file necessari allo svolgimento dei temi d'esame, qualora specificati nel testo, sono recuperatibili al link seguente:

DatiEsame

Ripetiamo rapidamente le modalità d'esame, comunque riportate sul testo:

Scegliere e svolgere, fra i testi proposti, uno o più esercizi in modo tale da raggiungere 5 punti. I programmi dovranno essere compilati, eseguiti e discussi al momento dell’esame. Alla prova d’esame è necessario presentarsi con una copia funzionante dei programmi in modo da poterli testare sui computer del laboratorio o su quelli dei docenti. Seguirà la parte di statistica.

In bocca al lupo! E buon lavoro...
Andrea e Davide

giovedì, novembre 15, 2012

Teorema del Limite Centrale


Potete trovare a questo indirizzo un'esposizione del Teorema del Limite Centrale, con annessi programmi, preparata dal Professor Zanotti. Vista l'importanza del Teorema, vi consigliamo di studiare attentamente il documento ed eseguire i programmi in esso contenuti.

Teoria statistica

Il professor Zanotti mette a vostra disposizione questi due files relativi a:

Probabilità Condizionata

Operazioni Logiche

mercoledì, febbraio 08, 2012

ESAME 28/29 febbraio

Ciao a tutti,

L'esame si svolgerà nei giorni 28 e 29 febbraio, a partire dalle 9.30 in aula da definirsi. Nei prossimi giorni, su queste stesse pagine, la comunicheremo.
L'iscrizione all'esame potete effettuarla votando su Doodle al link seguente per una delle due date:

Poll esame

cercate di distribuirvi equamente sulle due date!
Al seguente link troverete il pdf con il testo dell´esame e le istruzioni per lo svolgimento:

TestoEsame

I file necessari al suo svolgimento, come segnalato nel testo, si possono invece trovare al link seguente:

DatiEsame


Ripeto rapidamente le modalità d'esame, comunque riportate sul testo:

Scegliere e svolgere, fra i testi proposti, uno o più esercizi in modo tale da raggiungere 5 punti. I programmi dovranno essere compilati, eseguiti e discussi al momento dell’esame. Alla prova d’esame è necessario presentarsi con una copia funzionante dei programmi in modo da poterli testare sui computer del laboratorio o su quelli dei docenti. Seguirà la parte di statistica.

mercoledì, dicembre 21, 2011

Consigli per il partizionamento (ragionato) del disco per l'installazione di Linux

Premessa
A meno che non abbiate uno smartphone con Android è probabile che per molti di voi i laboratori di informatica siano stati la prima occasione di utilizzare un sistema operativo GNU/Linux. È possibile che ne siate anche incuriositi o interessati. E magari vorreste anche installarvelo a casa su una comoda partizione. Qui di seguito trovate un paio di consigli e qualche link che vi possono aiutare non tanto nella procedura di installazione stessa, quanto nella scelta delle partizioni.

La maggioranza delle distribuzioni di Linux infatti comprende una procedura guidata per l'installazione che ad in certo punto analizzerà il disco fisso del vostro PC, riconoscerà l'eventuale presenza di altri sistemi operativi e vi chiedere dove (e come) installare il vostro sistema Linux-based, proponendovi di utilizzare di una certa quota dello spazio libero che avete a disposione.

A proposito, se siete alla vostra prima esperienza con Linux, personalmente vi consiglio di installare Ubuntu, al secondo posto consiglio Fedora (scoprirete ben presto che si tratta di una questione di gusto personale e che la lista delle distribuzioni GNU/Linux è lunghissima: qui un esempio non necessariamente completo, qui una bella timeline).

Il mio invito è quello di non usare la procedura automatica, ma di specificare manualmente le partizioni. Seppure può sembrare folle incitare dei nuovi utenti a compiere un'operazione complicata e delicata come quella del partizionamento vi assicuro che un partizionamento ben fatto vi farà risparmiare tempo in futuro. Quella proposta sotto è una soluzione semplice da attuare, ma che vi offrirà grandi vantaggi rispetto al "installa tutto in un'unica partizione" che è la soluzione proposta di default dalle procedure di installazione di cui sopra. Non temete, i tool di partizionamento che si attivano scegliendo di specificare le partizioni manualmente hanno interfacce abbastanza intuitive da usare e, dopo aver letto un paio di istruzioni, il vero problema sarà *decidere quali e quante* partizioni creare. Questa guida serve ad aiutarvi in quest'ultimo step.

Prima di iniziare
Come detto sopra il partizionamento è un'operazione abbastanza delicata quindi eseguite un backup tutti i vostri file personali e possibilmente anche del sistema (solitamente sui portatili queste utility vengono preinstallate dal produttore del PC e hanno quindi nomi simili a "Acer recovery", "HP recovery manager", etc.). È bene fare sempre un backup prima di operazioni di aggiornamento/installazione importanti (sia su Windows che su Linux). In generale, è una buona pratica anche fare backup periodici e regolari, per quest'ultima esigenza consiglio di installare su Ubuntu l'ottimo programma Back In Time, una guida sull'installazione e l'uso si trova qui).

Vale la pena che vi leggiate anche queste due link, sono una buona introduzione su cos'è una partizione e cos'è un filesystem: [Gestione disco], [Partizionamento manuale].

Vai con il partizionamento
(tratto da qui)

Sostanziamente vi servono tre partizioni, quelli indicati qui sotto sono i loro mount-point:
1) "/" (detta anche "partizione di root" o "root") è la partizione di sistema, quella dove vanno a finire gli eseguibili dei programmi che installate, dei vari comandi di sistema e tutte le librerie (da stdio.h passando per stdlib, etc.) Qui dentro va anche il "bootloader" (GRUB2, ad oggi) ossia quel programma che vi permette di scegliere quale sistema operativo avviare al momento dell'accensione della macchina (dentro la cartella /boot). Tenete conto che qui denro ci sarà anche /tmp la directory di sistema dove vengono salvati i file temporanei (e.g. i file che aprite dal browser senza salvarli, le immagini disco prodotte temporaneamente se volete fare una copia di un CD, per non parlare di tutti i file prodotti temporaneamente da vari programmi). Tenete presente che arrivare a riempire le directory di sistema può comportare numerosi grattacapi, non da ultimo, se /tmp si riempe il sistema si potrebbe semplicemente bloccare perchè non riesce più ad eseguire alcune operazione che richiedono la creazione di file temporanei. Quanto grande deve essere questa partizione dipende anche da quanti programmi avete in mente di installare. I requisiti minimi di installazione ammontano a 8 GB[+]. Se non avete problemi di spazio 50 GB dovrebbero essere più che sufficienti a permettervi di installare i vostri programmi preferiti e avere un bel po' di spazio per installare programmi anche coroposi.

2) "/home" è la partizione con i dati dell'utente, quella che contiene le home-directory ("~") di ciascun account utente (e.g. /home/cristian se esiste un utente con username "cristian" sulla macchina). Avere la cartella home in una partizione separata vi permetterà di gestire dati e salvataggi più facilmente, per esempio potrete reinstallare il sistema da zero e ritrovare tutti i vostri dati al loro posto (questo *NON* vi solleva dalla necessità e responsabilità di fare i backup). Tenete conto che questa partizione contiene anche diverse cose utili come, per esempio, i file che indicano i vostri settaggi preferiti per il desktop oppure i segnalibri del browser[°].
Questa scelta si dimostra utilissima nel caso in cui abbiate problemi con il sistema (per esempio non riuscite più a fare partire Linux), infatti in questi casi basta avere un liveCD e una chiavetta o disco esterno per recuperare facilmente i vostri dati. Se riavviate da liveCD vedrete che la vostra partizione /home viene riconosciuta come un disco separato e quindi potrete semplicimente copiare tutti i vostri file su un hd esterno[-]. A volte, specie se si è alle prime armi, il modo più semplice per risolvere un problema è reinstallare[§]. Con una partizione home separata potete farlo senza problemi e per perdere i vostri dati vi rimarranno due possibilità: 1) li cancellate da soli [succede, succede...] 2) danneggiate fisicamente il disco in modo irreparabile.

3) swap (che in realtà non è un mount point ma il tipo di partizione, lo trovate tra i "tipi di filesystem" anche se non è un filesystem). Lo swap è una partizione speciale, usata dal sistema come sostituto della RAM nel caso questa fosse completamente piena (però, facendo parte del disco fisso è considerevolmente più lenta della RAM). Lo zen degli amministratori di sistema dice che "ci si rende conto di aver bisogno dello swap quando manca" ovvero quando il vostro PC smette di funzionare perchè ha occupato tutta la RAM (e tutto lo swap eventualmente) e non sa dove andare a scrivere i dati prodotti dalle vostre applicazioni. Una regola abbastanza nota e "tradizionale" stabilisce che lo swap deve essere il doppio della RAM, ma è anche vero che questa regola è stata creata quando le RAM si misuravano in MB! Su un computer con una memoria RAM dell'ordine di qualche GB se non avete problemi di spazio su disco fisso potete limitarvi a creare una partizione di swap grande quanto la RAM. Anche qui i vostri bisogni potrebbero cambiare dall'utilizzo che fate del PC. Ulteriori informazioni sullo swap e qualche consiglio rispetto a quale punto del disco installarlo si trovano nelle guide linkate qui sotto.

Una guida un po' datata, ma in italiano e più dettagliata si trova qui e qui trovate un'altra, interamente dedicata al partizionamento.

Infine, tenete conto che "your mileage may vary" ovvero che le soluzioni ottimali per voi dipendono dal vostro utilizzo del PC[#]. Se siete abituati ad usare molti programmi contemporaneamente allora è bene che non vi manchi lo swap, se solitamente installate molti programmi (magari solo per provarli), non risparmiate spazio nella partizione di sistema. Tenete conto che per queste partizioni pochi GB fanno la differenza, invece se avete bisogno di spazio per salvare i vostri file probabilmente quello che fa la differenza si misura in centinaia di GB o TB e la soluzione più semplice in questi casi è probabilmente dotarsi di un hard disk esterno (esistono hard disk esterni anche di 1 TB che non hanno bisogno di alimentazione esterna e hanno dimensioni contenute). Tenete pure conto del fatto che le memorio di massa costano poco (~ 0.05 €/GB, ad oggi)[*].

Fare a meno delle partizioni
Se avete un computer con almeno 1 GB di RAM e dual core (per i PC fissi è probabile che sia così se l'avete comprato dopo il 2005, per i portatili è così dal 2008 [fatti salvi i netbook, naturalmente]) potreste valutare la possibilità di installare Linux su una macchina virtuale. In breve una macchina virtuale è un software che vi permette generare un ambiente che emula il comportamento di un PC, quindi un PC virtuale, che funziona utilizzando le risorse del vostro PC "fisico". Sulla maccina virtuale è quindi possibile installare un sistema operativo, detto "guest", e utilizzarlo come se fosse una macchina fisicamente diversa. Compito del software di virtualizzazione è quello di "tradurre" le richieste alle risorse virtuali in richieste alle risorse reali (fisiche) del vostro PC. Il sistema operativo sul vostro PC fisico si dice "host".

Per questo potete installare un software come VirtualBox e, dopo aver scaricato l'immagine CD di installazione della vostra distribuzione preferita (non è necessario masterizzare il CD), usate la procedura guidata per creare una nuova macchina virtuale. Naturalmente la macchina virtuale creata dovrà avere un'architettura compatibile con quella del CD di installazione, se siete nel dubbio scaricate il CD con la versione x86/32 bit e create una macchina virtuale con la stessa architettura.

Naturalmente è possibile anche fare il contrario installando solo Linux sul vostro PC e usandolo come host per un sistema guest Windows. Su Ubuntu basta fare:
sudo apt-get install virtualbox virtualbox-guest-additions-iso
per installare VirtualBox, a questo punto potrete lanciare il programma dal menu "Applicazioni/Accessori/VirtualBox" e creare una nuova macchina virtuale usando la procedura guidata. Per fare questo vi servirà il CD di installazione di Windows o un'immagine (.iso) del CD stesso.

Quindi qui la scelta principale da fare in questo caso è "qual è il mio sistema operativo principale?", se usate Windows chiedetevi anche se esistono dei programmi alternativi su GNU/Linux che possono sostituire quelli che usate su Windows (in generale la risposta è sì). Il consiglio è che scegliate come sistema principale quello in cui eseguite le operazioni maggiormente "computation intensive". Se avete in mente di usare il PC per scrivere programmi probabilmente vi troverete più comodi usando Linux, se siete giocatori/giocatrici e avete i vostri giochi installati in Windows probabilmente vorrete usare quello come sistema principale. Se volete fare entrambe le cose, dato che probabilmente le farete in momenti separati ;-), vi conviene partizionare il disco e non usare la macchina virtuale.
Tenete anche conto del fatto che GNU/Linux può leggere e scrivere comodamente e facilmente le partizioni Windows (filestem NTFS), il contrario invece è meno facile[**], sono anche possibili soluzioni "ibride"[++].

Scusate la prolissità, spero che tutto questo possa essere d'aiuto.

Cristian

Note:
[*] Un problema di queste genere di guide è che invecchiamo molto velocemente, anche tra quelle linkate ne trovete alcune che indicano come "hardware tipico" un disco di qualche GB e una RAM di qualche decina di MB. Anch'io qui ho fatto qualche esempio, prendete tutti questi numeri cum grano salis.
[+] Fonte. Questo fatto vi permette, volendo, di installare il vostro sistema operativo su una chiavetta USB e portarvelo comodamente in giro. Non è fantascienza, anzi è il metodo standard per chi volesse navigare in sicurezza e anonimato da un internet cafè e in particolare nei paesi in cui la libertà di opinione non è garantita questo è vitale. Il problema è che per utilizzare il vostro sistema dovete riavviare il computer (cosa non sempre possibile).
[°] Tipicamente tutte queste informazioni si trovano dentro dei file di configurazione che sono salvati dai programmi all'interno di cartelle nascoste, che hanno nomi che iniziano con un punto (".") e si trovano dentro "~". Per esempio la cronologia, i segnalibri e i cookies del mio browser preferito [Firefox] sono in "~/.mozilla/firefox".
[-] Comandi utili in questi casi sono rsync e dd (usate il manuale [man] per ulteriori informazioni).
[§] "Don't think to yourself, "I'll be careful, I won't need to reinstall." Wrong. You will definitely hose up your system at least once, and for the novice, reinstalling is often the easiest way to fix it." (cit. dal link segnalato sopra)
[#] Vale la pena notare che questi consigli dipendono anche dalla vostra esperienza con Linux. È possibile che a un certo punto potrete avere voglia di mettere anche /usr su una partizione separata, oppure di usare filesystem come btrfs che hanno la possibilità di creare facilmente degli snapshot del disco. Ma a quel punto probabilmente ne saprete più di me...
[**] Per farlo si può installare in Windows il programma Ext2Read, nonostante il nome vede anche i filesystem di tipo ext4, il default per le installazioni di Ubuntu. Ext2Read può anche scrivere su questi filesystem, ma è consigliabile usarlo in sola lettura. Per gli stessi scopi esiste anche Ext2Fsd. Disclaimer: non ho mai provato questi due programmi quindi se qualcuno volesse scrivere qualche feedback in merito sarebbe gradito.
[++] Questa soluzione sembra percorribile e più solida di Ext2Read/Ext2Fsd anche se un po' più complicata.

martedì, novembre 29, 2011

Nota sull'installazione di Root 5.30 in Ubuntu 11.10 (gcc v.4.16)

Ciao a tutti,

Dato che mi è capitato di reinstallare ROOT condivido con voi due consigli utili per evitare un paio di errori nell'installazione. La versione interessata è la 5.30 (attualmente "recommended") ed il sistema operativo è Linux Ubuntu 11.10 (ultimo disponibile).
Per l'installazione seguite il capitolo 3.1 del file INSTALL che trovate nella cartella $ROOTSYS/root/README/

In particolare dopo aver fatto
./configure --help
scegliete l'architettura in base al vostro sistema operativo, molto probabilmente una tra queste[1]:
* linux - per i386 Linux with gcc >= 3
* linuxx8664gcc - per x86-64 Linux with gcc >= 3.x
quindi fate:
./configure ARCHITETTURA --prefix

(attenzione aggiungete l'opzione --prefix, che nell'INSTALL non è segnalata[2])
infine per compilare fate:
make -k LDFLAGS="-Wl,--no-as-needed"

Se avete un processore dual core (probabile, se avete un computer comprato dopo il 2005[3]) aggiungete al make sopra l'opzione -j2 quindi:
make -j2 -k LDFLAGS="-Wl,--no-as-needed"
Le opzioni a make servono per evitare l'errore un errore del tipo "Undefined reference to ..." che capita con gcc v4.16[4].

Ciao,

Cristian

[1]potete saperlo facendo
uname -a
se vedete nell'output x86_64 avete installato Ubuntu a 64 bit altrimenti se c'è solo x86 è a 32 bit (i386).
[2]]http://root.cern.ch/phpBB3/viewtopic.php?p=33036
[3]per vedere il numero di processori fate, vedrete tante righe quanti processori
less /proc/cpuinfo | grep processor
Un altro comando utile è:
sudo lshw -c cpu
[4]http://root.cern.ch/phpBB3/viewtopic.php?f=3&t=13341

venerdì, gennaio 08, 2010

Installare ROOT su Ubuntu

Chi ha un Ubuntu 9.10 (Karmic Koala) come sistema operativo può installare ROOT (versione 5.18b) direttamente tramite il sistema di pacchetti di Ubuntu e via interfaccia grafica.
1) Aprire il menu Applicazioni/Ubuntu Software Center.
2) Nella casella di ricerca digitrare ROOT
3) Installare il pacchetto ROOT con un semplice clic!

Per chi volesse installarlo da linea di comando (apt-get / aptitude)
1) Aprire un terminale
2) digitare
sudo apt-get install root-system-bin libroot-minuit5.18 libroot-minuit-dev root-fitter
e inserire la propria password utente
3) Fine :)

Aggiungendo gli opportuni repository al file /etc/apt/sources.list questa procedura dovrebbe funzionare anche su Debian (ma non ho provato personalmente, feedback in merito sono graditi).

Naturalmente se volete l'ultimissima versione potete scaricare il sorgente dal sito ufficiale di ROOT e compilarlo.

lunedì, novembre 02, 2009

Istruzioni per la connesione internet:
- una volta loggati, aprire un browser (firefox)
- in Modifica/preferenze/avanzate/rete/impostazioni
- attivare la modalità "configurazione manuale del proxy"
ed inserire "proxyu9.lib.unimib.it" - porta 8080
- attivare "utilizza questo proxy per ogni protocollo"
- confermare tutto e tornare alla pagina del browser
- se viene richiesto di inserire utente e password, mettete le vostre
(utente è : lib\bi01matricola)

sabato, settembre 27, 2008

ROOT Troubleshooting

Dato che "a volte ritornano" e di solito si tratta di problemi penso che sia utile riportare qui una mini guida per risolvere uno dei problemi più comuni che seguono l'installazione di ROOT sul proprio pc. Il problema riguarda gli utenti Linux, ma, ovviamente, è un problema da poco e la soluzione è immediata (c'è gia anche sulle slide, in particolare qui) ma capita che uno non la colga e rischi di impazzire perchè, nonostante l'installazione abbia funzionato, non si riesce a fare ripartire ROOT.
Per ulteriori informazioni (cos'è bash?, cos'è export? che vuol dire il carattere "$" prima dei nomi?) si rimanda ai testi specializzati sull'argomento.

************************************************************************
Troubleshooting (trad. "sparalo allo problema!")
Hai installato ROOT (hai digitato "make" da qualche parte e hai visto
una lista di scritte che scorrevano?) e magari l'avevi anche fatto
partire appena installato ma adesso hai aperto un terminale e digitando:
----------------------------------------------------------------------
root
----------------------------------------------------------------------
non parte?
Prima di tutto, controlliamo se la tua shell è una bash o una
tcsh apri un terminale e digita
----------------------------------------------------------------------
echo $SHELL
----------------------------------------------------------------------
se ottieni una risposta del tipo:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/bin/bash
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
allora la tua shell è una bash.
Di seguito le istruzioni sono quelle per una shell bash, qui ci sono i
comandi adatti per le shell tcsh.
ROOT non parte perchè il sistema semplicemente... non sa dove andarlo a
pescar!! Bisogna impostare le variabili di ambiente che indichino
dove sta il nostro ROOT.
Per farlo ecco i tre seguenti comandi EXPORT che devi digitare nella shell.
----------------------------------------------------------------------
export ROOTSYS=percorso_di_base_di_root
export PATH=$ROOTSYS/bin:$PATH
export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH
----------------------------------------------------------------------
percorso_di_base_di_root è la cartella dove hai fatto "make"
quando l'hai installato. Ecco un esempio: ho scaricato il file .tar e
salvato nella cartella "~/root++" e poi estratto.
Quindi devo digitare (per la tilde si deve fare AltGr + ì [i con l'accento])
----------------------------------------------------------------------
export ROOTSYS=~/root++/root/
----------------------------------------------------------------------
e gli altri due comandi export.
A questo punto digitando
----------------------------------------------------------------------
root
----------------------------------------------------------------------
dovrebbe partire.
Se tutto funziona ora noterai che se chiudi la shell (che oltre a essere
un termine frequente in fisica atomica e nucleare è il nome tecnico del
terminale) e la riapri per far partire ROOT dovresti digitare di nuovo
quei comandi.
Per automatizzare la cosa, vai nella tua cartella "~" che è la tua
cartella "home" personale e digita il comando:
----------------------------------------------------------------------
ls -a
----------------------------------------------------------------------
che ti mostra tutti ( all ) i file (anche quelli nascosti) presenti
nella cartella. Cerca il file chiamato:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.bashrc
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
(il punto all'inizio vuol dire che il file è nascosto.)
Se lo trovi, digita:
----------------------------------------------------------------------
nano .bashrc
----------------------------------------------------------------------
Dovresti vedere una cosa tipo:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
e aggiungi le seguenti righe in fondo (le righe che cominciano con il #
sono commentate)
----------------------------------------------------------------------
# comandi per ROOT
export ROOTSYS=percorso_di_base_di_ROOT
export PATH=$ROOTSYS/bin:$PATH
export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH
----------------------------------------------------------------------
ossia i comandi che hai digitato prima.
Quando hai finito premi
----------------------------------------------------------------------
Ctrl+O
Invio
Ctrl+X
----------------------------------------------------------------------
In questo modo salvi il file, confermi il nome e esci.
(La guida dei comandi di "nano" la vedi nella parte inderiore della
finestra ;) ).
A questo punto aprendo una shell e andando in una cartella qualsiasi,
digitando
----------------------------------------------------------------------
root
----------------------------------------------------------------------
Dovresti vedere il logo.
Buon lavoro.

Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software
Foundation; with no Invariant Sections, no Front-Cover Texts and
no Back-Cover Texts. A copy of the license is included in the
section entitled "GNU Free Documentation License".
***********************************************************************
Disclaimer: se qualcuno ha da discutere sul fatto che il migliore editor non sia "nano", ma per esempio "vim" o "emacs" evidentemente ne sa abbastanza da solo da non avere bisogno di questo post.

martedì, marzo 18, 2008

esame del 19 marzo

Ciao, sul sifa c'è scritto che l'esame si svolgerà alle 14 mentre avevo sentito voci che dicevano che sarebbe stato di mattina.
L'aula è sempre la stessa?

giovedì, dicembre 13, 2007

root su vista

domanda di carattere tecnico: ho delle difficoltà nel far partire ROOT su Vista.
s i installa correttamene ma poi non riesco ad utilizzrlo.
consigli?
ciao

lunedì, dicembre 03, 2007

mercoledì, novembre 28, 2007

introduzione all'ereditarieta'

Ecco alcune slide di introduzione all'ereditarieta', da sfogliare come lettura serale prima della lezione del 3/4 dicembre.

lunedì, novembre 26, 2007

mercoledì, novembre 21, 2007

varie

Precisazioni dell'esercizio per la prossima volta.

  1. Partendo dalle indicazioni e dai suggerimenti sulle slide, scrivere una classe vettore per la gestione di array dinamici, templata sul tipo di dati da allocare nel vettore.
  2. Compilare ed eseguire questo semplice programma. Riconoscete l'origine di ogni riga stampata come output?
  3. Scrivere una funzione doppio_di, esterna alla classe (ovvero non un metodo della classe), che prenda come unico argomento, passato per valore, un oggetto V della vostra classe vettore e restituisca un vettore W i cui elementi W[i] sono ciascuno il doppio di V[i].
  4. Scrivere una funzione void raddoppiami che prenda come unico argomento il riferimento di un vettore e raddoppi il valore di ciascun suo elemento.
  5. Implementare gli opportuni metodi (e aggiungere eventualmente gli opportuni attributi) perchè la classe vettore consenta il cambiamento della dimensione dell'array dinamico. In particolare, consenta sia di ridurre il numero di elementi (preservando il valore dei primi elementi sopravvissuti) e sia di aumentarne (preservando il valore dei primi elementi già esistenti). Inutile dirlo: attenzione ai new e delete!
Nel risolvere gli esercizi 3 e 4, far tesoro dell'esercizio 2...

Nota tecnica: con linux, per connettersi ad internet con un modem telefonico (non-ADSL), è possibile usare i seguenti programmi: gnome-ppp (se usate gnome come) o kppp (se usate KDE). Se la versione di linux non e' troppo vecchia, tutto dovrebbe essere molto semplice e intuitivo: basta trovare una di queste due applicazioni nel menu e utilizzarle nel modo più naturale possibile. Per ulteriori dettagli (ma non dovrebbe essercene bisogno...) potete leggere qui.

lunedì, novembre 19, 2007

martedì, novembre 13, 2007

complessi & istogramma

Esercizio facile-facile: dato il seguente header-file complesso.hpp per una possibile classe dei numeri complessi, scriverne l'implementazione in un corrispondente file complesso.cpp (e ovviamente, com'è sempre sottinteso, scrivere una test-unit per tale classe, ovvero un semplice programma capace di testare tutte le funzionalità implementate per la classe).
Esercizio facile: scrivere una classe istogramma da usare per l'analisi della soluzione all'esercizio 10. La classe istogramma non dovrà contenere al suo interno il generatore di numeri casuali, ma dovrà contenere solo quei metodi e quegli attributi che gli sono necessari per poter gestire una situazione del tutto generica in cui si vuole

  • popolare l'istogramma inserendo un valore alla volta
  • disegnare l'istogramma allo stato corrente (ovvero corrispondente alla popolazione di valori inseriti fino a quel momento)
  • restituire il valore della media e della varianza della popolazione allo stato corrente
Ulteriori specifiche (come la possibilità di indicare il numero di bin dell'istogramma, la possibilità di poter cambiare al volo il numero di bin, ovvero di poter cambiare il numero di bin quando l'istogramma è già stato creato e (parzialmente) riempito, la possibilità di cambiare al volo il numero bin soltanto accorpando i bin correntemente usati, e così via...) sono lasciati alla libertà dello studente.

NOTA BENE
Se avete domande (ed è bene per voi che ne abbiate!) sfruttate almeno la mailinglist del gruppo, ovvero scrivete una mail a labinfodocet@googlegroups.com

giovedì, novembre 08, 2007

allora...?

...chi è che racconta qui sul blog qual è la sottigliezza cui bisogna prestare attenzione nel risolvere l'esercizio 6, rispetto alla soluzione dell'esercizio 5?
...e chi è che mette un bello screenshot dell'ASCII-istogramma che ha ottenuto? Va bene con qualsiasi generatore random...!

mercoledì, novembre 07, 2007

strutture

Per chi le ha già viste durante la seconda lezione, per chi le vedrà nella prossima lezione, ecco le slide sulle strutture.
Vi ricordo che le slide delle lezioni precedenti si trovano qui.