Notion d’algorithme www.mp933.fr Boucles et tests avec et sans Python

publicité
Notion d’algorithme
Stéphane Gonnord
Notion d’algorithme
Boucles et tests avec et sans Python
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Stéphane Gonnord
Additionner
Multiplier
Mais encore...
[email protected]
www.mp933.fr
Lycée du parc - Lyon
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
Vendredi 4, 11 et 18 octobre 2013
Lycée du parc
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Plan
Stéphane Gonnord
1. Formaliser des tâches répétitives :
I
I
des exemples de la vraie vie ;
un peu de mathématiques
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
2. Des maths un peu élaborées :
I
I
I
L’addition ;
la multiplication ;
etc.
3. Boucles et tests en Python :
I
I
boucles ;
tests.
4. Des tas d’exemples et exercices :
I
I
primalité, indice de dépassement... ;
up side down.
5. Ce qui reste à faire :
I
I
prouver ;
évaluer la complexité.
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Un premier exemple gonflé (1/2)
Exercice
Comment obtenir cet affichage ?
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
Allo ?
Allo ?
Allo ?
Non mais allo quoi !
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Un premier exemple gonflé (1/2)
Exercice
Comment obtenir cet affichage ?
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
Allo ?
Allo ?
Allo ?
Non mais allo quoi !
I
Algorithme :
pour i allant de 10 à 12 faire
Afficher « Allo ? »
Afficher « Non mais allo quoi ! »
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Un premier exemple gonflé (1/2)
Exercice
Comment obtenir cet affichage ?
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
Allo ?
Allo ?
Allo ?
Non mais allo quoi !
I
Algorithme :
pour i allant de 10 à 12 faire
Afficher « Allo ? »
Afficher « Non mais allo quoi ! »
I
Programme :
for i in range(10,13):
print("Allo ?")
print("Non mais allo quoi !")
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Un premier exemple gonflé (2/2)
pour i allant de 10 à 12 faire
pour i allant de 10 à 12 faire
Afficher « Allo ? »
Afficher « Allo ? »
Afficher « Non mais allo quoi ! »
Afficher « Non mais allo quoi ! »
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Un premier exemple gonflé (2/2)
pour i allant de 10 à 12 faire
pour i allant de 10 à 12 faire
Afficher « Allo ? »
Afficher « Allo ? »
Afficher « Non mais allo quoi ! »
Afficher « Non mais allo quoi ! »
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
for i in range(10,13):
for i in range(10,13):
print("Allo ?")
print("Allo ?")
print("Non mais allo quoi !")
print("Non mais allo quoi !")
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Un premier exemple gonflé (2/2)
pour i allant de 10 à 12 faire
pour i allant de 10 à 12 faire
Afficher « Allo ? »
Afficher « Allo ? »
Afficher « Non mais allo quoi ! »
Afficher « Non mais allo quoi ! »
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
for i in range(10,13):
for i in range(10,13):
print("Allo ?")
print("Allo ?")
print("Non mais allo quoi !")
print("Non mais allo quoi !")
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Allo ?
Allo ?
Allo ?
Non mais allo quoi !
Allo ?
Non mais allo quoi !
Allo ?
Non mais allo quoi !
Allo ?
Non mais allo quoi !
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Compter et sommer des machins
Exercice
Comment compter le nombre d’entiers ≤ 1000 qui sont
premiers ? Et leur somme ?
c ← 0 # un compteur
pour i allant de 1 à 1000 faire
si i est premier alors
c ← c +1
Résultat : c
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Compter et sommer des machins
Exercice
Comment compter le nombre d’entiers ≤ 1000 qui sont
premiers ? Et leur somme ?
c ← 0 # un compteur
pour i allant de 1 à 1000 faire
si i est premier alors
c ← c +1
Résultat : c
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
s ← 0 # un «sommeur»
pour i allant de 1 à 1000 faire
si i est premier alors
s ← s+i
Résultat : s
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
IRL : corriger des copies
I
Un premier point de vue :
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
pour c décrivant l’ensemble C des copies faire
tâches répétitives
pour p décrivant l’ensemble P des parties du DS faire
Corriger la partie p de la copie c ; noter cette partieDes maths très
élaborées
Noter c
Dans la vraie vie
En mathématiques
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
IRL : corriger des copies
I
Un premier point de vue :
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
pour c décrivant l’ensemble C des copies faire
tâches répétitives
pour p décrivant l’ensemble P des parties du DS faire
Corriger la partie p de la copie c ; noter cette partieDes maths très
élaborées
Noter c
Dans la vraie vie
En mathématiques
Additionner
Multiplier
I
Un autre :
Boucles et tests en
pour p décrivant P faire
Python
pour c décrivant C faire
Corriger la partie p de la copie c ; noter cette partieExemples et
Mais encore...
Syntaxe des boucles
Syntaxe des tests
exercices
pour c décrivant C faire
Noter c
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
IRL : corriger des copies
I
Un premier point de vue :
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
pour c décrivant l’ensemble C des copies faire
tâches répétitives
pour p décrivant l’ensemble P des parties du DS faire
Corriger la partie p de la copie c ; noter cette partieDes maths très
élaborées
Noter c
Dans la vraie vie
En mathématiques
Additionner
Multiplier
I
Un autre :
Boucles et tests en
pour p décrivant P faire
Python
pour c décrivant C faire
Corriger la partie p de la copie c ; noter cette partieExemples et
Mais encore...
Syntaxe des boucles
Syntaxe des tests
exercices
pour c décrivant C faire
Noter c
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
I
Il ne s’agit pas de boucles « sur des entiers »
Ce qui reste à faire
Correction et terminaison
Complexité
Exponentiation
Exercice
Comment calculer 84142 avec seulement des multiplications ?
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Exponentiation
Exercice
Comment calculer 84142 avec seulement des multiplications ?
I
r ← 841 (r va être multiplié par 841... 41 fois)
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Exponentiation
Exercice
Comment calculer 84142 avec seulement des multiplications ?
I
I
r ← 841 (r va être multiplié par 841... 41 fois)
r ← r × 841 (r vaut alors 8412 )
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Exponentiation
Exercice
Comment calculer 84142 avec seulement des multiplications ?
I
I
I
I
r ← 841 (r va être multiplié par 841... 41 fois)
r ← r × 841 (r vaut alors 8412 )
r ← r × 841 (r vaut alors 8413 )
...
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Exponentiation
Exercice
Comment calculer 84142 avec seulement des multiplications ?
I
I
I
I
I
r ← 841 (r va être multiplié par 841... 41 fois)
r ← r × 841 (r vaut alors 8412 )
r ← r × 841 (r vaut alors 8413 )
...
r ← r × 841 (r vaut alors 84142 )
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Exponentiation
Exercice
Comment calculer 84142 avec seulement des multiplications ?
I
I
I
I
I
r ← 841 (r va être multiplié par 841... 41 fois)
r ← r × 841 (r vaut alors 8412 )
r ← r × 841 (r vaut alors 8413 )
...
r ← r × 841 (r vaut alors 84142 )
Algorithme
r ← 841
pour i allant de 0 à 40 faire
r ← r × 841
Résultat : r
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Exponentiation
Exercice
Comment calculer 84142 avec seulement des multiplications ?
I
I
I
I
I
r ← 841 (r va être multiplié par 841... 41 fois)
r ← r × 841 (r vaut alors 8412 )
r ← r × 841 (r vaut alors 8413 )
...
r ← r × 841 (r vaut alors 84142 )
Algorithme
r ← 841
pour i allant de 0 à 40 faire
r ← r × 841
Résultat : r
I
La deuxième instruction n’était pas r ← r × r
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Exponentiation
Exercice
Comment calculer 84142 avec seulement des multiplications ?
I
I
I
I
I
r ← 841 (r va être multiplié par 841... 41 fois)
r ← r × 841 (r vaut alors 8412 )
r ← r × 841 (r vaut alors 8413 )
...
r ← r × 841 (r vaut alors 84142 )
Algorithme
r ← 841
pour i allant de 0 à 40 faire
r ← r × 841
Résultat : r
I
I
La deuxième instruction n’était pas r ← r × r
Pour x n , il vaut mieux partir de r ← 1 ; pourquoi ?
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Factorielle
Exercice
Comment calculer 841! avec seulement des multiplications ?
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Factorielle
Exercice
Comment calculer 841! avec seulement des multiplications ?
I
r ← 1 (r va être multiplié par 2, puis 3, ... puis 841)
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Factorielle
Exercice
Comment calculer 841! avec seulement des multiplications ?
I
r ← 1 (r va être multiplié par 2, puis 3, ... puis 841)
I
r ← r × 2 (r vaut alors 2)
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Factorielle
Exercice
Comment calculer 841! avec seulement des multiplications ?
I
r ← 1 (r va être multiplié par 2, puis 3, ... puis 841)
I
r ← r × 2 (r vaut alors 2)
I
r ← r × 3 (r vaut alors 2 × 3)
I
...
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Factorielle
Exercice
Comment calculer 841! avec seulement des multiplications ?
I
r ← 1 (r va être multiplié par 2, puis 3, ... puis 841)
I
r ← r × 2 (r vaut alors 2)
I
r ← r × 3 (r vaut alors 2 × 3)
I
...
I
r ← r × 841 (r vaut alors 841!)
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Factorielle
Exercice
Comment calculer 841! avec seulement des multiplications ?
I
r ← 1 (r va être multiplié par 2, puis 3, ... puis 841)
I
r ← r × 2 (r vaut alors 2)
I
r ← r × 3 (r vaut alors 2 × 3)
I
...
I
r ← r × 841 (r vaut alors 841!)
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Algorithme
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
r ←1
pour i allant de 2 à 841 faire
r ← r ×i
Résultat : r
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
IRL : Mr G. et la trigonométrie
I
Un algorithme pratiqué par tous :
Faire apprendre un formulaire basique de trigonométrie
Poser deux ou trois formules en DS
tant que ce n’est pas bien appris faire
grogner ;
exiger que ce soit travaillé mieux que ça ;
poser deux ou trois formules en DS
Passer à la suite
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
IRL : Mr G. et la trigonométrie
I
I
Un algorithme pratiqué par tous :
Faire apprendre un formulaire basique de trigonométrie
Poser deux ou trois formules en DS
tant que ce n’est pas bien appris faire
grogner ;
exiger que ce soit travaillé mieux que ça ;
poser deux ou trois formules en DS
Passer à la suite
Problème de la terminaison...
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
IRL : Mr G. et la trigonométrie
I
I
Un algorithme pratiqué par tous :
Faire apprendre un formulaire basique de trigonométrie
Poser deux ou trois formules en DS
tant que ce n’est pas bien appris faire
grogner ;
exiger que ce soit travaillé mieux que ça ;
poser deux ou trois formules en DS
Passer à la suite
Problème de la terminaison...
Exercice
Formaliser l’algorithme, dans le cas (improbable) où la trigo
ne serait jamais bien apprise.
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Encore une boucle « Tant que »
Notion d’algorithme
Stéphane Gonnord
Exercice
Plan
Déterminer le plus petit entier n tel que n! ≥ 1010
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Encore une boucle « Tant que »
Notion d’algorithme
Stéphane Gonnord
Exercice
Plan
Déterminer le plus petit entier n tel que n! ≥ 1010
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
I
Premier algorithme :
n←1
tant que n! < 1010 faire
n ← n+1
Résultat : n
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Encore une boucle « Tant que »
Notion d’algorithme
Stéphane Gonnord
Exercice
Plan
Déterminer le plus petit entier n tel que n! ≥ 1010
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
I
Premier algorithme :
n←1
tant que n! < 1010 faire
n ← n+1
Résultat : n
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
I
Et si on s’interdit la fonction factorielle ?
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Encore une boucle « Tant que »
Notion d’algorithme
Stéphane Gonnord
Exercice
Plan
Déterminer le plus petit entier n tel que n! ≥ 1010
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
I
Premier algorithme :
n←1
tant que n! < 1010 faire
n ← n+1
Résultat : n
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
I
Et si on s’interdit la fonction factorielle ?
n←1
f ← 1 # f vaudra n! à (presque) tout moment
tant que f < 1010 faire
n ← n+1
f ← f ×n
Résultat : n
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (1/3)
Exercice
Calculer 62 + 15
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (1/3)
Exercice
Calculer 62 + 15
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
I
Première solution :
>>> 62 + 15
77
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (1/3)
Exercice
Calculer 62 + 15
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
I
En mathématiques
Première solution :
Des maths très
élaborées
>>> 62 + 15
77
I
Additionner
Multiplier
Mais encore...
Et sinon :
Boucles et tests en
Python
6 2
+ 1 5
? ?
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (1/3)
Exercice
Calculer 62 + 15
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
I
En mathématiques
Première solution :
Des maths très
élaborées
>>> 62 + 15
77
I
Additionner
Multiplier
Mais encore...
Et sinon :
Boucles et tests en
Python
6 2
+ 1 5
? 7
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (1/3)
Exercice
Calculer 62 + 15
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
I
En mathématiques
Première solution :
Des maths très
élaborées
>>> 62 + 15
77
I
Additionner
Multiplier
Mais encore...
Et sinon :
Boucles et tests en
Python
6 2
+ 1 5
7 7
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (2/3)
Exercice
Calculer 68 + 15
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (2/3)
Exercice
Calculer 68 + 15
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
6 8
+ 1 5
? ?
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (2/3)
Exercice
Calculer 68 + 15
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
1
6 8
+ 1 5
? 3
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (2/3)
Exercice
Calculer 68 + 15
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
1
6 8
+ 1 5
8 3
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (2/3)
Exercice
Calculer 68 + 15
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
1
6 8
+ 1 5
8 3
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Algorithme général ?
Reprise des algorithmes
précédents
a b
+ c d
e f g
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (3/3)
a b
+ c d
e f g
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Entrées : a, b, c , d
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (3/3)
a b
+ c d
e f g
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Entrées : a, b, c , d
s1 ← b + d
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (3/3)
a b
+ c d
e f g
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Entrées : a, b, c , d
s1 ← b + d
si s1 < 10 alors
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (3/3)
a b
+ c d
e f g
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Entrées : a, b, c , d
s1 ← b + d
si s1 < 10 alors
g ← s1 # pas de retenue
r ←0
sinon
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (3/3)
a b
+ c d
e f g
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Entrées : a, b, c , d
s1 ← b + d
si s1 < 10 alors
g ← s1 # pas de retenue
r ←0
sinon
g ← s1 − 10 # retenue de 1
r ←1
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (3/3)
a b
+ c d
e f g
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Entrées : a, b, c , d
s1 ← b + d
si s1 < 10 alors
g ← s1 # pas de retenue
r ←0
sinon
g ← s1 − 10 # retenue de 1
r ←1
s2 ← r + a + c
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (3/3)
a b
+ c d
e f g
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Entrées : a, b, c , d
s1 ← b + d
si s1 < 10 alors
g ← s1 # pas de retenue
r ←0
sinon
g ← s1 − 10 # retenue de 1
r ←1
s2 ← r + a + c
si s2 < 10 alors
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (3/3)
a b
+ c d
e f g
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Entrées : a, b, c , d
s1 ← b + d
si s1 < 10 alors
g ← s1 # pas de retenue
r ←0
sinon
g ← s1 − 10 # retenue de 1
r ←1
s2 ← r + a + c
si s2 < 10 alors
(e, f ) ← (0, s2 )
sinon
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (3/3)
a b
+ c d
e f g
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Entrées : a, b, c , d
s1 ← b + d
si s1 < 10 alors
g ← s1 # pas de retenue
r ←0
sinon
g ← s1 − 10 # retenue de 1
r ←1
s2 ← r + a + c
si s2 < 10 alors
(e, f ) ← (0, s2 )
sinon
(e, f ) ← (1, s2 − 10)
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : à deux chiffres (3/3)
a b
+ c d
e f g
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Entrées : a, b, c , d
s1 ← b + d
si s1 < 10 alors
g ← s1 # pas de retenue
r ←0
sinon
g ← s1 − 10 # retenue de 1
r ←1
s2 ← r + a + c
si s2 < 10 alors
(e, f ) ← (0, s2 )
sinon
(e, f ) ← (1, s2 − 10)
Résultat : e, f , g
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : le cas général
Exercice
Calculer 123987 + 456456
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Addition : le cas général
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
Calculer 123987 + 456456
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
1 2 3 9 8 7
+ 4 5 6 4 5 6
? ? ? ? ? ? ?
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Addition : le cas général
Stéphane Gonnord
Exercice
Plan
Calculer 123987 + 456456
Formaliser des
tâches répétitives
Dans la vraie vie
1
1 2 3 9 8 7
+ 4 5 6 4 5 6
? ? ? ? ? ? 3
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Addition : le cas général
Stéphane Gonnord
Exercice
Plan
Calculer 123987 + 456456
Formaliser des
tâches répétitives
Dans la vraie vie
1
1
1 2 3 9 8 7
+ 4 5 6 4 5 6
? ? ? ? ? 4 3
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Addition : le cas général
Stéphane Gonnord
Exercice
Plan
Calculer 123987 + 456456
Formaliser des
tâches répétitives
Dans la vraie vie
1
1
1
1 2 3 9 8 7
+ 4 5 6 4 5 6
? ? ? ? 4 4 3
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Addition : le cas général
Stéphane Gonnord
Exercice
Plan
Calculer 123987 + 456456
Formaliser des
tâches répétitives
Dans la vraie vie
0
0
1
1
1
1
1 2 3 9 8 7
+ 4 5 6 4 5 6
0 5 8 0 4 4 3
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Addition : le cas général
Stéphane Gonnord
Exercice
Plan
Calculer 123987 + 456456
Formaliser des
tâches répétitives
Dans la vraie vie
0
0
1
1
1
1
1 2 3 9 8 7
+ 4 5 6 4 5 6
0 5 8 0 4 4 3
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Algorithme général :
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Addition : le cas général
Stéphane Gonnord
Exercice
Plan
Calculer 123987 + 456456
Formaliser des
tâches répétitives
Dans la vraie vie
0
0
1
1
1
1
1 2 3 9 8 7
+ 4 5 6 4 5 6
0 5 8 0 4 4 3
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Algorithme général :
I nature des entrées...
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Addition : le cas général
Stéphane Gonnord
Exercice
Plan
Calculer 123987 + 456456
Formaliser des
tâches répétitives
Dans la vraie vie
0
0
1
1
1
1
1 2 3 9 8 7
+ 4 5 6 4 5 6
0 5 8 0 4 4 3
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Algorithme général :
I nature des entrées...
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
I et du résultat ;
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Addition : le cas général
Stéphane Gonnord
Exercice
Plan
Calculer 123987 + 456456
Formaliser des
tâches répétitives
Dans la vraie vie
0
0
1
1
1
1
1 2 3 9 8 7
+ 4 5 6 4 5 6
0 5 8 0 4 4 3
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Algorithme général :
I nature des entrées...
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
I et du résultat ;
Du rabe
À l’envers !
I propagation d’une retenue...
Exercices
Ce qui reste à faire
I qu’on peut oublier après utilisation.
Correction et terminaison
Complexité
Mutiplication : n et 1 chiffres
Exercice
Calculer 841 × 7
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Mutiplication : n et 1 chiffres
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
Calculer 841 × 7
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
8 4 1
x 7
? ? ? ?
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Mutiplication : n et 1 chiffres
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
Calculer 841 × 7
Formaliser des
tâches répétitives
Dans la vraie vie
0
8 4 1
x
7
? ? ? 7
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Mutiplication : n et 1 chiffres
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
Calculer 841 × 7
Formaliser des
tâches répétitives
Dans la vraie vie
2
0
8 4 1
x
7
? ? 8 7
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Mutiplication : n et 1 chiffres
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
Calculer 841 × 7
Formaliser des
tâches répétitives
Dans la vraie vie
5
2
0
8 4 1
x
7
? 8 8 7
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Mutiplication : n et 1 chiffres
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
Calculer 841 × 7
Formaliser des
tâches répétitives
Dans la vraie vie
5
2
0
8 4 1
x
7
5 8 8 7
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
I Entrées, résultat ;
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Mutiplication : n et 1 chiffres
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
Calculer 841 × 7
Formaliser des
tâches répétitives
Dans la vraie vie
5
2
0
8 4 1
x
7
5 8 8 7
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
I Entrées, résultat ;
I une boucle ;
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Mutiplication : n et 1 chiffres
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
Calculer 841 × 7
Formaliser des
tâches répétitives
Dans la vraie vie
5
2
0
8 4 1
x
7
5 8 8 7
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
I Entrées, résultat ;
I une boucle ;
I propagation d’une retenue.
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Mutiplication : n et p chiffres
Exercice
Calculer 841 × 57
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Mutiplication : n et p chiffres
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
Calculer 841 × 57
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
8 4 1
x 5 7
? ? ?
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Mutiplication : n et p chiffres
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
Calculer 841 × 57
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
8 4 1
x 5 7
5 8 8 7
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Mutiplication : n et p chiffres
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
Calculer 841 × 57
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
8 4 1
x 5 7
5 8 8 7
0
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Mutiplication : n et p chiffres
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
Calculer 841 × 57
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
8
x
5 8
4 2 0
4
5
8
5
1
7
7
0
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Mutiplication : n et p chiffres
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
Calculer 841 × 57
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
8
x
5 8
4 2 0
4
5
8
5
1
7
7
0
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Mutiplication : n et p chiffres
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
Calculer 841 × 57
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
8
x
5 8
4 2 0
4 7 9
0
0
1
4
5
8
5
3
0
1
7
7
0
7
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
I Une boucle...
Ce qui reste à faire
Correction et terminaison
Complexité
Mutiplication : n et p chiffres
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
Calculer 841 × 57
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
8
x
5 8
4 2 0
4 7 9
0
0
1
4
5
8
5
3
0
1
7
7
0
7
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
I Une boucle...
I ou deux ;
Ce qui reste à faire
Correction et terminaison
Complexité
Mutiplication : n et p chiffres
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
Calculer 841 × 57
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
8
x
5 8
4 2 0
4 7 9
0
0
1
4
5
8
5
3
0
1
7
7
0
7
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
I Une boucle...
I ou deux ;
I choisir le niveau de découpage du problème.
Ce qui reste à faire
Correction et terminaison
Complexité
Soustraction
Exercice
Calculer 857 − 41
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Soustraction
Stéphane Gonnord
Exercice
Plan
Calculer 857 − 41
Formaliser des
tâches répétitives
Dans la vraie vie
8 5 7
- 4 1
? ? ?
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Soustraction
Stéphane Gonnord
Exercice
Plan
Calculer 857 − 41
Formaliser des
tâches répétitives
Dans la vraie vie
8 5 7
- 4 1
? ? 6
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Soustraction
Stéphane Gonnord
Exercice
Plan
Calculer 857 − 41
Formaliser des
tâches répétitives
Dans la vraie vie
8 5 7
- 4 1
? 1 6
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Soustraction
Stéphane Gonnord
Exercice
Plan
Calculer 857 − 41
Formaliser des
tâches répétitives
Dans la vraie vie
8 5 7
- 4 1
8 1 6
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Soustraction
Stéphane Gonnord
Exercice
Plan
Calculer 857 − 41
Formaliser des
tâches répétitives
Dans la vraie vie
8 5 7
- 4 1
8 1 6
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Exercice
Syntaxe des boucles
Calculer 841 − 57
Syntaxe des tests
Exemples et
exercices
8 4 1
- 5 7
? ? ?
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Soustraction
Stéphane Gonnord
Exercice
Plan
Calculer 857 − 41
Formaliser des
tâches répétitives
Dans la vraie vie
8 5 7
- 4 1
8 1 6
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Exercice
Syntaxe des boucles
Calculer 841 − 57
Syntaxe des tests
Exemples et
exercices
8 4 1
- 5 7
? ? 4
1
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Soustraction
Stéphane Gonnord
Exercice
Plan
Calculer 857 − 41
Formaliser des
tâches répétitives
Dans la vraie vie
8 5 7
- 4 1
8 1 6
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Exercice
Syntaxe des boucles
Calculer 841 − 57
Syntaxe des tests
Exemples et
exercices
8 4 1
- 5 7
? 8 4
1
1
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Soustraction
Stéphane Gonnord
Exercice
Plan
Calculer 857 − 41
Formaliser des
tâches répétitives
Dans la vraie vie
8 5 7
- 4 1
8 1 6
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Exercice
Syntaxe des boucles
Calculer 841 − 57
Syntaxe des tests
Exemples et
exercices
8 4 1
- 5 7
7 8 4
1
1
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Soustraction
Stéphane Gonnord
Exercice
Plan
Calculer 857 − 41
Formaliser des
tâches répétitives
Dans la vraie vie
8 5 7
- 4 1
8 1 6
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Exercice
Syntaxe des boucles
Calculer 841 − 57
Syntaxe des tests
Exemples et
exercices
8 4 1
- 5 7
7 8 4
1
1
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Exercice
Formaliser un algorithme de soustraction
Division
Exercice
Réaliser la division euclidienne de 841 par 3 puis par 57.
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Division
Exercice
Réaliser la division euclidienne de 841 par 3 puis par 57.
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
>>> 841/3, 841%3
(280, 1)
>>> 841/57, 841%57
(14, 43)
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Division
Exercice
Réaliser la division euclidienne de 841 par 3 puis par 57.
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
>>> 841/3, 841%3
(280, 1)
>>> 841/57, 841%57
(14, 43)
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Exercice (difficile)
Formaliser un algorithme de division euclidienne d’entiers.
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Division
Exercice
Réaliser la division euclidienne de 841 par 3 puis par 57.
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
>>> 841/3, 841%3
(280, 1)
>>> 841/57, 841%57
(14, 43)
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Exercice (difficile)
Formaliser un algorithme de division euclidienne d’entiers.
On pourra utiliser une boîte noire prenant a et b avec 0 ≤ a ≤ 99 et
1 ≤ b ≤ 9, renvoyant le plus grand entier q tel que bq ≤ a.
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Boucles énumératives : syntaxe
L’indentation marque le bloc exécuté.
I Entiers décrivant un domaine régulier :
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
for i in range(10):
...
...
for i in range(5, 10):
for i in range(20, 30, 3):
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Boucles énumératives : syntaxe
L’indentation marque le bloc exécuté.
I Entiers décrivant un domaine régulier :
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
for i in range(10):
...
...
for i in range(5, 10):
for i in range(20, 30, 3):
I Énumération sur une liste ou un ensemble :
for x in [1, 20, 1, -5]:
...
for x in {-1, 15, 10}:
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Boucles énumératives : syntaxe
L’indentation marque le bloc exécuté.
I Entiers décrivant un domaine régulier :
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
for i in range(10):
...
...
for i in range(5, 10):
for i in range(20, 30, 3):
I Énumération sur une liste ou un ensemble :
for x in [1, 20, 1, -5]:
...
for x in {-1, 15, 10}:
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
I Et même sur les lignes d’un fichier !
Ce qui reste à faire
Correction et terminaison
toto = open(’un_fichier.txt’,’r’)
for ch in toto:
...
Complexité
Boucles énumératives : exemples
I Sur un range :
>>> for i in range(10, 1, -3):
print(i**2)
100
49
16
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Boucles énumératives : exemples
I Sur un range :
>>> for i in range(10, 1, -3):
print(i**2)
100
49
16
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
I Sur des listes/ensembles :
Boucles et tests en
Python
Syntaxe des boucles
>>> for x in [1, 3, 1]:
print(x**2)
1
9
1
>>> for x in {1, 3, 1}:
print(x**2)
1
9
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Boucles conditionnelles
« Tant qu’il reste des M&M’s, on en reprend »
I L’indentation marque le bloc ;
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Boucles conditionnelles
« Tant qu’il reste des M&M’s, on en reprend »
I L’indentation marque le bloc ;
I Syntaxe :
while <condition> :
<instr 1>
...
<instr n>
<ensuite>
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Boucles conditionnelles
« Tant qu’il reste des M&M’s, on en reprend »
I L’indentation marque le bloc ;
I Syntaxe :
while <condition> :
<instr 1>
...
<instr n>
<ensuite>
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
I Exemple moisi :
i = 10
while i < 20:
i = i+3
print(i)
print("Maintenant, i vaut "+str(i))
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Boucles conditionnelles
« Tant qu’il reste des M&M’s, on en reprend »
I L’indentation marque le bloc ;
I Syntaxe :
while <condition> :
<instr 1>
...
<instr n>
<ensuite>
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
I Exemple moisi :
i = 10
while i < 20:
i = i+3
print(i)
print("Maintenant, i vaut "+str(i))
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Exercice
Qu’est-ce qui va être affiché ?
Boucles conditionnelles
« Tant qu’il reste des M&M’s, on en reprend »
I L’indentation marque le bloc ;
I Syntaxe :
while <condition> :
<instr 1>
...
<instr n>
<ensuite>
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
I Exemple moisi :
i = 10
while i < 20:
i = i+3
print(i)
print("Maintenant, i vaut "+str(i))
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Exercice
Qu’est-ce qui va être affiché ? Pourquoi cet exemple est moisi ?
Boucles conditionnelles
I Encore un exemple moisi :
i, j = 10, 20
while j < 20:
i = i+3
print(i+j)
print("Maintenant, i vaut "+str(i))
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Boucles conditionnelles
I Encore un exemple moisi :
i, j = 10, 20
while j < 20:
i = i+3
print(i+j)
print("Maintenant, i vaut "+str(i))
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Exercice
Qu’est-ce qui va être affiché ?
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Boucles conditionnelles
I Encore un exemple moisi :
i, j = 10, 20
while j < 20:
i = i+3
print(i+j)
print("Maintenant, i vaut "+str(i))
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Exercice
Qu’est-ce qui va être affiché ?
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
I Plus intéressant :
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Boucles conditionnelles
I Encore un exemple moisi :
i, j = 10, 20
while j < 20:
i = i+3
print(i+j)
print("Maintenant, i vaut "+str(i))
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Exercice
Qu’est-ce qui va être affiché ?
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
I Plus intéressant :
a, cpt = 2020, 0
while a % 2 == 0:
cpt = cpt+1
a = a/2
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Boucles conditionnelles
I Encore un exemple moisi :
i, j = 10, 20
while j < 20:
i = i+3
print(i+j)
print("Maintenant, i vaut "+str(i))
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Exercice
Qu’est-ce qui va être affiché ?
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
I Plus intéressant :
a, cpt = 2020, 0
while a % 2 == 0:
cpt = cpt+1
a = a/2
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Exercice
Que vaut i à la sortie de boucle ? Et a ?
Tests : syntaxe
I L’indentation gnagnagna
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Tests : syntaxe
Notion d’algorithme
Stéphane Gonnord
I L’indentation gnagnagna
Plan
I Syntaxe :
Formaliser des
tâches répétitives
Dans la vraie vie
if <condition> :
<instr 1>
...
<instr n>
<ensuite>
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Tests : syntaxe
Notion d’algorithme
Stéphane Gonnord
I L’indentation gnagnagna
Plan
I Syntaxe :
Formaliser des
tâches répétitives
Dans la vraie vie
if <condition> :
<instr 1>
...
<instr n>
<ensuite>
I Possibilité (mais non obligation !) d’une alternative :
if <condition> :
<instr 1>
...
else:
<instr 1>
...
<ensuite>
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Tests : exemples
I S’il pleut, alors je prends un parapluie.
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Tests : exemples
Notion d’algorithme
Stéphane Gonnord
I S’il pleut, alors je prends un parapluie.
Plan
I Si j’ai colle de physique demain alors je bosse mon cours de
Formaliser des
tâches répétitives
physique
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Tests : exemples
Notion d’algorithme
Stéphane Gonnord
I S’il pleut, alors je prends un parapluie.
Plan
I Si j’ai colle de physique demain alors je bosse mon cours de
Formaliser des
tâches répétitives
physique ; sinon je bosse mon cours de maths.
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Tests : exemples
Notion d’algorithme
Stéphane Gonnord
I S’il pleut, alors je prends un parapluie.
Plan
I Si j’ai colle de physique demain alors je bosse mon cours de
Formaliser des
tâches répétitives
physique ; sinon je bosse mon cours de maths.
Dans la vraie vie
En mathématiques
I Si j’ai colle de physique demain alors je bosse mon cours de
physique
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Tests : exemples
Notion d’algorithme
Stéphane Gonnord
I S’il pleut, alors je prends un parapluie.
Plan
I Si j’ai colle de physique demain alors je bosse mon cours de
Formaliser des
tâches répétitives
physique ; sinon je bosse mon cours de maths.
Dans la vraie vie
En mathématiques
I Si j’ai colle de physique demain alors je bosse mon cours de
physique ; sinon : si j’ai colle de maths demain, alors je bosse
mon cours de maths
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Tests : exemples
Notion d’algorithme
Stéphane Gonnord
I S’il pleut, alors je prends un parapluie.
Plan
I Si j’ai colle de physique demain alors je bosse mon cours de
Formaliser des
tâches répétitives
physique ; sinon je bosse mon cours de maths.
Dans la vraie vie
En mathématiques
I Si j’ai colle de physique demain alors je bosse mon cours de
physique ; sinon : si j’ai colle de maths demain, alors je bosse
mon cours de maths, et sinon je vais courir au parc.
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Tests : exemples
Notion d’algorithme
Stéphane Gonnord
I S’il pleut, alors je prends un parapluie.
Plan
I Si j’ai colle de physique demain alors je bosse mon cours de
Formaliser des
tâches répétitives
physique ; sinon je bosse mon cours de maths.
Dans la vraie vie
En mathématiques
I Si j’ai colle de physique demain alors je bosse mon cours de
physique ; sinon : si j’ai colle de maths demain, alors je bosse
mon cours de maths, et sinon je vais courir au parc.
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
I Si j’ai colle de physique demain alors je bosse mon cours de
physique
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Tests : exemples
Notion d’algorithme
Stéphane Gonnord
I S’il pleut, alors je prends un parapluie.
Plan
I Si j’ai colle de physique demain alors je bosse mon cours de
Formaliser des
tâches répétitives
physique ; sinon je bosse mon cours de maths.
Dans la vraie vie
En mathématiques
I Si j’ai colle de physique demain alors je bosse mon cours de
physique ; sinon : si j’ai colle de maths demain, alors je bosse
mon cours de maths, et sinon je vais courir au parc.
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
I Si j’ai colle de physique demain alors je bosse mon cours de
physique, et si j’ai colle de maths demain, alors je bosse mon
cours de maths.
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Tests : exemples
Notion d’algorithme
Stéphane Gonnord
I S’il pleut, alors je prends un parapluie.
Plan
I Si j’ai colle de physique demain alors je bosse mon cours de
Formaliser des
tâches répétitives
physique ; sinon je bosse mon cours de maths.
Dans la vraie vie
En mathématiques
I Si j’ai colle de physique demain alors je bosse mon cours de
physique ; sinon : si j’ai colle de maths demain, alors je bosse
mon cours de maths, et sinon je vais courir au parc.
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
I Si j’ai colle de physique demain alors je bosse mon cours de
physique, et si j’ai colle de maths demain, alors je bosse mon
cours de maths.
Exercice
Que se passe t-il dans les trois derniers exemples selon les colles
qu’on a le lendemain ? (il y a donc 12 réponses attendues !).
On fera l’hypothèse que les conditions suffisantes énoncées sont nécessaires...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Nombre et somme de premiers
Exercice
Déterminer le nombre d’entiers inférieurs à 1000 qui sont premiers, ainsi que leur
somme.
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Nombre et somme de premiers
Exercice
Déterminer le nombre d’entiers inférieurs à 1000 qui sont premiers, ainsi que leur
somme.
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
I Algorithme :
c ← 0 ; s ← 0 # le compteur et le sommeur
pour i allant de 1 à 1000 faire
si i est premier alors
c ← c +1
s ← s+i
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Nombre et somme de premiers
Exercice
Déterminer le nombre d’entiers inférieurs à 1000 qui sont premiers, ainsi que leur
somme.
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
I Algorithme :
c ← 0 ; s ← 0 # le compteur et le sommeur
pour i allant de 1 à 1000 faire
si i est premier alors
c ← c +1
s ← s+i
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
I Programme :
compteur, somme = 0, 0
for n in range(1000):
if est_premier(n):
compteur = compteur+1
somme = somme+n
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Nombre et somme de premiers
Exercice
Déterminer le nombre d’entiers inférieurs à 1000 qui sont premiers, ainsi que leur
somme.
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
I Algorithme :
c ← 0 ; s ← 0 # le compteur et le sommeur
pour i allant de 1 à 1000 faire
si i est premier alors
c ← c +1
s ← s+i
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
I Programme :
compteur, somme = 0, 0
for n in range(1000):
if est_premier(n):
compteur = compteur+1
somme = somme+n
I Résultat :
>>> compteur, somme
(168, 76127)
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Calcul de 84142
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
42
Comment calculer 841
avec seulement des multiplications ?
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Calcul de 84142
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
42
Comment calculer 841
avec seulement des multiplications ?
Formaliser des
tâches répétitives
Dans la vraie vie
I Algorithme :
r ←1
pour i allant de 0 à 41 faire
r ← r × 841
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Calcul de 84142
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
42
Comment calculer 841
avec seulement des multiplications ?
Formaliser des
tâches répétitives
Dans la vraie vie
I Algorithme :
r ←1
pour i allant de 0 à 41 faire
r ← r × 841
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Calcul de 84142
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
42
Comment calculer 841
avec seulement des multiplications ?
Formaliser des
tâches répétitives
Dans la vraie vie
I Algorithme :
r ←1
pour i allant de 0 à 41 faire
r ← r × 841
I Programme :
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
r = 1
for i in range(42):
r *= 841 # Rappel : c’est comme r = r*841
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Calcul de 84142
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
42
Comment calculer 841
avec seulement des multiplications ?
Formaliser des
tâches répétitives
Dans la vraie vie
I Algorithme :
r ←1
pour i allant de 0 à 41 faire
r ← r × 841
I Programme :
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
r = 1
for i in range(42):
r *= 841 # Rappel : c’est comme r = r*841
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
I Résultat :
Exercices
Ce qui reste à faire
>>> r - 841**42
0L
Correction et terminaison
Complexité
Calcul de 841!
Exercice
Comment calculer 841! avec seulement des multiplications ?
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Calcul de 841!
Exercice
Comment calculer 841! avec seulement des multiplications ?
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
I Algorithme :
r ←1
pour i allant de 1 à 841 faire
r ← r ×i
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Calcul de 841!
Exercice
Comment calculer 841! avec seulement des multiplications ?
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
I Algorithme :
r ←1
pour i allant de 1 à 841 faire
r ← r ×i
I Programme :
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
r = 1
for i in range(1,842):
r *= i
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Calcul de 841!
Exercice
Comment calculer 841! avec seulement des multiplications ?
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
I Algorithme :
r ←1
pour i allant de 1 à 841 faire
r ← r ×i
I Programme :
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
r = 1
for i in range(1,842):
r *= i
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
I Résultat :
Exercices
Ce qui reste à faire
>>> r - math.factorial(841)
0L
Correction et terminaison
Complexité
Un dépassement
Exercice
Déterminer le plus petit entier n tel que n! ≥ 1010
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Un dépassement
Exercice
Déterminer le plus petit entier n tel que n! ≥ 1010
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
I Algorithme :
n ← 1 ; f ← 1 # f vaudra n! à (presque) tout moment
tant que f < 1010 faire
n ← n+1
f ← f ×n
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Un dépassement
Exercice
Déterminer le plus petit entier n tel que n! ≥ 1010
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
I Algorithme :
n ← 1 ; f ← 1 # f vaudra n! à (presque) tout moment
tant que f < 1010 faire
n ← n+1
f ← f ×n
I Programme :
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
n, facto = 1, 1
while facto<10**10:
n += 1
facto *= n
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Un dépassement
Exercice
Déterminer le plus petit entier n tel que n! ≥ 1010
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
I Algorithme :
n ← 1 ; f ← 1 # f vaudra n! à (presque) tout moment
tant que f < 1010 faire
n ← n+1
f ← f ×n
I Programme :
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
n, facto = 1, 1
while facto<10**10:
n += 1
facto *= n
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
I Résultat :
Exercices
Ce qui reste à faire
>>> n,facto
(14, 87178291200L)
>>> math.factorial(14)
87178291200L
Correction et terminaison
Complexité
Addition de deux entiers
Notion d’algorithme
Stéphane Gonnord
Plan
def addition(a,b):
Formaliser des
""" calcul de c=a+b; représentation avec une liste de décimaux
tâches répétitives
On suppose que len(a) = len(b)"""
n = len(a)
Des maths très
c = [] # on va adjoindre successivement les décimales élaborées
r = 0
for i in range(n):
s = a[i]+b[i]+r
Boucles et tests en
Python
if s>9:
c.append(s-10)
Exemples et
r = 1
exercices
else:
c.append(s)
r = 0
if r == 1:
Ce qui reste à faire
c.append(1)
return c
Dans la vraie vie
En mathématiques
Additionner
Multiplier
Mais encore...
Syntaxe des boucles
Syntaxe des tests
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Correction et terminaison
Complexité
Addition de deux entiers
Notion d’algorithme
Stéphane Gonnord
Plan
def addition(a,b):
Formaliser des
""" calcul de c=a+b; représentation avec une liste de décimaux
tâches répétitives
On suppose que len(a) = len(b)"""
n = len(a)
Des maths très
c = [] # on va adjoindre successivement les décimales élaborées
r = 0
for i in range(n):
s = a[i]+b[i]+r
Boucles et tests en
Python
if s>9:
c.append(s-10)
Exemples et
r = 1
exercices
else:
c.append(s)
r = 0
if r == 1:
Ce qui reste à faire
c.append(1)
return c
Dans la vraie vie
En mathématiques
Additionner
Multiplier
Mais encore...
Syntaxe des boucles
Syntaxe des tests
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Correction et terminaison
Complexité
>>> addition([7,8,9,3,2,1],[6,5,4,6,5,4])
[3, 4, 4, 0, 8, 5]
Recherche de diviseurs
Exercice
Déterminer les diviseurs de 9991
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Recherche de diviseurs
Exercice
Déterminer les diviseurs de 9991
I Algorithme :
pour d allant de 1 à 9991 faire
si d divise 9991 alors
Afficher d
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Recherche de diviseurs
Exercice
Déterminer les diviseurs de 9991
I Algorithme :
pour d allant de 1 à 9991 faire
si d divise 9991 alors
Afficher d
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
I Programme :
Boucles et tests en
Python
Syntaxe des boucles
for d in range(1,9992):
if 9991%d ==0:
print(d)
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Recherche de diviseurs
Exercice
Déterminer les diviseurs de 9991
I Algorithme :
pour d allant de 1 à 9991 faire
si d divise 9991 alors
Afficher d
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
I Programme :
Boucles et tests en
Python
Syntaxe des boucles
for d in range(1,9992):
if 9991%d ==0:
print(d)
I Résultat :
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
1
97
103
9991
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Recherche de diviseurs
Exercice
Déterminer les diviseurs de 9991
I Algorithme :
pour d allant de 1 à 9991 faire
si d divise 9991 alors
Afficher d
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
I Programme :
Boucles et tests en
Python
Syntaxe des boucles
for d in range(1,9992):
if 9991%d ==0:
print(d)
I Résultat :
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
1
97
103
9991
I Et pour les mettre dans une liste ?
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Primalité (1/2)
Exercice
N = 10002200057 est-il premier ?
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Primalité (1/2)
Exercice
N = 10002200057 est-il premier ?
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
I Algorithme 1 :
pour d allant de 2 à N − 1 faire
si d divise N alors
Afficher « Oulala, N n’est pas premier »
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Primalité (1/2)
Exercice
N = 10002200057 est-il premier ?
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
I Algorithme 1 :
pour d allant de 2 à N − 1 faire
si d divise N alors
Afficher « Oulala, N n’est pas premier »
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
I Bof...
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Primalité (1/2)
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
N = 10002200057 est-il premier ?
Formaliser des
tâches répétitives
Dans la vraie vie
I Algorithme 1 :
pour d allant de 2 à N − 1 faire
si d divise N alors
Afficher « Oulala, N n’est pas premier »
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
I Bof...
Syntaxe des boucles
Syntaxe des tests
I Algorithme 2 :
Premier <- True # jusqu’à preuve du contraire !
pour d allant de 2 à N − 1 faire
si d divise N alors
Premier <- False
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Primalité (1/2)
Stéphane Gonnord
Exercice
Plan
N = 10002200057 est-il premier ?
Formaliser des
tâches répétitives
Dans la vraie vie
I Algorithme 1 :
En mathématiques
pour d allant de 2 à N − 1 faire
si d divise N alors
Afficher « Oulala, N n’est pas premier »
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
I Bof...
Syntaxe des boucles
Syntaxe des tests
I Algorithme 2 :
Premier <- True # jusqu’à preuve du contraire !
pour d allant de 2 à N − 1 faire
si d divise N alors
Premier <- False
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
I Améliorations :
I
s’arrêter à
√
N;
Notion d’algorithme
Primalité (1/2)
Stéphane Gonnord
Exercice
Plan
N = 10002200057 est-il premier ?
Formaliser des
tâches répétitives
Dans la vraie vie
I Algorithme 1 :
En mathématiques
pour d allant de 2 à N − 1 faire
si d divise N alors
Afficher « Oulala, N n’est pas premier »
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
I Bof...
Syntaxe des boucles
Syntaxe des tests
I Algorithme 2 :
Premier <- True # jusqu’à preuve du contraire !
pour d allant de 2 à N − 1 faire
si d divise N alors
Premier <- False
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
I Améliorations :
I
I
√
s’arrêter à N ;
s’arrêter si Premier est passé à False
Primalité (2/2)
I Algorithme 3 : s’arrêter à
Notion d’algorithme
√
N
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Primalité (2/2)
√
I Algorithme 3 : s’arrêter à N
√
pour d allant de 2 à b N c faire
...
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Primalité (2/2)
√
I Algorithme 3 : s’arrêter à N
√
pour d allant de 2 à b N c faire
...
I Algorithme 4 : s’arrêter si Premier est passé à False
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Primalité (2/2)
√
I Algorithme 3 : s’arrêter à N
√
pour d allant de 2 à b N c faire
...
I Algorithme 4 : s’arrêter si Premier est passé à False
d ←2
√
tant que d ≤ N et Premier faire
si d divise N alors
Premier <- False
d ← d +1
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Primalité (2/2)
√
I Algorithme 3 : s’arrêter à N
√
pour d allant de 2 à b N c faire
...
I Algorithme 4 : s’arrêter si Premier est passé à False
d ←2
√
tant que d ≤ N et Premier faire
si d divise N alors
Premier <- False
d ← d +1
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
I Programme :
n, premier, d = 10002200057, True, 2
while d<=sqrt(n) and premier:
if n % d == 0:
premier = False
d += 1
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Primalité (2/2)
√
I Algorithme 3 : s’arrêter à N
√
pour d allant de 2 à b N c faire
...
I Algorithme 4 : s’arrêter si Premier est passé à False
d ←2
√
tant que d ≤ N et Premier faire
si d divise N alors
Premier <- False
d ← d +1
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
I Programme :
n, premier, d = 10002200057, True, 2
while d<=sqrt(n) and premier:
if n % d == 0:
premier = False
d += 1
I Résultat :
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
>>> d
100004
>>> 1000003*1000019
1000022000057L
Complexité
Reverse engineering
I Après l’exécution du programme suivant, que vaut s ?
s = 0
for i in range(101):
for j in range(101):
s = s+(i+j)**2
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Reverse engineering
I Après l’exécution du programme suivant, que vaut s ?
s = 0
for i in range(101):
for j in range(101):
s = s+(i+j)**2
I Montrer que le programme suivant va terminer :
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
i, cpt = 5000, 0
while i>0:
i = i//2
cpt = cpt+1
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Que valent i et cpt après exécution ?
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Reverse engineering
I Après l’exécution du programme suivant, que vaut s ?
s = 0
for i in range(101):
for j in range(101):
s = s+(i+j)**2
I Montrer que le programme suivant va terminer :
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
i, cpt = 5000, 0
while i>0:
i = i//2
cpt = cpt+1
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Que valent i et cpt après exécution ?
I Que se passe-t-il à l’exécution de ce programme ?
n = 10
while n>1:
print(n)
if n%2 ==0:
n = n/2
else:
n = 3*n+1
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Reverse engineering
I Après l’exécution du programme suivant, que vaut s ?
s = 0
for i in range(101):
for j in range(101):
s = s+(i+j)**2
I Montrer que le programme suivant va terminer :
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
i, cpt = 5000, 0
while i>0:
i = i//2
cpt = cpt+1
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Que valent i et cpt après exécution ?
I Que se passe-t-il à l’exécution de ce programme ?
n = 10
while n>1:
print(n)
if n%2 ==0:
n = n/2
else:
n = 3*n+1
Que se passe-t-il si n = 1000 au départ ? Et pour n quelconque ?
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Quelques exercices suplémentaires
I Écrire un programme (une fonction) réalisant la soustraction de
deux entiers donnés par des listes de décimales (supposées de
même taille).
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Quelques exercices suplémentaires
I Écrire un programme (une fonction) réalisant la soustraction de
deux entiers donnés par des listes de décimales (supposées de
même taille).
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
I Même chose pour la multiplication de deux entiers :
I
avec n et 1 décimales ;
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Quelques exercices suplémentaires
I Écrire un programme (une fonction) réalisant la soustraction de
deux entiers donnés par des listes de décimales (supposées de
même taille).
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
I Même chose pour la multiplication de deux entiers :
I
I
avec n et 1 décimales ;
avec n et p décimales.
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Quelques exercices suplémentaires
I Écrire un programme (une fonction) réalisant la soustraction de
deux entiers donnés par des listes de décimales (supposées de
même taille).
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
I Même chose pour la multiplication de deux entiers :
I
I
avec n et 1 décimales ;
avec n et p décimales.
I S’attaquer à la division !
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Prouver la correction (1/2)
Exercice
Montrer que le code suivant fait ce qu’on attendait de lui :
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
compteur = 0
for n in range(1001):
if est_premier(n):
compteur = compteur+1
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
I Notion d’invariant de boucle.
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Prouver la correction (1/2)
Exercice
Montrer que le code suivant fait ce qu’on attendait de lui :
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
compteur = 0
for n in range(1001):
if est_premier(n):
compteur = compteur+1
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
I Notion d’invariant de boucle.
Boucles et tests en
Python
Syntaxe des boucles
I Trouver le bon (délicat !) ;
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Prouver la correction (1/2)
Exercice
Montrer que le code suivant fait ce qu’on attendait de lui :
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
compteur = 0
for n in range(1001):
if est_premier(n):
compteur = compteur+1
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
I Notion d’invariant de boucle.
Boucles et tests en
Python
Syntaxe des boucles
I Trouver le bon (délicat !) ;
I et le prouver.
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Prouver la correction (1/2)
Exercice
Montrer que le code suivant fait ce qu’on attendait de lui :
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
compteur = 0
for n in range(1001):
if est_premier(n):
compteur = compteur+1
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
I Notion d’invariant de boucle.
Boucles et tests en
Python
Syntaxe des boucles
I Trouver le bon (délicat !) ;
I et le prouver.
I Ici par exemple : « À la fin de l’exécution du corps de boucle,
compteur vaut le nombre d’indices k ≤ n tels que
est_premier(k) a renvoyé True »
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Prouver la correction (1/2)
Exercice
Montrer que le code suivant fait ce qu’on attendait de lui :
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
compteur = 0
for n in range(1001):
if est_premier(n):
compteur = compteur+1
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
I Notion d’invariant de boucle.
Boucles et tests en
Python
Syntaxe des boucles
I Trouver le bon (délicat !) ;
I et le prouver.
I Ici par exemple : « À la fin de l’exécution du corps de boucle,
compteur vaut le nombre d’indices k ≤ n tels que
est_premier(k) a renvoyé True »
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
I Il reste à conclure !
Complexité
Prouver la correction (2/2)
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
Montrer qu’après l’exécution du script suivant, r1 et r2 valent respectivement 84142 et
841! :
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
r1, r2 =
for i in
r1 =
for i in
r2 =
1, 1
range(42):
r1*841
range(2,842):
r2*i
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Prouver la correction (2/2)
Exercice
Notion d’algorithme
Stéphane Gonnord
Plan
Montrer qu’après l’exécution du script suivant, r1 et r2 valent respectivement 84142 et
841! :
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
r1, r2 =
for i in
r1 =
for i in
r2 =
Fastoche !
1, 1
range(42):
r1*841
range(2,842):
r2*i
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Prouver la correction (2/2)
Stéphane Gonnord
Exercice
Plan
Montrer qu’après l’exécution du script suivant, r1 et r2 valent respectivement 84142 et
841! :
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
r1, r2 =
for i in
r1 =
for i in
r2 =
1, 1
range(42):
r1*841
range(2,842):
r2*i
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Fastoche !
Exercice
Syntaxe des boucles
Syntaxe des tests
42
Montrer qu’après l’exécution du script suivant, r vaut 841
r, p, n = 1, 841, 42
while n > 0:
if n%2 == 1:
r *= p
p *= p
n //= 2
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Notion d’algorithme
Prouver la correction (2/2)
Stéphane Gonnord
Exercice
Plan
Montrer qu’après l’exécution du script suivant, r1 et r2 valent respectivement 84142 et
841! :
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
r1, r2 =
for i in
r1 =
for i in
r2 =
1, 1
range(42):
r1*841
range(2,842):
r2*i
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Fastoche !
Exercice
Syntaxe des boucles
Syntaxe des tests
42
Montrer qu’après l’exécution du script suivant, r vaut 841
r, p, n = 1, 841, 42
while n > 0:
if n%2 == 1:
r *= p
p *= p
n //= 2
Peut-être un peu moins fastoche !
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Prouver la terminaison
I On suppose que n a été affecté (et vaut un entier strictement
positif). Montrer que la boucle suivante va terminer :
while n>0:
n = n-10
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Prouver la terminaison
I On suppose que n a été affecté (et vaut un entier strictement
positif). Montrer que la boucle suivante va terminer :
while n>0:
n = n-10
I Même chose ici :
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
while n>0:
n = n // 2
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Prouver la terminaison
I On suppose que n a été affecté (et vaut un entier strictement
positif). Montrer que la boucle suivante va terminer :
while n>0:
n = n-10
I Même chose ici :
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
while n>0:
n = n // 2
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
I Et encore ici :
while n>1:
if n%2 ==0:
n = n/2
else:
n = 3*n+1
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Prouver la terminaison
I On suppose que n a été affecté (et vaut un entier strictement
positif). Montrer que la boucle suivante va terminer :
while n>0:
n = n-10
I Même chose ici :
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
while n>0:
n = n // 2
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
I Et encore ici :
while n>1:
if n%2 ==0:
n = n/2
else:
n = 3*n+1
Attention, il y a un piège :-)
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Évaluer la complexité (1/2)
I On suppose que n a été affecté (et vaut un entier strictement
positif). Combien d’opérations élémentaires le programme
suivant va-t-il exécuter ?
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
s = 0
for i in range(n):
s = s+i**2
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Évaluer la complexité (1/2)
I On suppose que n a été affecté (et vaut un entier strictement
positif). Combien d’opérations élémentaires le programme
suivant va-t-il exécuter ?
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
s = 0
for i in range(n):
s = s+i**2
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
I Même chose ici :
Boucles et tests en
Python
Syntaxe des boucles
s = 0
for i in range(n):
for j in range(i,n):
s = s+j**2
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Évaluer la complexité (1/2)
I On suppose que n a été affecté (et vaut un entier strictement
positif). Combien d’opérations élémentaires le programme
suivant va-t-il exécuter ?
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
s = 0
for i in range(n):
s = s+i**2
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
I Même chose ici :
Boucles et tests en
Python
Syntaxe des boucles
s = 0
for i in range(n):
for j in range(i,n):
s = s+j**2
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
I Et ici :
Exercices
Ce qui reste à faire
while n<10**10:
n = n * 2
Correction et terminaison
Complexité
Évaluer la complexité (2/2)
I On suppose que n a été affecté (et vaut un entier strictement
positif). Combien d’opérations élémentaires le programme
suivant va-t-il exécuter ?
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
while n>0:
n = n // 2
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Évaluer la complexité (2/2)
I On suppose que n a été affecté (et vaut un entier strictement
positif). Combien d’opérations élémentaires le programme
suivant va-t-il exécuter ?
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
while n>0:
n = n // 2
Des maths très
élaborées
Additionner
Multiplier
I Et ici ?
while n>1:
if n%2 ==0:
n = n/2
else:
n = 3*n+1
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Évaluer la complexité (2/2)
I On suppose que n a été affecté (et vaut un entier strictement
positif). Combien d’opérations élémentaires le programme
suivant va-t-il exécuter ?
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
while n>0:
n = n // 2
Des maths très
élaborées
Additionner
Multiplier
I Et ici ?
while n>1:
if n%2 ==0:
n = n/2
else:
n = 3*n+1
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
End game
Merci de votre attention !
Notion d’algorithme
Stéphane Gonnord
Plan
Formaliser des
tâches répétitives
Dans la vraie vie
En mathématiques
Des maths très
élaborées
Additionner
Multiplier
Mais encore...
Boucles et tests en
Python
Syntaxe des boucles
Syntaxe des tests
Exemples et
exercices
Reprise des algorithmes
précédents
XKCD 1247 : « The mother of all suspect files »
(Better change the URL to https before downloading.)
Du rabe
À l’envers !
Exercices
Ce qui reste à faire
Correction et terminaison
Complexité
Téléchargement