icu.next-video

Contenu proposé par

France Télévisions

Regarde cette vidéo et gagne facilement jusqu'à 15 Lumniz en te connectant !

Il n’y a pas de Lumniz à gagner car tu as déjà consommé cet élément. Ne t'inquiète pas, il y a plein d'autres contenus intéressants à explorer et toujours plus de Lumniz à gagner.

->   En savoir plus
SNT07:22Publié le 19/06/2019

Organisation des données

L’informatique et ses fondements

Structure de données, comment ça fonctionne ?

Les données sont stockées en mémoire sur le disque dur, transférées sur le réseau, peu importe ce à quoi elles correspondent. Il faut un moyen clair d'indiquer la façon dont elles sont codées, organisées, dans quel ordre, sous quel format, etc. L'ordinateur soit lira les données, soit les générera, ou les deux. Dans tous les cas, il faut qu'il sache comment elles sont codées. En pratique, un en-tête décrit la taille de ces données, leur durée éventuelle, les couleurs éventuelles, le type de compression, etc. Cet entête spécifie aussi le codage des données. L'ordinateur regarde d'abord l'en-tête qui accompagne les données pour savoir comment elles sont stockées. Il regarde ensuite les données elles-mêmes en fonction de ce que l'en-tête a décrit.

Type de données de base

L'ordinateur manipule un certain nombre de données de base, notamment des entiers négatifs ou positifs, qui sont plus ou moins grands. On peut avoir des entiers stockés sur 8 bits, donc sur 1 octet, soit 256 valeurs de puissance 8, ou éventuellement des entiers beaucoup plus grands : les ordinateurs actuels savent manipuler notamment des entiers sur 64 bits (donc 16 milliards de milliards de valeurs).

Puis, il y a les nombres à virgue. En informatique, on les appelle les nombres flottants : ce sont des nombres suivis d'une puissance de 10, un exposant. Ces nombres peuvent avoir des valeurs très grandes, beaucoup plus grandes que les entiers. En revanche, ils ont une précision, un nombre de chiffres limité à une dizaine ou une vingtaine, selon le type de nombre flottant que l'on utilise.

Avec ces deux grandes catégories de nombres, on peut faire beaucoup de choses. C'est au programmeur d'indiquer le type de données à stocker. S’il doit stocker un âge, il va utiliser un entier, positif uniquement, stocké sur un nombre de bits relativement faible. Si, par contre, il doit stocker une température, il va plutôt prendre un nombre flottant, avec une précision pas très grande, puisque la température, a priori, ne varie pas sur des plages de valeurs très grandes. Pour un niveau de gris, comme on l'a vu tout à l'heure, ce sera plutôt 8 bits, donc des entiers assez petits.

Données plus complexes

Concernant les données plus complexes, comme une date, qui est composée de 3 nombres (jour, mois et année), une couleur qui comprend 3 composantes (rouge, vert, bleu), etc, il faut  stocker des combinaisons de nombres qu'on appelle des « tuples » (structures ou enregistrements en informatique). On indique alors qu'un tuple est composé de 3 entiers. On assemble ces 3 nombres pour générer une donnée plus compliquée. On peut éventuellement faire des tuples de tuples : par exemple, une époque est composée de 2 dates, qui elles-mêmes sont composées de 3 nombres ; ou une image est composé de pixels qui sont composés de 3 couleurs.

Organiser les données avec les tableaux

Parfois, on ne sait pas à l'avance combien de nombres on sera amener à assembler. Par exemple, si on veut gérer les invités à une fête ou les étapes pendant un voyage. Pour ce faire, on utilise d'autres types de données, comme les tableaux, dans lesquels on insère un ensemble de tuples qui seront des structures similaires : à chaque ligne, on aura un nom, une naissance et une taille. On ne pourra pas avoir autre chose. Les éléments seront donc identiques en structure, mis les uns en dessous des autres, et chacun sera numéroté de 1 jusqu'au nombre d'éléments dans le tableau. Cette méthode permet de gérer un ensemble d'éléments très facilement.

Organiser les données avec les listes

La liste est une autre façon de stocker ce genre d'informations. Le début de liste est un tuple, comme précédemment. Par exemple, un tuple qui contient une ville, une date et une date de fin. Ce tuple va pointer vers le suivant. Donc, on a une liste composée d'un pointeur vers le début, et chaque élément pointe vers le suivant dans la liste. En structure, ça ressemble un peu au tableau, vu qu'on a une succession d'éléments qui sont du même genre.

Les différences sont au niveau algorithmique. Parfois, le tableau sera plus pratique, d'autres fois, ce sera la liste. Par exemple, si on insère un élément au début d'un tableau, il faudra décaler toutes les lignes vers le bas, donc décaler en mémoire toutes les données stockées préalablement. En revanche, dans une liste, on ne décale pas les éléments : on crée un élément dans la mémoire de l'ordinateur et on indique que cet élément est le début de la liste, et on le fait pointer vers l'ancien début de la liste.

Comment stocker les données en mémoire ?

Ce qui est important, c'est de définir clairement la façon dont on stocke les informations et à quel endroit.  C'est le programmeur qui le précise, lorsqu'il écrit son programme. Par exemple, il va indiquer ce que contienne les lignes de son tableau : d'abord, le nom de la personne, ensuite, son âge, sa taille, etc. Cela peut être dans un ordre différent, mais défin clairement au début du programme pour que tout le programme puisse reconnaître les informations quand il va y accéder.
On ne peut pas changer la spécification au milieu du programme. Quand on enregistre des choses dans un fichier, on va avoir le même problème : il va falloir qu’un programme génère le fichier en respectant la spécification pour que les autres puissent la comprendre. C'est par exemple ce qu'on appelle un format de fichier ouvert. Si on prend une image GIF, qui est un fichier ouvert, on sait à l'avance que si on veut le décoder, on aura forcément au début du fichier une chaîne de caractères (« GIF89a » par exemple), ensuite 16 bits qui vont stocker la largeur et ensuite 16 bits qui vont stocker la hauteur de l'image. N'importe quelle personne qui veut lire un fichier GIF pour afficher l'image correspondante saura que les données sont organisées de cette façon. N'importe quelle personne qui veut enregistrer une image sous ce format saura qu'elle peut le faire de cette façon pour que les autres puissent le lire. Quand le format de fichier n'est pas ouvert, des gens pourront le générer. Mais les autres ne pourront peut-être pas les lire.

 

À retenir

  • Les données sont composées d'éléments de base : des entiers, des nombres flottants, éventuellement des lettres ou d'autres choses. On combine ces éléments pour représenter des données plus complexes en faisant des tuples, des assemblages de ces éléments ou des tableaux ou des listes, etc. qui peuvent en contenir énormément et s'agrandir ou se rapetisser au bon vouloir du programmeur et de l'utilisateur.
  • Il est important de spécifier clairement comment sont assemblées ces choses pour que tout le monde puisse les utiliser. Il faut définir une spécification, pour dire « les données sont organisées de telle façon en mémoire, dans tel ordre et de telle taille », pour que la personne qui les remplit et la personne qui les lit puissent se comprendre.

Nom de l'auteur : Liliane Kahmsay / Florent Masseglia

Producteur : Inria

Publié le 19/06/19

Modifié le 06/12/23