Sie sind auf Seite 1von 13

S.

Laporte

Notions de C++

Lyce Louise Michel BTS IG1

Notions fondamentales 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++

Lyce Louise Michel BTS IG1

II. Les variables en C++


A.

Les types simples du langage C++

Il existe 5 types principaux en C++.


- les caractres
char
- les entiers
int
- les rels simples float
- les rels doubles double
- les boolens
bool
Ces types sont signs par dfaut mais on peut indiquer "unsigned" si l'on veut un
type non sign. Il existe plusieurs sortes des diffrents types, qui varient selon les
machines. Il n'y a pas de normalisation en la matire.
Par exemple, Le C++ de Borland annonce dans son aide:
TYPE
unsigned char
char
unsigned int
short int
int
unsigned long
long int
float
double
long double

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

Complment sur le type caractre


En C++, la notion de caractre dpasse celle de caractre imprimable, c'est dire
auquel est associ un graphisme (lettres, chiffres, ponctuation, caractres
spciaux,). Par exemple, les sons, les retours chariot, les tabulations, les sauts de
page sont aussi des caractres.
Quand un caractre est imprimable, il est not entre apostrophes:
'a', '+', '5', '_'
Les caractres non imprimables possdent une reprsentation conventionnelle
utilisant le caractre "\" nomm antislash.
Voici la liste de ces caractres:
\a
bip
\b
retour arrire
\f
saut de page
\n
retour chariot avec saut de ligne
\r
retour chariot sans saut de ligne
2/13

S. Laporte

Notions de C++

Lyce Louise Michel BTS IG1

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

Les type chane

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 dclarations de variables se font gnralement en dbut de programme, aprs


main( ), sans quil soit utile de les prcder dun mot cl. La dclaration indique tout
dabord le type suivi de lidentificateur et dun point virgule.
type identificateur ;
ex :
int ma_variable ;

Contraintes sur les identificateurs

Les identificateurs doivent commencer par une lettre ou le caractre _


(soulignement) et ne doivent pas contenir d'espaces, ni de lettres accentues.
MMM ATTENTION!!
Le langage C fait la diffrence entre les majuscules et les minuscules!
Ainsi , les identificateurs nb et Nb dsignent deux variables distinctes!
-

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 ;

dclaration des constantes

3/13

S. Laporte

Notions de C++

Lyce Louise Michel BTS IG1

La dclaration des constantes peut se faire aprs le mot cl const. On spcifie le


type de la constante, son identificateur puis sa valeur aprs l'oprateur =.
exemple :
const float ttva = 0.196

C.

oprations lmentaires
Les oprateurs de comparaison

oprateur
egal
diffrent
suprieur
suprieur ou gal
infrieur
infrieur ou gal

symbole utilis en C++


==
!=
>
>=
<
<=

Les oprateurs arithmtiques

oprateur
addition
soustraction
multiplication
division relle
division entire

symbole utilis en C++


+
*
/
/ (mme oprateur que pour la division
relle)

modulo

$ Remarque : il nexiste pas doprateur au carr ou doprateur puissance .


Pour cela, nous verrons plus tard quil faut utiliser des fonctions.

Les oprateurs logiques

ET
&&
OU
||
NON
!

(Alt Gr +6)

Ces oprateurs sont utiliss pour crer des conditions complexes.

D.

Initialisation et dclaration

Il est possible dinitialiser les variables ds leur dclaration.


Ex :
int a , b ;
float c ;
int a = 5, b = 0 ;
a =5;
peut scrire
float c = 1000
b=0;
c = 1000 ;

III. Les instructions lmentaires


4/13

S. Laporte

A.

Notions de C++

Lyce Louise Michel BTS IG1

Laffectation

Rappelons que laffectation est totalement diffrente de lgalit mathmatique.


Cette instruction permet seulement de donner la valeur de lexpression de droite
la variable de gauche.
Mais le langage C++ utilise le symbole de lgalit = pour laffectation.
Pour affecter un caractre, il faut lentourer d'apostrophes (sinon le compilateur
pourrait le confondre avec un nom de variable). Pour une chane, il faut utiliser des
guillemets.
Exemples :
x = 5;
La variable x prend pour valeur 5
i = i + 1;
La variable i prend pour valeur son ancienne valeur augmente de 1
C = a;
La variable C prend pour valeur le caractre a.

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++

