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

Post on 03-Apr-2015

113 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

top related