• Aucun résultat trouvé

3I-IN9 - Structure de Donn´ees Introduction Romain Negrel [email protected]

N/A
N/A
Protected

Academic year: 2022

Partager "3I-IN9 - Structure de Donn´ees Introduction Romain Negrel [email protected]"

Copied!
40
0
0

Texte intégral

(1)

3I-IN9 - Structure de Donn´ees

Introduction

Romain Negrel [email protected]

ESIEE Paris

(2)

1 Introduction

2 Les types de base

3 Les tableaux

4 Les structure

(3)

Algorithme

Quelque exemple

D´eterminer la plus petite valeur entre deux valeurs Calcul du PGCD de deux nombres (Euclide 300 avant J.-C.)

Tri d’un tableau

Chemin dans un graphe Ordonnancement

Compression/D´ecompression Cryptage

Simulation etc

(4)

Algorithme

efinition

Un algorithme prend en entr´ee des donn´ees et fournit une solution `a un probl`eme

Un algorithme = ensemble d’op´erations `a effectuer

I Op´erations ex´ecut´ees en s´equence

I Op´erations ex´ecut´ees en parall`ele

I Op´erations ex´ecut´ees sur plusieurs processeurs

Mise en œuvre d’un algorithme

I on parle d’impl´ementation (Anglicisme)

I L’´ecrire dans un langage de programmation

(5)

Algorithme

Pourquoi en faire ?

Il existe plusieurs m´ethodes pour r´esoudre un probl`eme, qui ne sont pas ´equivalentes

Ecrire un programme sans faire de l’algorithmique´ c’est choisir une m´ethode sans r´efl´echir

Faire de l’algorithmique permet de trouv´e la meilleur m´ethode pour r´esoudre un probl`eme

(6)

Algorithme

Comment comparer ?

Tous les algorithmes ne sont pas ´equivalents Le chois de l’algorithme d´epend de

I du probl`eme `a r´esoudre

I de l’architecture mat´eriel utilis´e

Pour diff´erencier les algorithmes on utilise 2 crit`eres

I Temps de calcul : lent v.s. rapides

I emoire utilis´ee : peu v.s. beaucoup

On parle de

I complexit´e en temps (vitesse)

I complexit´e en espace (m´emoire utilis´ee)

(7)

Structure de Donn´ees

efinition

Une structure de donn´ees est une mani`ere d’organiser les donn´ees pour les traiter plus facilement

Diff´erentes type de structures de donn´ees :

I Les structures finies

I Les structures index´ees

I les structures r´ecursives

Choisir la structure de donn´ees, la plus adapt´e `a l’algorithme utilis´e

(8)

Structure de Donn´ees

Op´erations sur les donn´ees

Structures finies

Structures de donn´ees dont la taille est fix´ee `a l’avance Types de base

I Caract`ere, valeur num´erique, adresse m´emoire

Types compos´es

I Regroupement dans une structure de types de base

Op´erations :

I Lecture

I Ecriture´

(9)

Structure de Donn´ees

Op´erations sur les donn´ees

Structures index´ees et r´ecursives

Collection de structures finies

Tableau, liste chaˆın´ee, dictionnaire, arbre, ...

Op´erations :

I Acc`es

F par index

F par cl´e

I Insertion

I Suppression

I Tri

I Recherche

(10)

Structure de Donn´ees

Comment choisir ?

Tous les structures de donn´ees ne sont pas

´

equivalents

Le crit`ere le plus important est le temps d’acc`es au donn´ees

I Lecture/´Ecriture

I Insertion/Suppression

On parle de la complexit´e des fonctions d’acc`es

(11)

M´emoire physique

efinition

La m´emoire physique est la partie mat´eriel de l’ordinateur qui set `a stocker des

informations

Diff´erentes types de m´emoire physique

I emoire de masse

I emoire vive

Donn´ees stock´ees accessible par adresse

I La m´emoire est constitu´e d’un ensemble de block unitaire

I Chaque block unitaire `a une adresse qui lui est unique

I L’adressage est continue

(12)

M´emoire physique

Plus concr`etement

Mémoire

Bus d’adresses

