26
CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative 1- Comment écrire une instruction TANT QUE 2- Comment le CPU exécute une boucle TANT QUE 3- EXEMPLES : - Table de multiplication - Programme avec reprise - Saisie validée

CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

  • Upload
    kaida

  • View
    19

  • Download
    0

Embed Size (px)

DESCRIPTION

CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative. 1- Comment écrire une instruction TANT QUE. 2- Comment le CPU exécute une boucle TANT QUE. 3- EXEMPLES : - Table de multiplication - Programme avec reprise - Saisie validée. - PowerPoint PPT Presentation

Citation preview

Page 1: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

CYCLE 4 : BOUCLES TANT QUERépéter dans un programme avec une Instruction itérative

1- Comment écrire une instruction TANT QUE

2- Comment le CPU exécute une boucle TANT QUE

3- EXEMPLES :

- Table de multiplication

- Programme avec reprise

- Saisie validée

Page 2: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

CYCLE 4 : BOUCLES TANT QUERépéter dans un programme avec une Instruction itérative

1- Comment écrire une instruction TANT QUE

do { } while ();

while () {}

Page 3: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

3

Instruction FAIRE - TANT QUE

int main()

{ /* Répétition sur condition : FAIRE - TANT QUE

do

{ instructions;

} while (condition); */

int a=2;

do

{ printf("passage boucle"); a= a-1;

} while (a>0);

}

Page 4: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

4

int main()

{ /* Répétition sur condition : TANT QUE

while (condition)

{ instructions;

} */

int a=2;

while (a>=0)

{ printf("passage boucle"); a= a-1;

}

}

Instruction TANT QUE

Page 5: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

5

Règle de programmation : lisibilité code Indentations dans les accolades du while

UN ; à la fin du while() seulement pour le do while !!!!

do

{ instructions;

} while (condition);

while (condition)

{ instructions;

}

À NOTER !!

Page 6: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

6

Le TANT QUE répète l’exécution d’un bloc d’instructions tant qu’une condition est vraie

(boucle conditionnelle)

Rôle des instructions TANT QUE

Page 7: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

CYCLE 4 : BOUCLES TANT QUERépéter dans un programme avec une Instruction itérative

2- Comment le CPU exécute une boucle TANT QUE

Page 8: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

8

Le CPU recommence l’exécution du bloc d’instructions tant que la condition de poursuite de boucle est VRAIE. Dès que la condition de

fin de boucle devient VRAIE, la boucle s’arrête :

• Le CPU passe le DO et exécute les instructions de boucle• Le CPU évalue la condition de poursuite de boucle : condition• Si condition VRAIE, le CPU réexécute la boucle• Lorsque le CPU revient au WHILE, le CPU évalue condition• Quand la condition devient FAUSSE, le CPU sort du TANTQUE.

do

{ instructions;

} while (condition);

Principe d’exécution de l’instruction FAIRE – TANT QUE

Page 9: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

9

Le CPU recommence l’exécution du bloc d’instructions tant que la condition de poursuite de boucle est VRAIE. Dès que la condition de

fin de boucle devient VRAIE, la boucle s’arrête :

• Le CPU évalue la condition de poursuite de boucle : condition• Si condition VRAIE, le CPU exécute la boucle, puis revient au WHILE• De retour au WHILE, le CPU évalue condition• Quand la condition devient FAUSSE, le CPU sort du TANTQUE.

while (condition)

{ instructions;

}

Principe d’exécution de l’instruction TANT QUE

Page 10: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

10

Le do {} while s’exécute toujours au moins une fois

do

{ instructions;

} while (condition);

while (condition)

{ instructions;

}

Pr écision sur le premier passage dans une TANT QUE

Page 11: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

11

do

{ instructions;

} while (condition);

Bloc d’instructions

Condition poursuite ?

VRAI

FAUX

Suite du programme

Organigramme de l’instruction FAIRE - TANT QUE

Page 12: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

12

INSTRUCTION PROCESSEUR

1- do exécution des instructions de la boucle

2- while évaluation condition logique de poursuite : VRAI

4- while évaluation condition logique de poursuite : VRAI

5- do exécution des instructions de la boucle

3- do exécution des instructions de la boucle

6- while évaluation condition logique de poursuite : FAUX

7- suite du programme après la fin du TANTQUE

Simulation d’exécution du FAIRE – TANT QUE

Page 13: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

13

while (condition)

{ instructions;

}

Condition poursuite ?

Bloc d’instructions

VRAI

FAUX

Suite du programme

Organigramme de l’instruction TANT QUE

Page 14: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

14

INSTRUCTION PROCESSEUR