Lyce Louise Michel BTS IG1

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

Il existe deux faons d'inclure des commentaires dans un programme en C++:


- soit on les entoure de /* et */
- soit on utilise // pour un commentaire qui se finit la fin de la ligne

IV. Exemple complet


Pour rcapituler voil un exemple de programme interactif avec son comportement.
# include <iostre am.h> // pour pouvoir utiliser cout<< et cin>>
# include <conio.h> // pour pouvoir utiliser getch()
main ()
{
//dclaration
int ddn ;
// affichage dun libell
cout << "Bonjour! \nEntrez votre annee de naissance puis validez, s'il vous plait\n" ;
// on affecte la valeur inscrite au clavier la variable ddn avec // cin>>
cin >> ddn ;
// On affiche l'ge grce un petit calcul
cout << "Vous avez, ou allez avoir dans l'annee "<< 1999 - ddn << "ans.\n";
/* grce l'instruction getch (),le programme attend la pression
d'une touche pour laisser le temps de lire le rsultat*/
cout << "\nTapez sur une touche pour sortir";
getch();
}
Droulement du programme l'cran:
Bonjour!
Entrez votre annee de naissance puis validez
On introduit l'anne, par exemple 1979
Bonjour !
Entrez votre annee de naissance puis validez
6/13

S. Laporte

Notions de C++

Lyce Louise Michel BTS IG1

1979
Vous avez, ou allez avoir dans l'annee 20 ans.
Tapez sur une touche pour sortir

7/13

S. Laporte

Notions de C++

Lyce Louise Michel BTS IG1

V. Les structures de contrle


A.

Les structures conditionnelles


La structure ifelse

La structure conditionnelle du C++ a le formalisme suivant:

if (condition) //pas de then


{
traitement1 //excut si la condition est vraie
}
else
{
traitement2 //excut si la condition est fausse
}
Un traitement est compos d'une ou plusieurs instructions termines par un point-virgule.
Remarque: si le traitement n'est compos que d'une seule instruction, les accolades ne sont pas
obligatoires.
Le else est facultatif. On peut avoir tout simplement:

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++

Lyce Louise Michel BTS IG1

La structure switchcase (en C++)


L'instruction switch offre au programmeur un moyen d'effectuer un choix multiple par valeurs. En
d'autres termes, elle permet de faire l'quivalent d'une structure Selon de l'algorithmique, lorsque les
cas sont des valeurs discrtes (et non des intervalles).
Cette structure de contrle ne comporte donc pas de condition. En revanche, une expression va tre
value et en fonction du rsultat de cette valuation, des instructions vont tre ralises.
Voici le formalisme de cette structure:

switch (expression)
{
case va1eur1:
traitement1
break;
case constante2 :
traitement2
break;

case constanteN :
traitementN
break;
[default:
traitement]

//les crochets ne sont pas crire: ils indiquent


//seulement que cette clause est facultative

}
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++

Lyce Louise Michel BTS IG1

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" !

Comment faire l'quivalent d'une structure Selon o les cas


sont des intervalles?
En C++, utiliser switch est dans ce cas impossible: il faut utiliser l'imbrication des
structures if.
Un traitement qui suit un if ou un else peut tre une structure de contrle, par exemple une
structure if. On dit dans ce cas qu'on a des structures imbriques.
L'algorithme suivant se traduit de la faon suivante:

Selon montant Faire


<1000 :
=1000 et < 3000:
=3000 et < 10000:
= 10000:
FinSelon

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++

Lyce Louise Michel BTS IG1

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

Tant que Faire de l'algorithmique. Elle a la

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++

Lyce Louise Michel BTS IG1

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++

Lyce Louise Michel BTS IG1

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.

MDIFFERENCE AVEC L'ALGO

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

Das könnte Ihnen auch gefallen