Dans un ordinateur (Architecture AMD64)

I Block unitaire de donn´ee : 8 bits/1 octet (soit 256 valeurs possible)

I Bus d’adresse : 48 bits (soit 280 To d’adressage)

(13)

M´emoire physique

Taille, vitesse et temps d’acc`es

Disque dur

I Taille : plusieursTo

I Vitesse : plusieurs dizaine deMo/s

I Temps d’acc`es : quelques dizaine dems

SSD (Solid-state drive)

I Taille : plusieurs centaine deGo

I Vitesse : plusieursGo/s

I Temps d’acc`es : quelques centaine demicro-seconde

M´emoire vive

I Taille : plusieurs dizaine deGo

I Vitesse : plusieurs dizaine deGo/s

I Temps d’acc`es : quelques dizaine denano-seconde

Cache processeur (L1, L2 et L3)

I Taille : plusieursMo

I Vitesse : plusieurs centaine deGo/s

I Temps d’acc`es : dizaine denano-seconde

(14)

M´emoire physique

Taille, vitesse et temps d’acc`es

Disque dur

I Taille : plusieursTo

I Vitesse : plusieurs dizaine deMo/s

I Temps d’acc`es : quelques dizaine dems

SSD (Solid-state drive)

I Taille : plusieurs centaine deGo

I Vitesse : plusieursGo/s

I Temps d’acc`es : quelques centaine demicro-seconde

M´emoire vive

I Taille : plusieurs dizaine deGo

I Vitesse : plusieurs dizaine deGo/s

I Temps d’acc`es : quelques dizaine denano-seconde

Cache processeur (L1, L2 et L3)

I Taille : plusieursMo

I Vitesse : plusieurs centaine deGo/s

I Temps d’acc`es : dizaine denano-seconde

(15)

M´emoire physique

Taille, vitesse et temps d’acc`es

Disque dur

I Taille : plusieursTo

I Vitesse : plusieurs dizaine deMo/s

I Temps d’acc`es : quelques dizaine dems

SSD (Solid-state drive)

I Taille : plusieurs centaine deGo

I Vitesse : plusieursGo/s

I Temps d’acc`es : quelques centaine demicro-seconde

M´emoire vive

I Taille : plusieurs dizaine deGo

I Vitesse : plusieurs dizaine deGo/s

I Temps d’acc`es : quelques dizaine denano-seconde

Cache processeur (L1, L2 et L3)

I Taille : plusieursMo

I Vitesse : plusieurs centaine deGo/s

I Temps d’acc`es : dizaine denano-seconde

(16)

M´emoire physique

Taille, vitesse et temps d’acc`es

Disque dur

I Taille : plusieursTo

I Vitesse : plusieurs dizaine deMo/s

I Temps d’acc`es : quelques dizaine dems

SSD (Solid-state drive)

I Taille : plusieurs centaine deGo

I Vitesse : plusieursGo/s

I Temps d’acc`es : quelques centaine demicro-seconde

M´emoire vive

I Taille : plusieurs dizaine deGo

I Vitesse : plusieurs dizaine deGo/s

I Temps d’acc`es : quelques dizaine denano-seconde

Cache processeur (L1, L2 et L3)

I Taille : plusieursMo

I Vitesse : plusieurs centaine deGo/s

I Temps d’acc`es : dizaine denano-seconde

(17)

M´emoire physique

Taille, vitesse et temps d’acc`es

Disque dur

I Taille : plusieursTo

I Vitesse : plusieurs dizaine deMo/s

I Temps d’acc`es : quelques dizaine dems

SSD (Solid-state drive)

I Taille : plusieurs centaine deGo

I Vitesse : plusieursGo/s

I Temps d’acc`es : quelques centaine demicro-seconde

M´emoire vive

I Taille : plusieurs dizaine deGo

I Vitesse : plusieurs dizaine deGo/s

I Temps d’acc`es : quelques dizaine denano-seconde

Cache processeur (L1, L2 et L3)

I Taille : plusieursMo

I Vitesse : plusieurs centaine deGo/s

