algorithmes et structures de données cours 9 patrick reuter preuter
TRANSCRIPT
Algorithmes et structures de données
Cours 9
Patrick Reuter
http://www.labri.fr/~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.
• http://www.cifen.ulg.ac.be/inforef/swi/download/python_notes.pdf
Ingrédients d’algorithmes
• Affectation
• Condition/Comparaison
• Structure de contrôle– Branchements conditionnels (multiples)– Boucles
• Bloc d’instruction
• Appel de fonction
Garder bien vos dossiers en arborescence
Ingrédients d’algorithmes• Affectation
x = 10;y = 30;z = x;
x = 10y = 30z = x
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 (".");
• 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 "."
• 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, "."
Ingrédients d’algorithmes
• Structure de contrôle– Branchements conditionnels
SI <condition> ALORS<bloc d’instructions>
FIN SI
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>
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
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"
Ingrédients d’algorithmes
• Structure de contrôle– Boucle
TANT QUE <condition> FAIRE
<bloc d’instructions>
FIN TANT QUE
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"
Entrées de l'utilisateur
Programmation évènementielle
Entrées de l'utilisateur
exécution
choix
Séquentielle Evenementielle
Programmation séquentielle
Entrée de l'utilisateur :
a = raw_input();
Ceci peut être du texte ou des nombres
Programmation séquentielle
Entrée de l'utilisateur :
print "Taper quelque chose : ",
a = raw_input();
print "Vous avez tapé : ",a
Programmation séquentielle
Entrée de l'utilisateur :
a = raw_input();
Ceci peut être du texte ou des nombres
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)
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
• Memes dans les boucles
a="non"
while (a != "non"):
# votre jeu ici
print "Voulez-vous rejouer (oui/non) ?"
a = raw_input()
print "Au revoir"
• Insérer une liste
Insérer une liste
i = 0
a = []
while (a<6):
a[i] = raw_input()
i = i + 1
Nombres aléatoires
a = random.randint(1,10) # entier entre 1 et 10
Nombres aléatoires
import random
a = random.randint(1,10) # entier entre 1 et 10
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
Nombres aléatoires
• conditions nécessaires
• conditions suffisantes
Longueur :
s = "abcde"
print len(s) # 5
Concaténation :
s1 = "abc"
s2 = "defg"
s3 = s1 + s2 # ’abcdefg’
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
Les listes
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
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]
Afficher tout les nombres :
nombres = [17, 38, 10, 25, 72]
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
Afficher uniquement les nombres pairs :
nombres = [17, 38, 10, 25, 72]
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
Affectation
nombres = [17, 38, 10, 25, 72];nombres[0] = 100;print nombres;
Résultat :
[100, 38, 10, 25, 72]
• indice d'une liste ou d'une chaîne de caractères :
s = "Bonjour";
premiereLettre = s[0];
deuxiemeLettre = s[1];
Fonctions prédéfinies
• par exemple connaître la longueur d'une chaîne :
longueur = len(nombres);
parenthèses !
• Combinaison :
derniereLettre = s[len(s) – 1];
• Solution de quelques exercices :
Grilles de sudoku
Grilles de sudoku
5 3 1 8 7 2 9 4 6
Grilles de sudoku
grille0 = [5,3,1,8,7,2,9,4,6];
5 3 1 8 7 2 9 4 6
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
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];