Jeux Libres
       
           

» Les Tutoriels » Apprenez à programmer en C++ ! » Votre premier programme

Note : Vous vous apprêtez à lire un tutoriel de M@teo21 et Nanoc initialement publié à cette adresse sous la licence Creative Commons BY-NC-SA 2.0.

Votre premier programme


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 ?



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 et à récupérer le texte saisi par l'utilisateur.

Vous allez voir... c'est déjà du travail ! ;)





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).


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.


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 !


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 :


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 !


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 : (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 :
1
2
"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 :


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

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.


Explications du premier code source


Lorsque Code::Blocks a créé un nouveau projet, il a créé un fichier main.cpp contenant ce code :
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 :
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, la bibliothèque iostream que l'on charge permet... d'afficher des messages à l'écran dans une console ! Quelque chose de vraiment très basique, comme vous le voyez, mais qui nécessite quand même le chargement d'une bibliothèque.

iostream permet en fait de faire un peu plus que d'afficher des messages à l'écran : cette bibliothèque peut aussi récupérer ce que saisit l'utilisateur au clavier comme nous le verrons plus tard.
Son nom correspond à "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. Cette bibliothèque gère donc en quelque sorte tout ce qu'il faut pour échanger des informations avec l'utilisateur.


Plus tard, nous découvrirons de nouvelles bibliothèques et il faudra les inclure 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 :
1
#include <Qt>

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

using namespace



La ligne :
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 ont au moins 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 :
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).
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 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 :
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 :
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 :
1
// Ceci est un commentaire

Mieux, vous pouvez aussi ajouter le commentaire à la fin d'une ligne pour expliquer ce qu'elle fait :
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 */ :
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream> // Inclut la bibliothque 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.




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



Distribué et adapté par David
Consulté 22594 fois



Hébergeur du site : David
Version PHP : 5.4.45-0+deb7u2
Uptime : 300 jours 3 heures 34 minutes
Espace libre : 1518 Mo
Dernière sauvegarde : 19/09/2019
Taille de la sauvegarde : 1115 Mo


5508065 pages ont été consultées sur le site !
Dont 4516 pages pendant les 24 dernières heures.

Page générée en 0.676 secondes


Nos sites préférés
- Création d'un jeu de plateforme de A à Z avec SDL
- Zelda ROTH : Jeux amateurs sur le thème de Zelda
- Zeste de Savoir : la connaissance pour tous et sans pépins
- YunoHost : s'héberger soi-même en toute simplicité
- Site de Fvirtman : recueil de projets et de codes en C et C++
- Par ici la sortie : le site des idées de sorties


  © 2005-2019 linor.fr - Toute reproduction totale ou partielle du contenu de ce site est strictement interdite.