boucle while - uliege.beboucle while boucle for le type “ensemble” l’instruction break notion...

37
Boucle while Boucle for Le type “ensemble” L’instruction break Notion de fonction Variables locales / globales Récursion Logique et approche mathématique de la programmation, cours 2 M. Rigo

Upload: others

Post on 09-Mar-2021

5 views

Category:

Documents


0 download

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

● 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

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

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

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

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

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

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

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
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
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

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

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
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

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

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

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

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

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

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

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

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

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

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
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
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

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
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

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

→ 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

→ 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

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

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

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
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

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
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