algorithmes et structures de données cours 9 patrick reuter preuter

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

Upload: christophe-morand

Post on 03-Apr-2015

113 views

Category:

Documents


0 download

TRANSCRIPT

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

Algorithmes et structures de données

Cours 9

Patrick Reuter

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

Page 2: Algorithmes et structures de données Cours 9 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 3: Algorithmes et structures de données Cours 9 Patrick Reuter preuter
Page 4: Algorithmes et structures de données Cours 9 Patrick Reuter preuter

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

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

Ingrédients d’algorithmes

• Affectation

• Condition/Comparaison

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

• Bloc d’instruction

• Appel de fonction

Page 6: Algorithmes et structures de données Cours 9 Patrick Reuter preuter
Page 7: Algorithmes et structures de données Cours 9 Patrick Reuter preuter
Page 8: Algorithmes et structures de données Cours 9 Patrick Reuter preuter
Page 9: Algorithmes et structures de données Cours 9 Patrick Reuter preuter

Garder bien vos dossiers en arborescence

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

Ingrédients d’algorithmes• Affectation

x = 10;y = 30;z = x;

x = 10y = 30z = x

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

Affichage à l'écran

• Afficher le texte suivant à l’écran après l’affectation :

x = 10;

Résultat :

Le contenu de x est 10.

afficherLigne("Résultat:");afficher ("Le contenu de x est");afficher (x);afficher (".");

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

• Afficher le texte suivant à l’écran après l’affectation :

x = 10;

Résultat :

Le contenu de x est 10.

afficherLigne("Résultat:");afficher ("Le contenu de x est");afficher (x);afficher (".");

x = 10print "Résultat"print "Le contenu de x est ",print x,print "."

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

• Afficher le texte suivant à l’écran après l’affectation :

x = 10

Résultat :

Le contenu de x est 10.

afficherLigne("Résultat:");afficher ("Le contenu de x est");afficher (x);afficher (".");

print "Résultat"print "Le contenu de x est ",x, "."

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

Ingrédients d’algorithmes

• Structure de contrôle– Branchements conditionnels

SI <condition> ALORS<bloc d’instructions>

FIN SI

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

Ingrédients d’algorithmes

• Structure de contrôle– Branchements conditionnels

SI <condition> ALORS<bloc d’instructions>

FIN SI

if <condition>: <début partie alors>

<fin partie alors>

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

Ingrédients d’algorithmes

• Structure de contrôle– Branchements conditionnels

SI <condition> ALORS<bloc d’instructions>

FIN SI

if <condition>: <début partie alors>

<fin partie alors>

Exemple :

if a%2==0: print "a est pair"print a

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

Ingrédients d’algorithmes

• Structure de contrôle– Branchements conditionnels

SI <condition> ALORS<bloc d’instructions>

[SINON SI <condition> ALORS<bloc d’instructions>]

[SINON SI <condition> ALORS<bloc d’instructions>]

[…][SINON

<bloc d’instructions>]FIN SI

if nombre<100:print "est négatif"

elif nombre>100:print "est positif"

else:print "est zéro"

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

Ingrédients d’algorithmes

• Structure de contrôle– Boucle

TANT QUE <condition> FAIRE

<bloc d’instructions>

FIN TANT QUE

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

Ingrédients d’algorithmes

• Structure de contrôle– Boucle

TANT QUE <condition> FAIRE

<bloc d’instructions>

FIN TANT QUE

if nombre<100:print "est négatif"

elif nombre>100:print "est positif"

else:print "est zéro"

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

Entrées de l'utilisateur

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

Programmation évènementielle

Entrées de l'utilisateur

exécution

choix

Séquentielle Evenementielle

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

Programmation séquentielle

Entrée de l'utilisateur :

a = raw_input();

Ceci peut être du texte ou des nombres

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

Programmation séquentielle

Entrée de l'utilisateur :

print "Taper quelque chose : ",

a = raw_input();

print "Vous avez tapé : ",a

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

Programmation séquentielle

Entrée de l'utilisateur :

a = raw_input();

Ceci peut être du texte ou des nombres

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

Programmation séquentielle

Entrée de l'utilisateur :

print "Taper quelque chose : ",

a = raw_input();

