Beruflich Dokumente
Kultur Dokumente
Laporte
Notions de C++
I. Exemple Introductif
Le meilleur moyen dintroduire le langage C++ est dtudier un exemple simple.
# include <iostream.h>
# include <conio.h>
main( )
{
int x;
cout << "Hello world!";
x = 15;
cout << la variable x vaut << x;
getch( ) ;
}
Dtaillons ce petit programme (on tudiera les 2 premires lignes plus tard)
- tout programme en C++ commence par main ( ) (main veut dire principal). main
est en fait le nom du programme principal, le seul autoris.
- le corps du programme est crit entre accolades { }.
- la premire instruction dclare une variable entire nomme x. La dclaration
commence sans mot cl pralable, avec le type (ici int qui signifie entier) suivi de
lidentificateur. Comme toute instruction, la dclaration se termine par un ;
- cout << permet d'effectuer un affichage l'cran. C'est la faon la plus simple
d'afficher l'cran, mais pour pouvoir l'utiliser, il faut avoir pralablement inscrit la
directive #include <iostream.h> avant le dbut du programme. cout << Hello
world!; affiche le message entre guillemets lcran.
- Linstruction x = 15 est une instruction daffectation. Attention, en C++, = est
loprateur daffectation, ce qui peut entrainer des confusions avec loprateur
dgalit des mathmatiques.
- linstruction suivante permet dafficher la valeur de x prcde dun libell. Pour
afficher des contenus diffrents lcran, il faut les sparer de loprateur << (qui
remplace la virgule de lalgorithmique)
- linstruction getch( ) est lappel dune fonction qui permet lutilisateur de voir la
fentre dexcution tant quil na pas appuy sur une touche. Sans cette ligne, la
fentre dexcution se fermerait tout de suite sans que lutilisateur ait le temps de la
visualiser (cest cause dun bug de Windows)
- le programme se termine par la fermeture des accolades.
1/13
S. Laporte
Notions de C++
LONGUEUR
8 bits
1 octet
8 bits
1 octet
16 bits
2
octets
16 bits
2
octets
32 bits
4
octets
32 bits
4
octets
32 bits
4
octets
32 bits
4
octets
64 bits
8
octets
80 bits
8
octets
DOMAINE DE VALEURS
0 255
-128 127
0 65 535
-32 768 32 767
-2 147 483 648 2 147 483
647
0 4 294 967 295
-2 147 483 648 2 147 483
647
3.4*10-38 3.4*10+38
1.7*10-308 1.7*10+308
3.4*10-4932 1.1*10+4932
S. Laporte
Notions de C++
\t
tabulation
Chaque caractre est cod en mmoire suivant un code binaire appel ASCII. Donc,
chaque caractre est associ un nombre dont la reprsentation binaire est la
mme. Il est possible d'effectuer des oprations numriques sur les variables de
type caractre travers leur code ASCII. Il est aussi possible d'afficher le code ASCII
d'un caractre en le transformant au pralable en entier.
Exemple:
La squence suivante :
char a;
a = 'Z';
cout << a << "\n";
cout << int (a);
donne l'cran:
Z
90
En effet, la variable a contient le code ASCII de la lettre Z, qui est aussi la
reprsentation binaire de l'entier 90.
Le type chane nexiste pas dans le langage de base du C++. On peut cependant
utiliser un type chane (string) en incluant la directive # include <cstring.h> au
dbut du fichier.
B.
les dclarations
Les mots du langage ne peuvent pas servir d'identificateurs. Ils sont rservs.
On peut dclarer plusieurs variables de mme type dans une mme instruction en
sparant les identificateurs par des virgules.
exemple :
double x, var, toto ;
3/13
S. Laporte
Notions de C++
C.
oprations lmentaires
Les oprateurs de comparaison
oprateur
egal
diffrent
suprieur
suprieur ou gal
infrieur
infrieur ou gal
oprateur
addition
soustraction
multiplication
division relle
division entire
modulo
ET
&&
OU
||
NON
!
(Alt Gr +6)
D.
Initialisation et dclaration
S. Laporte
A.
Notions de C++
Laffectation
B.
L'affichage
En C++, plusieurs oprateurs sont possibles pour lcriture. Nous ne prsentons ici
que le plus simple, loprateur << prcd du mot cl cout(prononcer c-out).
Pour utiliser cet oprateur, il faut avoir pralablement crit au tout dbut du
programme :
# include <iostream.h>
cout << suivi du nom dune variable, d'une expression ou dun texte (entre
guillemets) inscrit le contenu de la variable, le rsultat d'une expression ou bien du
texte lcran.
Exemple:
cout << y x;
Cette instruction affiche 5 si y=10 et x=5
Si lon veut quapparaissent successivement diffrents affichages (du texte, puis des
variables par exemple), on les sparera avec loprateur << .
Exemple :
cout<< "la valeur de x est " << x << " et celle de y e st " << y ;
En supposant que x ait pour valeur 5 et y pour valeur 10, on aura l'cran:
La valeur de x est 5 et celle de y est 10
Pour inclure des sauts de ligne dans un texte, on utilise le caractre \n .
Exemple :
cout << "Bonjour\nCa va?" ;
Va donner l'cran :
Bonjour
Ca va?
5/13
S. Laporte
C.
Notions de C++
La saisie
En C++, la lecture s'effectue le plus souvent grce cin (lire c-in) suivie de
l'oprateur >>.
Pour pouvoir lutiliser, il faut aussi que la directive #include <iostream.h>
apparaisse au dbut du fichier source.
cin >> lit au clavier les valeurs introduites successivement.
Par exemple:
cin >> a >> b ;
Si l'on crit au clavier 2 puis 3, la variable a va prendre pour valeur 2 et b va
prendre pour valeur 3.
D.
Les commentaires
S. Laporte
Notions de C++
1979
Vous avez, ou allez avoir dans l'annee 20 ans.
Tapez sur une touche pour sortir
7/13
S. Laporte
Notions de C++
if (condition)
{
traitement
}
Si la condition est fausse, le programme "saute" le traitement et passe la suite.
Rappel sur les oprateurs:
Les oprateurs de comparaison utilisables dans la condition sont:
>
>=
<
<=
==
!=
suprieur
suprieur ou gal
infrieur
infrieur ou gal
gal
diffrent de
Les oprateurs logiques utiliss pour les conditions complexes sont les suivants:
oprateur
et
ou (non exclusif)
non
symbole
&&
||
!
Lorsque la condition est complexe, chaque condition simple est entoure de parenthses, ainsi que la
condition toute entire.
Remarquez quil ny a pas de mot qui indique la fin de la structure. En fait, la structure sarrte
automatiquement aprs le traitement suivant le else (ou aprs l'accolade s'il n'y a pas de else). Sil ny
a pas daccolades, la structure se termine la fin de linstruction suivant la condition, sinon, elle se
termine laccolade de fermeture. Il est donc trs important de bien prsenter son programme (utiliser
les tabulations) pour retrouver o se terminent les diffrentes structures.
8/13
S. Laporte
Notions de C++
switch (expression)
{
case va1eur1:
traitement1
break;
case constante2 :
traitement2
break;
case constanteN :
traitementN
break;
[default:
traitement]
}
La clause default est facultative.
Voil comment fonctionne cette structure de contrle:
- elle commence par valuer l'expression fournie (qui est le plus souvent une variable)
- pour chaque clause "case", elle compare le rsultat de l'expression la valeur constante.
En cas d'galit, les instructions sont excutes jusqu' l'instruction "break;"
- les instructions appartenant la clause "default" sont excutes dans le cas o si aucune
constante n'est gale l'expression.
Remarques:
L'valuation est toujours base sur l'galit. Il est interdit d'utiliser des oprateurs
logiques ou des valeurs boolennes. Les cas ne peuvent pas tre des intervalles.
L'expression doit retourner un type entier et les constantes sont aussi de type entier.
Les instructions suivant un "case" ne sont pas obligatoirement regroupes en bloc. Il
ne s'agit pas d'une instruction compose mais bien de plusieurs instructions en
squence.
Il faut terminer les instructions suivant un "case" par un "break", sinon le compilateur
enchane sur les instructions du "case" suivant. (L'instruction break sert en fait sortir
directement de la structure switch)
Lorsqu'une mme squence d'instructions est excute pour plusieurs cas qui se
suivent, il suffit de laisser se suivre les clauses "case" sans leur attribuer d'instructions
(mme pas "break") sauf la dernire (voir l'exemple)
9/13
S. Laporte
Notions de C++
Exemple:
Ce programme affiche un commentaire partir de la saisie d'une note entire sur 10 (pas de
demis-points). Certaines notes voisines se verront attribuer le mme commentaire.
main( )
{
int note;
cout << "Entrez la note sur 10";
cin >> note;
switch (note)
{
case 0:
case 1: cout << "\nC'est nul"
case 2:
case 3: cout << "\nC'est trs insuffisant";
break;
case 4: cout << "\nC'est insuffisant";
break;
case 5:
case 6: cout << "\nC'est moyen";
break;
case 7:
case 8: cout << "\nC'est bien";
break;
case 9:
case 10: cout << "\nC'est trs bien";
break;
default: cout << "\nErreur, la note doit tre entire et comprise entre 0 et 10";
}
Attention: il ne faut pas oublier les "break", sinon le compilateur excute toutes les
instructions suivantes, y compris les instructions qui font partie des "case" suivants.
Dans notre exemple, si on avait oubli les "break", voil ce qui se serait pass.
Supposons que la note saisie soit 5.
Le commentaire "C'est moyen" s'affiche mais aussi "C'est bien", "C'est trs bien" et "Erreur,
la note doit tre entire et comprise entre 0 et 10" !
taux 1
taux 2
taux 3
taux 4
if (montant <1000)
taux = 1;
else if (montant < 3000)
taux = 2;
else if (montant < 10000)
taux = 3;
else
taux = 4;
10/13
S. Laporte
Notions de C++
Remarquez que comme les traitements ne comportent qu'une seule instruction, on ne met
pas d'accolades qui alourdiraient le code. Mais attention ne pas les oublier quand un
traitement comporte plusieurs instructions!
La boucle while
La boucle while correspond la
syntaxe suivante:
boucle
while (condition)
{
traitement
}
La condition est tout d'abord value. Si elle est fausse, le traitement de la boucle (ou corps
de la boucle) n'est pas excut et on passe l'instruction suivante. Si elle est vraie, le
traitement est excut, puis la condition est de nouveau value. Le traitement est
recommenc tant que la condition est vraie.
Le traitement peut tre une instruction simple (sans accolades), un bloc d'instruction entre
accolades ou encore une instruction structure (structure conditionnelle ou rptitive). Dans
ce cas, les accolades ne sont pas ncessaires mais elles peuvent permettre une meilleure
lisibilit.
Remarque: il n'y a pas de mot rserv qui indique la fin du corps de la boucle. La fin de la
boucle est soit le point-virgule si le traitement n'est form que d'une instruction simple, soit
la fin de l'instruction structure si le traitement est une structure de contrle, soit l'accolade
de fermeture si le traitement est form d'un blocs d'instructions. Attention: lorsque le
traitement de la boucle est form de plusieurs instructions, ne pas oublier de les
mettre entre accolades!
Exemples:
Cas o le traitement est une instruction simple
Voil un programme qui utilise une boucle while pour afficher les carrs des 10 premiers
nombres entiers naturels.
main ( )
{
int e = 1;
while (e <= 10)
cout << e * e << "\t"; // le corps de la boucle est une instruction simple. Il se termine
au point-virgule
cout << "Fin";
// cette instruction est en dehors de la boucle
}
Cas o le traitement est une instruction structure
Voil un programme qui utilise une boucle while pour afficher le signe des nombres saisis
par l'utilisateur. Pour arrter, l'utilisateur saisi 0.
main ( )
{
int n;
while (n != 0)
{
if (n < 0)
cout << "Nombre positif";
else
cout << "Nombre ngatif";
}
cout << "Au revoir! ";
// cette instruction ne fait pas partie de la boucle
}
Cas o le traitement est un bloc d'instructions
11/13
S. Laporte
Notions de C++
Voil un programme qui utilise une boucle while pour afficher le cube des entiers positifs
saisis.
main ( )
{
int n;
cout << "Entrez un entier positif ou terminez par 1";
cin >> n;
while (n <= 0)
{
cout << n << "au cube vaut "<< n * n * n << "\n";
cout << "Entrez un entier positif ou terminez par 1";
cin >> n;
} // fin de la boucle
cout << "Aurevoir!";
} // fin du programme
corps de la boucle
La boucle for
La boucle for permet, comme la boucle pour de l'algorithmique, d'excuter un traitement un
nombre connu de fois, plus simplement qu'avec la boucle while.
La syntaxe de la boucle for est la suivante:
for (instruction1 ; condition_de_continuation ; instruction3)
{
traitement
}
Si le traitement n'est compos que d'une seule instruction, les accolades peuvent tre omises.
L'instruction1 est excute avant l'entre dans la boucle. Le plus souvent, on l'utili se
pour initialiser le compteur.
La condition est vrifie au dbut de chaque tour de boucle et si elle est vraie, le corps
de la boucle est excut.
L'instruction2 est excute la fin de chaque tour de boucle. Le plus souvent, on l'utilise
pour incrmenter le compteur. En effet l'instruction for, contrairement l'instruction
Pour de l'algorithmique, n'effectue pas automatiquement l'incrmentation du compteur
chaque tour.
Le plus souvent, l'instruction for sera utilise pour raliser l'quivalent d'une boucle Pour, ce
cette faon:
for (initialisation_compteur; condition_de_continuation; incrmentation_compteur)
{
traitement
}
Exemple:
for (i=1; i <= 10; i = i + 1)
//le traitement va s'effectuer 10 fois
{
}
M Attention la condition! Si vous crivez for (i = 1; i < 10; i = i + 1) le traitement ne s'excute que 9
fois.
La boucle for n'est en fait qu'une variante de la boucle while qui correspond :
initialisation-compteur;
while (condition_de _continuation)
{
traitement
incrmentation_compteur
}
12/13
S. Laporte
Notions de C++
Exemple:
Voici un programme qui affiche la table de la somme et de multiplication du 5.
avec for
avec while
main ( )
{
main ( )
int i;
{
i = 1;
int i;
while (i <= 10)
{
for (i = 1; i <=10 ; i = i+1)
cout << "5 + "<< i << " = "<< 5 + i;
{
cout << "5 * " << i << " = " << 5 * i ;
cout << "5 + "<< i << " = "<< 5 + i;
i = i + 1;
cout << "5 * " << i << " = " << 5 * i ;
}
}
}
}
La boucle dowhile
La boucle do while a la syntaxe suivante:
do
{
traitement
}
while (condition de continuation) ; // ne pas oublier les parenthses et le point-virgule!!
Les accolades peuvent tre omises si le traitement ne comporte qu'une seule instruction.
Cette boucle se rapproche de la boucle Rpterjusqu' de l'algorithmique, sauf au niveau de la
condition.
Dans une boucle rpter, on sort lorsque la condition est vraie, alors que dans une boucle
dowhile, on sort lorsque la condition est fausse.
La condition est vrifie aprs l'excution du traitement donc ce dernier sera toujours ralis au
moins une fois.
Toute instruction ralise avec une boucle dowhile peut tre aussi crite avec une boucle while,
alors que la rciproque n'est pas vraie; c'est pourquoi, la boucle dowhile n'est utilise que trs
rarement.
Exemple:
Ce programme utilise une boucle dowhile pour faire saisir l'utilisateur un nombre infrieur 100
main ( )
{
int nb;
do
{
cout << "Entrez un nombre infrieur 100, svp";
cin >> nb;
}
while (nb >= 100);
cout<< "merci!";
}
13/13