prof. Nunzio Brugaletta
C++: programmazione e oggetti

EnneBi - Programmazione
Avanti - Indietro - Inizio

Tipi di dati e modificatori di tipo

Le elaborazioni di un computer coinvolgono dati che possono essere di vari tipi. La stessa elaborazione può fornire risultati diversi a seconda del tipo di dato: se si considerano, per esempio, i dati 2 e 12 e si vuole stabilire un ordine, la risposta sarà diversa a seconda se si intendono i due dati come numeri o come caratteri. Nel primo caso, facendo riferimento al valore, la risposta sarà 2, 12. Se, invece, l'ordinamento va inteso in senso alfabetico, la risposta sarà 12, 2 (allo stesso modo di AB, B). È necessario stabilire in che senso vanno intesi i valori.

In generale, in rapporto al tipo di elaborazione, in Informatica si fa distinzione fra tipo carattere o alfanumerico e tipi numerici. Se sui dati si vogliono effettuare operazioni aritmetiche, questi devono essere definiti come tipo numerico, in caso contrario vanno definiti come tipo carattere.

In realtà il discorso è più complesso: se per il tipo carattere c'è ben poco da dire, il tipo numerico pone problemi non indifferenti per la conservazione nella memoria di un computer. Basta dire che i numeri sono infiniti e che lo può essere pure la parte decimale di un numero, che la memoria di un computer è limitata, che la codifica interna è in binario e quindi rappresentazioni molto estese per numeri anche piccoli come valore, per affermare che possono esserci più alternative in ragione dello spazio occupato in memoria e della precisione con cui si vuole conservare il numero.

Si aggiunga, a quanto sopra, che nelle applicazioni reali i dati, quasi mai, sono in formato semplice ma si presentano spesso in strutture più complesse.

I linguaggi di programmazione mettono a disposizione un insieme di tipi elementari e dei metodi per costruire strutture complesse: i tipi utente che verranno trattati successivamente.

C++ mette a disposizione 6 tipi elementari identificati dalle parole chiavi: char, int, float, double, bool, void. A parte il tipo void che verrà affrontato più avanti:

...
char alfa, beta;
cin >> alfa;  // riceve da tastiera un carattere e lo mette nella variabile
beta = 'Z';   // assegna direttamente il carattere
...
#include <iostream>
#include <limits>
using namespace std;

int main()
{

  cout << "bit intero " << numeric_limits<int>::digits << endl;
  cout << "cifre intero " << numeric_limits<int>::digits10 << endl;
  cout << "minimo intero " << numeric_limits<int>::min() << endl;
  cout << "massimo intero " << numeric_limits<int>::max() << endl;

  cout << "\nbit short " << numeric_limits<short>::digits << endl;
  cout << "cifre short " << numeric_limits<short>::digits10 << endl;
  cout << "minimo short " << numeric_limits<short>::min() << endl;
  cout << "massimo short " << numeric_limits<short>::max() << endl;

  cout << "\nbit float " << numeric_limits<float>::digits << endl;
  cout << "cifre float " << numeric_limits<float>::digits10 << endl;
  cout << "minimo float " << numeric_limits<float>::min() << endl;
  cout << "massimo float " << numeric_limits<float>::max() << endl;

  cout << "\nbit double " << numeric_limits<double>::digits << endl; 
  cout << "cifre double " << numeric_limits<double>::digits10 << endl; 
  cout << "minimo double " << numeric_limits<double>::min() << endl;
  cout << "massimo double " << numeric_limits<double>::max() << endl;

  cout << "\nbit long double " << numeric_limits<long double>::digits << endl; 
  cout << "cifre long double " << numeric_limits<long double>::digits10 << endl; 
  cout << "minimo long double " << numeric_limits<long double>::min() << endl;
  cout << "massimo long double " << numeric_limits<long double>::max() << endl;

  return 0;
}
bit intero 31
cifre intero 9
minimo intero -2147483648
massimo intero 2147483647

bit short 15
cifre short 4
minimo short -32768
massimo short 32767

bit float 24
cifre float 6
minimo float 1.17549e-38
massimo float 3.40282e+38

bit double 53
cifre double 15
minimo double 2.22507e-308
massimo double 1.79769e+308

bit long double 64
cifre long double 18
minimo long double 3.3621e-4932
massimo long double 1.18973e+4932
...
int a;
short b;   // non e' necessario specificare int
...
a = 15;
b = 20;
...
...
float c;
double d;
long double e;
...
c = 123.23;
d = 456970.345;
e = 789.0       // in ogni caso deve essere inserita la parte decimale
...
...
bool test;
test = false;
if (i<100)
  test = true;
...


Avanti - Indietro - Inizio

http://ennebi.solira.org
ennebi@solira.org