C#: Les opérateurs

Les opérateurs en C# (V.S.2015)

  • Dans cet article, qui s’intitule “Les opérateurs de comparaison en C# (V.S. 2015)“, je vais vous montrer comment les utiliser en combinaison avec les instructions conditionnelles.
  • Les opérateurs sont des mots clés du langage permettant l’exécution d’opérations sur le contenu de certains éléments, en général des variables, des constantes, des valeurs littérales, ou des retours de fonctions.
  • La combinaison d’un ou plusieurs opérateurs et d’éléments sur lesquels les opérateurs vont s’appuyer se nomme une expression. Ces expressions sont évaluées au moment de leur exécution, en fonction des opérateurs et des valeurs qui sont associées .
  • En C#, un opérateur est un élément de programme qui s’applique à un ou plusieurs opérandes dans une expression ou une instruction.
  • Les opérateurs qui prennent un opérande, comme l’opérateur d’incrément (++) ou new, portent le nom d’opérateurs unaires.
  • Les opérateurs qui prennent deux opérandes, comme les opérateurs arithmétiques (+, -, *, /) portent le nom d’opérateur binaires.
  • Un opérateur, l’opérateur conditionnel (?:), prend trois opérandes et est le seul opérateur ternaire en C#.
  • MSDN

Vidéo:Les opérateurs de comparaison en C#





C#: Les opérateurs arithmétiques.

C#: Les opérateurs arithmétiques.

    • Les opérateurs arithmétiques utilisent des valeurs numériques (variables ou littéraux) comme opérandes et renvoient une valeur numérique.
    • L’addition (+), la soustraction (-), la multiplication (*), et la division (/) et % sont appelés opérateurs arithmétiques.
    • Les opérateurs arithmétiques permettent d’effectuer des calculs sur le contenu des variables.
    1. Opérateur de multiplication.

      • L’opérateur de multiplication permet d’obtenir le produit des opérandes.
      • Multiplication de nombres entiers :

          Rappel
          Type Gamme Taille .NET Framework type Valeur par défaut
          int -2,147,483,648 to 2,147,483,647 Signé entier de 32 bits Système . Int32 0
          uint 0 à 4294967295 Unsigned entier de 32 bits Système . UInt32 0
          long –9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 Signed 64-bit integer Système . Int64 0
          ulong 0 à 18.446.744.073.709.551.615 Unsigned entier de 64 bits Système . UInt64 0

          Exercice d’application apcpedagogie07

          Exercice_apcpedagogie07

          • Écrire un programme avec C# pour afficher le résultat de la multiplication des trois nombres qui seront entrés par l’utilisateur.
          • Exemple de traitement:
            • Entrez le premier nombre à multiplier : 4
            • Entrez le second numéro à multiplier : 7
            • Entrez le troisième nombre à multiplier : 9
            • Résultat de multiplication :4*7*9=252

          Solution

        Multiplication de nombres à virgule flottante :

        Multiplication de nombres décimaux :

    2. Opérateur de division.

      • L’opérateur de division produit le quotient de ces opérandes avec l’opérande gauche comme numérateur et l’opérande droit comme dénominateur.
      • Division de nombres entiers :

        Division de nombres à virgule flottante :

        Division de nombres décimaux :

          Exercice d’application opérateurs division 01

          Exercice opérateurs division 01

          • Écrire un programme avec C# pour afficher le résultat de la division des deux nombres qui seront entrés par l’utilisateur.
          • Exemple de traitement:
            • Entrez le numérateur : 15
            • Entrez dénominateur : 7
            • Résultat de division :15/7=2,143
    3. Opérateur de reste.

      • L’opérateur « reste » renvoie le reste de la division du premier opérande par le second.
      • Le résultat obtenu a toujours le signe du numérateur (la quantité divisée).
      • Cela correspond à var1 modulo var2, avec var1 et var2 étant des variables.
      • La fonction modulo est le reste entier de la division de var1 par var2.
      • Exemple:

        Reste de nombres entiers :

        Reste de nombres à virgule flottante :
        Reste de nombres décimaux :
    4. Opérateur d’addition

      • Addition de nombres entiers :
        Addition de nombres à virgule flottante :
        Addition de nombres décimaux :
        Addition d’énumérations :
        Concaténation de chaînes :
    5. Opérateur de soustraction

      • L’opérateur de soustraction soustrait les deux opérandes pour obtenir leur différence.
      • Soustraction de nombres entiers :
        Soustraction de nombres à virgule flottante :
        Soustraction de nombres décimaux :
