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é