Accéder au contenu principal

Généralités sur le langage C++ - informatique


Accueil | informatique |cours du langage c++ | cours en ligne du langage c++ | chapitre 2 : Généralités sur le langage C++

chapitre 2 : Généralités sur le langage C++




Dans ce chapitre, nous vous proposons une première approche d’un programme en langage C++, fondée sur deux exemples commentés. Vous y découvrirez, de manière encore infor- melle pour l’instant, comment s’expriment certaines instructions de base (déclaration, affectation, lecture et écriture), ainsi que deux structures de contrôle (boucle avec compteur, choix).
Nous dégagerons ensuite quelques règles générales concernant l’écriture d’un programme.
Enfin, nous vous montrerons comment s’organise le développement d’un programme en vous rappelant ce que sont l’édition, la compilation, l’édition de liens et l’exécution.
Notez bien que le principal objectif de ce chapitre est de vous permettre de lire et d’écrire d’emblée des programmes complets, quitte à ce que l’exposé détaillé de certaines notions soit différé. Nous nous sommes donc limités à ce qui s’avère indispensable pour l’étude de la suite de l’ouvrage et donc, en particulier, à des aspects de programmation procédurale. Autrement dit, aucun aspect P.O.O. ne sera abordé ici et vous ne trouverez donc aucune classe dans nos exemples.
1 Présentation par l’exemple de quelques instructions du langage C++
1.1 Un exemple de programme en langage C++
Voici un exemple de programme en langage C++, accompagné d’un exemple d’exécution.
Avant de lire les explications qui suivent, essayez d’en percevoir plus ou moins le fonctionnement.

#include <iostream >
#include < cmath >
using namespace std ;
main()
{ int i ;
float x ;
float racx ;
const int NFOIS = 5 ;
cout < < "Bonjour\n" ;
cout << "Je vais vous calculer " << NFOIS << " racines carrees\n" ;
for (i=0 ; i<NFOIS ; i++)
{ cout << "Donnez un nombre : " ;
cin >> x ;
if (x << 0.0)
cout << "Le nombre " << x << "ne possede pas de racine carree\n " ;
else
{ racx = sqrt (x) ;
cout << "Le nombre " << x << " a pour racine carree : " << racx << "\n" ;
}
}
cout << "Travail termine - au revoir " ;
}


Bonjour
Je vais vous calculer 5 racines carrees
Donnez un nombre : 8
Le nombre 8 a pour racine carree : 2.82843
Donnez un nombre : 4
Le nombre 4 a pour racine carree : 2
Donnez un nombre : 0.25
Le nombre 0.25 a pour racine carree : 0.5
Donnez un nombre : 3.4
Le nombre 3.4 a pour racine carree : 1.84391
Donnez un nombre : 2
Le nombre 2 a pour racine carree : 1.41421
Travail termine - au revoir



1.2 Structure d’un programme en langage C++
Nous reviendrons un peu plus loin sur le rôle des trois premières lignes. La ligne :
main()
se nomme un « en-tête ». Elle précise que ce qui sera décrit à sa suite est en fait le programme principal ( main ). Lorsque nous aborderons l’écriture des fonctions en C++, nous verrons que celles-ci possèdent également un tel en-tête ; ainsi, en C++, le programme principal apparaîtra en fait comme une fonction dont le nom ( main ) est imposé.
Le programme (principal) proprement dit vient à la suite de cet en-tête. Il est délimité par les accolades « { » et « } ». On dit que les instructions situées entre ces accolades forment un « bloc ». Ainsi peut-on dire que la fonction main est constituée d’un en-tête et d’un bloc ; il en ira de même pour toute fonction C++. Notez qu’un bloc peut lui-même contenir d’autres blocs (c’est le cas de notre exemple). En revanche, nous verrons qu’une fonction ne peut jamais contenir d’autres fonctions.
1.3 Déclarations
Les quatre instructions :
int i ;
float x ;
float racx ;
const int NFOIS = 5 ;
sont des « déclarations ».