C#: Les opérateurs de comparaison.

C#: Les opérateurs de comparaison.

    • Les Opérateurs de comparaison sont utilisés dans les structures de contrôle d’une application (if then, do loop…). Ils renvoient une valeur de type boolean en fonction du résultat de la comparaison effectuée. Cette valeur sera ensuite utilisée par la structure de contrôle.
    • C# fournit de nombreux opérateurs, qui sont des symboles spécifiant quelles opérations effectuer dans une expression.
    • Une condition se construit grâce à des opérateurs de comparaison.
    • Les opérateurs de comparaisons, les plus courants sont :
    Opérateur Description exemples
    == Egalité 5 = = 2 ; x+1 = = 3 ; etc…
    != Différence 5 != 2 ; x+1 != 3 ; etc…
    > Supérieur à 5 2 ; x+1 3 ; etc…
    Inférieur à 5 2 ; x+1 3 ; y-2 x*4
    >= Supérieur ou égal 5 >= 2 ; etc…
    <=

    Inférieur ou égal -5 <= 2 ; x+1 = 3 ; etc…
    && ET logique (5 = = 2) (x+1 3) ; etc…
    || OU logique (5 != 2) || (x+1 >= 3) ; etc…
    ! Négation ! (5 2) ; !(x+1 3) ; etc…
C#: Les opérateurs logiques conditionnels.

C#: Les opérateurs logiques conditionnels.

    • Les opérateurs && et || sont appelés opérateurs logiques conditionnels.
    • Ils sont également appelés opérateurs logiques « court-circuitant ».
  • L’opérateur AND conditionnel ()
        • L’opérateur AND conditionnel () effectue une opération AND logique sur les opérandes de type bool, mais évalue uniquement le second opérande, si nécessaire.
  • L’opérateur OR conditionnel (||)
      • L’opérateur OR conditionnel (||) retourne vrai si l’un des deux opérandes est vrai.
C#: Les opérateurs conditionnel.

C#: Les opérateurs conditionnel.

    • L’opérateur ?: est appelé l’opérateur conditionnel. Il est parfois également appelé l’opérateur ternaire.
    • L’opérateur conditionnel (?:) retourne l’une de deux valeurs selon la valeur d’une expression booléenne.
      • Syntaxe:condition ? first_expression : second_expression;
    • La condition est évaluée entre true ou false.
    • Si condition est true, first_expression est évaluée et devient le résultat.
    • Si condition est false, second_expression est évaluée et devient le résultat.
    • Seule une des deux expressions peut être évaluée.
    • Cette expression est l’équivalent d’une boucle if else
    • Si condition est vrai alors on renvoie valVrai sinon on renvoie valFaux.
      Le résultat de Condition doit être un booléen.
      Val1 et val2 doivent être de même type.
    • L’opérateur ? : est ternaire, il nécessite 3 opérandes :
    • Une condition (expression booléenne) et deux valeurs. Il évalue l’expression booléenne et si elle est vraie renvoie la première valeur et sinon la seconde, à la manière d’un simple if…else.
      • Il s’utilise de cette façon : a ? b : c;.

      • a doit être une expression conditionnelle (qui retourne true ou false). À l’exécution, cette expression est évaluée.
      • Si elle vaut true, l’expression b sera exécutée et son résultat sera retourné ; l’expression a sera ignorée.
      • Si elle vaut false, l’expression c sera exécutée et son résultat sera retourné ; l’expression b sera ignorée.
        • Exemple :
          string ma_chaine = (2 == 5) ? “les nombres sont égaux” : “les nombres ne sont pas égaux”;

      Après exécution, ma_chaine vaut “les nombres ne sont pas égaux” car (2 == 5) a retourné false.

    Exercice_apcpedagogie02

    • Déclarer et définir 2 variables nombre_premier et lenomlbre de type number.
    • En utilisant uniquement l’opérateur ternaire, on affiche :
      • Si les 2 nombres sont égaux Congratulations !
      • Sinon
      • Si le nombre lenomlbre est inférieur au nombre nombre_premier , on affiche +
      • Sinon on affiche –

    Solution

C#: Les opérateurs unaires.

