Aller au menu - Aller au contenu

Icône Votre premier programme

Mise à jour : 27/05/2011
Difficulté : Facile Facile Durée d'étude : 1 jour Creative Commons BY-NC-SA
75 639 visites depuis 7 jours, dont 2 414 sur ce chapitre classé 5/786
Vous avez appris en quoi consistait la programmation et ce qu'était le C++, vous avez installé un IDE (ce logiciel qui va vous permettre de programmer) et maintenant vous vous demandez :

Bon, c'est quand qu'on commence ? :pirate:


Bonne nouvelle : c'est maintenant ! :D

Alors bien sûr, ne vous mettez pas à vous imaginer que vous allez faire des choses folles tout d'un coup. La 3D temps réel en réseau n'est pas trop au programme pour le moment ! A la place, votre objectif du chapitre sera d'arriver à afficher un message à l'écran.

Vous allez voir... c'est déjà du travail ! ;)
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Le monde merveilleux de la console

Quand je vous annonce que nous allons commencer à programmer, vous vous dites sûrement "Chouette, je vais pouvoir faire ça, ça et ça, et j'ai toujours rêvé de faire ça aussi !". Il est de mon devoir de calmer un peu le jeu et de vous expliquer comment ça va se passer. ^^

Nous allons commencer doucement. Nous n'avons de toute façon pas le choix, car les programmes complexes 3D en réseau que vous imaginez peut-être nécessitent de connaître les bases.

Il faut savoir qu'il existe 2 types de programmes : les programmes graphiques et les programmes console.

Les programmes graphiques



Ce sont des programmes qui affichent des fenêtres. Ce sont ceux que vous connaissez sûrement le mieux. Ils affichent des fenêtres à l'écran que l'on peut ouvrir, réduire, fermer, agrandir...
Les programmeurs parlent de GUI (Graphical User Interface - Interface Utilisateur Graphique).

Word (GUI)
Un programme GUI (graphique) : Word


Les programmes console



Les programmes en console sont plus fréquents sous Linux que sous Windows et Mac OS X. Ils sont constitués de simples textes qui s'affichent à l'écran, le plus souvent en blanc sur fond noir.

Programme console
Un programme en console


Ces programmes fonctionnent au clavier. La souris n'est pas utilisée.
Ils s'exécutent généralement linéairement : les messages s'affichent au fur et à mesure de haut en bas.

Notre première cible : les programmes console



Eh oui, j'imagine que vous l'avez vue venir celle-là ! :D
Je vous annonce que nous allons commencer par réaliser des programmes console. En effet, bien qu'un peu austères a priori, ces programmes sont beaucoup plus simples à créer que les programmes graphiques. Pour les débutants que nous sommes, il faudra donc d'abord en passer par là !

Bien entendu, je sais que vous ne voudrez pas en rester là. Rassurez-vous sur ce point : je m'en voudrais de m'arrêter aux programmes console car je sais que beaucoup d'entre vous préféreraient créer des programmes graphiques. Ca tombe bien : une partie toute entière de ce cours sera dédiée à la création de GUI avec Qt, une sorte d'extension du C++ qui permet de réaliser ce type de programmes !

Mais avant ça, il va falloir retrousser ses manches et se mettre au travail. Au boulot ! :pirate:

Création et lancement d'un premier projet

Dans le chapitre précédent, vous avez installé un IDE, ce fameux logiciel qui contient tout ce qu'il faut pour programmer.
Nous avons découvert qu'il existait plusieurs IDE (Code::Blocks, Visual C++, Xcode...). Je ne vous en ai cité que quelques-uns parmi les plus connus mais il y en a bien d'autres !

Comme je vous l'avais annoncé, je travaille essentiellement sous Code::Blocks. Mes explications s'attarderont donc le plus souvent sur cet IDE, mais je reviendrai sur ses concurrents si nécessaire. Heureusement, ces logiciels se ressemblent beaucoup et emploient le même vocabulaire, donc vous ne serez pas perdus dans tous les cas. :)

Création d'un projet



Pour commencer à programmer, la première étape consiste à demander à son IDE de créer un nouveau projet. C'est un peu comme si vous demandiez à Word de vous créer un nouveau document. ;)

Pour cela, vous allez dans le menu File / New / Project :

Nouveau projet Code Blocks


Un assistant s'ouvre, nous l'avons vu dans le chapitre précédent. Créez un nouveau programme console C++ comme nous avons appris à le faire.

A la fin des étapes de l'assistant, le projet est créé avec un premier fichier. Déroulez l'arborescence à gauche pour voir le fichier main.cpp apparaître et double-cliquez dessus pour l'ouvrir. Ce fichier est notre premier code source et il est déjà un peu rempli !

Premier programme dans Code Blocks


