Lorsque Code::Blocks a créé un nouveau projet, il a créé un fichier main.cpp contenant ce code :
Code : C++ | #include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
return 0;
}
|
Tous les IDE proposent en général de démarrer avec un code similaire. Cela permet de commencer à programmer plus vite.
Vous retrouverez les 3 premières lignes (include, using namespace et int main) dans quasiment tous vos programmes C++. Vous pouvez considérer que tous vos programmes commenceront avec ces lignes.
Sans trop rentrer dans les détails (car cela pourrait devenir compliqué pour un début !), je vais vous présenter à quoi servent chacune de ces lignes. Vous les retrouverez dans la plupart de vos programmes.
include
La toute première ligne est :
Code : C++
C'est ce qu'on appelle une
directive de préprocesseur. Son rôle est de "charger" des fonctionnalités du C++ pour que nous puissions effectuer certaines actions.
En effet,
le C++ est un langage très modulaire. De base, il ne sait pas faire grand-chose (pas même afficher un message à l'écran !). On doit charger des extensions que l'on appelle
bibliothèques et qui nous donnent de nouvelles possibilités.
Ici, on charge le fichier iostream, ce qui nous permet d'utiliser une bibliothèque... d'affichage de messages à l'écran dans une console ! Quelque chose de vraiment très basique, comme vous le voyez, mais qui nécessite quand même l'utilisation d'une bibliothèque.
Appeler iostream nous permet en fait de faire un peu plus que d'afficher des messages à l'écran : on pourra aussi récupérer ce que saisit l'utilisateur au clavier comme nous le verrons plus tard.
iostream signifie "Input Output Stream", ce qui signifie "Flux d'entrée-sortie". Dans un ordinateur, l'entrée correspond en général au clavier (ou la souris), et la sortie à l'écran. Inclure iostream nous permet donc en quelque sorte d'obtenir tout ce qu'il faut pour échanger des informations avec l'utilisateur.
Plus tard, nous découvrirons de nouvelles bibliothèques et il faudra effectuer des inclusions en haut des codes source comme ici. Par exemple, lorsque nous étudierons Qt qui permet de réaliser des programmes graphiques (GUI), on insérera une ligne comme celle-ci :
Code : C++
Notez qu'on peut charger autant de bibliothèques que l'on veut à la fois.
using namespace
La ligne :
Code : C++
... permet en quelque sorte d'indiquer dans quel lot de fonctionnalités notre fichier source va aller piocher.
Si vous chargez plusieurs bibliothèques, chacune va proposer de nombreuses fonctionnalités. Parfois, certaines fonctionnalités ont le même nom. Imaginez une commande "AfficherMessage" qui s'appelle ainsi pour iostream mais aussi pour Qt ! Si vous chargez les deux bibliothèques en même temps et que vous appelez "AfficherMessage", l'ordinateur ne saura pas s'il doit afficher un message en console avec iostream ou dans une fenêtre avec Qt !
Pour éviter ce genre de problèmes, on a créé des namespaces (espaces de noms) qui sont des sortes de dossiers à noms. La ligne
using namespace std; indique que vous allez utiliser l'espace de noms std dans la suite de votre fichier de code. Cet espace de noms est un des plus connus car il correspond à la bibliothèque standard (std), une bibliothèque livrée par défaut avec le langage C++ et dont iostream fait partie.
int main()
C'est ici que commence vraiment le coeur du programme. Les programmes, vous le verrez, sont essentiellement constitués de fonctions. Chaque fonction a un rôle et peut en appeler d'autres pour effectuer certaines actions.
Tous les programmes possèdent une fonction qui s'appelle "main" (prononcez en anglais "mèïne"), ce qui signifie "principale". C'est donc la fonction principale.
Une fonction a cette forme :
Code : C++
Les accolades déterminent le début et la fin de la fonction. Comme vous le voyez dans le code source qui nous a été généré par Code::Blocks, il n'y a rien après la fonction main. C'est normal : à la fin de la fonction main le programme s'arrête ! Tout programme commence au début de la fonction main et termine à la fin de celle-ci.
Cela veut dire qu'on va écrire tout notre programme dans la fonction main ?

Non ! Bien que ce soit possible, ce serait très délicat à gérer surtout pour de gros programmes. A la place, la fonction main appelle d'autres fonctions qui à leur tour appellent d'autres fonctions. Bref, elle délègue le travail.
Dans un premier temps cependant, nous allons surtout travailler dans la fonction main car nos programmes seront assez simples pour commencer.
cout
Voici enfin la première ligne qui fait quelque chose de concret ! C'est la première ligne du main, donc la première action qui sera exécutée par l'ordinateur (ce que nous avons vu précédemment ne sont en fait que des préparatifs pour le programme).
Code : C++ | cout << "Hello world!" << endl;
|
Le rôle de cout (prononcez "ci aoute") est d'afficher un message à l'écran. C'est ce qu'on appelle une
instruction. Tous nos programmes seront constitués d'instructions comme celle-ci qui donnent des ordres à l'ordinateur.
Notez que cout est fourni par iostream. Si vous n'incluez pas iostream au début de votre programme, le compilateur dira qu'il ne connaît pas cout et vous ne pourrez pas générer votre programme !
Notez bien : chaque instruction se termine par un point-virgule ! C'est d'ailleurs ce qui vous permet de différencier les instructions du reste.

Si vous oubliez le point-virgule, la compilation ne fonctionnera pas et votre programme ne pourra pas être créé !
Il y a 3 éléments sur cette ligne :
- cout : commande l'affichage d'un message à l'écran
- "Hello world!" : indique le message à afficher
- endl : crée un retour à la ligne dans la console
Il est possible de combiner plusieurs messages en une instruction. Par exemple :
Code : C++ | cout << "Bonjour tout le monde !" << endl << "Comment allez-vous ?" << endl;
|
... affichera ces deux phrases sur 2 lignes différentes. Essayez ce code, vous verrez !
Sous Windows, les caractères accentués s'affichent mal (essayez d'afficher "Bonjour Gérard" pour voir !). C'est un problème de la console de Windows (problème qu'on peut retrouver plus rarement sous Mac OS X et Linux). Il existe des moyens de le régler mais aucun n'est vraiment satisfaisant. A la place, je vous recommande plutôt d'éviter les accents dans les programmes console sous Windows.
Rassurez-vous : les GUI que nous créerons plus tard avec Qt n'auront pas ce problème !
return
La dernière ligne est :
Code : C++
Ce type d'instruction clôt généralement les fonctions. En fait, la plupart des fonctions renvoient une valeur (un nombre par exemple). Ici, la fonction main renvoie 0 pour indiquer que tout s'est bien passé (toute valeur différente de 0 aurait indiqué un problème).
Vous n'avez pas besoin de modifier cette ligne, laissez-la telle quelle. Nous aurons l'occasion d'utiliser return d'autres fois pour d'autres fonctions, nous en reparlerons !