++ - 1 m. benjelloun & s. mahmoudi : s_fpmsj 2010 mohammed benjelloun said mahmoudi service...

37
++- 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons [email protected] 2010

Upload: auguste-chapelle

Post on 04-Apr-2015

115 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 1M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

Mohammed BENJELLOUN

Said Mahmoudi

Service d’Informatique

Faculté Polytechnique de Mons

[email protected]

2010

Page 2: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 2M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

Y=X2 et Z=X3 ??

int X, Y, Z; // déclaration des Variables : identificateur

X = 2 ; // initialisation

Y = X * X ; Z = Y * X ; // ou Z=X*X*X ….

Variables : déclarations, Syntaxe : Type identificateur1, id2,…. ;

char c1, c2, c3;int i, j, var_ent;

float f, variable;

Exemple:

initialisations

int i=9; ou int i; i=9;char c1= 'A'; ou char c1; c1= 'A';

corps du programme

void main(void) // ou void main(){

}

Page 3: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 3M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

Fichier source / Fichier exécutable

Le code source doit obligatoirement fournir au compilateur le « point d’entrée » : la fonction main ()

Page 4: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 4M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

Identificateurs 

Les identificateurs nomment les objets C++ (fonctions, variables ...).

Le C++ distingue les minuscules des majuscules.

Exemple: ab, Ab, AB sont des identificateurs valides et tous différents.

Identificateurs valides : xx y1 somme_5 _position Noms Programme_1

Identificateurs invalides :

3eme commence par un chiffre x#y caractère non autorisé (#) no-commande caractère non autorisé (-) taux change caractère non autorisé (espace)

Page 5: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 5M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

Un identificateur ne peut pas être un mot réservé du langage :

asm auto bool break case

catch char class const continue

default delete do double else

enum extern float for friend

goto if inline int long

mutable namespace new operator private

protected public register return short

signed sizeof static struct switch

template this typedef union unsigned

using virtual void volatile while

Les mots réservésmots réservés du langage C++ doivent être écrits en minuscules.

Page 6: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 6M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

Y=X2 et Z=X3 ??

void main(void) // ou void main(){ int Y, Z, X; // déclaration des Variables

X = 2 ; // instruction1

Y = X * X ; // instruction2 Z = Y * X ; // instruction3

}

cout Y

cout Z

#include < iostream > using namespace std;

Directives du préprocesseur accès avant la compilation

Directives du préprocesseur accès avant la compilation

using namespace std;

/* espace de nommage std pour importer les symboles de la bibliothèque standard C++ */

Affichage !!

Page 7: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 7M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

Directives du préprocesseur Directives du préprocesseur

Une directive préprocesseur est une directive de compilation (précédées par un #)

Exemples d’inclusion de librairies standards:

Gestion des Entrées-Sorties standard <iostream>

Fonctions mathématiques <cmath>

Traitement de chaînes de caractères <string>

Contrôler les paramètres d'affichage <iomanip>

Page 8: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 8M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

Les entrées /sorties : cin et cout

 

• cout, le flux standard de sortie, habituellement associé à l'écran,

Syntaxe : cout << expression << expression … ;

• cin, le flux standard d’entrée, habituellement associé au clavier,

Syntaxe : cin >> valeur >> valeur >> valeur … ;

#include <iostream>

using namespace std;

void main() {

cout <<" Salut a vous tous" << endl;

cout << " oui tous " ;

}endl signifie un saut de ligne

définies dans la librairie <iostream>

Page 9: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 9M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

cout <<"Qu'il est agreable d'utiliser "

<<"cout en\t C++,\nlorsqu'on l'utilise " <<endl << "\t\tproprement";

Résultat :

Qu'il est agreable d'utiliser cout en C++,

lorsqu'on l'utilise

proprement

Caractères Signification CODE ASCII(hexadécimal)

\n ou endl Génère une nouvelle ligne (newline) 0x0A\t Tabulation horizontale 0x09\v Tabulation verticale 0x0B\b Retour d’un caractère en arrière (backspace) 0x08\r Retour chariot (return) 0x0D\f Saut de page (form feed) 0x0C..

\t

\t \t

setw(x) : la prochaine sortie sera sur une largeur de x

setfill(c) : utilisera c comme caractère de remplissage.

Page 10: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 10M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

Y=X2 et Z=X3 ??

void main(void) // ou void main(){ int Y, Z, X; // déclaration des Variables

X = 2 ;

Y = X * X ; Z = Y * X ;

}