I Temps d’acc`es : dizaine denano-seconde

(18)

M´emoire physique

Taille, vitesse et temps d’acc`es

Disque dur

I Taille : plusieursTo

I Vitesse : plusieurs dizaine deMo/s

I Temps d’acc`es : quelques dizaine dems

SSD (Solid-state drive)

I Taille : plusieurs centaine deGo

I Vitesse : plusieursGo/s

I Temps d’acc`es : quelques centaine demicro-seconde

M´emoire vive

I Taille : plusieurs dizaine deGo

I Vitesse : plusieurs dizaine deGo/s

I Temps d’acc`es : quelques dizaine denano-seconde

Cache processeur (L1, L2 et L3)

I Taille : plusieursMo

I Vitesse : plusieurs centaine deGo/s

I Temps d’acc`es : dizaine denano-seconde

(19)

M´emoire physique

Taille, vitesse et temps d’acc`es

Disque dur

I Taille : plusieursTo

I Vitesse : plusieurs dizaine deMo/s

I Temps d’acc`es : quelques dizaine dems

SSD (Solid-state drive)

I Taille : plusieurs centaine deGo

I Vitesse : plusieursGo/s

I Temps d’acc`es : quelques centaine demicro-seconde

M´emoire vive

I Taille : plusieurs dizaine deGo

I Vitesse : plusieurs dizaine deGo/s

I Temps d’acc`es : quelques dizaine denano-seconde

Cache processeur (L1, L2 et L3)

I Taille : plusieursMo

I Vitesse : plusieurs centaine deGo/s

I Temps d’acc`es : dizaine denano-seconde

(20)

M´emoire physique

Taille, vitesse et temps d’acc`es

Disque dur

I Taille : plusieursTo

I Vitesse : plusieurs dizaine deMo/s

I Temps d’acc`es : quelques dizaine dems

SSD (Solid-state drive)

I Taille : plusieurs centaine deGo

I Vitesse : plusieursGo/s

I Temps d’acc`es : quelques centaine demicro-seconde

M´emoire vive

I Taille : plusieurs dizaine deGo

I Vitesse : plusieurs dizaine deGo/s

I Temps d’acc`es : quelques dizaine denano-seconde

Cache processeur (L1, L2 et L3)

I Taille : plusieursMo

(21)

M´emoire physique

Plus concr`etement

Adresses Données

... ...

0xFF01020305 0xAA 0xFF01020306 0x02 0xFF01020307 0x52 0xFF01020308 0xBF 0xFF01020309 0x80 0xFF0102030A 0xA5 0xFF0102030B 0x6E 0xFF0102030C 0x4C 0xFF0102030D 0x88 0xFF0102030E 0xB2 0xFF0102030F 0xF3 0xFF01020310 0x8C 0xFF01020311 0xB4 0xFF01020312 0x58

... ...

M´emoire continue

I Adresse + 1 : existe

I Adresse - 1 : existe

(22)

Langage C

Histoire

invent´e en 1972 dans les Laboratoire Dell plusieurs Normalisation depuis 1983

I C89 (ANSI C) en 1989

I ...

I C11 en 2011

(23)

Langage C

Caract´eristiques g´en´erales

Langage de programmation imp´eratif Qualifi´e de langage de bas niveau Compil´ee

Typ´e

Passage d’argument par recopie en pile

(24)

Segment de donn´ees

Architecture

initialized data data uninitialized data

bss heap stack

M´emoire programme divis´e en 3 r´egions Segment de donn´ees

I Text + Data (globales et statiques initialis´ees)

I BSS (globales et statiques non initialis´ees)

I Tas binaire (Allocation dynamique)

Pile d’ex´ecution Segment de code

(25)

Les nombres entiers

Les diff´erents types

Type Taille (Octets) Plage de valeurs

char 1 -128 `a 127

unsigned char 1 0 `a 255

short 2 -32 768 `a 32 767

unsigned short 2 0 `a 65 535

int 4 -2 147 483 648 `a 2 147 483 647

unsigned int 4 0 `a 4 294 967 295

long 8 -9 223 372 036 854 775 808 `a

9 223 372 036 854 775 807 unsigned long 8 0 `a 18 446 744 073 709 551 616

