• Aucun résultat trouvé

Boucles conditionnelles

N/A
N/A
Protected

Academic year: 2022

Partager "Boucles conditionnelles"

Copied!
6
0
0

Texte intégral

(1)

Skander Zannad et Judicaël Courant Lycée La Martinière-Monplaisir

(2)

1 Limites des boucles inconditionnelles

– On peut certes s’arrêter avant la fin (break).

– Mais il faut avoir une idée du nombre maximal d’itérations.

(3)

2 Calcul du pgcd

Algorithme d’Euclide pour calculer le plus grand diviseur de deux entiers relatifsaetb:

1. Remplaceraetbpar leurs valeurs absolues.

2. Sib= 0, c’est terminé, le pgcd vauta.

3. Sinon, noterrle résultat de la division deaparb.

4. Remplaceraparbetbparr et recommencer à la deuxième étape.

Problème : on n’a pas d’idée du nombre d’itérations nécessaires.

(4)

3 Boucle indéfinie/conditionnelle

def pgcd(a,b) :

# p r é c o n d i t i o n : ( a , b ) != ( 0 , 0) u = abs(a)

v = abs(b) while v != 0 :

# i n v a r i a n t : PGCD( a , b ) == PGCD( u , v ) r = u % v

(u, v) = (v, r) return u

(5)

4 Correction

4.1 Correction partielle

On justifie la correction (partielle) de la boucle par un invariant en début de boucle. Il convient de vérifier :

– Que l’invariant est vrai à l’entrée dans la boucle.

– Que s’il est vrai à la fin d’une itération, il est vrai au début de la suivante.

(6)

4.2 Terminaison

Pourquoipartielle? Parce qu’il se peut que la boucle ne s’arrête jamais.

Reste à justifier laterminaisonde la boucle.

On le fait avec unvariant: une quantité entière positive ou nulle qui décroît à chaque tour de boucle.

while v != 0 :

# i n v a r i a n t : PGCD( a , b ) == PGCD( u , v )

# v a r i a n t : v r = u % v

(u, v) = (v, r)

Références

Documents relatifs

En utilisant la boucle précédente, ou en utilisant la fonction factorial() du module math, écrire une boucle permettant de calculer la somme des factorielles de tous les

Quel affichage obtient-on avec cet algorithme (c’est-à-dire quelle est la valeur de n à la fin de l’algorithme) ?.. 3 On considère l’algorithme ci-dessous rédigé en

Au critère de la rémunération « substantiellement liée aux résultats de l'exploitation du service » de l'article 3 de la loi MURCEF et de l'arrêt Préfet des Bouches-du-Rhône

Carte 1 : Taux d’hospitalisation (nombre de patients hospitalisés pour Covid au 31 août 2020 rapportés à la population totale du département ; données exprimées pour 100

Algorithme d’Euclide pour calculer le plus grand diviseur de deux entiers relatifs a et b

Écrire une fonction nettoie(liste) qui, étant donnée une liste liste, renvoie, sans la modier et sans modier l'ordre des éléments, une liste contenant les éléments de liste

La relation doit devenir vraie pour que le programme n'entre pas dans une boucle infinie.. La relation doit devenir fausse pour que le programme n'entre pas dans une

[r]