PRG Chapitre 3 - Structure de contr�le : d�cisions et boucles

for (int i=10; i > 1; --i) {
cout << i << " ";
}

10 9 8 7 6 5 4 3 2

int s=1;
int n;
for (n = 1; n <= 5; n++)
{
s = s + n;
n++;
}
cout << s << " " << n;

107 (les 2 instructions n++ se suivent et �quivalent � n += 2 au moment d'effectuer s = s + n, n vaut 1 3 5. en sortie de boucle, n vaut 7, premiere valeur pour laquelle n <= 5 est faux s vaut au final 1 + 1 + 3 + 5 = 10)

Les valeurs de cas peuvent �tre donn�es par des variables

faux (Il ne peut s'agir que de valeurs statiques.)

int i = 0, j=0;
while (i <= 5) i += 2; j++;
cout << i << j;

61

for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 4; j++) {
cout << "*";
}
cout << "-";
}

****-***
-
-
*-****-****-

Combien de fois la boucle suivante est-t-elle ex�cut�e?
for (int i = 0; i < 10; i++)

10

Sans instruction particuli�re, apr�s le traitement d'une branche, on passe � la branche suivante

vrai

Apr�s le mot r�serv� case on peut donner une liste de valeurs s�par�es par des virgules :

faux

for (int i = 1; i <= 3; i++) { for (int j = 1; j <= 5; j++) { if (j % 2 == 0) { cout << "*"; } else { cout << "_"; } } cout << "-"; }

_*_*_-_*_*_-_
_
_
*_-_*_*_-_
_
_-

int i=0;
while (i < 11) {
i += 2;
cout << i << " ";
}

2 4 6 8 10 12

cout << (5 > 3 > 1);

0

for (int i=1; i < 10; ++i) {
if (i % 2 == 0) {
cout << i << " ";
}
}

2 4 6 8

int main() {
int i, j, k;
i = 3; j = 2;
k = i++ < j || j++ != 3;
cout << i << j << k;
}

431

int i, j, k;
i = 3; j = 2;
k = i++ > j || j++ != 3;
cout << i << j << k;

421

La branche "default" peut venir n'importe o� dans la liste des cas

true

for (int i = 1; i <= 4; i++) { for (int j = 1; j <= i; j++) { cout << "*"; } cout << "-"; }

*-**-**
-
-
*-**
-
***-

int main() {
int i = 0, j = 0;
while (j <= 5) i += ++j;
cout << i << j;
}

216

if(j==0) {
b = true;
}
else {
if (i / j < k) {
b = false;
}
else {
b = true;
}
}

b = !j or i / j >= k;

int i=11;
while (i--) {
cout << i-- << " ";
}

10 8 6 4 2 0 -2 ...

Deux branches diff�rentes peuvent comporter la m�me valeur de cas

faux

if ( x < y ) { a = x; } else if ( x <= z ) { a = y; } else { a = z; }

a = x < y ? x : x <= z ? y : z;

int s=1; for (int n = 1; n <= 10; cout << s << " ") { n = n + 2; s = s + n; }

4 9 16 25 36

int i=12;
while (i--) {
cout << --i << " ";
}

10 8 6 4 2 0

int i = 0;
while (i <= 5) i++;
cout << i;

6

int i = 0, j = 0;
while (i <= 5) i += j++;
cout << i << j;

64(� chaque it�ration, j s'incr�mente de 1, i ajoute la valeur pr�c�dente de j.
valeurs de i et j aux diff�rentes it�rations:
j = 1, i = 0
j = 2, i = 1
j = 3, i = 3
j = 4, i = 6)

int i=1;
while (i <= 5) {
cout << 2 * i++ << " ";
}

2 6 8 10

int x = 0; cout << ( -1 < x < 1 ) ;

0

double x = 3.5; if (x > 2) { cout << "2<x<=3"; } else if (x > 3) { cout << "3<x<=4"; } else if (x > 4) { cout << "4<x"; } else { cout << "x<=2"; }

2<x<=3

for (int i=1; i < 10; ++i) {
cout << i << " ";
}

1 2 3 4 5 6 7 8 9

Les cas dans les diff�rentes branches doivent �tre donn�s dans un ordre croissant des valeurs

faux

int n;
cout << "Donnez un entier : ";
cin >> n;
switch (n) {
case 0: cout << "A";
case 1:
case 2: cout << "B";
break;
case 3:
case 4:
case 5: cout << "C";
default: cout << "D";
}

B

indiquer combien de fois la boucle est ex�cut�e for (int i = -10; i <= 10; i = i + 2) ...

11

int i=1;
while (i != 9) {
cout << (i = i + 2) << " ";
}

3 5 7 9