Vous êtes sur la page 1sur 41

Algorithmique et structures de donnes

Introduction et rappels

Licence 3
Textes Numriques Multilingues
smilauer@cetlef.fr
octobre 2011

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

er
Modalits de contrle pour le 1 semestre
Attention !
Caractre cumulatif de la matire : avancer doucement mais surement ...

Contrle continue

Examen final

interrogations de 5 10 minutes
notions de base
morceaux de code crire

examen crit de 2h30


questions thoriques
code rdiger

devoir rendre (en dcembre)


un problme de programmation
envoyer un fichier avec le code
source

compte pour 1/3 de la note finale.

compte pour 2/3 de la note finale.

Introduction

Fonctionnement de lordinateur

Codage

Introduction et rappels
Trois questions pour commencer :
Quest-ce que lalgorithmique ?
Qu'est-ce que les structures de donnes ?
Qu'est-ce que la programmation ?

Description fonctionnelle de l'ordinateur


Composants internes
Priphriques

Codage de linformation
Systmes de numration

Langages de programmation

Numration

Langages de programmation

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Quest-ce quun algorithme ?


Entrer dans le mtro
Problme
On veut entrer dans le mtro. Qu'est-ce qu'il faut faire?
Donnes
Un ou plusieurs tickets de mtro.
Rsulat attendu
Ouverture du tourniquet automatique qui nous laissera entrer dans le couloir du mtro.
Solution
Insrer un ticket dans le tourniquet et attendre l'ouverture. Si le ticket n'est pas valable, essayer
un autre.

Introduction

Fonctionnement de lordinateur

Codage

Langages de programmation

Numration

Quest-ce quun algorithme ?


Entrer dans le mtro : diagramme

Dbut

Insrer le
ticket

NON

OUI

As-tu un autre
ticket ?

Le ticket est-il
valable ?

OUI

Pousser le
tourniquet

NON
Entrer dans le
couloir

Fin

Fin

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Quest-ce quun algorithme ?


Dfinition
Algorithme est un outil permettant de rsoudre un problme bien dfini.
Le problme est spcifi par la relation dsire entre les donnes fournies l'entre (input)
et la sortie (output).
Lalgorithme dcrit une procdure permettant dobtenir la relation entre/sortie dsire
l'aide d'une suite finie d'oprations lmentaires et en spcifiant la manire dont elles
s'enchanent.
les oprations lmentaires excuter avec les donnes : lecture, criture, calcul

la manire dont elles s'enchanent : ordre, choix (tests) et rptition (boucles)

Un algorithme est dit correct si pour chaque instance du problme, il se termine en


produisant la bonne sortie (le bon rsultat).
Un algorithme correct rsout le problme.

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Quelques exemples de problmes rsoudre


Exemple classique : tri croissant d'une suite de nombres
De nombreux algorithmes ont t invents en fonction de diffrents aspects : tri par slection, par
insertion, par bulles, tri rapide ...
Applications diverses

Traitement automatique des langues

analyse morphologique (segmentation


et tagging)
analyse syntaxique (parsing)
correction d'orthographe et de
grammaire
extraction de l'information
rsum et traduction automatiques
reconnaissance et synthse vocale
etc...

analyse de lADN
recherche sur le web
recherche d'itinraire sur une carte
cryptographie
optimisation en industrie et commerce
diagnostic mdical
etc...

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Quest-ce quune structure de donnes ?


... pour entrer dans le mtro
donnes : information contenue par le ticket (valable / prim)
structure de donnes : support papier, bande magntique, ...

Structure de donnes
un moyen de stocker et organiser des donnes pour faciliter laccs ces donnes et leur
traitement
il est ncessaire de choisir la structure de donnes approprie un traitement spcifique

Quelques exemple de structures de donnes : constantes et variables scalaires (simples), tableaux,


listes, arbres, graphes ...

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Quest-ce que la programmation ?


Un programme ralise trois choses :
1

lire de donnes lentre : savoir partir de quoi travailler

effectuer des calculs : application des algorithmes pour traiter les donnes et pour
produire un rsultat

crire des donnes en sortie : lorsqu'il y a un rsultat, il est inscrit quelque part pour
qu'on puisse l'utiliser

Ordinateur

Donnes

Programme

Rsultats

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Quest-ce que la programmation ?


Quatre phases principales dans le dveloppement dun outil

phase d'analyse : analyser un problme pour le dcomposer un petits problmes bien


spcifiques

phase algorithmique : trouver des ides de solutions adaptes

phase de programmation : rdiger le programme final, vrifier sa syntaxe l'aide du


compilateur et dbugeur

phase d'essais : contrler la qualit de sont produit en l'essayant de la manire la plus


complte possible
Attention !