2- { exécution des instructions de la boucle

1- while évaluation condition logique de poursuite : VRAI

3- } : while évaluation condition logique de poursuite : VRAI

5- } : while évaluation condition logique de poursuite : FAUX

6- suite du programme après la fin du TANTQUE

4- { exécution des instructions de la boucle

Simulation d’exécution du TANT QUE

Page 15: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

15

Décomposer le problème, à partir d’exemples, pour trouver les instructions qui

se répètent

CONTENU de la boucle

Ecrire la boucle TANT QUE

Vérifier la boucle TANT QUE :Dérouler l’exécution avec les valeurs limites et

un cas standard

TROUVER la CONDITION de POURSUITE de boucle

(si vous trouvez la condition de fin : l’inverser)Éventuellement, FIXER initialisation et

incrémentation

Mise au point d’une boucle TANT QUE

Page 16: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

CYCLE 4 : BOUCLES TANT QUERépéter dans un programme avec une Instruction itérative

3- EXEMPLES :

- Table de multiplication

- Programme avec reprise

- Saisie validée

Page 17: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

17

int main()

{ int produit, i;

/* comptage et affichage des produits */

i= 0;

do

{ produit= i*2;

printf("%d x 2 = %d\n",i,produit);

i++;

} while (i<11);

}

Affichage de la table de multiplication par 2

Page 18: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

18

Instruction Processeur

Mémoire

2- Initialisation : i= 0 affectation

i&i 0

7- suite après TANTQUE

  

3- do a- calcul: 0x2 -produit= i*2; b- affectation -printf(); c- affichage-i= i+1; d- calcul: 0+1

e- affectation

i&i 1

produit&produit

00 X 2 =

0-

4- while évaluation condition poursuite 1<11: VRAI

5- do a- calcul: 1x2 -produit= i*2; b- affectation -printf(); c- affichage-i= i+1; d- calcul: 1+1

e- affectation

produit&produit

2

i&i

2

0 X 2 = 01 X 2 = 2-

Réservation mémoire

1- Déclaration variables produit&produit i&i

… … …

6- while éval condition poursuite 11<11: FAUX

0 X 2 = 0

1 X 2 = 2 .

10 X 2 = 20

Page 19: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

19

Une boucle POUR peut toujours être transformée en boucle TANT QUE.

i=1;

do

{ instructions;

i= i+1;

} while (i<=5);

for ( i=1 ; i<=5 ; i=i+1 )

{ instructions;

}

Equivalence entre les boucles POUR et TANT QUE

Page 20: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

20

La boucle TANT QUE permet de faire plus de choses : la reprise dépend d’une condition logique quelconque.

On pourrait tout écrire avec des TANT QUE.

Quand on sait combien de fois la boucle doit tourner, la POUR est plus simple.

Différence entre les boucles POUR et TANT QUE

Page 21: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

21

int main()

{ float a, b, resu ; int choixMenu;

do // reprise du programme tant que l’utilisateur ne veut pas sortir

{ printf(“1) addition,\n2) soustraction\n3) SORTIR\n\tChoix :");

scanf(" %d",&choixMenu);

printf("Donner 2 réels:"); scanf("%f%f",&a,&b);

if (choixMenu==1) // addition

{ resu= a+b; }

if (choixMenu==2) // soustraction

{ resu= a-b; }

printf("Resultat de l’opération : %.2f",resu);

} while (choixMenu!=3);

}

GESTION D’UN MENU Le programme réalise une calculatrice avec reprise

Page 22: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

22

La boucle de reprise du programme permet d’éviter d’avoir à relancer le programme (RUN) pour une nouvelle exécution.

Précisions sur la gestion d’un menu

Page 23: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

Le programme de calculatrice recommence si l’utilisateur veut faire un nouveau calcul.

Page 24: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

24

int main()

{ int x;

do // reprise de saisie si saisie invalide

{ printf("Donner une valeur comprise entre 5 et 150 : ");

scanf("%d",&x);

if (x<5 || x>150 ) // message d’erreur si saisie invalide

{ printf("Erreur de saisie");

}

} while (x<5 || x>150 );

}

SAISIE VALIDEE Le programme saisit un entier [5,150]

Page 25: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

25

le programmeur doit vérifier la validité de toutes les saisies du programme et faire ressaisir en cas d’erreur

le programmeur doit bien informer l’utilisateur de ce qui doit être tapé au clavier et des erreurs qu’il commet

Précisions sur la SAISIE VALIDEE

Page 26: CYCLE 4 : BOUCLES TANT QUE Répéter dans un programme avec une Instruction itérative

Le programme saisit un réel dans [-50.5,100.25] exclusivement.