Algorithmes et structures de donnes 4me cours - PowerPoint PPT Presentation

1 / 62
About This Presentation
Title:

Algorithmes et structures de donnes 4me cours

Description:

(et pas 1 000 octets comme on pourrait le supposer), soit 2 la puissance 10. ... limit e qui se traduit par des arrondis qui peuvent s'accumuler de fa on g nante. ... – PowerPoint PPT presentation

Number of Views:142
Avg rating:3.0/5.0
Slides: 63
Provided by: PatrickR158
Category:

less

Transcript and Presenter's Notes

Title: Algorithmes et structures de donnes 4me cours


1
Algorithmes et structures de données4ème cours
  • Patrick Reuter
  • maître de conférences
  • http//www.labri.fr/preuter

2
Ingrédients dalgorithmes
  • Affectation (ex. mois 6)
  • Condition/Comparaison (ex. mois lt 12)
  • Appel de fonction (ex. writeln(mois))
  • Structure de contrôle
  • Branchements conditionnels (multiples) (si ..
    Alors .. Sinon)
  • Boucles (tant que .. faire, pour .. faire)
  • Bloc dinstructions (begin .. end)

3
Aujourdhui
  • Types de base
  • Type tableau

4
Mémoire vive
Proc 64bit
2,93 GHz 2,93 Giga-Instructions par seconde
5
Organisation de la mémoire
  • Un octet peut prendre 28256 valeurs différentes,
    entre 00000000 et 11111111.
  • 1 kilo-octet (ko ou Ko) 210 octets 1 024
    octets
  • (et pas 1 000 octets comme on pourrait le
    supposer), soit 2 à la puissance 10.
  • 1 méga-octet (Mo) 220 octets 1 024 ko
    1 048 576 octets.
  • 1 giga-octet (Go) 230 octets 1 024 Mo
    1 073 741 824 octets.
  • 1 téra-octet (To) 240 octets 1 024 Go
    1 099 511 627 776 octets.

6
Organisation de la mémoire
  • Mémoire de 512 MegaOctets

536.870.911
536.870.910
...
1.000
...
5
4
3
2
1
0
adresse dans la mémoire vive
7
Déclaration de variables
Préparation La veille, mettez les pois chiches
dans un bol d'eau. Le jour même, roulez le
couscous .Si vous utilisez du couscous roulé et
séché, rincez-le à l'eau froide, égouttez-le et
laissez-le gonfler pendant 30 mn. Coupez la
viande en morceaux.Pelez les oignons et
coupez-en 1 en morceaux. Lavez et passez les
tomates à la moulinette.Mettez la viande dans
une marmite et ajoutez les morceaux d'oignon, les
tomates ou le concentré de tomate dilué dans 1
verre d'eau, l'huile, le poivre, le piment, la
cannelle et du sel. Faites revenir ..
  • Comme dans un livre de recettes
  • Ingrédients(pour 8-10 personnes) - 1 kg de
    couscous roulé - 1 kg de mouton - 1 poignée de
    pois chiches - 2 oignons secs - 3-4 tomates
    fraîches ou 1 cuillère.à soupe de concentré de
    tomate - 3-4 pommes de terre - 3-4 navets -
    3-4 carottes - 3-4 courgettes - 1 tranche de
    courge - 4 cuillères à soupe d'huile - 1/2
    cuillère à café de cannelle - 1 pincée de poivre
    noir - 1/2 cuillère à soupe de piment rouge doux
    ou de paprika - 1/2 cuillère à soupe de
    ras-el-hanout
  • - 1 piment rouge sec - 100 g de beurre ou 3
    cuillères à soupe d'huile - sel

8
Déclaration de variables
  • var compteur integer
  • var diviseur float
  • var c char
  • var precision double
  • var nom string
  • var masculin boolean
  • diviseur 1.1
  • compteur 1
  • Nom Gerhard

Nombre entier
Nombre à virgule flottante
caractère
Nombre à virgule flottante avec double précision
Chaîne de caractères
VRAI/FAUX
9
Types de base
  • Type binaire
  • Boolean (bool) 1 bit FALSE, TRUE (FAUX,
    VRAI)
  • Nombre entiers
  • Unsigned char (byte) 1 Octet 0 à 255
  • Signed char (byte) 1 Octet -128 à 127
  • Unsigned integer 4 Octets 0 à 4294967295
  • Signed Integer 4 Octets -2147483648 à
    2147483647
  • Nombre à virgule flottante
  • Real (Single, float) 4 Octets -3.410-38 à
    3.41038 (7 décimales)
  • Double 8 Octets 1.8 10-308 à 1.8 10308 (15
    décim)
  • Rappel 1 Octet 8 bits 28 possibilités
  • 4 Octets 32 bits 232 possibilités

10
Octet, byte (caractère)
  • var c char (byte)
  • valeurs de 0..255
  • Quest-ce quon peut faire avec un octet ?
  • ? Code ASCII
  • (American Standard Code for Information
    Interchange)