Il faut bien distinguer la conception de l'algorithme de l'implmentation.


Un algorithme est indpendant du langage de programmation choisi.

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Objectifs du cours
1

Apprendre concevoir des algorithmes en utilisant les structures de donnes appropris pour
rsoudre des problmes lmentaires du traitement automatique des langues :

oprations sur les chanes de caractres


segmentation d'un texte
tri des lments d'un texte
constitution automatique des lexiques
recherche des lments d'un texte
effectuer des traitements statistique avec un texte

Apprendre implmenter ces algorithmes avec le langage C++ :


travailler avec un compilateur en ligne de commande
travailler avec un IDE
savoir tester et dboguer son code

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Fonctionnement de lordinateur
Un ordinateur est un automate logique qui traite de l'information, la communique et l'archive.
C'est une machine squentielle : les oprations sont effectues les unes aprs les autres. Il est
capable d'excuter tout calcul de nature symbolique.
Trois composants diffrents :
1

mmoire centrale (RAM - Random Access Memory, mmoire vive)

unit centrale (CPU - Central Processing Unit, processeur)


unit arithmtique et logique
unit de contrle

priphriques
priphriques dchange
priphrique darchivage

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Adresses des emplacements de la mmoire centrale


Chaque octet (groupe de 8 bits) est repr par un numro qu'on nomme son adresse. La
mmoire RAM offre la possibilit d'une accder directement un octet dadresse quelconque.

On peut :
1

ranger (insrer) une information en mmoire sur ladresse dun octet donne

chercher une information en mmoire sur ladresse dun octet donne

Attention !
Mmoire centrale est volatile : la mise hors tension provoque la disparition de tout contenu.

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Unit centrale
La partie active de l'ordinateur, charge de prlever en mmoire chaque instruction d'un
programme donn et de l'excuter.

Unit arithmtique et logique

Unit de contrle

Excution rapide dun nombre limit doprations lmentaires sur les objets identifis par leur
adresse en mmoire :
oprations de calcul
oprations arithmtiques (addition, soustraction, multiplication, division)
oprations logiques (NOT, AND, OR, NAND, XOR, <, >, ==, etc. )

oprations assurant la communication avec les priphriques (entre, sortie)

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Unit centrale

Chaque opration est spcifie par un code opration.

Les oprations sont excutes squentiellement d'aprs leurs position en mmoire.


Cependant, les instructions de branchement permettent de poursuivre l'excution du
programme une adresse donne, au lieu de poursuivre en squence.

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Priphriques et systme dexploitation


Tous les appareils et dispositifs susceptibles d'changer des informations avec la mmoire
centrale et lunit centrale.

Deux types de priphriques :


1

priphriques d'change (ou de communication) entre l'homme et l'ordinateur : clavier,


cran, imprimante, souris, tablette tactile, dispositifs de jeux, etc.

priphriques d'archivage de l'information (mmoire permanente) : disque dur, lecteur de CDROM, DVD, cl USB...

Systme dexploitation
Une couche logicielle intermdiaire entre le programme et le matriel.

Introduction

Fonctionnement de lordinateur

Codage

Numration

Architecture de Von Neumann

Unit centrale

Mmoire Centrale

Unit Arithmtique et Logique

Donnes / Rsultats

Programme

Unit de Contrle

instructions

Unit d'change

Priphriques
d'entre / sortie

Mmoire
externe

Langages de programmation

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Codage binaire de linformation


Reprsentation binaire de linformation
Toute information traite sur un ordinateur est reprsente par une suite finie de positions
binaires (bit) reprsentants une des deux valeurs binaires possibles (0 ou 1)
Il sagt de donnes numriques (discrets, logiques, digitales) en opposition aux donnes
analogiques

Exemple
Diffrence entre la prise de la temprature analogique et numrique.

Longueur dune suite binaire


Une suite binaire est une suite finie de bits. Le nombre de chiffres dune suite binaire est appel
sa longueur.

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Codage binaire
nombre de bits
longueur de la suite binaire

1 bit
2 bits
3 bits
4 bits
5 bits
6 bits
7 bits
8 bits

.
..
...
....
. ....
.. ....
... ....
.... ....

nombre de valeurs

2
22 = 4
23 = 8
24 = 16
25 = 32
26 = 64
27 = 128
28 = 256

valeurs binaires

0,1
00,01,10,11
000,001,010,011,100,101,110,111
0000,0001,0010,0011,0100,0101,0110, ...
0 0000,0 0001,0 0010,0 0011,0 0100, ...
00 0000, 00 0001, 00 0010, 00 0011, ...
000 0000, 000 0001, 000 0010, 000 0011, ...
0000 0000, 0000 0001, 0000 0010, ...

Puissances de deux utiles

28 (8 bits - 1 octet) = 256


