C++

Il linguaggio C (da cui il C++ deriva) fu ideato nei Bell Laboratories della AT&T nel 1972 da Dennis Ritchie come evoluzione del linguaggio B di Ken Thompson usato per la scrittura dei primi sistemi operativi UNIX. Il C++ è stato sviluppato (in origine col nome di "C con classi") da Bjarne Stroustrup ai Bell Laboratories nel 1983 come un miglioramento del linguaggio C.
Il nome C++ è un gioco di parole con un costrutto del C (dove il doppio segno più è un operatore che ha l'effetto di incrementare il valore di una variabile) insieme con la comune convenzione di aggiungere un segno più per indicare una versione potenziata. Secondo Stroustrup: «++ è l'operatore di incremento del C… il nome esprime la natura evoluzionaria dei cambiamenti dal C».
Il linguaggio C++ è un linguaggio compilato. I compilatori sono programmi che accettano in ingresso un programma scritto in linguaggio di alto livello (detto programma sorgente) e lo traducono interamente in un programma in linguaggio macchina (detto programma oggetto): a traduzione ultimata il programma potrà essere eseguito.

Struttura di un programma
Il linguaggio C++ è case sensitive: fa cioè distinzione fra maiuscole e minuscole. Le parole chiave devono essere scritte utilizzando lettere minuscole. I nomi che sceglie il programmatore (per esempio i nomi di variabili) possono essere scritti utilizzando qualsiasi combinazione di caratteri minuscoli o maiuscoli o numeri, ma non devono mai iniziare con un numero.
Per scrivere i nostri programmi, useremo il seguente schema:

#include <iostream>
#include <stdlib.h>

using namespace std;

main()
{
 // dichiarazioni delle variabili utilizzate
 ...
 // istruzioni del programma
 ...
 system("PAUSE");
}

La prima riga del listato serve per includere, nel programma, le funzionalità per l'utilizzo degli stream (flussi) di input e output. Il linguaggio C++ fornisce delle librerie già pronte contenenti funzionalità riguardanti elaborazioni varie. Per poter utilizzare le funzionalità, disponibili in una determinata libreria, è necessario aggiungere una riga del genere con il nome della libreria stessa.
La riga successiva (using…) è necessaria quando si utilizzano le librerie standard (std) del C++. La riga è conclusa con un ; che è il carattere terminatore di ogni istruzione.
Il programma vero e proprio è racchiuso nel blocco, delimitato dalla coppia di parentesi {}, e preceduto da main().
L'ultima istruzione del programma system(“PAUSE”), che richiede l’uso della libreria stdlib.h (per cui bisogna scrivere #include<stdlib.h>) serve a mettere in pausa l’esecuzione del programma per poter visualizzare i risultati.
Il programma, nello schema proposto, è suddiviso, per motivi di leggibilità, in due parti distinte:

✔ dichiarazione delle variabili
✔ istruzioni

Nel C++ una variabile può essere dichiarata in qualsiasi punto purché prima del suo utilizzo.
Le righe precedute da // sono commenti: vengono tralasciate dal compilatore in sede di traduzione, ma sono utili al programmatore per chiarire il senso delle righe che seguono.
Un commento che si espande su più righe deve invece iniziare con /* e terminare con */.

Programmi con struttura sequenziale
Un programma è una sequenza logicamente ordinata di operazioni o istruzioni che fornisce una soluzione a un problema dato.
Codifichiamo un semplice programma che, dopo aver richiesto le misure della base e dell'altezza, calcola l'area di un rettangolo. L'algoritmo risolutivo potrebbe essere scritto come il seguente:

1. Ricevi BASE
2. Ricevi ALTEZZA
3. Calcola AREA come prodotto di BASE e ALTEZZA
4. Comunica AREA

che si traduce in C++ nel seguente listato:

#include <iostream>
#include <stdlib.h>
using namespace std;
main()
{
 int base,altezza,area;
 cin >> base;
 cin >> altezza;
 area = base*altezza;
 cout << “Area: ” << area << endl;
 system("PAUSE");
}

Dopo la dichiarazione delle variabili, il programma è sviluppato in 3 parti che prevedono:

• istruzioni di input
• istruzioni di calcolo
• istruzioni di output

La forma grafica data al programma è, teoricamente, del tutto opzionale; una volta rispettata la sequenzialità e la sintassi, la scrittura del codice è libera. In particolare più istruzioni possono essere scritte sulla stessa linea. È indubbio però che, in questo ultimo caso, il programma risulterà notevolmente meno leggibile del precedente.

Analisi del listato
La prima riga dopo main() ovvero:

int base,altezza,area;

è la dichiarazione delle variabili utilizzate. La parola chiave int specifica che gli identificatori che la seguono si riferiscono a variabili di tipo intero; dunque base, altezza e area sono variabili di questo tipo.
Anche le dichiarazioni così come le altre istruzioni devono terminare con un punto e virgola. Ogni dichiarazione può riferirsi ad una o a più variabili dello stesso tipo.
Il nome di una variabile la identifica, il suo tipo ne definisce la dimensione e l'insieme delle operazioni che vi si possono effettuare.
Le dichiarazioni delle variabili dello stesso tipo possono essere scritte in sequenza separate da una virgola o anche dichiarate, con il proprio tipo, ognuna separatamente dalle altre:

int base;
int altezza;
int area;

Lo stream di input e output e l’istruzione di assegnazione
Quando si parla di input o di output senza meglio precisare, si fa riferimento alle periferiche di default: nel caso specifico tastiera e video.
Il flusso di informazioni dall’utente al computer è gestito dallo stream console in ovvero dall’istruzione cin, mentre Il flusso di informazioni dal computer all’utente è gestito dallo stream console out ovvero dall’istruzione cout.

cin >> base;
cin >> altezza;

L'esecuzione di queste istruzioni fa sì che il sistema attenda l'immissione di due numeri da parte dell'utente (dopo ogni immissione si deve premere Invio) e li memorizzi nelle variabile specificate.
In questa istruzione viene utilizzato il canale di input cin e l’operatore di estrazione ».
La definizione del canale di input si trova, come quella del canale di output, nella libreria iostream.
In pratica è preferibile far precedere le istruzioni di input da una (sequenza di caratteri alfanumerici racchiusa tra doppi apici) che indichi all’utente che cosa deve inserire.
Il listato perciò diventa:

cout << "introduci la base: ";
cin >> base;
cout << "introduci l’altezza: ";
cin >> altezza;

Nella prima istruzione, per esempio, si incanala (per mezzo dell'operatore di inserimento «) nello stream cout la stringa introduci la base. Tutto ciò che è racchiuso fra “ e “ (il carattere doppio apice) verrà visualizzato su video così come è. Il ; chiude l'istruzione.
L'istruzione seguente:

area = base*altezza;

assegna alla variabile area il valore ottenuto dal calcolo specificato.
L'istruzione di assegnazione è dunque realizzata mediante l'operatore =.
Gli operatori aritmetici sono:

addizione +
sottrazione -
moltiplicazione *
divisione /
resto %

L’istruzione successiva:

cout << “Area: ” << area << endl;

visualizza la stringa “Area: ” seguita dal valore calcolato dell’area assegnato precedentemente alla variabile area tramite l'istruzione di assegnazione.
Per andare a riga nuova si accoda (operatore «) il modificatore endl (endline) che, appunto, termina la linea e fa passare alla prossima riga nel video.

I tipi integer, float, double e char
Le variabili possono essere di tanti tipi: int, float, double, char, ecc.
L’insieme del tipo int è rappresentato dal sottoinsieme dei numeri interi relativi compresi tra -2147483648 e 2147483647.
L’insieme del tipo float (a virgola mobile) è rappresentato dal sottoinsieme dei numeri reali compresi tra 10-39 e 10+38 con 7 cifre decimali significative.
L’insieme del tipo double (a virgola mobile) è rappresentato dal sottoinsieme dei numeri reali compresi tra 10-309 e 10+308 con 16 cifre decimali significative.
L’insieme del tipo char è formato dai numeri interi che sono utilizzati per rappresentare i caratteri. I valori che possono essere assegnati a una variabile di tipo char possono essere o un carattere (racchiuso tra due singoli apici) o un numero che rappresenta il codice numerico ASCII di un carattere.

Salvo diversa indicazione, il contenuto di questa pagina è sotto licenza Creative Commons Attribution-ShareAlike 3.0 License