Aller au contenu

Langage C Sharp/Les types

Leçons de niveau 15
Une page de Wikiversité, la communauté pédagogique libre.
Début de la boite de navigation du chapitre
Les types et opérations
Icône de la faculté
Chapitre no 2
Leçon : Langage C Sharp
Chap. préc. :Introduction
Chap. suiv. :Les instructions élémentaires
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « Langage C Sharp : Les types et opérations
Langage C Sharp/Les types
 », n'a pu être restituée correctement ci-dessus.

Le langage C# est un langage fortement typé, ainsi chaque valeur possède un type qui restreint son utilisation dans l'environnement d'exécution. En C# il y a 2 familles de types, les types références et les types valeurs, les premiers sont alloués dans la partie de la mémoire appelée "Tas", les seconds sont alloués sur la "Pile".

Les types de valeurs de base

[modifier | modifier le wikicode]

Il existe plusieurs catégories de types :

  • Le type booléen bool dont les seules valeurs sont true (vrai) et false (faux)
  • Les types numériques entiers signés (positifs ou négatifs) :
    • Le type sbyte (8 bits), ex: -10, 0, 120
    • Le type short (16 bits), ex: -1000, 10
    • Le type int (32 bits)
    • Le type long (64 bits)
  • Les types numériques entiers non signés (positifs) :
    • Le type byte (8 bits), ex: 0, 120, 255
    • Le type ushort (16 bits)
    • Le type uint (32 bits)
    • Le type ulong (64 bits)
  • Les types numériques flottants :
    • Le type float (32 bits), ex: 0.2, 3.14159
    • Le type double (64 bits)
    • Le type decimal (128 bits)
  • Le type caractère unicode char (au minimum 16 bits), ex: 'A', '*'

Déclaration d'une variable

[modifier | modifier le wikicode]

Une variable est déclarée en lui attribuant un type suivi d'un nom.

Exemple : Pour déclarer une variable de type entier nommée "total" :

int total;

Une fois la variable déclarée, il est possible de l’utiliser pour :

  • Stocker une valeur en utilisant un opérateur d'affectation,
  • Lire la valeur stockée en faisant référence à la variable (par son nom).

Exemple (suite) :

total = 10; // Stocker une valeur
System.Console.WriteLine("Le total vaut " + total); // Lire la valeur et l'afficher

Entre la déclaration et la première affectation d'une variable, celle-ci n’est pas initialisée (ne possède pas de valeur explicite). Il est possible de combiner déclaration et affectation initiale.

Exemple :

int total = 10; // Variable initialisée à la déclaration
System.Console.WriteLine("Le total vaut " + total); // Lire la valeur et l'afficher

Les expressions

[modifier | modifier le wikicode]

Les expressions utilisent différents opérateurs (addition, soustraction, concaténation, ...) qui ne s'appliquent qu'aux types qui ont surchargé ces opérateurs.

L'opérateur +

[modifier | modifier le wikicode]

L'opérateur + permet d'additionner deux nombres (entiers ou flottants).

Exemples :

  • 10 + 5
  • 2.3 + 1.7
  • 10 + 2.8

Lors d'une opération de deux types différents, un des deux types va être converti (cast) en l'autre type. Bien sur à condition que l'opération soit possible pour les deux types et que l'un d'eux possède une règle de conversion (cast) implicite pour le type suivant.

L'opérateur + permet également de concaténer deux chaînes de caractères :

  • "Un " + "exemple" // → "Un exemple"

et de concaténer une chaîne de caractère à une valeur d'un autre type. Dans ce cas, cette valeur est convertie en chaîne de caractères avant de la concaténer à la chaîne de caractère spécifiée.

  • "Le total vaut " + 10 // → "Le total vaut 10"

Premier programme interactif

[modifier | modifier le wikicode]