216 (16 bits - 2 octets) = 256 x 256 = 65 536
232 (32 bits - 4 octets) = 256 x 256 x 256 x 256 = 4 294 967 296

Introduction

Fonctionnement de lordinateur

Codage

Langages de programmation

Numration

Codage binaire - octet

Un octet
Une suite ordonne de 8 bits. Unit lmentaire de codage, de transmission et de mesure
dinformation.

le bit le plus droite est le bit du poids faible


le bit le plus gauche est le bit du poids fort

Introduction

Fonctionnement de lordinateur

Codage

Langages de programmation

Numration

Interprtation dune suite binaire


Attention !
Une suite binaire peut avoir plusieurs interprtations.

Exemple : La suite 01001101 peut tre interprte comme :


1

le nombre 77

le caractre 'M' (LETTRE LATINE M MAJUSCULE)

une partie d'une suite multimdia (image, son, video)

une instruction pour le CPU


... consulter le contenu d'un fichier l'aide d'un diteur hexadcimal et l'aide d'un diteur de texte

Introduction

Fonctionnement de lordinateur

Codage

Langages de programmation

Numration

Codage de caractres : ASCII


ASCII (ISO 646)
0

NUL
00

SOH
01

STX
02

ETX
03

EOT
04

ENQ
05

ACK
06

BEL
07

BS
08

HT
09

LF
0A

VT
0B

FF
0C

CR
0D

SO
0E

SI
0F

10

11

12

13

14

15

DLE
10

DC1
11

DC2
12

DC3
13

DC4
14

NAK
15

SYN
16

ETB
17

CAN
18

EM
19

SUB
1A

ESC
1B

FS
1C

GS
1D

RS
1E

US
1F

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

SP
20

"

&

'

32

21

22

23

24

25

26

27

28

29

2A

2B

2C

2D

2E

2F

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

<

>

30

31

32

33

34

35

36

37

38

39

3A

3B

3C

48

49

50

51

52

53

54

55

56

57

58

59

40

41

42

43

44

45

46

47

48

49

64

65

66

67

68

69

70

71

72

50

51

52

53

54

55

56

57

58

3E

3F

60

3D
61

62

63

4A

4B

4C

4D

4E

4F

73

74

75

76

77

78

79

59

5A

5B

5C

5D

5E

5F

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

m
6D

6E

6F

61

62

63

64

65

66

67

68

69

6A

6B

6C

96

97

98

99

101

102

103

104

105

106

107

108

109

110

111

70

71

72

73

74

75

76

77

78

79

7A

7B

7C

7D

7E

DEL
7F

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

60

127

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Systmes de numration
Un systme de numration
un moyen de nommer et d'crire les nombres l'aide d'un ensemble rduit de signes (chiffres).

Il se dfinit par :
un entier B > 1 appel base du systme
un ensemble de B symboles appels chiffres
une convention nonant que les chiffres reprsentent chacun un entier compris entre
zro et B-1
une rgle permettant d'crire tout nombre naturel : la valeur de chaque chiffre x dpend
de sa position p dans la suite (numrote de 0 n et de droite gauche) et s'interprte
comme : x * Bp

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Systmes de numration : base dix

3
1984 = (1 * 10 )

2
+ (9 * 10 )

dcomposition

1 x 103

9 x 102

8 x 101

4 x 100

addition

1000

900

80

dcimal

dcimal

rsultat

1
+ (8 * 10 )

1984

0
+ (4 * 10 )

Introduction

Fonctionnement de lordinateur

Codage

Langages de programmation

Numration

Systmes de numration
dcimal

hexadcimal

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
10
11
12
13
14

binaire

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1

0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
0

0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1

0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0

0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0

Introduction

Fonctionnement de lordinateur

Codage

Langages de programmation

Numration

Conversions vers la base dix

binaire >>> dcimal

dcomposition

1 x 27

1 x 26

0 x 25

0 x 24

0 x 23

1 x 22

1 x 21

1 x 20

addition

128

64

binaire

dcimal

rsultat

199

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Conversions vers la base dix

hexadcimal >>> dcimal

hexadcimal
dcomposition

dcimal

addition

rsultat

C(16) = 12(10)

7
12 x 161

192

7 x 160
7

199

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Conversion du dcimal vers le binaire


Mthode de la division par deux
1.
2.
3.
4.

diviser le nombre crit en dcimal par deux


noter le reste
rpter les tapes 1 et 2 jusqu' ce que le rsultat de la division soit gal 0
crire les restes de gauche droite en partant de la dernire division effectue en allant vers
la premire

Exemple :
Ecrire le nombre 199(10)
en binaire.

199
99
49
24
12
6
3
1

/2
/2
/2
/2
/2
/2
/2
/2