C#: Les opérateurs unaires.

  1. +x :
  2. renvoie la valeur de x.

  3. Négation unaire (-)(-x):
  4. Négation numérique.
    L’opérateur de négation unaire précède son opérande et prend son opposé.

  5. Négation logique (!x) :
  6. ~x :
  7. complément au niveau du bit.

    • L’opérateur de complément à un (~), parfois appelé l’opérateur de complément de bits, génère un complément à un au niveau du bit de son opérande. Autrement dit, chaque bit qui est 1 dans l’opérande est 0 dans le résultat. Inversement, chaque bit qui est 0 dans l’opérande est 1 dans le résultat. L’opérande de l’opérateur de complément à un doit être un type intégral.

    Exemple: 0000 0010 → 1111 1101

  8. Incrément (++):
  9. L’opérateur d’incrément ajoute une unité à son opérande et renvoie une valeur.

    • Si l’opérateur est utilisé en suffixe (par exemple : x++), il renvoie la valeur avant l’incrémentation.
    • Si l’opérateur est utilisé en préfixe (par exemple : ++x), il renvoie la valeur après l’incrémentation.

    Exemple:

  10. Décrément (–) :
  11. L’opérateur de décrément soustrait une unité à son opérande et renvoie une valeur.

  12. Si l’opérateur est utilisé en suffixe (par exemple : x–), il renvoie la valeur avant la décrémentation.
  13. Si l’opérateur est utilisé en préfixe (par exemple : –x), il renvoie la valeur après la décrémentation.
  14. (T)x :
  15. cast de type.
    Await : attend un Task.

  16. &x :
  17. adresse de.

  18. *x :
  19. déréférencement.

C#: Les opérateurs de décalage.

C#: Les opérateurs de décalage.

    • Les opérateurs de décalage de bits sont l’opérateur de décalage vers la droite (>>), qui déplace les bits de shift_expression vers la droite et l’opérateur de décalage vers la gauche (<<), qui déplace les bits de shift_expression vers la gauche.
      1. Décalages vers la gauche(<<)
        • Décale la valeur d’une variable vers la gauche, du nombre de bits spécifié dans la valeur d’une expression, et assigne le résultat à la variable.
        • Exemple

        • La variable temp a la valeur 56 puisque 14 (00001110 en binaire) décalé vers la gauche de deux bits est égal à 56 (00111000 en binaire). Les bits sont remplis de zéros lors du décalage.
        • Pour illustrer le fonctionnement du masquage, examinons l’exemple suivant.
        • L’emploi de cet opérateur est presque équivalent à celui de result = result << expression, sauf que result n’est évalué qu’une seule fois.
        • L’opérateur <<= décale les bits de result vers la gauche, du nombre de bits spécifié dans expression. L’opérateur masque expression pour éviter un décalage trop important de result.
        • En effet, si le nombre de positions de décalage était supérieur au nombre de bits dans le type de données de result, tous les bits d’origine seraient décalés hors des limites et donneraient un résultat non significatif.
        • Pour garantir que chaque décalage laisse au moins un des bits d’origine, les opérateurs de décalage utilisent la formule suivante pour calculer le nombre réel de positions de décalage : masquer expression (avec l’opérateur de bits AND) avec un de moins que le nombre de bits dans result.
C#: L’opérateur is.

C#: L’opérateur is.

    • L’opérateur is vérifie si un objet est compatible avec un type donné.
    • Opération réalisée: comparaison de type de variable avec le type de donnée.
    • Par exemple, le code suivant peut déterminer si un objet est une instance du type de MonObjet, ou d’ un type qui dérive de MonObjet:
C#: Les opérateurs de conversion.

C#: Les opérateurs de conversion.

    • Une déclaration d’opérateur de conversion comprend le mot clé implicit ou explicit
      1. Conversion qui comprend le mot clé implicit
        • Une déclaration d’opérateur de conversion qui comprend le mot clé implicit présente une conversion implicite définie par l’utilisateur.
        • Les conversions implicites peuvent se produire dans diverses situations, y compris dans des appels de fonctions membres, des expressions cast et des assignations.

      2. Conversion qui comprend le mot clé explicit
        • Une déclaration d’opérateur de conversion qui comprend le mot clé explicit présente une conversion explicite définie par l’utilisateur.
        • Les conversions explicites peuvent se produire dans des expressions cast.
C#: L’opérateur as.

