La boucle tant que
La boucle tant que
La boucle WHILE
Une boucle TANT QUE, aussi appelé la boucle while, permet de répéter un bloc d’instructions un nombre de fois qui n'est pas déterminé à l’avance, dans de tel cas de figure, le dernier élément est particulier. Dans de telle boucle, on effectue généralement le traitement puis le passage au suivant. Lorsque la condition n'est plus remplie, la boucle se brise et le programme reprend à la suite des instructions de la boucle.
Par exemple dans la figure ci-dessus, si la condition "test" est vraie, on exécute Instruction 1, puis arrivé à la fin du bloc on évalue à nouveau la condition et on recommence. Quand le test renvoie un résultat faux, on quitte la boucle en sautant à instruction 2.
DÉBUT VARIABLE somme, v: ENTIER somme<-0 LIRE "Entrez une valeur:", v TANT QUE v != 0: somme <- somme + v LIRE "Entrez une valeur:", v FIN TANT QUE ÉCRIRE "La somme vaut: ", somme FIN
Il est à noter que si la condition d'entrée est fausse dés le départ, avant la même d'entrer dans la boucle, aucune instruction de la boucle ne sera appelée. Celle-ci est ignorée, et les instructions suivantes sont alors exécutées.
Exercices
- Écrivez un algorithme qui calcule la moyenne des nombres positifs non nuls donnés par l'utilisateur
moyenne
DÉBUT VARIABLE n: ENTIER VARIABLE somme, valeur: RÉEL somme<-0 n=0 LIRE "Une valeur", v TANT QUE v > 0: somme<-somme+v n<-n+1 LIRE "Une valeur", v FIN TANT QUE ÉCRIRE "La moyenne vaut: ", somme/n FIN
- Écrivez un algorithme qui calcule le minimum et le maximum d'une série de valeurs terminée par 0.
minimum et maximum
DÉBUT VARIABLE min, max, valeur: RÉEL max<- -∞ min<- +∞ LIRE "Une valeur", v TANT QUE v != 0: SI v > max: max <- v FIN SI SI v < min: min <- v FIN SI LIRE "Une valeur", v FIN TANT QUE ÉCRIRE "Le minimum vaut: ", min, " et le maximum vaut: ", max FIN
- Écrivez un algorithme qui calcule le nombre de mots d'une phrase, séparé par un espace, terminée par un ".".
nombre de mots dans une phrase
DÉBUT VARIABLE cpt: ENTIER VARIABLE c, p: CARACTÈRE cpt<-0 p ← NUL LIRE c TANT QUE c != '.': SI (c = ' ' OU c='.') ET p != ' ': cpt<-cpt+1 FIN SI p <- c LIRE c FIN TANT QUE ÉCRIRE "La phrase contient: ", cpt, "mots." FIN
- Écrivez un algorithme qui calcule par soustraction successive le quotient et le reste de la division entière de deux entiers donnés par l'utilisateur.
division entière
DÉBUT VARIABLE d, q, r: ENTIER LIRE "Quel est le nombre que vous souhaitez diviser? ", r LIRE "Quel est le diviseur? ", d q<-0 TANT QUE r >= d: r <- r - d q <- q + 1 FIN TANT QUE ÉCRIRE "Le quotient vaut", q, " et le reste vaut", r FIN
- Écrivez un algorithme qui demande un entier à l'utilisateur et qui construit son palindrome. Astuce: Calculer la division entière par 10.
nombre palindrome
DÉBUT VARIABLE n, p: ENTIER LIRE "Quel nombre? ", n TANT QUE n != 0: r <- n % 10 ECRIRE -n r n ← (n-r) / 10 FIN TANT QUE FIN
- Écrivez un algorithme qui lit un nombre et détermine s'il est premier.
Vérifier si un nombre est premier en testant tous les nombres.
DÉBUT VARIABLE n, i: ENTIER LIRE "Quel nombre? ", n i←2 TANT QUE n % i != 0: i <- i +1 FIN TANT QUE SI i == n: ÉCRIRE "Le nombre est premier" SINON: ÉCRIRE "Le nombre n'est pas premier". FIN SI FIN
Vérifier si un nombre est premier en testant uniquement les diviseurs potentiels.
DÉBUT VARIABLE n, i: ENTIER LIRE "Quel nombre? ", n i<-2 TANT QUE n % i != 0 ET i < √n: i ← i +1 FIN TANT QUE SI i > √n: ÉCRIRE "Le nombre est premier" SINON: ÉCRIRE "Le nombre n'est pas premier". FIN SI FIN
- Écrivez un algorithme qui calcule le PGCD de deux nombres entrés par l'utilisateur. Astuce: Il peut être trouvé facilement à l'aide de soustraction successive du plus petit par le plus grand.
Algorithme dEuclide par soustraction
DÉBUT VARIABLE a, b: ENTIER LIRE "Quelle est la valeur de a? ", a LIRE "Quelle est la valeur de b? ", b TANT QUE a != b: SI a > b: a <- a − b SINON: b <- b − a FIN SI FIN TANT QUE ÉCRIRE a
Algorithme dEuclide par modulo
DÉBUT VARIABLE a, b, t: ENTIER LIRE "Quelle est la valeur de a? ", a LIRE "Quelle est la valeur de b? ", b TANT QUE b != 0: t <- b b <- a % b a <- t FIN TANT QUE ÉCRIRE a
Tags
None
Subscribers
None
- Last Author
- kossolax
- Last Edited
- Nov 12 2020, 1:15 PM