Appunti sul C++

I miei appunti collezzionati durante lo studio di questo linguaggio

Funzioni (di libreria)

Scrivere tutto di un programma in C++ può essere facile finchè si tratta di poche righe, ma quando cominciamo ad avanzare come complessità allora cercare di ridurre al minimo le digitazioni è essenziale.
Supponiamo infatti di voler calcolare la distanza D tra due punti (a,b) e (x,y), la formula che ci permette questo è

Per fare somme, divisioni e quadrati non abbiamo alcun problema, ma nel fare la radice quadrata si! A questo proposito, o inventiamo un algoritmo bello complesso e lo scriviamo tutto, oppure vediamo se esiste una qualche funzione in una qualche libreria che fa al caso nostro.

Utilizzo di una funzione.
Supponendo che la funzione funz() sia nella libreria lib.h, allora per poterla sfruttare dovremo richiamare tale libreria, ovvero dovremo scrivere all'inizio del nostro codice
#include <lib.h>
(ecco perchè utilizzavamo alcuni include sempre, servivano a farci usare cout, endl ecc...).

Dobbiamo ora capire come utilizzare la funzione funz(). All'interno delle parentesi (spesso) va inserito un argomento (o più di uno) del quale dobbiamo conoscere in precedenza la natura (ad esempio una funzione può richiedere un intero, o un double, o un intero ed un double!).

Supponiamo che la nostra funzione funz() richieda un intero, allora possiamo farla “funzionare” scrivendo
int a = 7;
funz(a);
Supponendo invece che una seconda funzione funz2() presente sempre in lib.h richieda un intero ed un double (è importante l'ordine) allora andrà scritto qualcosa del tipo
double b = 30.0;
funz2(6, b);
Alcune funzioni, infine, restituiscono come risultato un valore: supponendo ad esempio che la funzione funz3() richieda un intero e dia come risultato un double possiamo scrivere
double risultato;
int a = 4;
risultato = funz3(4);
E la variabile risultato prenderà il valore corrispondente.

Applichiamo ciò che sappiamo al problema precedente. Vogliamo conoscere la radice quadrata di un dato numero, sappiamo che nella libreria math.h esiste la funzione sqrt() che richiede un double e da come risultato un altro double che è la radice quadrata dell'argomento immesso. Possiamo allora trovare la radice quadrata di un numero inserito da tastiera in questo modo:
#include <iostream>
#include <math.h>
using namespace std;

int
main()
{

double
numero;
cout << "Inserire un numero" << endl;
cin >> numero;
double
res = sqrt(numero);
cout << "La radice di " << numero << " e' " << res << endl;
cin.get();
return
0;
}
Comprendere il funzionamento del codice è estremamente elementare: la variabile res prende il valore tornato dalla funzione sqrt().

Alcuni errori frequenti sono il mancato inserimento della libreria necessaria (in questo caso la mancata scrittura di
#include <math.h>
).
Un altro errore che spesso accade è nell'inserimento dell'argomento: bisogna fare attenzione a che tipo di valore inseriamo come argomento, in questo caso la funzione accetta solo double e float. Provate ad inserire un intero come argomento per vedere il risultato.

Esercizi.
1. Sfruttare la funzione time() presente nella libreria ctime, dandogli 0 (zero) come argomento, per conoscere il tempo del vostro orologio di sistema (La funzione restituisce il tempo trascorso, in secondi, dal 1 gennaio 1970.)

2. Sfruttare la funzione abs() (che da il valore assoluto di un numero, accetta come argomento interi, float e double) presente nella libreria cstdlib per trovare il numero con il valore assoluto maggiore tra 5 numeri inseriti da tastiera.

3. Far calcolare ad un programma la distanza euclidea tra due punti con la formula vista in apertura dell'articolo

4. Difficile. Scrivere un programma che calcoli le due soluzioni di un equazione di secondo grado con coefficienti a, b e c dati da tastiera. La formula risolutiva di un equazione di secondo grado è
Suggerimento: Fare attenzione: quando il discriminante (l'argomento sotto radice) è minore di zero la radice non si può fare e quindi non ci sono soluzioni; quando è uguale a zero invece le due soluzioni sono coincidenti, ovvero c'è una sola soluzione. Sfruttare molto l'if



Ti è piaciuto questo articolo? Collegati ai feed RSS per restare sempre aggiornato sugli ultimi articoli pubblicati. Se hai suggerimenti o idee lascia un commento

Stampa il post

0 commenti:

Posta un commento

Blog Widget by LinkWithin

Lettori fissi