(26)

Les nombres entiers

La repr´esentation m´emoire

Les nombres entiers non sign´es unsigned short i;

I Valeur min = 0

I Valeur max = 2161 = 65535

2´emeoctets 1´er octets

215 214 213 212 211 210 29 28 27 26 25 24 23 22 21 20

Les nombres entiers sign´es short i;

I Valeur min = −215 = -32 768

I Valeur max = 2151 = 32 767

(27)

Les nombres flottants

Les diff´erents types

Attention : ne pas confondre nombres r´eels et nombres flottants !

Type Taille (Octets) Plage de valeurs float 4 3.4×10−38 `a 3.4×1038 double 8 1.7×10−308 `a 1.7×10308 long double 10 3.4×10−4932 `a 3.4×104932

(28)

Les nombres flottants

La repr´esentation m´emoire

La norme IEEE 754 cr´ee en 1985

Les nombres sont d´ecompos´e en 3 composantes

I Le signe (S)

I L’exposant (E)

I la Mantisse (M)

Type Signe Exposant Mantisse Valeur

float 1 bit 8 bits 23 bits (−1)S ×M ×2(E−127) double 1 bit 11 bits 52 bits (−1)S ×M ×2(E−1023)

(29)

Les nombres flottants

Les caract´eristiques

flottant 6= r´eel

I float pi = π; /* impossible */

Deux exceptions

I NaN (not a number)

I Inf (infini)

(30)

Les caract`eres

Encodage

Le codage des caract`eres est une convention qui permet,

`

a travers un codage connu de tous, de transmettre de l’information textuelle, l`a o`u aucun support ne permet l’´ecriture scripturale.

un caract`ere est cod´e sur un ou plusieurs octets

(31)

Les caract`eres

ASCII et ASCII ´etendu

ASCII pour American Standard Code for Information Interchange cr´ee en 1960 deux versions :

I normal (7 bits)

I ´etendu (8 bits)

(32)

Les caract`eres

UTF-8

Codage le plus utilis´e sur internet Codage `a nombre d’octet variable

(33)

Les types ´enum´ er´es

type avec un nombre de valeur d´etermin´e `a l’avance

(34)

Les pointeurs

c’est quoi ?

Les pointeurs c’est simple ! Variable qui contient l’adresse

(35)

Les pointeurs

eclaration

Deux types de pointeur

I Non typ´e

I typ´e

(36)

Les pointeurs

Utilisation

(37)

Les tableaux

c’est quoi ?

Ensemble de variable du mˆeme type rang´e successivement en m´emoire

Acc`es au ´el´ement par l’adresse en m´emoire du premi`ere ´el´ement du tableau

(38)

Les tableaux

Utilisation

(39)

Les structure

c’est quoi ?

Ensemble de variable d´efinit `a l’avance de type diff´erant rang´e en m´emoire

(40)

Les structure

Utilisation

Références

Documents relatifs

Programme des enseignements – Syst` emes d’information et conception d’entrepˆ ots de donn´ ees – Les principes et la d´ emarche du Data Mining (fouille de donn´ ees)

[r]

La boucle tant que est utilis ´ee lorsque le nombre d’it ´erations n’est pas connu `a l’avance: elle ex ´ecute le bloc d’instructions tant que la condition reste vraie.

Les valeurs contenues dans la pile sont retenues dans une liste li´ee. L’op´eration push place la valeur en tˆete

Une exp´ erience par coloration a montr´ e qu’une rivi` ere souterraine alimente une r´ esurgence dans la vall´ ee. La rivi` ere souterraine a un d´ ebit tr` es sensible aux

Ecrire en Java la gestion d’un tas, repr´esent´e par un tableau : cr´eer, ins´erer, minimum, supprimer (le minimum), modifier une valeur.. Vous programmerez ceci en TP, et

Pour trouver les coordonn´ ees d’un point dans un rep` ere, on ´ ecrit l’´ equation (vectorielle) caract´ eristique on convertit cette ´ equation en syst` eme num´ erique on

Perdre ses photos de vacances : ¸ca n’a pas de