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

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

Embed Size (px)

Citation preview

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

Algorithmes et structures de données

Cours 8

Patrick Reuter

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

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

• conditions nécessaires

• conditions suffisantes

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

Motivation

• Niklaus Wirth, ETH Zuerich, 1976« Algorithms + Data Structures = Programs »

Page 4: Algorithmes et structures de données Cours 8 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 5: Algorithmes et structures de données Cours 8 Patrick Reuter preuter
Page 6: Algorithmes et structures de données Cours 8 Patrick Reuter preuter

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

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

Variables

• Permet de stocker des données au cours d’un algorithme

Structure de données la plus élémenataire

• Caractérisé par leur nom et leur type

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

Variables

Caractérisé par leur nom et leur type

Noms :

• Les noms des variables sont conventionnellement écrits en minuscule. Ils commencent par une lettre ou le caractère souligné (_), puis éventuellement, des lettres, des chiffres ou le caract`ere souligné.

• Ils doivent être diff´erents des mots réservés de Python.

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

Variables

Caractérisé par leur nom et leur type

• Nom :x

y

z

i

pointsJoueur1

pointsJoueur2

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

Types de variables

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

Variables

Type simples:

Type booléen– Vrai/faux (p.ex. True, boolean)

Type entier– Nombre entier (p.ex. 5, int)

Type flottant– Nombre à virgule flottant (p.ex. 5.12, float)

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

Types simples

Type booléen• Deux valeurs possibles : FAUX (False), VRAI (True)• Opérateurs de comparaison : ==, !=, >, >=, <, <=

• 2 > 8 # Faux• 2 <= 8 # Vrai

• Opérateurs logiques : NON (not), OU (or), ET (and) • (3 == 3) or (9 > 24) # Vrai• (9 > 24) and (3 == 3) # Faux• not(2==2) # Faux

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

Types simples

Type entier20 + 3 # 2320 - 3 # 1720 * 3 # 6020 ** 3 # 800020 / 3 # 6 (division entière)20 % 3 # 2 (modulo (reste de

la division entière)

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

Types simples

Type entier long– Les entiers longs (seulement limités par la

mémoire vive)

– 2 ** 40 # 1099511627776L– 3 * 72L # 216L

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

Types simples

Type flottant• Les flottants sont not´es avec un « point d

´ecimal » ou en notation exponentielle :

2.718 #3e8 # 3 * 108

6.023e23 # 6.023 * 1023

2. # 23.0 # 3

• Ils supportent les mêmes opérations que les entiers, sauf :20.0 / 3 # 6.66666666666666720.0 // 3 # 6 (division entière forcée)

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

• Pour connaître le type d'une variable :

a = 3

print type(a)

b = 3.5

print type(b)

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

Les chaînes de caractères

Notations :

• Les guillemets

c1 = "L’eau de l'océan"

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

Longueur :

s = "abcde"

print len(s) # 5

Concaténation :

s1 = "abc"

s2 = "defg"

s3 = s1 + s2 # ’abcdefg’

Page 19: Algorithmes et structures de données Cours 8 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 20: Algorithmes et structures de données Cours 8 Patrick Reuter preuter

Les listes

Page 21: Algorithmes et structures de données Cours 8 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 22: Algorithmes et structures de données Cours 8 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 23: Algorithmes et structures de données Cours 8 Patrick Reuter preuter

Afficher tout les nombres :

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

Page 24: Algorithmes et structures de données Cours 8 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 25: Algorithmes et structures de données Cours 8 Patrick Reuter preuter

Afficher uniquement les nombres pairs :

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

Page 26: Algorithmes et structures de données Cours 8 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 27: Algorithmes et structures de données Cours 8 Patrick Reuter preuter

Affectation

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

Résultat :

[100, 38, 10, 25, 72]

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

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

s = "Bonjour";

premiereLettre = s[0];

deuxiemeLettre = s[1];

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

Fonctions prédéfinies

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

longueur = len(nombres);

parenthèses !

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

• Combinaison :

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

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

• Solution de quelques exercices :

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

Grilles de sudoku

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

Grilles de sudoku

5 3 1 8 7 2 9 4 6

Page 34: Algorithmes et structures de données Cours 8 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 35: Algorithmes et structures de données Cours 8 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 36: Algorithmes et structures de données Cours 8 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];