cout << " valeur de Y = " << Y << endl;

cout << " valeur de Z = " << Z;

#include < iostream >

using namespace std;

valeur de Y= 4

valeur de Z = 8

cout << " valeur de Y = " << Y << endl << " valeur de Z = " << Z;

cout << " valeur de Y = " << Y << " \nvaleur de Z = " << Z;

Page 11: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 11M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

void main(void){ int Y, Z, X; // déclaration des Variables

X = 2 ;

Y = X * X ; Z = Y * X ;

}

cout << " valeur de Y = " << Y << endl;

cout << " valeur de Z = " << Z;

#include < iostream >using namespace std;

valeur de Y= 4

valeur de Z = 8

X !!

cout << " ??valeur de X = "; cin >> X;

-3

valeur de Y= 9 valeur de Z = -27

Page 12: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 12M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

#include <iostream>using namespace std; void main () { int n=2; float x= 3.4; char C= 'A' ; 

cout << " Entier n = "<< n << " ; Entrez un nouveau = " ; cin >> n ; 

cout << " Float x = "<< x << " ; Entrez un nouveau = " ; cin >> x ; 

cout << " Char C = "<< C << " ; Entrez un nouveau = " ; cin >> C ; 

cout << "\n L'entier vaut maintenant : " << n << endl; cout << " Le flottant vaut maintenant :" << x << endl; cout << " Le caractere vaut maintenant :" << C << endl ;}

Entier n = 2 ; Entrez un nouveau = 3Float x = 3.4 ; Entrez un nouveau = 5.67Char C = A ; Entrez un nouveau = y L'entier vaut maintenant : 3Le flottant vaut maintenant :5.67Le caractere vaut maintenant :y

int n=2; float x= 3.4; char C= 'A' ;

cout << "Entrez n, x et C : ";cin >> n >> x >> C;cout << C << ' ' << x << ' ' << n;

Entrez n, x et C : 5 9.9 VV 9.9 5

Page 13: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 13M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

Si X est une constante !!

void main(void){ int Y, Z, X; // déclaration des Variables

Y = X * X ; Z = Y * X ;

}

cout << " valeur de Y = " << Y << endl;

cout << " valeur de Z = " << Z;

#include < iostream >using namespace std;

const int X = 4 ; valeur de Y= 16

valeur de Z = 64

Constantes : déclarations+initialisationsSyntaxe : const Type identificateur1=Val1, identificateur2=Val2, …,…. ;

const char c = 'A';const int i=5, var_ent=8;

Exemple: const int i;

i= 5;

Page 14: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 14M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

void main(void)

{/* programme disque1

Ce programme calcule la circonférence et la surface d’un disque de rayon 2 */

const float PI= 3.14159;

int rayon = 2;

float circonference, surface;

circonference = 2* PI*rayon;

surface = PI * rayon *rayon ;

}

TP Affichage !!

cout circonference

cout surface

#include < iostream >using namespace std;

Page 15: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 15M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

void main(void)

{ /* programme disque2 : Ce programme calcule et affiche la circonférence et la surface d’un disque de rayon 2.

*/

const float PI= 3.14159;

int rayon = 2;

float circonference, surface;

circonference = 2* PI*rayon;

surface = PI * rayon *rayon ;

}

cout << " La circonference = " << circonference << endl;

cout << " La surface = " << surface;

#include < iostream >using namespace std;

TP : suite

La circonference = 12.56636

La surface = 12.56636

rayon !!

Page 16: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 16M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

void main(void)

{ /* programme disque2 : Ce programme calcule et affiche la circonférence et la surface d’un disque de rayon quelconque positif.

*/

const float PI= 3.14159;

int rayon = 2;

float circonference, surface;

circonference = 2* PI*rayon;

surface = PI * rayon *rayon ;

}

cout << " La circonference = " << circonference << endl;

cout << " La surface = " << surface;

#include < iostream >using namespace std;

TP : suite

cout << " ?valeur rayon = "; cin >> rayon;

Seulement si ( rayon >= 0 ) !!

Page 17: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 17M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

< plus petit

<= plus petit ou égal

