ISN Types de données

Types de données

modifier
Savoirs :
  • nombre entier ;
  • virgule flottante ;
  • booléen ;
  • caractère ;
  • tableau ;
  • chaîne de caractères.
Capacités :

Choisir un type de donnée en fonction d'un problème à résoudre.

Observation :

On adapte la présentation de ces notions en fonction du langage de programmation retenu.

Pourquoi typer des données

modifier

Dans un ordinateur, tout est représenté par des uns et des zéros. Alors, pourquoi vouloir distinguer des types de données ?

Pour l'essentiel, c'est une question de codage !

Prenons l'exemple du nombre  , il pourrait représenter :

un entier court,
le nombre décimal 65, codé sur un seul octet ;
un réglage particulier d'options (tableau booléen),
supposons 8 options de personnalisation d'une automobile vraies ou fausses, par exemple :
toit ouvrant freinage assisté GPS intégré lecteur multimedia MP3 jantes larges couleur métallisée système de détection de collision assistance au créneau
0 1 0 0 0 0 0 1

 ;

un caractère ASCII,
ici, c'est le « A » ;

Pour des données plus longues, il existe de nombreuses autres interprétations possibles. Décider quel codage s'applique, c'est typer la donnée.

Bien connaître les types de données

modifier

Si on ignore les types de données, des bugs étranges et incompréhensibles peuvent se produire.

Le type entier

modifier

Selon les ordinateurs et les systèmes utilisés, un entier peut être codé sur une longueur fixe :

1 octet (8 bits)
il est dans l'intervalle [0, 255] (entier non signé), ou dans l'intervalle [-128, 127] (entier signé)
2 octets (16 bits)
il est dans l'intervalle [0, 65535] (entier non signé), ou dans l'intervalle [-32768, 32767] (entier signé)

Exercice

Quelles sont les limites qui concernent la représentation d'un entier sur 64 bits ?

Des bibliothèques de programmes existent pour faire du calcul en précision arbitraire. Dans ce cas, un entier peut être représenté par un nombre variable d'octets, selon les besoins.

Le type virgule flottante

modifier

Un ordinateur n'utilise que des zéros et et des uns. Même si vous utilisez plusieurs giga-octets pour représenter un nombre tel que   ou  , la représentation sera toujours fausse.

On représente donc les nombres « réels » par une suite limitée de chiffre binaires. Un type à virgule flottante contient quelques bits pour donner l'ordre de grandeur (un exposant positif ou négatif pour faire une puissance de deux), et un nombre entier qui est multiplié par cette puissance de deux.

Extrait de l'article Virgule flottante de Wikipedia

  Encodage Signe Exposant Mantisse Valeur d'un nombre Précision Chiffres significatifs
Simple précision 32 bits 1 bit 8 bits 23 bits   24 bits environ 7
Double précision 64 bits 1 bit 11 bits 52 bits   53 bits environ 16

Le type booléen

modifier

Il s'agit d'un type de donnée qui ne peut avoir que deux valeurs différentes : vrai/faux ou 1/0.

La plupart des ordinateurs n'ont de mécanismes simples que pour accéder à des octets ; alors, il arrive que les valeurs vrai/faux soient encodées par les octets 11111111 et 00000000. Ce n'est pas un problème pour des systèmes riches en mémoire. Pour des micro-systèmes disposant d'une mémoire très limitée, il peut être bon de considérer des méthodes d'empaquetage de plusieurs booléens dans un seul octet, pour économiser une ressource précieuse.

Le type caractère

modifier

Le tableau suivant résument l'encodage de caractères non accentués, du code ASCII (début de l'UNICODE). Il a été adapté d'une page de Wikipedia.

0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
000
NUL
SOH
STX
ETX
EOT
ENQ
ACK
VT
FF
SO
SI
001
DLE
DC1
DC2
DC3
DC4
NAK
SYN
ETB
CAN
EM
SUB
FS
GS
RS
US
002
003
004
005
006
007

Pour connaître le code d'un caractère, prendre le chiffre hexadécimal en début de ligne, puis le chiffre hexadécimal en tête de colonne. Par exemple, 0041 est le code hexadécimal du caractère « A »

Évidemment, ce ne sont pas les seuls caractères qu'on ait à encoder dans le monde.

Le type tableau

modifier

Le type tableau se présente le plus souvent dans la mémoire de l'ordinateur comme une succession de données du même type (entiers, ou flottants, etc...), les unes à la suite des autres.

La particularité du tableau c'est qu'on doit pouvoir accéder à une des « cases » de ce tableau en donnant sont « index » : un seul numéro (tableaux à une dimension), ou plusieurs (tableaux à plusieurs dimensions).

Le type chaîne de caractères

modifier

Une chaîne de caractères, ça peut être implémenté comme un tableau de caractères.

Dans certains cas, cependant, on préfère réserver une code particulier qui signifie « fin de la chaîne de caractères ». Par exemple, en langage C, le premier octet nul marque la fin de la chaîne de caractères.

Une autre méthode (utilisée par certains langages Pascal), consiste à coder tout au début de la chaîne un entier qui représente la longueur de la chaîne de caractères.

Exercice

  • Trouver au moins un inconvénient de la méthode du caractère terminal (pensez à ce qui se passe si à la suite d'un bug, ce caractère disparaît);
  • Trouver au moins un inconvénient de la méthode de longueur encodée en début de chaîne.