print "Vous avez tapé : ",a

print "le nombre de caractères : ",

print len(a)

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

Programmation séquentielle

Entrée de l'utilisateur :

print "Taper quelque chose : ",a = raw_input();print "Vous avez tapé : ",a

print "au carré cela fait : ",print a*a # ou bien a**2

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

• Memes dans les boucles

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

a="non"

while (a != "non"):

# votre jeu ici

print "Voulez-vous rejouer (oui/non) ?"

a = raw_input()

print "Au revoir"

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

• Insérer une liste

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

Insérer une liste

i = 0

a = []

while (a<6):

a[i] = raw_input()

i = i + 1

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

Nombres aléatoires

a = random.randint(1,10) # entier entre 1 et 10

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

Nombres aléatoires

import random

a = random.randint(1,10) # entier entre 1 et 10

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

Nombres aléatoires

import random

a = random.randint(1,10) # entier entre 1 et 10

a = random.random() # un flottant a, 0.0<=a <=1.0

a = random.uniform(1,10)

# un flottant a, 1.0<=a <=10.0

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

Nombres aléatoires

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

• conditions nécessaires

• conditions suffisantes

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

Longueur :

s = "abcde"

print len(s) # 5

Concaténation :

s1 = "abc"

s2 = "defg"

s3 = s1 + s2 # ’abcdefg’

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

On indique, entre crochets, la position d’un caractère par un indice qui commence à 0

s = "abcdefg"

print s[0] # a

print s[2] # c

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

Les listes

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

Les listes

• Collection hétérogène, ordonnée et modifiable d’éléments séparés

• par des virgules, et entourée de crochets.

nombres = [17, 38, 10, 25, 72]

print nombres[0] # 17print nombres[4] # 72print len(nombres) # 5

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

Les listes

• Collection hétérogène, ordonnée et modifiable d’éléments séparés

• par des virgules, et entourée de crochets.

nombres = [17, 38, 10, 25, 72]

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

Afficher tout les nombres :

nombres = [17, 38, 10, 25, 72]

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

Afficher tout les nombres :

nombres = [17, 38, 10, 25, 72]

i = 0TANT QUE i < len(nombres) FAIRE

afficherLigne(nombres[i])i = i + 1

FIN TANT QUE

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

Afficher uniquement les nombres pairs :

nombres = [17, 38, 10, 25, 72]

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

Afficher uniquement les nombres pairs :

nombres = [17, 38, 10, 25, 72]i = 0TANT QUE i < len(nombres) FAIRE

SI nombres[i] % 2 == 0 ALORSafficherLigne(nombres[i])

FIN SIi = i + 1

FIN TANT QUE

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

Affectation

nombres = [17, 38, 10, 25, 72];nombres[0] = 100;print nombres;

Résultat :

[100, 38, 10, 25, 72]

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

• indice d'une liste ou d'une chaîne de caractères :

s = "Bonjour";

premiereLettre = s[0];

deuxiemeLettre = s[1];

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

Fonctions prédéfinies

• par exemple connaître la longueur d'une chaîne :

longueur = len(nombres);

parenthèses !

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

• Combinaison :

derniereLettre = s[len(s) – 1];

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

• Solution de quelques exercices :

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

Grilles de sudoku

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

Grilles de sudoku

5 3 1 8 7 2 9 4 6

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

Grilles de sudoku

grille0 = [5,3,1,8,7,2,9,4,6];

5 3 1 8 7 2 9 4 6

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

Grilles de sudokugrille0 = [5,3,1,8,7,2,9,4,6];

grille1 = [2,3,1,8,7,2,9,4,5];5 3 1 8 7 2 9 4 6

2 3 1 8 7 2 9 4 5

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

Grilles de sudokugrille = [ [5,3,1,8,7,2,9,4,6],

[1,2,5,9,7,8,3,6,4],[1,2,5,9,7,8,3,6,4],[1,2,5,9,7,8,3,6,4],[1,2,5,9,7,8,3,6,4],[1,2,5,9,7,8,3,6,4],[1,2,5,9,7,8,3,6,4],[1,2,5,9,7,8,3,6,4],[1,2,5,9,7,8,3,6,4] ];

print grille[0][0];