> plus grand

>= plus grand ou égal

== égal

!= différent

Les opérateurs logiques&& et

|| ou (non exclusif)

! non

Le résultat d'une expression logique est un booléen. Il vaut true si elle est vraie et false sinon.

Le résultat d'une expression logique est un booléen. Il vaut true si elle est vraie et false sinon.

Toute valeur non nulle est considérée comme vraie et la valeur nulle comme fausse.

!!

Les opérateurs de comparaison

!!

Page 18: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 18M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

Les structures de contrôleAlternative: if-else

Itérations: for, while, do-while

Rupture de Contrôle: break, continue, return …

Choix Multiple: switch-case

Bloc 1 d’instructions

Bloc 1 d’instructions

Bloc 2 d’instructions

Bloc 2 d’instructions

oui non

Suite du programme

oui non

Suite du programmeBloc

d’instructions

Bloc d’instructions

Conditionvraie

Conditionvraie

oui

non

Bloc d’instructions

programme

Condition

vraie

Condition

vraie

Suite du programme

programme

Conditionvraie

Conditionvraie

if-else while

do-while

Page 19: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 19M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

Condition

vraie

Bloc 1 d’instructions

Bloc 2 d’instructions

oui non

Suite du programme

void main(){ // corps du programme déclaration des Cstes et Var ; instruction1 ; instruction2 ; …. }

int a, b;

a = 1;

if (Condition vraie) { BLOC 1 D'INSTRUCTIONS

}else { BLOC 2 D'INSTRUCTIONS

}

Les structures de contrôle  Les décisions - if … else

if (i) if (i != 0)

Page 20: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 20M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

  Les décisions - if … else if (Condition vraie)

{ BLOC 1 D'INSTRUCTIONS

}else { BLOC 2 D'INSTRUCTIONS

}

Bloc 1 d’instructions

Bloc 1 d’instructions

Bloc 2 d’instructions

Bloc 2 d’instructions

oui non

Suite du programme

programme

Conditionvraie

Conditionvraie

if ( X== Y) { X= X+1; Y= Y+2;}else { X = X-1 ; Y = Y- 2 ;}

Bloc 1 d’instructions

Bloc 1 d’instructions

oui non

Suite du programme

Conditionvraie

Conditionvraie

if (Condition vraie){ instruction 1; instruction 2; instruction 3; …

instruction N; }

if (Condition vraie) instruction 1;

if ( temperature > 70.0)

cout << " Alarme "<<endl;

if (Condition vraie) instruction A;else instruction B;

if (a<b) min=a;

else min=b;

Page 21: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 21M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

int i = 1;

if(i < 0)

cout <<" i < 0 \n";

cout <<" Il faut un i > 0 \n";

cout <<" alors!! \n";

Il faut un i > 0alors!!

int i = 1;

if(i < 0){

cout <<" i < 0 \n";

cout <<" Il faut un i > 0" << endl;

}

cout <<" alors!! \n";

alors!!

Condition

vraie

Bloc 1 d’instructions

oui non

Page 22: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 22M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

int i = -1;

if(i < 0){ cout <<" i < 0 \n"; cout <<" Il faut un i > 0" << endl;}

cout <<" alors!! \n";

i < 0Il faut un i > 0alors!!

int i = 1;

if(i < 0){

cout <<" i < 0 \n";

cout <<" Il faut un i > 0" << endl;

}

cout <<" alors!! \n";

alors!!

Condition

vraie

Bloc 1 d’instructions

oui non

Page 23: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 23M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

int i = -1;

if(i < 0){ cout <<" i < 0 \n"; cout <<" Il faut un i > 0" << endl;}

cout <<" alors!! \n";

i < 0Il faut un i > 0alors!!

int i = -1;

if(i < 0){ cout <<" i < 0 \n"; cout <<" Il faut un i > 0" << endl;}

else {

cout <<" alors!! \n";

}

i < 0Il faut un i > 0

Condition

vraie

Bloc 1 d’instructions

oui non

Bloc 2 d’instructions

else (i>=0) { …

Page 24: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 24M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

Ce programme calcule la circonférence et la surface d’un disque de rayon quelconque positif

if ( rayon < 0 ) {

cout << "je ne peux calculer avec un rayon négatif!\n";

}

else

{

….

Page 25: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 25M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

void main(void)

{ const float PI= 3.14159;

float circonference, surface;

int rayon; cout << " ?valeur rayon = ";  cin >> rayon;

if ( rayon < 0 ) { cout << "je ne peux calculer avec un rayon négatif!\n";

} else{ circonference = 2* PI*rayon;

surface = PI * rayon *rayon ;

}

}

cout << " La circonference = " << circonference << endl;

cout << " La surface = " << surface;

#include < iostream >using namespace std;

TP : suiteCe programme calcule et affiche la circonférence et la surface d’un disque de rayon quelconque positif.

Page 26: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 26M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

#include <iostream> using namespace std;

void main(){int i=0;cout << "i = " << i << endl;i++;cout << "i = " << i << endl; i++;cout << "i = " << i << endl;i++;cout << "i = " << i << endl;}

Les itérations – for

for( init ;(Condition vraie); itération) { /* liste d'instructions */ }

for (i = 0; i <4; i++) {

cout << "i = " << i << endl;

}

for (i = 0; i <4; ) {

cout << "i = " << i << endl;

i++ ;

}

i=0

i=1

i=2

i=3

Page 27: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 27M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

for (int i = 1; i < 8; i++) cout << setw(7) << i << setw(10) << i+1 << setw(5) << i+2 << endl;

1 2 3 2 3 4 3 4 5 4 5 6 5 6 7 6 7 8 7 8 9

7 10 5

setw(x) : la prochaine sortie sera sur une largeur de x

#include <iomanip >

Page 28: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 28M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

void main(void)

{ const float PI= 3.14159;

float circonference, surface;

float rayon;

cout << " rayon\t circonference \t surface\n";

for (rayon=2.0; rayon <= 8.0; rayon+=2.0) {

circonference = 2* PI*rayon;

surface = PI * rayon *rayon ; cout << rayon << "\t " << circonference << "\t " << surface << endl;

}

}

#include < iostream >using namespace std;

TP : suite ???rayon=2.0rayon=4.0rayon=6.0rayon=8.0

Page 29: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 29M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

int i, j=1;char a;for (i = -10; i <= 10; i++){

while(j!=0)   { cin >> a ; if(a=='x')   break; } }

Pour rompre le déroulement séquentiel d'une suite d'instructions

Instructions d'échappement

return (expression); permet de sortir de la fonction qui la contient

return (expression); permet de sortir de la fonction qui la contient

exit (expression); La fonction est interrompue. ‘expression’ : un entier indiquant le code de terminaison du processus

for (i = -10; i <= 10; i++) { if (i == 0) continue; // pour éviter la division par zéro

cout << 1 / i;}

while (Condition vraie) { ............ ; ............ ; continue; ............ ; ............ ; break; ............ ; ............ ; } ............ ;

Page 30: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 30M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

switch = AU CAS OU ... FAIRE ...

…switch(variable de type char ou int) // au cas où la variable vaut:

{ case valeur1: ......; // variable=valeur1 : exécutez ce bloc d'instructions.

.......; break;  

case valeur2:........; // variable=valeur2: exécutez ce bloc d'instructions. ........; break; . . // etc ... .

default: .......; /* aucune des valeurs précédentes: exécutez ce bloc ........; d'instructions, pas de "break" ici.*/

}

Le bloc "default" n'est pas obligatoire. valeur1, valeur2, …. doivent être des expressions constantes. L’instruction switch correspond à une cascade d’instructions if ...else

Page 31: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 31M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

….

void main( ) {

const float PI= 3.14159; float rayon = 3.5; float diametre, circonference, surface; int choix; 

cout << "1. Calculer la circonference\n"; cout << "2. Calculer la surface\n"; cout << "3. Calculer le diametre\n"; cout << "Votre choix?"; cin >> choix;

switch (choix) {case 1 : circonference = 2*PI*rayon; break;

case 2 : surface = PI*rayon*rayon; break;case 3 : diametre = 2*rayon; break;

default : cout << "Mauvais choix…\n"; }}

char choix;

switch(choix)

{

case '1': …

char choix;

switch(choix)

{

case '1': …

!!switch(i) { case 2 * j:

....

switch(i) { case 2 * j:

....

float f;

switch(f) { case 2:

....

float f;

switch(f) { case 2:

....

switch : instruction commode pour les "menus"

Page 32: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 32M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

Corrigez, si nécessaire, ce programme pour ne plus avoir d’erreurs lors de la compilation.

Qu’affiche-t-il à l’écran (après correction)?

Si choix = 1

Si choix = 5

char choix;cout << " Case 1 : 1\n";cout << " Case 2 : 2" <<endl;cout << "\nVOTRE CHOIX: ";cin >> choix;switch(choix){ case 1 : cout << "case 1";  case 2 : cout << "case 2";  default : cout << "\n Default ";}

EXCES ' '

' '

int choix;

break;

break;

Page 33: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 33M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

void main(void) { float rayon = 3.5; float diametre, circonference, surface; int choix;  cout << "1. Calculer la circonference\n"; cout << "2. Calculer la surface\n"; cout << "3. Calculer le diametre\n"; cout << "Votre choix?"; cin >> choix;

switch (choix) {case 1 : circonference = 2*PI*rayon; break;

case 2 : surface = PI*rayon*rayon; break;case 3 : diametre = 2*rayon; break;

default : cout << "Mauvais choix…\n"; } /* poursuite du programme….*/}

Page 34: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 34M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

La boucle TANT QUE ... FAIRE ... 

  Boucle pré-testée

Il s'agit de l'instruction while :tant que (expression vraie)faire{ BLOC D'INSTRUCTIONS }

Organigramme: 

while (Condition vraie){ ............; /* bloc d'instructions */ ............; ............;} Le test se fait d'abord, le bloc d'instructions n'est pas forcément exécuté.

Syntaxe:

tant que, pas jusqu’à ce que!tant que, pas jusqu’à ce que!

(Boucles)

oui non

Suite du programme

Conditionvraie

Bloc 1 d’instructions

Page 35: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 35M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

i=1; while(i<5) { cout<<"Interieur " <<i << endl; i++; } cout<<"Exterieur " <<i << endl;

Exemples

Interieur 1Interieur 2Interieur 3Interieur 4Exterieur 5

int j = 5;

cout<<"start\n";while(j == 0)

cout<<"j = "<<j--<<endl;cout<<"end\n";

int j = 5;

cout<<"start\n";while(j == 0)

cout<<"j = "<<j--<<endl;cout<<"end\n";

startend

startendtant que, pas jusqu’à ce que!

i=1;

while(i<5); { cout<<"Interieur " <<i << endl; i++; }

"tant que l'expression est vraie attendre".

itérationitération

Page 36: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 36M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

do while = REPETER … tant que

do{ ............; /* bloc d'instructions */

............;}while (Condition vraie);

Condition

vraie

Condition

vraie

oui non

Bloc d’instructions

programme

int j = 5;do cout<<"j = "<<j--<<endl;while(j > 0);cout <<"stop\n";

int j = 5;do cout<<"j = "<<j--<<endl;while(j > 0);cout <<"stop\n";

j = 5j = 4j = 3j = 2j = 1stop

j = 5j = 4j = 3j = 2j = 1stop

Suite du programme

(garantit l’exécution au moins une fois)

int j = 5;do { cout<<"j = "<<j <<endl; j--;} while(j > 0);cout <<"stop\n";

int j = 5;do { cout<<"j = "<<j <<endl; j--;} while(j > 0);cout <<"stop\n";

Page 37: ++ - 1 M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010 Mohammed BENJELLOUN Said Mahmoudi Service d’Informatique Faculté Polytechnique de Mons Mohammed.Benjelloun@umons.ac.be

++- 37M. BENJELLOUN & S. Mahmoudi : S_FPMsJ 2010

Les itérations

for( init ;(Condition vraie); itération) { /* liste d'instructions */ }

for (i = 0; i <4; i++) {

cout << "i = " << i << endl;

}

while (Condition vraie){ ............; /* bloc d'instructions */ ............; ............;}

int i = 0; while(i < 4) { cout<<"i = "<< i <<endl; i++;}

int i = 0; while(i < 4) { cout<<"i = "<< i <<endl; i++;}

do{ ............; /* bloc d'instructions */ ............;}while (Condition vraie);

int i = 0;do { cout<<"i = "<< i <<endl; i++;} while(i < 4);

int i = 0;do { cout<<"i = "<< i <<endl; i++;} while(i < 4);