boucle while - uliege.beboucle while boucle for le type “ensemble” l’instruction break notion...
TRANSCRIPT
![Page 1: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/1.jpg)
● Boucle while● Boucle for● Le type “ensemble”● L’instruction break● Notion de fonction● Variables locales / globales● Récursion
Logique et approche mathématiquede la programmation, cours 2M. Rigo
![Page 2: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/2.jpg)
Boucle “while” : tant que condition est satisfaite, effectuer le corps de la boucle
![Page 3: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/3.jpg)
Variante : on gère les exceptions ...
![Page 4: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/4.jpg)
Variante : on compte le nombre d’essais...
![Page 5: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/5.jpg)
Une boucle “tant que” (while), on répète … tant que la condition est satisfaite
On n’entre pasdans la boucle ;le programmen’affiche rien.
![Page 6: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/6.jpg)
Le problème de Syracuse, la conjecture de Collatz, ou encore le 3x+1 problem, ...
![Page 7: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/7.jpg)
Le problème de Syracuse, la conjecture de Collatz, ou encore 3x+1, ...
On va enregistrer l’orbite dans une liste
![Page 8: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/8.jpg)
Apparition d’une boucle for...
![Page 9: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/9.jpg)
![Page 10: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/10.jpg)
![Page 11: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/11.jpg)
Une boucle “for” permet de passer en revue les éléments d’un objet de type “séquentiel”Comme une liste, un t-uple, un ensemble, une chaîne, un dictionnaire
![Page 12: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/12.jpg)
Une boucle “for” permet de passer en revue les éléments d’un objet de type “séquentiel”Comme une liste, un t-uple, un ensemble, une chaîne, un dictionnaire
![Page 13: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/13.jpg)
![Page 14: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/14.jpg)
Le type “ensemble”
![Page 15: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/15.jpg)
Le type “ensemble”
![Page 16: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/16.jpg)
Le type “dictionnaire”
Un dictionnaire est une collection d’objets indexés, l’avantage est que l’index (i.e., la clé) pour accéder aux valeurs est choisi par le programmeur
Il existe de nombreuses méthodes : values, items, pop, popitem, del, len, copy, ...
Ajout d’une entrée
![Page 17: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/17.jpg)
La commande “break” force la sortie d’une boucle (while ou for)
![Page 18: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/18.jpg)
Définir des fonctions (ou sous-programmes) au sein d’un programme
● Avoir des procédures réutilisables (au sein d’un programme, pour plusieurs projets)● Avoir un code plus lisible● Découper un problème en problèmes plus simples – abstraction, modularité● Quand une fonction est bien écrite/testée,
plus besoin d’en connaître le “contenu”● Peuvent avoir des paramètres, etc.
![Page 19: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/19.jpg)
Algorithme d’Eulide...
![Page 20: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/20.jpg)
Définir une fonction
La fonction “renvoie” quelque chose...
![Page 21: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/21.jpg)
Cela va-t-il poser problème ? Variables locales...
![Page 22: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/22.jpg)
Variable globale
Variable locale (n’existe qu’au sein de la fonction)
Il n’y a pas de variable locale, donc fait référence à la variable globale
![Page 23: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/23.jpg)
A quoi fait-on référence ?
On impose l’utilisation de la variable globale...
![Page 24: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/24.jpg)
![Page 25: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/25.jpg)
![Page 26: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/26.jpg)
Une définition récursive
miroir(abcde) = e + miroir(bcde)
Cas de base : le miroir de “” = “”
F(n+2) = F(n+1) + F(n)Avec des conditions initiales F(0)=1 et F(1)=2
N! = N.(N-1)!et 0!=1
![Page 27: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/27.jpg)
![Page 28: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/28.jpg)
Cela fonctionne mais ATTENTION : comparer le nombre d’appels à la fonction avec le nombre de valeurs à calculer …
Il faut parfois trouver le bon compromis.
![Page 29: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/29.jpg)
→ 2178309, temps de calcul 0.62 sec., nombre d'appels 2692537
![Page 30: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/30.jpg)
→ 2178309, temps de calcul 3.55e-05, nombre d'appels 30
On stocke les valeurs calculées pour ne pas les recalculer à chaque nouvel appel !
![Page 31: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/31.jpg)
Encore une variante (pour ne pas “multiplier” les appels à la fonction)
![Page 32: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/32.jpg)
Exercice : “améliorer” la fonction de syracuse
Ecrire une fonction qui à n associe le nombre d’itérations nécessaires pour arriver à 1
Stocker à chaque fois la valeur obtenue
Ainsi, si syracuse(n) nécessite le calcule de syracuse(k) et que celle-ci est déjà connue, reprendre la valeur stockée
Comparer les performances des deux approches (sans et avec stockage)
![Page 33: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/33.jpg)
Challenge : implémenter l’écriture en base b...
Quels nombres sont des palindromes écrits en base 2 et 3 ?
![Page 34: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/34.jpg)
![Page 35: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/35.jpg)
1, 6643, 1422773, 5415589 et après ? http://oeis.org/A060792 (uniquement 9 < 3^66)
Il serait peut-être plus efficace de générer les palindromes dans une base et faire uniquement le test dans l’autre base...
![Page 36: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/36.jpg)
![Page 37: Boucle while - uliege.beBoucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique](https://reader036.vdocuments.us/reader036/viewer/2022070213/610e0de50f4b1434b308db2b/html5/thumbnails/37.jpg)