95 caractères imprimables
11
Octet - Code ASCII
12
Organisation de la mémoire
  • Un octet peut prendre 28256 valeurs différentes,
    entre 00000000 et 11111111.
  • Octets non- signés
  • Par exemple 
  • 1 1 0 0 0 1 0 0


128 64 32 16 8 4 2 1
13
Organisation de la mémoire
  • Octet signé de -128 jusquà 127
  • Valeurs négatives 1111 1111 -1 à 1000 0000
    -128.
  • Valeurs positives 0000 0000 0 à 1111 1111
    127
  • Calculer les valeurs négatives
  • Prendre le complément
  • Ajouter 1
  • Exemple - 65
  • 01000001
  • Complément 10111110
  • Ajouter 1 10111111

14

0,001231 1,23110-3 -9866 -9,866103 1,45
1,45101
1,4
15

exposant e
signe s 1,-1
exposant e
0,001231 1,23110-3 -9866 -9,866103 1,45
1,45101
1,4
base b10
mantisse m (entier, sans la virgule)
16
Nombre à virgule flottante
  • var c real (single, double, real, ..)
  • Approximations rationnelles de nombres réels.
  • Les nombres à virgule flottante possèdent
  • un signe s (dans -1, 1)
  • une mantisse entière m (parfois appelée
    significande)
  • un exposant e.
  • s m be
  • - Avec b la base de représentation (parfois 2,
    10, 16, ou autre)
  • - En faisant varier e, on fait  flotter  la
    virgule décimale.

17
Nombre à virgule flottante
  • Float, single, double, real, ..
  • Approximations rationnelles de nombres réels.
  • Les nombres à virgule flottante possèdent
  • un signe s (dans -1, 1)
  • une mantisse entière m (parfois appelée
    significande)
  • un exposant e.
  • s m be
  • Avec b la base de représentation (parfois 2, 16,
    ou autre)
  • signe exposant mantisse
  • Simple précision (float, 32 bits) 1 bit 8
    bits 23 bits
  • Double précision(double,64 bits) 1 bit 11
    bits 52 bits
  • Simple précision (b2) (-1)S (1 M/223 )
    2(E-127)
  • Double précision (b2) (-1)S (1 M/252 )
    2(E-1023)

18
Conversion dun nombre x
  • Nombre x (-1)s m 2e (base b 2)
  • signe s 0 pour positive, 1 pour négative
  • Exposant e e log2 (x)
  • Mantisse m m (x/2e 1) 223

19
Conversion dun nombre x
  • Rappel Nombre x (-1)s m 2e (base b
    2)
  • signe s 0 pour positive, 1 pour négative
  • Exposant e e log2 (x)
  • Mantisse m m (x/2e 1) 223
  • Exemple x 11,25
  • Signe s positive -gt 0 binaire
  • Exposant e log2 (11,25) 3,49 3 ?
    127 130 -gt 10000010 binaire
  • Mantisse m (11,25/23 1) 223 3407872 )
    01101000000000000000000 binaire
  • Solution 0 10000010 01101000000000000000000

pour chiffres négatifs
20
Nombre à virgule flottante
  • Float, single, double, real, ..
  • Approximations rationnelles de nombres réels.
  • Les nombres à virgule flottante possèdent
  • un signe s (dans -1, 1)
  • une mantisse entière m (parfois appelée
    significande)
  • un exposant e.
  • s m be
  • Limitation
  • précision limitée qui se traduit par des arrondis
    qui peuvent s'accumuler de façon gênante.

21
Organisation de la mémoire
  • var lettre char ( 1 octet (byte)
    )

536.870.911
536.870.910
...
1.000
...
5
4
3
2
1
0
22
Organisation de la mémoire
  • var lettre signed char
  • lettre -65

536.870.911
536.870.910
...
1.000
...
5
lettre 4
191
3
2
1
0
23
Organisation de la mémoire
  • var lettre1,lettre2,lettre3,lettre4 char
  • lettre1 60
  • lettre2 80
  • lettre3 50
  • lettre4 30

...
1.000
...
lettre4 3
30
lettre3 2
50
lettre2 1
80
lettre1 0
60
24
Organisation de la mémoire
  • var nombre integer

...
1.000
...
5
4
nombre
nombre
nombre
nombre 0
25
Organisation de la mémoire
  • var nombre integer ( 4 byte (octets) )
  • nombre 125

536.870.911
536.870.910
...
1.000
...
5
4
0
nombre
0
0
0
nombre
0
nombre
0
nombre 0
125
125
26
Organisation de la mémoire
  • var nombre integer ( 4 byte (octets) )
  • nombre 260

536.870.911
536.870.910
...
1.000
...
5
4
0
nombre
0
0
0
nombre
1256 41
0
nombre
1
nombre 0
125
4
27
Organisation de la mémoire
  • var resultat REAL