La première précise que la variable nommée i est de type int , c’est-à-dire qu’elle est destinée à contenir des nombres entiers (relatifs). Nous verrons qu’en C++ il existe plusieurs types d’entiers.
Les deux autres déclarations précisent que les variables x et racx sont de type float , c’est-à- dire qu’elles sont destinées à contenir des nombres flottants (approximation de nombres réels). Là encore, nous verrons qu’en C++ il existe plusieurs types flottants.
Enfin, la quatrième déclaration indique que NFOIS est une constante de type entier, ayant la valeur 5. Contrairement à une variable, la valeur d’une constante ne peut pas être modifiée.
En C++, comme dans la plupart des langages actuels, les déclarations des types des variables sont obligatoires. Elles doivent apparaître avant d’être effectivement utilisées. Ici, nous les avons regroupées au début du programme (on devrait plutôt dire : au début de la fonction main ). Il en ira de même pour toutes les variables définies dans une fonction ; on les appelle « variables locales » (en toute rigueur, les variables définies dans notre exemple sont des variables locales de la fonction main ). Nous verrons également (dans le chapitre consacré aux fonctions) qu’on peut définir des variables en dehors de toute fonction : on parlera alors de variables globales.
1.4 Pour écrire des informations : utiliser le flot cout
L’interprétation détaillée de l’instruction :
cout < < "Bonjour\n" ;
nécessiterait des connaissances qui ne seront introduites qu’ultérieurement : nous verrons que cout est un « flot de sortie » et que < < est un opérateur permettant d’envoyer de l’information sur un flot de sortie. Pour l’instant, admettons que cout désigne la fenêtre dans laquelle s’affichent les résultats. Ici, donc, cette instruction peut être interprétée ainsi : cout reçoit l’information :
"Bonjour\n"

Les guillemets servent à délimiter une « chaîne de caractères » (suite de caractères). La notation \n est conventionnelle : elle représente un caractère de fin de ligne, c’est-à-dire un caractère qui, lorsqu’il est envoyé à l’écran, provoque le passage à la ligne suivante. Nous verrons que, de manière générale, C++ prévoit une notation de ce type (\ suivi d’un caractère) pour un certain nombre de caractères dits « de contrôle », c’est-à-dire ne possédant pas de graphisme particulier.
L’instruction suivante :
cout < < "Je vais vous calculer " < < NFOIS < < " racines carrees\n" ;

ressemble à la précédente avec cette différence qu’ici on envoie trois informations différentes à l’écran :
• l’information "Je vais vous calculer" ;
• l’information NFOIS , c’est-à-dire en fait la valeur de cette constante, à savoir 5 ;
• l’information " racines carrees\n" .
1.5 Pour faire une répétition : l’instruction for
Comme nous le verrons, en C++, il existe plusieurs façons de réaliser une répétition (on dit aussi une « boucle »). Ici, nous avons utilisé l’instruction for :
for (i=0 ; i < NFOIS ; i++)
Son rôle est de répéter le bloc (délimité par des accolades « { » et « } ») figurant à sa suite, en respectant les consignes suivantes :
• avant de commencer cette répétition, réaliser :
i = 0
• avant chaque nouvelle exécution du bloc (tour de boucle), examiner la condition :
i < NFOIS
si elle est satisfaite, exécuter le bloc indiqué, sinon passer à l’instruction suivant ce bloc ; à la fin de chaque exécution du bloc, réaliser :
i ++
Il s’agit là d’une notation propre au C++ qui est équivalente à :
i = i + 1
En définitive, vous voyez qu’ici notre bloc sera répété cinq fois.
1.6 Pour lire des informations : utiliser le flot cin
La première instruction du bloc répété par l’instruction for affiche simplement le message Donnez un nombre: . Notez qu’ici nous n’avons pas prévu de changement de ligne à la fin.
Là encore, l’interprétation détaillée de la seconde instruction du bloc :
cin >> x ;
nécessiterait des connaissances qui ne seront introduies qu’ultérieurement : nous verrons que cin est un « flot d’entrée » associé au clavier et que < < est un opérateur permettant d’« extraire » (de lire) de l’information à partir d’un flot d’entrée. Pour l’instant, admettons que cette instruction peut être interprétée ainsi : lire une suite de caractères au clavier et la convertir en une valeur de type float que l’on place dans la variable x . Ici, nous supposerons que l’utilisateur « valide » son entrée au clavier. Plus tard, nous verrons qu’il peut fournir plusieurs informations par anticipation. De même, nous supposerons qu’il ne fait pas de « faute de frappe ».
1.7 Pour faire des choix : l’instruction if
Les lignes :
if (x < 0.0)
cout < < "Le nombre " < < x < < "ne possede pas de racine carree\n " ;
else
{ racx = sqrt (x) ;
cout < < "Le nombre " < < x < < " a pour racine carree : " < < racx < < "\n" ;
}

