- 74 - La composition conditionnelle La composition alternative La composition itérative : la forme REPETER La composition itérative : la forme
- 75 - Le problème : Vous êtes sur le bord d'une rivière à côté d'une barque qui est amarrée à un poteau. La barque est positionnée vers l'autre rive. Vous devez atteindre l'autre rive et y attacher la barque.
- 76 - Détacher la barque
- 77 - Monter dans la barque.
- 78 - Prendre les rames
- 79 - Donner un coup de rame Donner un coup de rame...
- 80 - SI on atteint l'autre rive, arrêter de ramer BOINGG
- 81 - Ranger les rames
- 82 - Descendre de la barque
- 83 - Attacher la barque
- 84 - Gagné! vous avez atteint l'autre rive
- 85 - Détacher la barque Monter dans la barque Prendre les rames Donner un coup de rames SI Autre rive non atteinte Donner un coup de rames FINSI SI Autre rive non atteinte Donner un coup de rames FINSI...... Ranger les rames Descendre de la barque Attacher la barque Comment décrire ce problème? Avec des conditionnelles? Problème Quand on monte dans le bateau, on est incapable de prévoir le nombre de coups de rames à donner Solution On doit disposer de structures permettant de décrire la répétition d'actions => STRUCTURES ITERATIVES
- 86 - STRUCTURE REPETER STRUCTURE REPETER Détacher la barque Monter dans la barque Prendre les rames REPETER Donner un coup de rames JUSQUA Autre rive atteinte BOUCLE Instruction ou groupe d'instructions exécutées plusieurs fois de suite ITERATION Une exécution de ces instructions Ranger les rames Descendre de la barque Attacher la barque
- 87 - Schéma d'exécution du REPETER Schéma d'exécution du REPETER Action Avant REPETER Action...... JUSQU'A <ConditionArrêt> Action Après Action Avant Action ou Série d'actions L'ACTION (ou série d'action) EST TOUJOURS EXECUTEE AU MOINS UNE FOIS LA CONDITION D'ARRET - est VRAI ou FAUX - est évaluée APRES chaque itération - doit être atteinte un jour (=VRAI) FAUX Condition d'arrêt VRAI Action Après
- 88 - Exemple de boucle infinie (la condition d'arrêt ne sera jamais atteinte) Océan atlantique
- 89 - Forme PASCAL du REPETER Forme PASCAL du REPETER Action Simple repeat <Instruction>; until <ConditionArrêt>; Série d'actions repeat <Instruction>; <Instruction>; <Instruction>; <Instruction>; until <ConditionArrêt>; LA FORME REPETER N'EXISTE PAS EN JAVASCRIPT
- 90 - Exemple PASCAL Exemple PASCAL program MotDePasse; uses Wincrt; var Mot: STRING; begin clrscr; repeat write('tapez votre mot de passe? '); readln (mot) ; until (mot = 'sésame') ; writeln ('Bravo, vous avez trouvé le mot de passe') ; end.
- 91 - La composition conditionnelle La composition alternative La composition itérative : la forme REPETER La composition itérative : la forme
- 92 - Nouveau problème Nouveau problème Vous devez vous rendre à pied au café "Le Triomphe" situé sur la place de l'etoile à Paris. Vous savez que ce café est situé à l'angle d'une rue. Vous pouvez arriver depuis n'importe quelle rue.
- 93 - Arriver sur la place de l'etoile
- 94 - Test : Existe-t-il un café "Le Triomphe" au coin de la rue?
- 95 - Se rendre à la rue suivante
- 96 - Test : Existe-t-il un café "Le Triomphe" au coin de la rue?
- 97 - Se rendre à la rue suivante
- 98 - Test : Existe-t-il un café "Le Triomphe" au coin de la rue?
- 99 - Entrer dans le café Boire un coup
- 100 - Première Solution Avec des conditionnelles Arriver sur la place de l'etoile SI il existe un café "Le triomphe" au coin de la rue Entrer dans le café Boire un coup SINON Se rendre à la rue suivante SI il existe un café "Le triomphe" au coin de la rue Entrer dans le café Boire un coup SINON Se rendre à la rue suivante SI il existe un café "Le triomphe" au coin de la rue Entrer dans le café Boire un coup etc... PROBLEME : ON NE CONNAIT PAS D'AVANCE LE NOMBRE D'ITERATIONS
- 101 - Deuxième Solution Avec la forme REPETER Arriver sur la place de l'etoile REPETER Se rendre à la rue suivante JUSQU'A il existe un café "Le triomphe" au coin de la rue Entrer dans le café Boire un coup
- 102 - Comment marche cette solution dans le cas où le café existe quand on arrive sur la place? PROBLEME : L'Itération peut être exécutée zéro fois On a besoin d'une nouvelle structure : STRUCTURE TANTQUE
- 103 - Structure TANTQUE Structure TANTQUE Arriver sur la place de l'etoile TANTQUE il n'existe pas de café "Le triomphe" au coin de rue Se rendre à la rue suivante FINTANTQUE Entrer dans le café Boire un coup
- 104 - Schéma d'exécution du TANTQUE Schéma d'exécution du TANTQUE Action Avant Action Avant TANTQUE <ConditionContinuation> Action...... FINTANTQUE Action Après L'ACTION (ou série d'action) PEUT ETRE EXECUTEE ZERO FOIS LA CONDITION DE CONTINUATION - est VRAI ou FAUX - est évaluée AVANT chaque itération - doit être évaluée à FAUX un jour Action ou Série d'actions Condition de continuation VRAI Action Après FAUX
- 105 - Une boucle TANTQUE peut aussi ne jamais se terminer Une boucle TANTQUE peut aussi ne jamais se terminer supposition : on vous a donné un mauvaise information (il n'existe pas de café "Le triomphe"). Si vous respectez l'algorithme, vous passerez votre vie à tourner autour de la Place. SOLUTION : Arriver sur la place de l'etoile sortir son calepin TANTQUE il n'existe pas de café "Le triomphe" au coin de rue ET......le nom de la rue n'est pas noté dans le calepin Noter le nom de la rue dans le calepin Se rendre à la rue suivante FINTANTQUE SI il existe un café "Le triomphe" au coin de rue Entrer dans le café Boire un coup FINSI
- 106 - Forme JAVASCRIPT du TANTQUE Forme JAVASCRIPT du TANTQUE Action Simple while (<ConditionContinuation>) <Instruction>; Série d'actions while (<ConditionContinuation>) { <Instruction>; <Instruction>; <Instruction>; }
- 107 - Exemple JAVASCRIPT Exemple JAVASCRIPT var nombreatrouver, nombresaisi ; nombreatrouver = 445 ; nombresaisi = prompt ('Devine le chiffre? ', ""); while (!(nombresaisi == nombreatrouver )) { nombresaisi = prompt ('Faux, essaie encore ', nombresaisi); } alert ('Bravo, le nombre a trouver etait bien ' + nombresaisi);