536.870.911
536.870.910
...
1.000
...
5
4
resultat
resultat
resultat
resultat 0
28
Exercice
  • Déclarer le nombre de jours dans chaque mois
  • Ecrire un algorithme qui compte le nombre de mois
    à 30 jours

29
  • var janvier byte
  • var fevrier byte
  • var mars byte
  • var decembre byte
  • var compteur integer
  • janvier 31
  • fevrier 28
  • mars 31
  • avril 30
  • decembre 31
  • compteur 0
  • si janvier 30 alors
  • compteur compteur 1

30
Type tableaux (angl. ARRAY)
  • Déclaration dune variable de type tableau
  • Définition
  • var nom_du_tableau ArrayMinDim..MaxDim of
    type
  • Exemples
  • var mot array0..10 of char
  • var jours array1..12 of char
  • structure de données la plus connue
  • structure homogène, chaque élément est du même
    type de base

31
Type tableaux (angl. ARRAY)
  • Déclaration dune variable de type tableau
  • var jours array1..12 of byte
  • var mot array0..10 of char
  • Affectation
  • nom_du_tableauindex valeur
  • Exemples
  • jours1 31
  • jours2 28
  • jours12 31
  • jours13 ----- Erreur !!!
  • jours14 ----- Erreur !!!

32
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31

33
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0

34
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0

35
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

36
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

37
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

38
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

Jours1
Jours2
...
Jours12
i
nombre
39
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

Jours1
Jours2
...
Jours12
i
nombre
31
40
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

Jours1
Jours2
...
Jours12
i
nombre
31
28
41
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

Jours1
Jours2
...
Jours12
i
nombre
31
28
31
42
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

Jours1
Jours2
...
Jours12
i
nombre
31
28
31
1
43
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

Jours1
Jours2
...
Jours12
i
nombre
31
28
31
1
0
44
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

Jours1
Jours2
...
Jours12
i
nombre
31
28
31
1
0 .
45
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

Jours1
Jours2
...
Jours12
i
nombre
31
28
31
1
0 .
46
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

Jours1
Jours2
...
Jours12
i
nombre
31
28
31
1 2
0 .
47
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

Jours1
Jours2
...
Jours12
i
nombre
31
28
31
1 2
0 .
48
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

Jours1
Jours2
...
Jours12
i
nombre
31
28
31
1 2
0 .
49
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

Jours1
Jours2
...
Jours12
i
nombre
31
28
31
1 2 3
0 .
50
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

Jours1
Jours2
...
Jours12
i
nombre
31
28
31
1 2 3
0 .
51
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

Jours1
Jours2
...
Jours12
i
nombre
31
28
31
1 2 3
0 .
52
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

Jours1
Jours2
...
Jours12
i
nombre
31
28
31
1 2 3 4
0 .
53
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

Jours1
Jours2
...
Jours12
i
nombre
31
28
31
1 2 3 4
0 1 .
54
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

Jours1
Jours2
...
Jours12
i
nombre
31
28
31
1 2 3 4
0 1 .
55
Type tableaux (angl. ARRAY)
  • Exemple dun algorithme sur les tableaux
  • - compter le nombre de mois avec 30 jours
  • Déclaration de variables
  • var jours array1..12 of byte
  • var i, nombre integer
  • Affectation des variables
  • jours1 31
  • jours2 28
  • jours12 31
  • Initialisation
  • i1
  • nombre 0
  • boucle

Jours1
Jours2
...
Jours12
i
nombre
31
28
31
1 2 3 4
0 1 .
56
Organisation de la mémoire
  • var jours array1..12 of byte 12
    octets

536.870.911
536.870.910
...
jours12 2011
...
...
jours3 2002
jours2 2001
jours1 2000
...
0
57
Organisation de la mémoire
  • Jours131 jours230

536.870.911
536.870.910
...
jours12 2011
31
...
jours3 2002
31
jours2 2001
28
jours1 2000
31
...
0
58
Organisation de la mémoire
  • var jours array1..12 of byte 12
    octets

536.870.911
536.870.910
...
jours12 2011
31
...
Occupe de la place successive dans la mémoire
jours3 2002
31
jours2 2001
28
jours1 2000
31
...
0
59
Organisation de la mémoire
  • var jours array1..12 of byte 12
    octets

536.870.911
536.870.910
...
jours12 2011
31
...
Occupe de la place successive dans la mémoire
jours3 2002
31
jours2 2001
28
jours1 2000
31
...
0
? joursindex (2000index-1)
60
Organisation de la mémoire
  • var jours array1..12 of byte 12
    octets

536.870.911
536.870.910
...
jours12 2011
31
...
jours3 2002
31
jours2 2001
28
jours1 2000
31
...
i 0
61
Type tableaux (angl. ARRAY)
  • structure de données la plus connue
  • structure homogène, chaque élément est du même
    type de base
  • occupe de la place successive dans la mémoire
  • random access laccès aux différents
    éléments se fait à coût égal est donc à un coût
    constant

62
(No Transcript)
Write a Comment
User Comments (0)
About PowerShow.com