= 99
= 49
= 24
= 12
=6
=3
=1
=0

reste 1
reste 1
reste 1
reste 0
reste 0
reste 0
reste 1
reste 1

Rsultat de la conversion : 1100 0111

Introduction

Fonctionnement de lordinateur

Codage

Langages de programmation

Numration

Conversion entre binaire et hexadcimal

binaire >>> hexadcimal

binaire

hexadcimal

1 x 23

1 x 22

0 x 21

0 x 20

0 x 23

1 x 22

1 x 21

1 x 20

12(10) = C(16)

7
C7

Introduction

Fonctionnement de lordinateur

Codage

Langages de programmation

Numration

Conversion entre binaire et hexadcimal

hexadcimal >>> binaire

hexadcimal

C
C16 = 1210

binaire

12

1100

9 0111
1100 0111

Introduction

Fonctionnement de lordinateur

Codage

Numration

Exercice

binaire

hexadcimal

dcimal

F2
31
1100 1100
7F
0111 1110
65

Langages de programmation

Introduction

Fonctionnement de lordinateur

Codage

Numration

Exercice - solution

binaire

hexadcimal

dcimal

1111 0010

F2

242

0001 1111

1F

31

1100 1100

CC

204

0111 1111

7F

127

0111 1110

7E

126

0100 0001

41

65

Langages de programmation

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Langages de programmation
Langage machine
Lordinateur ne "comprend" que le langage machine binaire :
codes des oprations arithmtiques et logique lmentaires
codes des instructions de contrle
valeurs numriques
adresses des emplacements dans la mmoire

011001001000101110101001010101000100....

cognitivement peu commode

Une des ides cruciales pour l'informatique


Utiliser un programme (compilateur ou interprteur) pour traduire en langage machine le code
crit par un programmeur dans un langage de plus haut niveau (plus proche du langage naturel).

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Assembleur
Exemple
en langage machine, l'instruction 01010100 11011010 01010101 signifie additionner
(code opration 01010100) les valeurs situes sur les adresses 11011010 et 01010101
en assembleur, la mme opration est dsign ADD X, Y

Langage assembleur
fait correspondre un code opration un code mnmonique
doit tre capable de dcider des adresses attribuer chacun des symboles tels que X et Y

Assembleur est un langage orient machine. Il faut connatre le fonctionnement de la machine. Il


s'en suit que l'on a tendance penser davantage la machine quau problme rsoudre...

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Langages de programmation de haut niveau


Langage machine : 01100100100010111010100101010100010001
Langage de haut niveau : if (x == y) i = 10;
Langage naturel : Si x est gal y, affecte i la valeur 10
Avantage des langages de programmation de haut niveau
plus facile crire et lire, donc la maintenance des programme est aise
un seul code source peut tre portes sur des plates-formes diffrentes
langages orients problme

Contraintes des langages haut niveau


nombre limit de mots (lexique) et une grammaire simple (syntaxe)
aucune homonymie permise, synonymie trs restreinte

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Traduction du code source en langage machine


... peut tre effectue de deux manires diffrentes :

un compilateur (compilation) : un programme qui lit le code source et produit un fichier


excutable (C, C++)

un interprteur (interprtation) : un programme qui lit le code source et lexcute en mme


temps (Perl, Python, PhP)

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Traduction du code source en langage machine


Compilateur
un compilateur (compilation) : un programme qui lit le code source et produit un fichier
excutable (langages compils C, C++)

avantages :
le fichier compil cache le code source
excution directement sous le systme dexploitation
meilleur performance
inconvnients :
deux oprations : compiler et excuter le programme

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Traduction du code source en langage machine


Interprteur
un interprteur (interprtation) : un programme qui lit le code source et lexcute en mme
temps (langages interprts Perl, Python, PhP)

avantages :
une seule opration : lancer le programme et obtenir les rsultats immdiatement
inconvnients :
le code source est lisible par tous le monde
lutilisateur doit avoir linterprteur install sur son ordinateur

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Concepts de base de la programmation procdurale


variable
donner un nom un emplacement de la mmoire destin contenir une information
(notion d'adresse)
instructions daffectation
ranger une valeur dans un emplacement donne de la mmoire dsign par une
variable
instruction d'entre / de sortie
changer les informations avec les priphriques
instructions excutables
instructions des oprations excuter

Introduction

Fonctionnement de lordinateur

Codage

Numration

Langages de programmation

Concepts de base de la programmation procdurale


instructions de dclaration
renseignements utiles au compilateur pour la traduction
structures de contrle
enchanement des instructions dun programme
structures de donnes
reprsentation des informations manipules par un programme

Introduction

Fonctionnement de lordinateur

Codage

Numration

Popularit des langages de programmation

Source : http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Langages de programmation