• 20 hours
  • Easy

Free online content available in this course.

course.header.alt.is_certifying

Got it!

Last updated on 6/14/24

Maîtrisez les types de données permettant de stocker vos valeurs

Quelle est l'utilité des types de données ?

Nous avons un peu parlé des types de données dans le chapitre précédent, mais il existe tellement d'autres points à aborder sur ce sujet ! Tout d'abord, pourquoi avez-vous besoin de types de données ?

Eh bien, la seule façon de déclarer une variable en C# consiste à spécifier directement son type. Dans l'exemple suivant, regardons la déclaration de la variable total :

Déclaration d'une variable
Déclaration d'une variable

Pour la déclarer, il faut commencer par indiquer le type, puis le nom et enfin la valeur. Lorsque vous déclarez une variable, mais que vous n'avez pas de valeur à lui affecter, vous pouvez vous passer de l'opérateur d'affectation (=) et de la valeur. Par exemple, si vous voulez compter les mots d'une phrase sans savoir quelle sera cette phrase, indiquez le type de la variable et déclarez-la pour une utilisation future. Dans ce cas, vous ne pourrez pas l'utiliser tant qu'aucune valeur ne lui aura été affectée. En programmation, il est souvent nécessaire de déclarer une variable en sachant que vous lui affecterez une valeur plus tard.

S'il n'est pas possible d'utiliser une variable sans valeur, pourquoi donc avoir besoin de spécifier le type ? Pourquoi ne pas se contenter de lui affecter sa valeur par la suite ?

Pendant l'exécution d'un programme, votre processeur (unité centrale de traitement) a besoin de savoir combien d'espace il va devoir réserver à votre variable. Utiliser un type lors de la déclaration de votre variable permet à votre processeur de lui allouer un espace mémoire adapté.

Intéressons-nous maintenant aux types de données primitifs. Ce sont des types de données qui existent par eux-mêmes, comme des atomes.  Ce sont les types les plus simples, à la base de toutes les opérations informatiques. Vous pouvez également les combiner pour construire des types plus complexes, comme vous le verrez dans le chapitre suivant. Nous serons souvent amenés à utiliser les données numériques et les chaînes de caractères. Voyons ensemble de quoi il s’agit !

Données numériques

Les données numériques sont :

  • les nombres entiers, c'est-à-dire les nombres que vous utilisez pour compter (1, 2, 3) ;

  • les nombres décimaux, que vous pouvez utiliser pour stocker des valeurs monétaires (2,50 ou 5,99 par exemple).

Commençons par un type que vous connaissez déjà bien : les entiers ! Les entiers sont déclarés comme n'importe quelle autre variable, avec un type, puis un nom, et si vous l'avez, une valeur :

int total = 10;

Avez-vous reconnu le mot-cléintvu dans le chapitre précédent ? En effet, pour déclarer des entiers, on utilise le mot-cléint. Votre variabletotal est de type entier. De plus, sa valeur est 10, qui est évidemment un nombre entier. 😉

Pour les nombres décimaux, C# utilise trois types différents :

  • float ; 

  • double ;

  • decimal.

Le typefloatdonne une approximation de 6 à 9 chiffres, ledoubledonne une approximation de 15 à 17 chiffres, et ledécimalune approximation de 28 à 29 chiffres. Le typedecimala donc une plus grande précision, mais il se limite à une plage de nombres inférieure à celle des types double et float. Il est principalement utilisé pour les transactions financières.

Quand utiliser chaque type ?

Utilisez les typesfloat/doublepour les valeurs mesurées, et le typedecimalpour les valeurs comptées. Par exemple, vous mesurez une distance et comptez de l'argent.

Ces types sont déclarés et initialisés de la façon suivante :

float longueur = 1876.79F;
double largeur = 1876.79797657;
decimal cout = 300.5M;

Si vous souhaitez qu'un littéral numérique soit traité comme étant de type float, utilisez le suffixe « F » ou « f ». Si vous ne le faites pas, vous obtiendrez une erreur, car C# utilise par défaut le type double pour les valeurs numériques.

Il en va de même pour le typedecimalqui utilise le suffixe « M » ou « m », et le type double qui utilise « D » ou « d ».

Mais que se passe-t-il si je fournis des valeurs supérieures ? Par exemple :

double a = 1876.79797657765609870978709780987;
float b = 1876.79797657765609870978709780987F;

Eh bien, elles vont perdre toutes les deux un peu de précision, mais pas au même degré :

// a -> 1876.79797657766
// b -> 1876.798

Avec des valeurs plus petites, cela ne fait aucune différence :

float longueur = 10.0F;
double largeur = 10.0;

Dans l'exemple ci-dessus, les deux variables contiennent de petites valeurs. Sur la deuxième ligne, nous utilisons simplementdoubleau lieu defloat. Comme cela ne fait aucune différence fonctionnelle, je vous encourage, pour la plupart des langages, à utiliser la plus petite, car l'utilisation d'une plus grande boîte pour stocker de petites valeurs gaspille de la mémoire !

Mélangez des types numériques

Il est important de garder à l'esprit la façon dont les types se mélangent, et les conséquences que cela peut avoir. Prenons par exemple la division de deux nombres. On pourrait s'attendre à ce que le résultat de5/2soit2,5. Mais pour l'ordinateur, ce n'est pas si évident que ça, et vous pourriez bien obtenir un résultat de2 !

