BTS SNIR Cours 1 : langage C++
Le langage C/C++ : Présentation
Pour réaliser des programmes informatiques, on doit écrire dans un langage que l'ordinateur
comprend.
Il existe de nombreux langages informatiques que l'on peut classer par niveau. Les langages
dits de haut niveau sont parfois plus faciles à maîtriser au détriment souvent d'une perte de
performances dans le programme final.
Le langage C++ que nous allons étudier est l’un des plus célèbres et des plus utilisés au
monde.
Historique : Le langage C
Le langage C a été inventé aux Bells Labs en 1972 par Dennis Ritchie pour permettre
l'écriture du système d'exploitation UNIX, alors développé par Ken Thompson et Dennis
Ritchie.
Kenneth Thompson (à gauche) et Dennis Ritchie (à droite), les créateurs du langage C
Le système d'exploitation UNIX, né à la fin des années 1960 - début des années 1970, a été
écrit directement en langage assembleur pour les machines auxquelles il était destiné. Si le
langage assembleur permettait d'écrire un tel système, il n'en était pas moins peu aisé à
utiliser. Un tel langage est en effet particulier à un type de processeur, ce qui fait que tout le
système devait être réécrit pour le faire fonctionner sur une nouvelle architecture. Cela fait
que son principal créateur, Ken Thompson, souhaita rapidement utiliser un langage plus
évolué pour réécrire UNIX.
Avec son approche bas-niveau, le C permet d'obtenir des programmes très optimisés,
pratiquement autant que s'ils avaient été écrits directement en assembleur. Avec un peu
d'effort, il est même possible d'utiliser une approche orientée objet, au prix d'une certaine
rigueur que le langage et les compilateurs, dans une certaine mesure, sont très loin
d'imposer.
Page 1 sur 10
BTS SNIR Cours 1 : langage C++
Les systèmes d'exploitation pour ordinateur de bureau les plus répandus actuellement sont
Windows de Microsoft, Mac OS X d'Apple, et GNU/Linux. Ils sont tous trois écrits en langage
C. Pourquoi ? Parce que les systèmes d'exploitation tournent directement au-dessus du
matériel de la machine. Il n'y a pas de couche plus basse pour gérer leurs requêtes. À
l'origine, les systèmes d'exploitation étaient écrits en assembleur, ce qui les rendait rapides
et performants. Toutefois, écrire un OS en assembleur est une tâche pénible et cela produit
du code qui ne peut s'exécuter que sur une seule architecture processeur, comme l'Intel X86
ou l'AMD 64. Écrire un OS dans un langage de plus haut niveau, comme le langage C, permet
au programmeur de porter son système d'exploitation sur une autre architecture sans avoir
à tout réécrire.
Au début des années 90, Bjarne Stroustrup fait évoluer le langage vers le langage C++ en lui
rajoutant notamment les notions orientées objet.
Mais pourquoi utiliser le C/C++ et non Java, Basic ou Perl ? Principalement à cause de la
gestion de la mémoire. À la différence de la plupart des autres langages de programmation,
le langage C permet au programmeur de gérer la mémoire de la manière qu'il aurait choisie
s'il avait utilisé l'assembleur. Les langages comme le Java et le Perl permettent au
programmeur de ne pas avoir à se soucier de l'allocation de la mémoire et des pointeurs.
C'est en général un point positif, car il est assez pénible et inutile de devoir se soucier de la
gestion de la mémoire lorsqu'on écrit un programme de haut niveau.
Le code source est une série d'instructions écrites dans un langage informatique.
Le compilateur est un programme qui transforme votre code source en code binaire, qui
peut alors être exécuté par votre processeur. Les .exe que l'on connaît sont des programmes
binaires, il n'y a plus de code source à l'intérieur.
En fait le processus de compilation est un peu plus compliqué il fait appel au pré processeur,
au compilateur et au linker. Nous en reparlerons plus tard
La programmation ne requiert pas en elle-même de connaissances mathématiques
poussées ; néanmoins, il est nécessaire d'avoir un bon sens de la logique et d'être
méthodique.
Page 2 sur 10
BTS SNIR Cours 1 : langage C++
Outils nécessaires
Un éditeur de texte pour écrire le code source du programme. En théorie un logiciel
comme le Bloc-notes sous Windows, ou vi sous Linux fait l'affaire. L'idéal, c'est
d'avoir un éditeur de texte intelligent qui colore tout seul le code, ce qui vous permet
de vous y repérer bien plus facilement ;
Un compilateur pour transformer (compiler) votre source en binaire ;
Un débogueur pour vous aider à traquer les erreurs dans votre programme.
A priori, si vous êtes aventuriers, vous pouvez vous passer de débogueur. Mais bon, je sais
pertinemment que vous ne tarderez pas à en avoir besoin.
À partir de maintenant on a deux possibilités :
soit on récupère chacun de ces trois programmes séparément. C'est la méthode la plus
compliquée, mais elle fonctionne.
Sous Linux en particulier, bon nombre de programmeurs préfèrent utiliser ces trois
programmes séparément. Je ne détaillerai pas cette méthode ici, je vais plutôt vous parler
de la méthode simple ;
soit on utilise un programme trois-en-un qui combine éditeur de texte, compilateur et
débogueur. Ces sont appelés IDE 2, ou encore Environnements de développement.
En TP vous utiliserez, Code::Blocks.
Page 3 sur 10
BTS SNIR Cours 1 : langage C++
Votre premier programme : Console ou fenêtre ?
Il faut savoir qu'en fait il existe deux types de programmes, pas plus :
les programmes avec fenêtres ;
les programmes en mode console.
Les programmes en fenêtres
Ceux sont les programmes que vous utilisez fréquemment.
Créer des programmes avec des fenêtres en C c'est possible, c’est bien trop compliqué !
Nous en créerons plus tard en C++ à l’aide de la bibliothèque QT ou wxWidget
Pour débuter, il vaut mieux commencer par créer des programmes en console.
Les programmes en console
Les programmes console ont été les premiers à apparaître. À cette époque, l'ordinateur ne
gérait que le noir et blanc et il n'était pas assez puissant pour créer des fenêtres comme on
le fait aujourd'hui.
Bien entendu, le temps a passé depuis. Windows a rendu l'ordinateur grand public
principalement grâce à sa simplicité et au fait qu'il n'utilisait que des fenêtres. Windows est
devenu tellement populaire qu'aujourd'hui beaucoup de monde a oublié ce qu'était la
console !
La console n'est pas morte ! En effet, Linux a remis au goût du jour l'utilisation de la console
et elle sert souvent à administrer les serveurs distants.
Le code minimal en C
Pour n'importe quel programme, il faudra taper un minimum de code. Ce code ne fera rien
de particulier mais il est indispensable. C'est ce code minimum que nous allons découvrir
maintenant. Il devrait servir de base pour la plupart de vos programmes en langage C.
Page 4 sur 10
BTS SNIR Cours 1 : langage C++
Notez que la ligne :
int main() . . . peut aussi s'écrire : int main(int argc, char *argv[])
Les deux écritures sont possibles, mais la seconde (la compliquée) est la plus courante.
Analysons le code minimal C
Ce code minimal affiche un message à l'écran. Commençons par les deux premières lignes
qui se ressemblent beaucoup :
Ce sont des lignes spéciales que l'on ne voit qu'en haut des fichiers source. Ces lignes sont
facilement reconnaissables car elles commencent par un dièse #.
Ces lignes spéciales, on les appelle directives de préprocesseur.
Ce sont des lignes qui seront lues par un programme appelé préprocesseur, un programme
qui se lance au début de la compilation.
Le mot include en anglais signifie inclure en français. Ces lignes demandent d'inclure des
fichiers au projet, c'est-à-dire d'ajouter des fichiers pour la compilation. Il y a deux lignes,
donc deux fichiers inclus.
Ces fichiers s'appellent stdio.h et stdlib.h.
Ces fichiers existent déjà, ce sont des « fichiers source » tout prêts. On verra plus tard qu'on
les appelle des bibliothèques (certains parlent aussi de librairies mais c'est un anglicisme).
Sans ces fichiers, écrire du texte à l'écran aurait été mission impossible.
Ce que vous voyez là, c'est ce qu'on appelle une fonction. Un programme en langage C est
constitué de fonctions, il ne contient quasiment que ça. Pour le moment, notre programme
ne contient donc qu'une seule fonction.
Page 5 sur 10
BTS SNIR Cours 1 : langage C++
La ligne 4 contient le nom de la fonction, c'est le deuxième mot. Notre fonction s'appelle
main.
C'est un nom de fonction particulier qui signifie principal. main est la fonction principale de
votre programme, c'est toujours par la fonction main que le programme commence.
Une fonction a un début et une fin, délimités par des accolades { et }.
Toute la fonction main se trouve donc entre ces accolades.
Si vous avez bien suivi, notre fonction main contient donc deux lignes :
Ces lignes à l'intérieur d'une fonction ont un nom. On les appelle instructions.
Chaque instruction est une commande à l'ordinateur. Chacune de ces lignes demande à
l'ordinateur de faire quelque chose de précis.
En regroupant intelligemment (c'est le travail du programmeur) les instructions dans des
fonctions, on crée des programmes.
Très important : toute instruction se termine obligatoirement par un point-virgule. ;
C'est d'ailleurs comme ça qu'on reconnaît ce qui est une instruction et ce qui n'en est pas
une.
Si vous oubliez de mettre un point-virgule à la fin d'une instruction, votre programme ne
compilera pas !
La ligne 6 demande à afficher le message Hello world ! à l'écran. printf est une fonction qui
a déjà été écrite par d'autres programmeurs.
Vous vous souvenez de ces deux lignes ?
Je vous avais dit qu'elles permettaient d'ajouter des bibliothèques dans votre programme.
Les bibliothèques sont en fait des fichiers avec des plusieurs fonctions toutes prêtes à
l'intérieur. Ces fichiers-là (stdio.h et stdlib.h) contiennent la plupart des fonctions de base
dont on a besoin dans un programme.
Page 6 sur 10
BTS SNIR Cours 1 : langage C++
stdio.h en particulier contient des fonctions permettant d'afficher des choses à l'écran
(comme printf) mais aussi de demander à l'utilisateur de taper quelque chose (ce sont des
fonctions que l'on verra plus tard).
Quand votre programme arrivera à cette ligne, il va donc afficher un message à l'écran, puis
passer à l'instruction suivante.
Passons à l'instruction suivante justement :
Cette ligne indique qu'on arrive à la fin de notre fonction main et demande de renvoyer la
valeur 0.
En fait, chaque programme une fois terminé renvoie une valeur, par exemple pour dire que
tout s'est bien passé.
La plupart du temps, cette valeur n'est pas vraiment utilisée, mais il faut quand même en
renvoyer une. Votre programme aurait fonctionné sans le return 0, mais c'est plus sérieux
de le mettre.
Les caractères spéciaux
Les caractères spéciaux sont des lettres spéciales qui permettent d'indiquer qu'on veut aller
à la ligne, faire une tabulation, etc…
Ils sont faciles à reconnaître : c'est un ensemble de deux caractères. Le premier d'entre eux
est toujours un anti-slash ( \ ), et le second un nombre ou une lettre. Voici deux caractères
spéciaux courants que vous aurez probablement besoin d'utiliser, ainsi que leur signification:
\n : retour à la ligne (= Entrée) ;
\t : tabulation.
Page 7 sur 10
BTS SNIR Cours 1 : langage C++
Les commentaires :
Le code minimal en C++
La directive #include
On y retrouve comme en C une directive d’inclusion de fichier en l’occurrence le fichier <iostream>
Page 8 sur 10
BTS SNIR Cours 1 : langage C++
using namespace std;
Cette ligne est un peu plus difficile à comprendre : en effet, on indique par cette ligne
l'utilisation de l'espace de nommage std. Un espace de nommage est un ensemble de classes
dont cout fait partie. Etant donné que nous voulons utiliser l'objet cout, nous indiquons que
l'on utilisera, par défaut, l'espace de nommage std.
Code sans la directive using namespace std :
Pour simplifier, retenons que, dès que l'on souhaite utiliser cin ou cout, on ajoute cette
directive.
Il faut également remarquer que les fichiers d'en-tête standard ne sont désormais plus
nommés avec une extension .h (comme iostream.h).
Le fichier iostream
Le fichier iostream contient un certain nombre de définitions d’objets intervenant dans les
entrées/sorties du programme, c’est-à-dire dans l’affichage à l’écran ou dans des fichiers. La
définition de cout se trouve dans ce fichier; pour utiliser cout dans notre programme, il faut
inclure au début du programme la ligne suivante :
Ce fichier est fourni par l’éditeur du compilateur : il s’agit d’un fichier C++ standard.
La fonction main()
Notre programme contient une fonction appelée main : c’est à cet endroit que va
commencer l’exécution du programme : exécuter un programme en C++, c’est exécuter la
fonction main de ce programme. Tout programme en C++ doit donc comporter une fonction
main.
Page 9 sur 10
BTS SNIR Cours 1 : langage C++
La liste d’instructions entre accolades est exécutée séquentiellement : on exécute chaque
instruction, dans l’ordre, les unes après les autres.
cout
Il s’agit du flux de sortie du programme (Console Output : sortie console). Ce flux de
sortie est envoyé par défaut vers l’écran. Il va nous servir à afficher des messages à l’écran
en utilisant l'opérateur <<. Cet opérateur à la forme d'une flèche semblant indiquer le sens
de transfert des données (écriture vers la console).
Exemple :
Un autre exemple :
On peut écrire en une seule instruction :
Retour de la fonction
La dernière instruction de notre programme est return 0; Elle indique seulement que la
fonction main s'est terminée correctement sans erreur particulière.
Page 10 sur 10