C#: L’opérateur as.

    • Vous pouvez utiliser l’opérateur as pour exécuter certains types de conversions entre des types de référence compatibles ou des types Nullable.
    • Le code suivant est fourni à titre d’exemple.
C#: Les opérateurs d’affectation.
  • Le seul opérateur disponible dans cette catégorie est l’opérateur =. Il permet d’affecter une valeur à une variable. Le même opérateur est utilisé quel que soit le type de la variable (numérique, chaîne de caractères…).
C#: Opérateur de concaténation.

C#: Opérateur de concaténation.

  • L’opérateur est utilisé pour la concaténation de chaînes de caractères. C’est le même opérateur qui est utilisé pour l’addition. Cependant il n’y a pas de risque de confusion car Visual C# ne fait pas de conversion implicite des chaînes de caractères en numérique. Il détermine donc que si l’un des deux opérandes et une chaîne de caractères c’est une concaténation qui doit être exécutée. même si une des chaînes représente une valeur numérique.
  • Le code suivant

      – string chaîne – “123”:
      – Console .WriteLine (chaine + 456) ;
      –affiche
      –123456
  • L’inconvénient de l’opérateur + est qu’il n’est pas très rapide pour la concaténation. Si vous avez de nombreuses concaténations à exécuter sur une chaîne, il est préférable d’utiliser StringBuilder.
Exercices d’application.


Exercice : terminologie

    Soit le morceau de code suivant : (x * 3) + 1

        – Quel nom donne-t-on à ce morceau de code tout entier ?
        – Quels sont les opérateurs ?
        – Quels sont les opérandes de * ?
        – Quels sont les opérandes de + ?
        – Quel genre de chose est x dans ce morceau de code ?
        – Quel(s) type(s) a ou peut éventuellement avoir x ?
        – Quel est le type de 3 et 1 ?
        – Quel est le type de (x * 3) + 1 ?
        – Quelle est la valeur de (x * 3) + 1 ?

Solution


Exercice_apcpedagogie06

  • Écrire un programme C# qui va afficher le résultat de l’addition , la soustraction, la multiplication ,la division et le reste de la division de deux nombres saisies par l’utilisateur.
  • Exemple de traitement:
    • Entrez le premier numéro : 25
    • Entrez le second numéro : 4
    • Résultat attendu :
    • 25 + 4 = 29
    • 25-4 = 21
    • 25 x 4 = 100
    • 25/4 = 6
    • 25 mod 4 = 1.

Solution


Exercice les opérateurs 01

  • On considère le code suivant:
  • int i 12;
    int j=i++%6;
    Quel est la valeur de i et de j après exécution de ce code?
    Quel est la valeur de i après l’exécution du code suivant :
    Int i = 17 ;
    I >>=1;


Exercice les opérateurs 02

  • Quelles sont les valeurs affichées par ce code après exécution :


Exercice les opérateurs 03

  • Corrigez les erreurs et trouvez le résultat


Exercice les opérateurs 04

  • Corrigez les erreurs et trouvez le résultat


Exercice les opérateurs 05

  • Compilez et exécutez le programme suivant
  • Expliquez pourquoi la valeur retournée est différente d'une partie à l'autre.
  • Console.WriteLine("Ma moyenne pour 3 est :" + (double)((noteProgrammation_3 + noteMOS_3) / 2)); Console.ReadLine();


Exercice les opérateurs 06

  • Indiquez, pour chaque affectation dans le programme Transtypage ci-dessous, si l'affectation est possible et, le cas échéant, la valeur exacte qui sera affectée à la variable.

Exercice les opérateurs 07

    Réaliser une muni-calculatrice qui effectue les opérations suivantes:
    • Dit bonjour
    • Demande deux nombres entiers à l'utilisateur
    • Additionne, soustrait, multiplie et divise les deux nombres
    • Dit au revoir.
    • Voici ce que vous devez obtenir
      • *******************Bonjour********************
      • Veuillez saisir le premier nombre: 4
      • Veuillez saisir le deuxième nombre: 7
      • *******************Calcul********************
      • 4+7=11
      • 4-7=-3
      • 4*7=28
      • 4/7=0,571
      • ********************Au revoir********************
    • Ici 4 et 7 étant les nombres saisies par l'utilisateur.

Exercice les opérateurs 07

    Ecrire un programme en c# qui calcule et affiche la factorielle d’un nombre lu au clavier.

Sommaire du cours c#