Introduzione a C++

Le variabili

Possiamo pensare ad una variabile come ad un contenitore di informazioni da utilizzare nei programmmi. Per conservare una determinata informazione, tale contenitore fa uso della memoria del computer.

Come suggerisce il nome, una variabile, dopo essere stata dichiarata, può vedere cambiare il suo contenuto durante l’esecuzione di un programma, grazie ad opportune istruzioni di assegnamento. Le informazioni che in un certo istante sono contenute nelle variabili rappresentano lo stato del programma. Cambiare i dati nelle variabili significa quindi far evolvere il programma da uno stato ad un altro. In qualche senso perciò si può dire che le variabili rappresentino l’essenza del programma.

I tipi standard

Ma cosa intendiamo quando parliamo di “dichiarazione di una variabile”? È necessario fornire al computer una informazione precisa sul tipo di variabile che vogliamo definire. Ad esempio, se vogliamo rappresentare un numero dovremo fare in modo che il computer riservi una quantità di memoria sufficiente a contenere tale informazione.

Il C++ fornisce una serie di tipi standard che ci permettono di definire alcune tipologie base di variabili. In questa lezione esaminiamo le caratteristiche principali dei tipi standard del C++ che servono a rappresentare caratteri, testi, numeri interi e in virgola mobile, composizioni e a manipolare locazioni di memoria.

I i tipi base del C++ per sono quindi: testo o char (string), intero o int, valori in virgola mobile o float, valori in virgola mobile doppi o double, enumerazioni o enum, non-valori o void e puntatori.

In questa lezione esaminiamo tutti questi tipi tranne i puntatori, che saranno oggetto di una trattazione specifica.

char

Qualunque lingua parlata e scritta, per costruire le proprie frasi fa uso di una serie di caratteri. Per esempio, questa guida è scritta utilizzando svariate combinazioni di lettere dell’alfabeto, cifre e segni di punteggiatura. Il tipo char, quindi, serve proprio ad identificare uno degli elementi del linguaggio.

Il tipo char rappresenta infatti un singolo carattere, intendiamo per carattere una lettera o un numero o un simbolo (come !, $,%,&). Per questo occupa lo spazio di 8bit (1Byte), utili storicamente a rappresentare i caratteri nella codifica ASCII.

Ecco un elenco dei caratteri rappresentabili con char

// Lettere minuscole dell'alfabeto
a b c d e f g h i j k l m n o p q r s t u v w y z
//Lettere maiuscole dell'alfabeto
A B C D E F G H I  J K L M N O P Q R  S T U V X Y Z
// Cifre decimali (intese come caratteri e non come valori numerici)
0 1 2 3 4 5 6 7 8 9
// Simboli e caratteri di interpunzione
+ - * / = , . _ : ; ? " ' ~ | ! # % $ & ( ) [ ] { } ^ © ®

Inoltre con questo tipo possiamo anche rappresentare piccoli valori numerici compresi nell’intervallo tra -128 e 127 (o tra 0 e 255 se utilizziamo la variante senza segno:unsigned).

Operazioni con char

Vediamo adesso un semplice programma C++ che illustra la dichiarazione e l’uso del tipo char:

/*
 * Semplice programma §che mostra come utilizzare char
 * sia come contenitore di caratteri che come
 * contenitore di valori numerici interi
 */
main()
{
  char carattere;
  char numero;
  printf("Inserire un carattere a scelta e premere INVIO: ");
  scanf("%c", &carattere);
  printf("Inserire un intero compreso tra 0 e 127: ");
  scanf("%d", &numero);
  
  printf("Il carattere inserito è: %c\n", carattere);
  printf("Il numero inserito è: %d\n", numero);
  
  return(0);
}

Nell’esempio troviamo le funzioni printf e scanf che sono derivate dal linguaggio C. Utilizziamo printf per visualizzare a schermo dei messaggi e scanf per leggere l’input dell’utente.

Entrambe queste funzioni (definite nel file d’intestazione stdio.h) rilevano dei codici di formattazione a seconda del tipo di dato che si vuole rappresentare, eccone alcuni:

Codice Serve a mostrare…
%c un carattere
%d un intero a base decimale
%x un intero a base esadecimale
%f un numero a virgola mobile
%e un numero a virgola mobile con notazione scientifica

Esaminiamo rapidamente il significato di questa riga di codice:

scanf("%c", &carattere);

qui diciamo che intendiamo leggere l’input dell’utente come carattere (quindi verrà considerato soltanto il primo elemento immesso) e memorizzare tale valore nella variabile carattere. La “e commerciale” (&) prima del nome della variabile ne indica l’indirizzo di memoria.

Invece, la riga:

scanf("%d", &numero);

serve a leggere un intero decimale e memorizzarlo nella variabile numero. In modo analogo, quando scriviamo:

printf("Il carattere inserito è: %c\n", carattere)

diciamo di voler stampare a schermo (in output) il messaggio "Il carattere inserito è: " seguito dal carattere contenuto nella variabile carattere: se si è inserito il carattere ‘c’ verrà, quindi, stampato:

Il carattere inserito è c

Analogamente l’ultima istruzione del programma:

printf("Il numero inserito è: %d\n",numero);

serve a stampare, al posto del codice %d, il numero intero contenuto nella variabile numero.

Ricordiamo che sia la variabile carattere sia la variabile numero sono char, ciò che cambia è il modo in cui abbiamo scelto di acquisire e stampare le informazioni memorizzate.

I testi

Possiamo quindi assegnare ad una variabile char un qualunque carattere, ma se volgiamo rappresentare una serie di caratteri, un testo dobbiamo utilizzare una sequenza di char, o più propriamente un array.

Per rappresentare del testo, nello standard C++ è stato introdotto anche il tipo string (da utilizzare preferibilmente agli array di char)

int

Il tipo int serve a rappresentare l’insieme dei numeri interi, per intenderci “senza virgola”, positivi e negativi (1, 2, 43, -89, 4324). Storicamente i compilatori rappresentavano gli interi con 16bit (valori compresi tra -32768 e 32767) questo perché gli indirizzamenti erano a 16bit, ma attualmente quasi ovunque troviamo gli interi codificati da 32bit (valori compresi tra -2.147.483.648 e 2.147.483.647), in alcuni casi si sta passando anche agli interi da 64bit.

Ad arricchire la varietà di tipi numerici interi, troviamo i qualificatori unsigned, short e long, (“senza segno”, “corto” e “lungo”) che modificano alcune caratteristiche dei tipi fondamentali, char e int.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.