Lezione 1
Lezione 1
Ripasso dei Costrutti del C(++)

In questa prima lezione svolgeremo dei semplici esercizi per rinfrescarci la memoria e "sgranchirci" le dita...

ESERCIZIO 1.0 - La funzione scambia:
Il programma legge due dati da tastiera, li immagazzina in due variabili poi usa una funzione per scambiare il contenuto delle due variabili. Provare l'effetto di diverse sintassi della funzione scambia().

Brevi Richiami
Struttura del programma

cin e cout

Funzioni by reference e by value (e by pointer)


ESERCIZIO 1.1 - Scambia e Makefile:
Riorganizzare il programma dell'esercizio precedente compilando la funzione scambia in un oggetto indipendente dal programma,
utilizzando un Makefile

Brevi richiami
Il Makefile

ESERCIZIO 1.2 - Scambio di vettori (da consegnare):
Leggere i dati dal file /home/comune/labTNDS_aa1011_materiale/lezione1/dati.dat, immagazzinarli in un vettore, ciclare sul vettore e scambiare ciascun elemento di indice pari con il successivo (che è di indice dispari).
Scrivere su un file chiamato output.txt il vettore con gli elementi scambiati.
Il file dati.dat contiene nella prima riga il numero (intero) di entry del vettore, e nelle successive righe gli N valori delle entry.

Brevi richiami
fstream

Allocazione dinamica della memoria


ESERCIZIO 1.3 - Precisione e Formattazione (da consegnare):
In questo esercizio metteremo un pò in crisi la rappresentazione floating point dei numeri.
  1. Stampare il risultato delle seguenti operazioni:
    * 0.3 - 0.2 - 0.1
    * 0.3 - (0.2 + 0.1)
    * 0.4 - 0.3 - 0.1
    * 0.4 - (0.3 + 0.1)
    *(1E15 + 1) - 1E15
    *(1E16 + 1) - 1E16

  2. Valutare la funzione f(x) quando x è una potenza di 10, da x = 1E0 a x = 1E18
    f(x) = sqrt(x+1) - sqrt(x)
    e trovare un modo per valutare f con un errore più piccolo (le somme sono meno problematiche delle sottrazioni...).
    Per poter usare la funzione sqrt in C++ è necessario includere l'header <cmath>

  3. Dato il seguente array

    double data[4] = {4, 7, 13, 16}

    calcolare la media aritmetica <x> e la varianza V definita dalla formula

    V =N/(N-1) (<x^2> - <x>^2)

    Calcolare la media la varianza dell'array data_hugenumber, uguale all'array data ma in cui gli elementi sono maggiorati di 1E9.
    Qual è la varianza di data_hugenumber?
    Si ricorda che V[X+C] = V[X] dove C è una costante.

  4. Se avete una calcolatrice provate a ripetere gli esercizi precedenti.
    Provate a trovare l'esponente x per cui (1Ex + 1 ) - 1Ex dà un risultato sbagliato (vedi punto 1).

  5. Formattare l'output del programma:
    * per i punti 1) e 2) l'output deve essere in notazione scientifica;
    * per il punto 2) si richiede come output una tabella del tipo
    ------------------------------------------------------
    x fconerrore(x) fmigliore(x)
    ------------------------------------------------------
    .......................................................
    in cui valori siano allineati (usare setw);
    * per le altri parti si lascia al gusto personale.

Brevi richiami
Rappresentazione floating point

Formattazione dell'output


ESERCIZIO 1.4 - Overloading di funzione (da consegnare):
Calcolare il modulo di un numero (input da tastiera), di un vettore a due componenti (input da tastiera) e di un vettore a più componenti (prendendo l'input dal file dati.dat che vi è stato fornito). L'esercizio deve essere risolto implementando 3 funzioni con lo stesso nome, ma con argomenti differenti (overloading di funzione).

Brevi richiami
Overloading di funzioni



Back to Home Page