Dal momento che nel C++, come in tutti i linguaggi di programmazione, si ha a che fare soprattutto con numeri, è chiaro che esistono anche degli operatori per trattare tali numeri.
Gli operatori aritmetici principali sono5:
Addizione: utilizza l'operatore +
Sottrazione: utilizza l'operatore -
Moltiplicazione: utilizza l'operatore *
Divisione: utilizza l'operatore /
Modulo (il resto di una divisione): utilizza l'operatore %
Tali operatori vengono utilizzati proprio come avviene normalmente nella vita reale.
Facciamo un paio di esempi a scopo chiarificatore:
int variabile1 = 6 + 4; //inizializza la variabile al valore 10
variabile1 = 3 * 3; //assegna alla variabile il valore 9
variabile1 = variabile1 - 7; //sottrate 7 al valore attuale di variabile1, cioé 9,
//e assegna il risultato 2 alla stessa variabile1
//ora variabile1 contiene il valore 2
variabile1 = variabile1 * variabile1; //moltiplica 2 * 2 e assegna il risultato a variabile1
int variabile2; //dichiariamo una seconda variabile
variabile2 = variabile1 * 2; //moltiplica il valore di variabile1, che è 4, per il numero 2
//e assegna il risultato, che è 8, a variabile2
Questi sono solo alcuni esempi. Potete provarne altri, ed utilizzare l'istruzione cout per stamparli a schermo così da poter vedere il contenuto delle variabili man mano che le modificate.
Ma cosa succede se facciamo una cosa del genere?
float variabile3 = 1 + 10 * 10 / 2 - 13;
Quale delle operazioni verrà eseguita prima delle altre?
Nel C++ la moltiplicazione ha la precedenza sulla divisione, che a sua volta ha la precedenza su sottrazione che a sua volta ha la precedenza sull'addizione.
Quindi l'ordine di esecuzione sarà il seguente:
10 * 10 = 100 / 2 = 50 - 13 = 37 + 1 = 38
Vediamo un secondo esempio di programma, che utilizza la divisione e il modulo:
#include <iostream>
using namespace std;
int main()
{
char carattere; //questa variabile serve solo perché il programma non si chiuda da solo
int dividendo, divisore; //è possibile dichiarare più variabili dello stesso tipo sulla stessa riga
int risultato;
int resto;
cout << "inserire il primo numero: " << endl;
cin >> dividendo;
cout << "inserire il secondo numero: " << endl;
cin >> divisore;
risultato = dividendo / divisore;
resto = dividendo % divisore;
cout << "il risultato è: " << risultato << endl;
cout << "il resto è: " << resto << endl;
cin >> carattere; //invece di chiudersi il programma attende la pressione di un testo
return 0;
}
Il programma aspetta l'inserimento di due numeri da parte dell'utente, dopodiché li salva in due variabili differenti, esegue le due operazioni (divisione e modulo) e salva i rispettivi risultati in altre due variabili; infine stampa a schermo il risultato e il resto.
Operatori di conversione di tipo:
Mettiamo di avere una variabile che contiene un valore float e vogliamo convertirla ad un int:
float variabile1 = 2,01
int variabile2 = int (variabile1); //converte il contenuto di variabile1 da float a int
In questo caso è superfluo utilizzare l'operatore di conversione, dal momento che assegnando ad una variabile intera un numero con la virgola, il numero viene automaticamente troncato eliminando le cifre decimali.
Un caso in cui l'operatore di conversione mostra un'utilita è il seguente:
char carattere = 'A';
cout << carattere;
cout << int (carattere);
Il primo cout stampa il carattere A, mentre il secondo cout stampa il codice ASCII corrispondente, 65.
Le conversioni di tipo sono dette anche casting di tipo e gli operatori di conversione sono detti anche operatori di casting.
Le conversioni di tipo possono rivelarsi utili quando avremo a che fare con la programmazione ad oggetti. Tuttavia questo tipo di conversione è considerato poco sicuro, perché permette di convertire qualsiasi tipo in qualsiasi altro tipo, senza verificare prima che la conversione sia legittima.
Il C++ introduce un altro metodo di conversione, che vedremo quando tratteremo degli oggetti.
Il C++ offre degli operatori abbreviati per svolgere le operazioni aritmetiche, quando uno degli operatori è la stessa variabile che raccoglierà il risultato dell'operazione.
Ad esempio:
risultato = risultato + 10;
può essere scritto anche:
risultato += 10;
Le due linee di codice sono equivalenti.
E' possibile fare lo stesso con gli altri operatori, basta far precedere il simbolo = dall'operatore stesso:
+=
-=
*=
/=
%=
Nel caso in cui si debba incrementare o decrementare una variabile di un'unità, è possibile utilizzare gli operatori di incremento e decremento:
variabile++; //somma 1 a variabile
variabile--; //sottrae 1 a variabile
Familiarizzate con questi operatori perché si riveleranno molto utili all'interno dei vostri programmi, soprattutto nei loop.
Nessun commento:
Posta un commento