Code::Blocks vous a créé un premier programme très simple qui affiche le message "Hello world!" à l'écran (ça signifie quelque chose comme "Bonjour tout le monde !").

Il y a déjà une dizaine de lignes de code source C++ et je n'y comprends rien ! o_O


Oui, ça peut paraître un peu difficile la première fois, mais nous allons voir ensemble ce que signifie ce code un peu plus loin. ;)

Lancement du programme



Pour le moment, j'aimerais que vous fassiez une chose simple : essayez de compiler et de lancer ce premier programme. Vous vous souvenez comment faire ? Il y a un bouton "Compiler et exécuter" (Build and run). Ce bouton se trouve dans la barre d'outils, dans cette section : Image utilisateur (c'est l'image de la roue dentée avec la flèche verte).

La compilation va alors se lancer. Vous allez voir quelques messages s'afficher en bas de l'IDE (dans la section Build log).

Si la compilation ne fonctionne pas et que vous avez une erreur de ce type :
Code : Console
"My-program - Release" uses an invalid compiler. Skipping...
Nothing to be done.

... Cela signifie que vous avez téléchargé la version de Code::Blocks sans mingw (le compilateur). Retournez sur le site de Code::Blocks pour télécharger la version avec mingw.


Si tout va bien, une console va apparaître avec notre programme :

Premier programme en console


Vous voyez que le programme affiche bel et bien "Hello world!" dans la console !
Ce n'est pas beau !? Vous venez de compiler votre tout premier programme ! :D

Un fichier exécutable a été généré sur votre disque dur. Sous Windows, c'est un fichier .exe. Vous pouvez le retrouver dans un sous-dossier release (ou parfois debug) situé dans le dossier de votre projet.


Au fait, que signifie le message à la fin de la console : Process returned 0 (0x0)   execution time : 0.004 s  Press any key to continue. ?


Ah bonne question ! :)
Ce message n'a pas été écrit par votre programme mais par votre IDE. En l’occurrence, c'est Code::Blocks qui affiche un message pour signaler que le programme s'est bien déroulé et le temps que son exécution a duré.

Le but de Code::Blocks est ici surtout de "maintenir" la console ouverte. En effet, sous Windows en particulier, dès qu'un programme console est terminé la fenêtre de la console se ferme. Or, le programme s'étant exécuté en 0.004s ici, vous n'auriez pas eu le temps de voir le message s'afficher à l'écran !

Code::Blocks vous invite donc à "appuyer sur n'importe quelle touche pour continuer", ce qui aura pour effet de fermer la console.

Lorsque vous compilez et exécutez un programme "console" comme celui-ci avec Visual C++, la console a tendance à s'ouvrir et se refermer instantanément. Visual C++ ne maintient pas la console ouverte comme Code::Blocks.
La solution consiste à ajouter la ligne system("PAUSE"); avant le return 0; de votre programme si vous utilisez Visual C++.

Explications du premier code source

Lorsque Code::Blocks a créé un nouveau projet, il a créé un fichier main.cpp contenant ce code :

Code : C++
1
2
3
4
5
6
7
8
9
#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++
1
#include <iostream>


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++
1
#include <Qt>


Notez qu'on peut charger autant de bibliothèques que l'on veut à la fois.

using namespace



La ligne :

Code : C++
1
using namespace std;


... 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++
1
2
3
4
int main()
{
    
}


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 ? :o


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++
1
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++
1
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++
1
return 0;


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 !

Commentez vos programmes !

En plus du code qui donne des instructions à l'ordinateur, vous pouvez écrire des commentaires pour expliquer le fonctionnement de votre programme.

Les commentaires n'ont aucun impact sur le fonctionnement de votre logiciel : en fait, le compilateur ne les lit même pas et ils n'apparaissent pas dans le programme généré. Pourtant, ces commentaires sont indispensables pour les développeurs : ils leur permettent d'expliquer ce qu'ils font dans leur code !

Dès que vos programmes vont devenir un petit peu complexes (et croyez-moi, ça ne tardera pas ;) ), vous risquez d'avoir du mal à vous souvenir de leur fonctionnement quelque temps après avoir écrit le code source. De plus, si vous envoyez votre code à un ami, il aura des difficultés à comprendre ce que vous avez essayé de faire juste en lisant le code source. C'est là que les commentaires entrent en jeu !

Les différents types de commentaires



Il y a 2 façons d'écrire des commentaires, selon leur longueur. Je vais vous les présenter toutes les deux.

Les commentaires courts



Pour écrire un commentaire court, sur une seule ligne, il suffit de commencer par // puis d'écrire votre commentaire. Cela donne :

Code : C++
1
// Ceci est un commentaire


Mieux, vous pouvez aussi ajouter le commentaire à la fin d'une ligne pour expliquer ce qu'elle fait :

Code : C++
1
cout << "Hello world!" << endl; // Affiche un message à l'écran


