Struttura di un programma C++
Come è fatto un programma C++?
Sezione intitolata “Come è fatto un programma C++?”Prima di scrivere programmi più lunghi, conviene riconoscere le parti che compaiono in ogni file C++.
La struttura non è identica in ogni progetto, ma alcuni elementi ricorrono spesso.
La struttura minima
Sezione intitolata “La struttura minima”Ecco il programma C++ più semplice possibile:
#include <iostream>using namespace std;
int main() { cout << "Ciao!"; return 0;}Questo programma stampa la parola “Ciao!” sullo schermo. Solo cinque righe, ma ognuna ha un ruolo preciso.
Parte 1: #include <iostream>
Sezione intitolata “Parte 1: #include <iostream>”#include <iostream>Questa riga dice al compilatore: “Ho bisogno della libreria iostream.”
iostream contiene gli strumenti per scrivere sullo schermo (cout) e leggere l’input dell’utente (cin).
Senza questa riga, il compilatore non saprebbe cosa significa cout e il programma non funzionerebbe.
Parte 2: using namespace std;
Sezione intitolata “Parte 2: using namespace std;”using namespace std;Pensa a un namespace come a un cognome. Se in classe ci sono due ragazzi chiamati Marco, li distingui con il cognome: “Marco Rossi” e “Marco Bianchi”.
cout e cin appartengono alla “famiglia” std. Scrivere using namespace std; dice al compilatore di cercare in quella famiglia i nomi senza prefisso. Così puoi scrivere cout invece del nome completo std::cout.
Nei primi esempi useremo questa scorciatoia per concentrare l’attenzione sui concetti nuovi. Nei progetti più grandi è spesso più chiaro scrivere std::cout e std::cin, perché nomi provenienti da famiglie diverse potrebbero entrare in conflitto.
Parte 3: int main() { ... }
Sezione intitolata “Parte 3: int main() { ... }”int main() { // il programma inizia qui return 0;}La funzione main() è il punto di partenza di ogni programma C++. Quando avvii un programma, il computer cerca sempre main() e inizia a eseguire le istruzioni al suo interno.
int: indica chemainrestituisce un numero intero al termine- Le parentesi graffe
{e}: delimitano il corpo della funzione return 0;: segnala che il programma è terminato senza errori (0 = tutto ok)
Parte 4: le istruzioni dentro main()
Sezione intitolata “Parte 4: le istruzioni dentro main()”cout << "Ciao!";Dentro main() scrivi le istruzioni del programma, una per riga. Ogni istruzione termina con il punto e virgola ;.
cout stampa qualcosa sullo schermo. La freccia << indica “manda questo testo a cout”.
Un esempio più completo
Sezione intitolata “Un esempio più completo”Quando hai bisogno di più funzionalità, includi più librerie:
#include <iostream>#include <string>using namespace std;
int main() { // Dichiariamo due variabili string nome = "Alice"; int eta = 16;
// Le stampiamo sullo schermo cout << "Nome: " << nome << endl; cout << "Età: " << eta << endl;
return 0;}Output:
Nome: AliceEtà: 16Qui abbiamo aggiunto #include <string> perché vogliamo usare le stringhe di testo.
L’ordine delle sezioni
Sezione intitolata “L’ordine delle sezioni”Un file C++ tipico segue sempre quest’ordine dall’alto verso il basso:
- Le librerie: cosa includiamo
- Il namespace: quale “famiglia” di nomi usare
- Variabili e costanti globali: valori disponibili ovunque (opzionale)
- La funzione
main(): da dove parte il programma - Altre funzioni: pezzi di codice riutilizzabili (opzionale)
// 1. Librerie#include <iostream>#include <cmath>
// 2. Namespaceusing namespace std;
// 3. Costante globale (opzionale)const double PI = 3.14159;
// 4. Funzione mainint main() { double raggio = 5.0; // PI * r * r calcola l'area del cerchio double area = PI * raggio * raggio; cout << "Area: " << area << endl; return 0;}Le parentesi graffe delimitano i blocchi
Sezione intitolata “Le parentesi graffe delimitano i blocchi”Le parentesi graffe { } compaiono ovunque in C++: nelle funzioni, nei cicli, nelle condizioni. Ogni coppia apre e chiude un blocco di codice.
int main() { // apre il blocco di main if (true) { // apre un blocco if cout << "Ciao"; } // chiude il blocco if return 0;} // chiude il blocco di mainOgni { deve avere il suo } corrispondente. Se ne manca uno, il compilatore segnala un errore.
Il punto e virgola alla fine di ogni istruzione
Sezione intitolata “Il punto e virgola alla fine di ogni istruzione”In C++, quasi tutte le istruzioni terminano con ;. Dimenticarlo è uno degli errori più comuni:
// Correttocout << "Ciao!" << endl;int x = 5;
// Errato: manca il ;cout << "Ciao!" << endl // il compilatore segnala un erroreint x = 5 // anche quiSe non capisci un errore del compilatore, prima di tutto controlla che non manchi un punto e virgola.