Revoyons quelques exemples en C# :

int a = 10;
int b = 4;
int c = a / b;

Devinez quel sera le résultat de la division ?

Eh bien, c'est2! Ce n'est pas vraiment ce à quoi vous vous attendiez, n'est-ce pas ? Les variablesaetbont été affectées à des nombres entiers, de sorte que l'opération de division ne peut fournir qu'un nombre entier comme réponse.

Poursuivons avec cet exemple.

Quel est le résultat attendu de cette opération ?

int a = 10;
int b = 4;
double c = a / b;

Cette fois-ci,cest capable de stocker un nombre de typedouble. Cependant, l'expressiona/bdivise toujours unintpar un autreint. Donc,cse verra attribuer le résultat de la division entière. C'est-à-dire 2, une fois de plus.

Voyons maintenant comment manipuler des variables de différents types au sein d'une action. Par exemple :

int a = 10;
double b = 4;
int c = a / b;

Avez-vous remarqué qu'une variable a été déclarée avecintet l'autre avecdouble?

  1. Le résultat de l'expressiona/bsera2,5.

  2. Cependant,cest déclarée avecintet on ne peut donc pas lui affecter une valeurdouble. Ce code ne fonctionnera pas du tout !

Que se passe-t-il si vous changez d'avis et voulez faire en sorte quebse comporte comme une variableintau milieu du programme ?

Vous pouvez faire en sorte qu'une variable d'un type se comporte comme un autre type. C'est ce qu'on appelle le transtypage. Pour résoudre le problème de l'exemple précédent, faites en sorte que la variableb se comporte comme un entier en l'affectant àc, comme ci-dessous :

int a = 10;
double b = 4;
int c = a / (int) b; //-> c contient 2, car a/(int) b est une division entière

Vous voyez, la variablebse comporte ici comme un entier. Vous pouvez également faire en sorte qu'une variable entièrebse comporte comme si sa valeur était undouble:

int a = 10;
int b = 4;
double c = a / (double) b; //-> c contient 2,5, car la valeur de b est convertie en double

La conversion d'une variable endouble vous permet d'effectuer une division en virgule flottante, même si vous utilisez des variables de typeint.

Testez par vous-même !

Prêt à coder ? Pour accéder à l’exercice, suivez ce lien

Chaînes de caractères

Passons maintenant à un type de variable plus complexe, les chaînes de caractères (string).

Ces variables permettent de stocker du texte, ou en d'autres termes, un ensemble de caractères. Voici comment déclarer une chaîne de caractères en C# :

string ville = "New York";
string film = "Top";
string animalDomestique;
string chaineVide = "";

Vous pouvez fusionner ces différentes variables. Faisons un essai :

string premiereVillePreferee = "New York";
string secondeVillePreferee = "Buenos Aires";

string favoris = premiereVillePreferee + secondeVillePreferee ; // -> « New YorkBuenos Aires »

Mais il n'y a pas d'espace entre les deux. C'est bizarre, non ? Rendons ce code plus lisible en faisant une concaténation, c'est-à-dire en mettant bout à bout des chaînes de caractères et des variables :

string premiereVillePreferee = "New York";
string secondeVillePreferee = "Buenos Aires";

string favoris = "Mes villes préférées sont " + premiereVillePreferee + " et " + secondeVillePreferee ; // -> « Mes villes préférées sont New York et Buenos Aires »

C'est beaucoup mieux maintenant ! On peut aussi concaténer d'autres types de données avec des chaînes de caractères, notamment des nombres. Mais comment procéder ?

string villePreferee = "Buenos Aires";
int nombreDeVoyages = 5;

string recit= "Je suis allé à " + villePreferee + " " + nombreDeVoyages + " fois !"; // -> "Je suis allé à Buenos Aires 5 fois !"

Dans la section précédente, nous avons utilisé l'opérateur+pour faire la somme de deux nombres. Ici, avec des chaînes de caractères, l'opérateur+peut être utilisé pour concaténer des chaînes et des nombres entiers. La concaténation consiste à joindre des chaînes de caractères, ou des nombres et des chaînes de caractères.

Testez par vous-même !

Prêt à coder ? Pour accéder à l’exercice, suivez ce lien

N'oubliez jamais le type

Comme nous l'avons déjà mentionné, les variables ont toujours un type. En C#, pour déclarer un type, soit on nomme le type de manière explicite, soit on utilise le mot-clévarpour laisser le compilateur le déduire. Le transtypage vous permet d'utiliser le contenu d'une variable comme s'il était d'un autre type.

Par exemple :

var limite; //-> Va générer une erreur : les variables implicitement typées doivent être initialisées.

var limit = 3; //-> Le compilateur déduit qu'il s'agit d'un entier.

En résumé 

Dans ce chapitre, vous avez vu les particularités de quelques types de données simples :

  • nombres entiers (mot-cléint) ;

  • nombres décimaux (mots-clésfloat,doubleetdecimal) ;

  • chaînes de caractères (mot-cléstring).

Vous avez aussi appris à manipuler ces types :

  • vous pouvez effectuer des opérations numériques sur des nombres du même type ;

  • pour utiliser des nombres de types différents dans les opérations, utilisez le transtypage pour qu'ils se comportent comme le type souhaité ;

  • les chaînes de caractères peuvent être mises bout à bout. C'est ce qu'on appelle la concaténation.

Example of certificate of achievement
Example of certificate of achievement