Prenons notre programme "Bonjour le monde" précédemment effectué. Jusqu'à présent, entre le début et la fin du programme, on ne peut pas influencer son exécution. La méthode "Console.ReadLine();" prend en note tout ce que vous y inscrivez au clavier sous forme de chaine de caractère, jusqu'au caractère de retour à la ligne. Pour prendre en note le résultat, il suffit de le déposer dans une variable de type string.

Une salutation plus personnelle

[modifier | modifier le wikicode]

De plus, le programme salue inutilement un nombre important de gens (le monde !) alors que vous êtes probablement seul devant votre écran. Le programme pourrait tout d’abord vous demander votre nom, puis ensuite ne saluer que vous, par exemple. Voici à quoi pourrait ressembler le code source une fois modifié :

using System;

public class Bonjour
{
    public static void Main()
    {
        string Nom;
        Console.Write("Inscrivez votre nom: ");
        Nom = Console.ReadLine();
        Console.WriteLine("Bonjour " + Nom + " !");
    }
}

Explorons pas à pas les nouveautés de ce code source:

        string Nom;

Ici, nous déclarons la variable afin de pouvoir l’utiliser plus tard. Prenez note qu’à ce moment, la variable est déclarée mais n’est pas initialisée. Elle possède donc la valeur null. Remarquez qu'ici la déclaration est détachée de son utilisation, mais il aurait été tout a fait possible de faire les deux sur la même ligne grâce à l'opérateur d'assignation =.

        Nom = Console.ReadLine();

Ici nous initialisons enfin notre variable qui prend pour valeur le résultat de la fonction ReadLine() de la classe Console. La variable nom contiendra donc tout ce que l'usager aura écrit avant d'appuyer sur "Enter".

        Console.WriteLine("Bonjour " + Nom + " !");

Finalement, nous affichons la salutation personnalisée à l'usager en utilisant le + comme opérateur de concaténation. Prenez note que l’utilisation d'une chaine formatée Console.WriteLine("Bonjour {0}!", Nom); serait préférable mais ce n’est pas un réel problème à se stade-ci !

Un additionneur rudimentaire

[modifier | modifier le wikicode]

Et voila, vous venez de réussir votre premier programme interactif. Mais, vous en conviendrez, il ne fait pas grand chose. Pourquoi ne pas lui donner un minimum d'utilité (j'insiste sur le mot "minimum"). Calculons l'addition de deux nombres entiers.

using System;

public class HelloWorld
{
    public static void Main()
    {
        string Nom;
        int Nombre1, Nombre2, Resultat;

        Console.Write("Inscrivez votre nom: ");
        Nom = Console.ReadLine();

        Console.Write("Inscrivez le premier nombre entier: ");
        Nombre1 = int.Parse(Console.ReadLine());

        Console.Write("Inscrivez le second nombre entier: ");
        Nombre2 = int.Parse(Console.ReadLine());

        Resultat = Nombre1 + Nombre2;

        Console.WriteLine("Bonjour " + Nom + " ! L'additionneur vous informe que le calcul est le suivant :");
        Console.WriteLine(Nombre1 + " + " + Nombre2 + " = " + Resultat);
    }
}

Explorons pas à pas les nouveautés de ce code source:

        int Nombre1, Nombre2, Resultat;

Comme vous pouvez le remarquer, il est possible de déclarer plusieurs variables de même types sur la même ligne, en utilisant la virgule comme séparateur. Un entier non initialisé contient normalement la valeur zéro, mais il est déconseillé de prendre cela comme une convention.

        Nombre1 = int.Parse(Console.ReadLine());

Comme dit précédemment, Console.ReadLine() retourne une chaine de caractère. Malheureusement, pour les calculs, c’est peu utile. Du coup, la fonction Parse() du type int (et autres types numériques) permet de transformer une chaine de caractère en entier. Prenez note que cette fonction s'attend de recevoir une chaine valide et lèvera une exception si jamais la chaine ne contient pas que des chiffres.