A recipe of: c basics ( Operazioni tra variabili numeriche )

Nel tutorial precedente abbiamo visto i vari tipi di operazione che possiamo fare su una variabile, oggi andremo a vedere come poter implementare le operazioni tra due variabili, piu’ precisamente tra due variabili numeriche.

 

Ingredienti:

 

 

Operazioni tra due interi (int)

Quando andiamo a parlare di operazioni tra due interi, non dobbiamo far altro che pensare alle operazioni tra due variabili appartenenti all’insieme N (informazione ridontante).

Quindi, non avremo problemi con le operazioni come addizione sottrazione e moltiplicazione, dovremo solo vedere dei piccoli accorgimenti sul come il nostro codice verra’ interpretato in caso di divisione.

Vi propongo questo codice sempre da andare a testare nel compilatore Online:

#include <stdio.h>

int main()
{
int a,b,risultato;
a = 2;
b = 3;
risultato = a – b;
printf(“\nil risultato della sottrazione e’ %d\n\n”,risultato);
risultato = a + b;
printf(“\nil risultato della somma e’ %d\n\n”,risultato);
risultato = a * b;
printf(“\nil risultato della moltiplicazione e’ %d\n\n”,risultato);
risultato = a / b;
printf(“\nil risultato della divisione e’ %d\n\n”,risultato);
risultato = a % b;
printf(“\nil risultato del resto della divisione e’ %d\n\n”,risultato);
}

Se andate a eseguirlo, otterrete il seguente output:

operazionitradueint

 

Nulla da dire, abbiamo assegnato alla nostra a il valore 2 e alla nostra b, il valore 3, non potevamo aspettarci risultati differenti.

Unico accorgimento nella divisione, non dovete pensare che questa venga arrottondata per eccesso o per difetto, ma dovete pensare che semplicemente, il programma non va a vedere i numeri dopo la virgola, quindi se avremo ad esempio 2,9 il nostro programma vedra’ unicamente il 2.

Tra le operazioni tra interi, abbiamo aggiunto un nuovo operatore, l’operatore di resto (%) , che andara’ a calcolarci sempre il resto della divisione.

 

Operazioni tra due double

Non cambia molto rispetto al ragionamento che facevamo con gli interi, unica differenza, ora al posto di avere un resto nella divisione, avremo direttamente un risultato con la virgola.

Andiamo quindi a modificare il codice cambiando gli int in double:

#include <stdio.h>

int main()
{
double a,b,risultato;
a = 2;
b = 3;
risultato = a – b;
printf(“\nil risultato della sottrazione e’ %.2f\n\n”,risultato);
risultato = a + b;
printf(“\nil risultato della somma e’ %.2f\n\n”,risultato);
risultato = a * b;
printf(“\nil risultato della moltiplicazione e’ %.2f\n\n”,risultato);
risultato = a / b;
printf(“\nil risultato della divisione e’ %.2f\n\n”,risultato);
}

Andando a eseguire questo codice otteremo il seguente output:

operazionitradouble

NOTA: Quando andiamo a stampare dei numeri, contenenti una virgola, quali float o double, non useremo piu’ il %d utilizzato per i numeri interi, ma andremo a utilizzare il %f.E’ utilizzabile anche il %d, ma non per stampare un risultato corretto.

NOTA 2: Per approssimare il numero di decimali, basta inserire nel nostro %f un .x in questo modo “%.xf” dove la x rappresenta il numero di decimali che abbiamo deciso di stampare.

 

Con le operazioni tra double, o meglio, cone le operazioni tra due variabili appartenenti all’insieme dei numeri razionali Q, andiamo a perdere l’operatore di resto, e se proveremo a eseguirlo, il nostro compilatore ci riportera’ errore.

 

Differenza tra Float e Double

Cosi come per i Double, anche andando a cambiare quello stesso programma visto precedentemente con dei float otteremo lo stesso risultato.

Ma allora quale e’ la differenza tra un double e un float?

Ebbene, i float sono numeri con la virgola a singola precisione, mentre i double a doppia precisione.

Questo cosa significa?

singola precisione (float):

  • 1: bit per il segno
  • 8: per l’esponente
  • 23: per la mantissa

doppia precisione (double):

  • 1: bit per il segno
  • 11: per l’esponente
  • 52: per la mantissa

 

Sostanzialmente cambia unicamente il numero di bit assegnati, e il double, ne ha di piu’ per poter avere una precisione maggiore.

 

Operazioni tra Double con un risultato intero

Abbiamo visto come funzionano le operazioni tra due double e tra due int, sempre andandogli ad assegnare un risultato dello stesso tipo, ma ora, andiamo a complicarci le cose, cosa accade se assegnamo a un’operazione tra double un intero?

Andiamo a verificare:

#include <stdio.h>

int main()
{
double a,b;
int risultato;
a = 2;
b = 3;
risultato = a – b;
printf(“\nil risultato della sottrazione e’ %.d\n\n”,risultato);
risultato = a + b;
printf(“\nil risultato della somma e’ %d\n\n”,risultato);
risultato = a * b;
printf(“\nil risultato della moltiplicazione e’ %d\n\n”,risultato);
risultato = a / b;
printf(“\nil risultato della divisione e’ %d\n\n”,risultato);
}

Andando a eseguire questo stralcio di codice, potete notare che non accadra’ niente di inaspettato, il risultato si comportera’ come un’int e vedra’ unicamente i numeri interi andando a cancellare quelli dopo una possibile virgola

quindi il nostro output apparira’ come:

doubleinteri

 

La stessa cosa accadra’ andando ad assegnare a un’operazione tra due variabili intere un risultato di tipo double, quindi, per evitare ridondanza nella spiegazione, salteremo questo caso.

Nel prossimo tutorial introdurremo l algebra booleana e andremo a vedere le varie operazioni tra due variabili booleane.

 

 

 

Saluti dal vostro nabbo Developer

Marco Tamagno

Facebook

Google+

Rispondi