Les commentaires longs



Si votre commentaire tient sur plusieurs lignes, ouvrez la zone de commentaire avec /* et fermez-la avec */ :

Code : C++
1
2
3
4
/* Le code qui suit est un peu complexe
alors je prends mon temps pour l'expliquer
parce que je sais que sinon dans quelques semaines
j'aurai tout oublié et je serai perdu pour le modifier */


En général, on n'écrit pas un roman dans les commentaires non plus... sauf si la situation le justifie vraiment.

Commentons notre code source !



Reprenons le code source que nous avons étudié dans ce chapitre et complétons-le de quelques commentaires pour nous souvenir de ce qu'il fait.

Code : C++
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#include <iostream> // Inclut la bibliothèque iostream (affichage de texte)

using namespace std; // Indique quel espace de noms on va utiliser

/*
Fonction principale "main"
Tous les programmes commencent par la fonction main
*/
int main()
{
    cout << "Hello world!" << endl; // Affiche un message
    return 0; // Termine la fonction main et donc le programme
}


Si vous lancez ce programme, vous ne verrez aucune nouveauté. Les commentaires sont, comme je vous le disais, purement ignorés par le compilateur.

J'ai volontairement commenté chaque ligne de code ici, mais dans la pratique il ne faut pas commenter à tout-va non plus. Si une ligne de code fait quelque chose de vraiment évident, inutile de la commenter.
En fait, les commentaires sont plus utiles pour expliquer le fonctionnement d'une série d'instructions, plutôt que chaque instruction une à une.

Q.C.M.

Quel type de programmes allons-nous écrire pour commencer ?
Qu'est-ce que iostream ?
Quel est le nom de la fonction principale d'un programme ?
Quel mot-clé provoque un retour à la ligne dans l'instruction cout ?
Laquelle de ces lignes n'est pas un commentaire ?

Statistiques de réponses au QCM

Vous avez mis en place votre tout premier programme : bravo !

Pour le moment, vous savez seulement afficher un message à l'écran, mais vous allez pouvoir aller de plus en plus loin au fur et à mesure des chapitres qui vont venir. Dans le prochain chapitre, nous allons commencer à manipuler la mémoire ! :)
Chapitre précédent Sommaire Chapitre suivant

Partager

32 commentaires pour "Votre premier programme"
Note moyenne : 3.85 / 4 (1749 votes)
Pseudo Commentaire
Hors ligne jer94 # Posté le 29/04/2012 à 10:01:13

Moi j'ai c++ express sa bug sa se referme tout de suite

edit: Il fzut faire ctrl+F5
Hors ligne jer94 # Posté le 29/04/2012 à 10:01:47

par contre j'ai un bug quand je fais salut jérémy les accents sont tres mal fait
Hors ligne Made in Taïwan # Posté le 06/05/2012 à 21:47:23

Avis : Très bon

Tout d'abord, merci pour ce tutoriel, c'est vraiment sympa.

Sinon, pour ceux qui ont eu un petit soucis, (comme moi) après avoir téléchargé le bon lien, il se peut que vous ayez changer le "chemin" d'installation du programme et c'est pour ça que ça ne compile pas.

Perso comme je suis une burne, j'ai désinstallé et réinstallé en laissant le chemin d'origine.

Et ça marche !
Hors ligne Lorown # Posté le 10/05/2012 à 00:01:56

J'ai telecharger code::block (4fois)avec le bon lien et tout mais rien n'y fait il ne veut pas compiler... une solution ?
J'ai pas changer le chemin d'installation donc ce n'est pas ca.
Et dans les plugin le compiler est marqué comme actif :/
Hors ligne MushFX # Posté le 21/05/2012 à 10:39:01

Avis : Très bon

Coin à tous!

Voilà j'ai bien lutté au début avec cette histoire de compilateur et de toolchain etc...

La solution a été mentionné dans un post plus ancien par Ookamiko:

>> Pour régler ce problème, il suffit d'aller dans l'onglet "setting" dans la barre des menus et de cliquer sur la mention "compiler and debugger". Vous arrivez alors sur une page d'outils tout à fait banale (ou presque ). Rendez vous ensuite dans l'onglet "toolchain executable" qui se trouve en haut. Arrivé dessus, juste en dessous de la barre d'onglet, vous devriez trouver une barre mentionnée comme suis:
"compiler's instaltion directory". Si vous avez le même problème que moi, elle ne doit afficher que "C:\MinGW". Il vous suffit de cliquer sur le boutton "auto-detect" pour que le programme trouve le bon chemin.

Voilou! J'éspère que ça pourra vous aider, mais à l'avenir essayez de checker les posts plus anciens quand vous posez des questions sur des forums, en général la réponse y est déjà sans trop chercher ^^.

Voir tous les commentaires