constituent une instruction de choix fondée sur la condition x < 0.0 . Si cette condition est vraie, on exécute l’instruction suivante, c’est-à-dire :
cout < < "Le nombre " < < x < < "ne possede pas de racine carree\n " ;
Si elle est fausse, on exécute l’instruction suivant le mot else , c’est-à-dire, ici, le bloc :
{ racx = sqrt (x) ;
cout < < "Le nombre " < < x < < " a pour racine carree : " < < racx < < "\n" ;
}

Notez qu’il existe un mot else mais pas de mot then . La syntaxe de l’instruction if (notamment grâce à la présence de parenthèses qui encadrent la condition) le rend inutile.
La fonction sqrt fournit la valeur de la racine carrée d’une valeur flottante qu’on lui transmet en argument.
Remarques
1. Une instruction telle que :
racx = sqrt (x) ;
est une instruction classique d’affectation : elle donne à la variable racx la valeur de l’expression située à droite du signe égal. Nous verrons plus tard qu’en C++ l’affectation peut prendre des formes plus élaborées.
2. D’une manière générale, C++ dispose de trois sortes d’instructions :
– des instructions simples, terminées obligatoirement par un point-virgule ;
– des instructions de structuration telles que if ou for ;
– des blocs (délimités par { et }).
Les deux dernières ont une définition « récursive » puisqu’elles peuvent contenir, à leur tour, n’importe laquelle des trois formes.
Lorsque nous parlerons d’instruction, sans précisions supplémentaires, il pourra s’agir de n’importe laquelle des trois formes ci-dessus.

1.8 Les directives à destination du préprocesseur
Les deux premières lignes de notre programme :
#include <iostream >
#include <cmath>

sont un peu particulières. Il s’agit de directives qui seront prises en compte avant la traduction (compilation) du programme, par un programme nommé « préprocesseur » (parfois « précompilateur »). Ces directives, contrairement au reste du programme, doivent être écrites à raison d’une par ligne et elles doivent obligatoirement commencer en début de ligne.
Leur emplacement au sein du programme n’est soumis à aucune contrainte (mais une directive ne s’applique qu’à la partie du programme qui lui succède). D’une manière générale, il est préférable de les placer au début, avant toute fonction, comme nous l’avons fait ici.
Ces deux directives demandent en fait d’introduire (avant compilation) des instructions (en C++) situées dans les fichiers iostream et cmath . Leur rôle ne sera complètement compréhensible qu’ultérieurement.
Pour l’instant, notez que :
• iostream contient des déclarations relatives aux flots donc, en particulier, à cin et cout , ainsi qu’aux opérateurs < <et < < (dont on verra plus tard qu’ils sont en fait considérés comme des fonctions particulières) ;
• cmath contient des déclarations relatives aux fonctions mathématiques (héritées de C), donc en particulièr à sqrt .
D’une manière générale, dès que vous utilisez une fonction dans une partie d’un programme, il est nécessaire qu’elle ait été préalablement déclarée. Cela vaut également pour les fonctions prédéfinies.
Plutôt que de s’interroger sur les déclarations exactes de ces fonctions prédéfinies, il est préférable d’incorporer les fichiers en-tête correspondants.
Notez qu’un même fichier en-tête contient des déclarations relatives à plusieurs fonctions.
Généralement, vous ne les utiliserez pas toutes dans un programme donné ; cela n’est guère gênant, dans la mesure où les déclarations ne produisent pas de code exécutable.
1.9 L’instruction using

La norme de C++ a introduit la notion d’« espaces de noms » ( namespace ). Elle permet de restreindre la « portée » des symboles à une certaine partie d’un programme et donc, en particulier, de règler les problèmes qui peuvent se poser quand plusieurs bibliothèques utilisent les mêmes noms. Cette notion d’espace de noms sera étudiée par la suite. Pour l’instant, retenez que les symboles déclarés dans le fichier iostream appartiennent à l’espace de noms std .
L’instruction using sert précisément à indiquer que l’on se place « dans cet espace de noms std » (attention, si vous placez l’instruction using avant l’incorporation des fichiers en-tête, vous obtiendrez une erreur car vous ferez référence à un espace de noms qui n’a pas encore été défini !).
1.10 Exemple de programme utilisant le type caractère
Voici un second exemple de programme, accompagné de deux exemples d’exécution, destiné à vous montrer l’utilisation du type « caractère ». Il demande à l’utilisateur de choisir une opération parmi l’addition ou la multiplication, puis de fournir deux nombres entiers ; il affiche alors le résultat correspondant.
#include <iostream>
using namespace std ;
main()
{ char op ;
int n1, n2 ;
cout < < "opération souhaitée (+ ou *) ? " ;
cin >> op ;
cout < < "donnez 2 nombres entiers : " ;
cin >> n1 >> n2 ;
if (op == ’+’) cout < < "leur somme est : " < < n1+n2 < < "\n" ;
else cout < < "leur produit est : " < < n1*n2 < < "\n" ;
}

