29
Algorithmes et structures de données Cours 10 Patrick Reuter http://www.labri.fr/~preuter

Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Embed Size (px)

Citation preview

Page 1: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Algorithmes et structures de données

Cours 10

Patrick Reuter

http://www.labri.fr/~preuter

Page 2: Algorithmes et structures de données Cours 10 Patrick Reuter preuter
Page 3: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

• http://www.cifen.ulg.ac.be/inforef/swi/download/python_notes.pdf

• http://www.labri.fr/~preuter/asd2007

Page 4: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

• Pages 19 à 80, (sans chapître 6.3)

Page 5: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Contrôle continu

• mercredi, 5 décembre 2007

Page 6: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Corrections

import random

aleatoire = random.randint(0,6)

print "Le nombre al´eatoire est ",aleatoire

Page 7: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Correctionsimport random

aleatoire = random.randint(0,6)

print "Le nombre al´eatoire est ",aleatoire

if (aleatoire == 0):print "lundi"

elif (aleatoire == 1):print "mardi"

elif (aleatoire == 2):print "mercredi"

elif (aleatoire == 3):print "lundi"

elif (aleatoire == 4):print "lundi"

elif (aleatoire == 5):print "lundi"

elif (aleatoire == 6):print "lundi"

Page 8: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Corrections

import random

aleatoire = random.randint(0,6)

print "Le nombre al´eatoire est ",aleatoire

jourDeLaSemaine = ["lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche"]

Page 9: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Corrections

import random

aleatoire = random.randint(0,6)

print "Le nombre al´eatoire est ",aleatoire

jourDeLaSemaine = ["lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche"]

jourAleatoire = jourDeLaSemaine[aleatoire]

print "Un jour de semaine al´eatoire :",jourAleatoire

Page 10: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Algorithme et programmes

Algorithme– Moyen d’atteindre un but en répétant un

nombre fini de fois un nombre fini d’instructions.

– Donc, un algorithme se termine en un temps fini.

Programme– Un programme est la traduction d’un

algorithme en un langage– compilable ou interprétable par un ordinateur.

Page 11: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Ingrédients d’algorithmes

• Affectation

• Condition/Comparaison

• Structure de contrôle– Branchements conditionnels (multiples)– Boucles

• Bloc d’instruction

• Fonctions et appels de fonctions

Page 12: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Fonctions et appels de fonctions

• Question : "Quelle est la fonction qui permet de connaître la longueur d'une chaîne de caractères ?"

• Quelle elle est son argument (ou paramètre)?

• Quelle est sa valeur de retour (que renvoit la fonction) ?

Page 13: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Fonctions et appels de fonctions

• Question : "Quelle est la fonction qui permet de connaître la longueur d'une chaîne de caractères ou d'une liste ?"

len• Quelle elle est son argument (ou

paramètre)?la chaîne de caractère ou la liste

• Quelle est sa valeur de retour (que renvoit la fonction) ? un nombre entier

Page 14: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Fonctions et appels de fonctions

• Question : "Quelle est la fonction qui permet à l'utilisateur d'entrer une chaîne de caractères ?"

• Quelle sont ses arguments (ou paramètres )?

• Quelle valeur de retour (ou que renvoit la fonction ?

Page 15: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Fonctions et appels de fonctions

• Question : "Quelle est le nom de la fonction qui permet à l'utilisateur d'entrer une chaîne de caractères ?"

raw_input• Quelle sont ses arguments (ou paramètres

)? aucun argument

• Quelle valeur de retour (ou que renvoit la fonction ? une chaîne de caractères

Page 16: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Fonctions et appels de fonctions

• Question : "Quelle est la fonction qui permet de créer un nombre entier aléatoire ?"

• Quelle sont ses arguments (ou paramètres )?

• Quelle est sa valeur de retour (ou que renvoie la fonction) ?

Page 17: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Fonctions et appels de fonctions

• Question : "Quelle est la fonction qui permet de créer un nombre entier aléatoire ?"

random.randint• Quelle sont ses arguments (ou paramètres

)?2 entiers : borne inférieure est supérieure• Quelle est sa valeur de retour (ou que

renvoit la fonction) ? un nombre entier

Page 18: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Appel de fonctions

Affectation d'une variable

s = input() # aucun paramètre

longueur = len(s) # s est le paramètre

aleatoire = random.randint(inf,sup)

# inf et sup sont les

# paramètres

s, longueur, et aleatoire sont affectés avec les valeurs de retour des fonctions

Page 19: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Fonction

Bloc d’instructions regroupé sous un nom et s’exécutant à la demande (appel) qui peut prendre des paramètres (arguments)

Avantages :

* réutilisabilité

* meilleure lisibilité

* travail en équipe

Page 20: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Fonction

• une fonction est définie une fois• elle peut être utilise plusieurs fois !

Avantages : * réutilisabilité * meilleure lisibilité* travail en équipe* …

Page 21: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

• Fonction prédéfinies (integrées)

len(s), raw_input()• Fonction dans des modules

random.randint(a,b)• Fonctions originales (fonctions propres)

Page 22: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Fonctions originales

• en algorithme :

fonction nom_fonction(paramètres)

<bloc_instructions>

[renvoyer valeurDeRetour]

fin fonction

Page 23: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Fonctions originales

• en python :

def nom_fonction(paramètres)

<bloc_instructions>

[return valeurDeRetour]

Page 24: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Fonctions – Exemple :

• Définition de la fonction

def double(x): # paramètre xa = 2 * xreturn a # valeur de retour

• Appel de la fonction

a = double(4)print a # affiche 8b = double(8)print b # affiche 16

Page 25: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Autre exemple

• f(x) = x2

def f(x): # paramètre xa = x * xreturn a # valeur de retour

y1 = f(1)

y2 = f(10)

y3 = f(4)

y4 = f(7)

Page 26: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Appel d'une fonction dans une fonction

def cube(x):return x*x*x

def volumeSphere(r):return 4.0 * math.pi * cube(r) / 3.0

y1 = volumeSphere(3)y2 = volumeSphere(7)

Page 27: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Circonference d'un rectangle

def circonference(a, b):circ = 2 * a + 2 * breturn circ

x1 = circonference(4,5)x2 = circonference(2,3)

Page 28: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

• Valeur de retour– il peut y avoir plusieurs instructions "renvoyer"

(return)– lorsque l'algorithme rencontre une instruction

"renvoyer" (return), la fonction est quitté

Page 29: Algorithmes et structures de données Cours 10 Patrick Reuter preuter

Exempledef moitie(x): print "debut de la fonction" return x/2 print "fin de la fonction"

print "debut du programme"p = moitie(4)print p print "fin du programme"

L'affichage donne :

debut du programmedebut de la fonction2fin du programme