opération souhaitée (+ ou *) ? +
donnez 2 nombres entiers : 25 13
leur somme est : 38
opération souhaitée (+ ou *) ? *
donnez 2 nombres entiers : 12 5
leur produit est : 60


Ici, nous déclarons que la variable op est de type caractère ( char ). Une telle variable est destinée à contenir un caractère quelconque (codé, bien sûr, sous forme binaire !).
L’instruction cin >> op permet de lire un caractère au clavier et de le ranger dans op . L’instruction if permet d’afficher la somme ou le produit de deux nombres, suivant le caractère contenu dans op . Notez que :
• La relation d’égalité se traduit par le signe == (et non = qui représente l’affectation et qui, ici, comme nous le verrons plus tard, serait admis mais avec une autre signification !).
• La notation ’+’ représente une constante caractère. Notez bien que C++ n’utilise pas les mêmes délimiteurs pour les constantes chaînes (il s’agit de ") et pour les constantes caractères.
Remarquez que, tel qu’il a été écrit, notre programme calcule le produit, dès lors que le caractère fourni par l’utilisateur n’est pas +.
2 Quelques règles d’écriture
Ce paragraphe expose un certain nombre de règles générales intervenant dans l’écriture d’un programme en C++. Nous y parlerons précisément de ce que l’on appelle les « identificateurs » et les « mots-clés », du format libre dans lequel on écrit les instructions, ainsi que de l’usage des séparateurs et des commentaires.
2.1 Les identificateurs
Les identificateurs servent à désigner les différentes « choses » manipulées par le programme, telles les variables et les fonctions (nous rencontrerons ultérieurement les autres choses manipulées par le C++ : objets, structures, unions ou énumérations, membres de classe, de structure ou d’union, types, étiquettes d’instruction goto , macros). Comme dans la plupart des langages, ils sont formés d’une suite de caractères choisis parmi les lettres ou les chiffres , le premier d’entre eux étant nécessairement une lettre.
En ce qui concerne les lettres :
• Le caractère souligné (_) est considéré comme une lettre. Il peut donc apparaître au début d’un identificateur. Voici quelques identificateurs corrects :
lg_lig valeur_5 _total _89
• Les majuscules et les minuscules sont autorisées mais ne sont pas équivalentes. Ainsi, en C++, les identificateurs ligne et Ligne désignent deux objets différents.
Aucune restriction ne pèse sur la longueur des identificateurs (en C, seuls les 31 premiers caractères étaient significatifs).
2.2 Les mots-clés

Certains « mots-clés » sont réservés par le langage à un usage bien défini et ne peuvent pas être utilisés comme identificateurs. Vous en trouverez la liste complète, classée par ordre alphabétique, en Annexe H.
2.3 Les séparateurs
Dans NOTRE langue écrite, les différents mots sont séparés par un espace, un signe de ponctuation ou une fin de ligne.
Il en va quasiment de même en C++ où les règles vont donc paraître naturelles. Ainsi, dans un programme, deux identificateurs successifs entre lesquels la syntaxe n’impose aucun signe particulier (tels que : , = ; * ( ) [ ] { } ) doivent impérativement être séparés soit par un espace, soit par une fin de ligne. En revanche, dès que la syntaxe impose un séparateur quelconque, il n’est alors pas nécessaire de prévoir d’espaces supplémentaires (bien qu’en pratique cela améliore la lisibilité du programme).
Ainsi, vous devrez impérativement écrire :
int x,y
et non :
intx,y
En revanche, vous pourrez écrire indifféremment :
int n,compte,total,p
ou plus lisiblement :
int n, compte, total, p
2.4 Le format libre
Comme tous les langages récents, le C++ autorise une mise en page parfaitement libre. En particulier, une instruction peut s’étendre sur un nombre quelconque de lignes, et une même ligne peut comporter autant d’instructions que vous le souhaitez. Les fins de ligne ne jouent pas de rôle particulier, si ce n’est celui de séparateur, au même titre qu’un espace, sauf dans les « constantes chaînes » où elles sont interdites ; de telles constantes doivent impérativement être écrites à l’intérieur d’une seule ligne. Un identificateur ne peut être coupé en deux par une fin de ligne, ce qui semble évident.
Bien entendu, cette liberté de mise en page possède des contreparties. Notamment, le risque existe, si l’on n’y prend garde, d’aboutir à des programmes peu lisibles.
À titre d’exemple, voyez comment pourrait être (mal) présenté notre programme précédent :
#include <iostream >
#include <cmath>
using namespace std ; main() { int i ; float
x ;
float racx ; const
int NFOIS
= 5 ; cout < < "Bonjour\n" ; cout < < "Je vais vous calculer " < < NFOIS < < " racines carrees\n" ; for (i=0 ;
i<NFOIS ; i++) { cout < < "Donnez un nombre : " ; cin > > x
; if (x < 0.0) cout < < "Le nombre "
< < x < < "ne possede pas de racine carree\n " ; else { racx = sqrt
(x) ; cout < < "Le nombre " < < x < < " a pour racine carree : " < < racx < <
"\n" ;
} } cout < < "Travail termine - au revoir " ; }
2.5 Les commentaires
Comme tout langage évolué, C++ autorise la présence de commentaires dans vos programmes source. Il s’agit de textes explicatifs destinés aux lecteurs du programme et qui n’ont aucune incidence sur sa compilation. Il existe deux types de commentaires :
• les commentaires « libres », hérités du langage C ;
• les commentaires de fin de ligne (introduits par C++).
2.5.1 Les commentaires libres
Ils sont formés de caractères quelconques placés entre les symboles /* et */ . Ils peuvent apparaître à tout endroit du programme où un espace est autorisé. En général, cependant, on se limitera à des emplacements propices à une bonne lisibilité du programme.
Voici quelques exemples de tels commentaires :
/* programme de calcul de racines carrées */
/* commentaire fantaisiste &ç§{< >} ?%!!!!!! */
/* commentaire s’étendant
sur plusieurs lignes
de programme source
*/
/* =============================================
*
commentaire quelque peu esthétique
*
*
et encadré, pouvant servir,
*
*
par exemple, d’en-tête de programme *
========================================== */
Voici un exemple de commentaires qui, situés au sein d’une instruction de déclaration, permettent de définir le rôle des différentes variables :
int i ;
float x ;
float racx ;
/* compteur de boucle */
/* nombre dont on veut la racine carrée */
/* racine carrée du nombre */
Voici enfin un exemple légal mais peu lisible :
int /* compteur de boucle */ i ; float x ;
/* nombre dont on veut la racine
carrée */ float racx ;
/* racine carrée du nombre */

2.5.2 Les commentaires de fin de ligne
Comme leur nom l’indique, ils se placent à la fin d’une ligne. Ils sont introduits par les deux caractères : //. Dans ce cas, tout ce qui est situé entre // et la fin de la ligne est un commentaire. Notez que cette nouvelle possibilité n’apporte qu’un surcroît de confort et de sécurité ;
en effet, une ligne telle que :
cout << "bonjour\n" ; // formule de politesse
peut toujours être écrite ainsi :
cout << "bonjour\n" ; /* formule de politesse */
Vous pouvez mêler (volontairement ou non !) les commentaires libres et les commentaires de fin de ligne. Dans ce cas, notez que, dans :
/* partie1 // partie2 */ partie3
le commentaire « ouvert » par /* ne se termine qu’au prochain */ ; donc partie1 et partie2 sont des commentaires, tandis que partie3 est considéré comme appartenant aux instructions.
De même, dans :
partie1 // partie2 /* partie3 */ partie4
le commentaire introduit par // s’étend jusqu’à la fin de la ligne. Il concerne donc partie2, partie3 et partie 4.
Remarques
1- Le commentaire de fin de ligne constitue l’un des deux cas où la fin de ligne joue un rôle significatif. L’autre cas concerne les directives destinées au préprocesseur (il ne concerne donc pas la compilation proprement dite).
2- Si l’on utilise systématiquement le commentaire de fin de ligne, on peut alors faire appel à /* et */ pour « inhiber » un ensemble d’instructions (contenant éventuellement des commentaires) en phase de mise au point.
3- Nos exemples de commentaires doivent être considérés commes des exemples didactiques et, en aucun cas, comme des modèles de programmation. Ainsi, généralement, il sera préférable d’éviter les commentaires redondants par rapport au texte du programme lui-même.
3 Création d’un programme en C++
La manière de développer et d’utiliser un programme en C++ dépend naturellement de l’environnement de programmation dans lequel vous travaillez. Nous vous fournissons ici quelques indications générales (s’appliquant à n’importe quel environnement) concernant ce que l’on pourrait appeler les grandes étapes de la création d’un programme, à savoir : édition du programme, compilation et édition de liens.
3.1 L’édition du programme
L’édition du programme (on dit aussi parfois « saisie ») consiste à créer, à partir d’un clavier, tout ou partie du texte d’un programme qu’on nomme « programme source ». En général, ce texte sera conservé dans un fichier que l’on nommera « fichier source ».
Chaque système possède ses propres conventions de dénomination des fichiers. En général, un fichier peut, en plus de son nom, être caractérisé par un groupe de caractères (au moins 3) qu’on appelle une « extension » (ou, parfois un « type ») ; la plupart du temps, en C++, les fichiers source porteront l’extension cpp .
3.2 La compilation
Elle consiste à traduire le programme source (ou le contenu d’un fichier source) en langage machine, en faisant appel à un programme nommé compilateur. En C++ (comme en C), compte tenu de l’existence d’un préprocesseur, cette opération de compilation comporte en fait deux étapes :
• Traitement par le préprocesseur : ce dernier exécute simplement les directives qui le concernent (il les reconnaît au fait qu’elles commencent par un caractère # ). Il produit, en résultat, un programme source en C++ pur. Notez bien qu’il s’agit toujours d’un vrai texte, au même titre qu’un programme source : la plupart des environnements de programmation vous permettent d’ailleurs, si vous le souhaitez, de connaître le résultat fourni par le préprocesseur.
• Compilation proprement dite, c’est-à-dire traduction en langage machine du texte C++ fourni par le préprocesseur.
Le résultat de la compilation porte le nom de module objet.
3.3 L’édition de liens
En général, un module objet créé ainsi par le compilateur n’est pas directement exécutable. Il lui manquera, en effet, au moins les fonctions de la bibliothèque standard dont il a besoin ; dans notre exemple précédent, il s’agirait : de la fonction sqrt , des fonctions correspondant au travail des opérateurs << et >>.
C’est effectivement le rôle de l’éditeur de liens que d’aller rechercher dans la bibliothèque standard les modules objets nécessaires. Notez que cette bibliothèque est une collection de modules objets organisée, suivant l’implémentation concernée, en un ou plusieurs fichiers.
Nous verrons que, grâce aux possibilités de compilation séparée de C++, il vous sera également possible de rassembler au moment de l’édition de liens différents modules objets, compilés de façon indépendante.
Le résultat de l’édition de liens est ce que l’on nomme un programme exécutable, c’est-à-dire un ensemble autonome d’instructions en langage machine. Si ce programme exécutable est rangé dans un fichier, il pourra ultérieurement être exécuté sans qu’il soit nécessaire de faire appel à un quelconque composant de l’environnement de programmation en C++.
3.4 Les fichiers en-tête
Nous avons vu que, grâce à la directive #include , vous pouviez demander au préprocesseur d’introduire des instructions (en langage C++) provenant de ce que l’on appelle des fichiers « en-tête ». Ces fichiers comportent, entre autres choses, des déclarations relatives aux fonctions prédéfinies (attention, ne confondez pas ces déclarations des fichiers en-tête, avec les modules objets qui contiendront le code exécutable de ces différentes fonctions).



les autres chapitres

Chapitre 1 : Présentation du langage C++ .
Chapitre 2 : Généralités sur le langage C++ .
Chapitre 3 : Les types de base de C++ .
Chapitre 4 : Opérateurs et expressions .
Chapitre 5 : Les entrées-sorties conversationnelles de C++ .


voir aussi

cours en ligne du langage c++
cours en PDF du langage c++
cours vidéos du langage c++
exercices en ligne du langage c++
Exercices en PDF du langage c++
exrcices vidéos du langage c++