Partage
  • Partager sur Facebook
  • Partager sur Twitter

Opérateur de comparaison

opérateur !

Sujet résolu
    11 mars 2020 à 23:20:40

    Bonsoir à tous,

    Je débute dans la programmation et j'ai un petit soucis de compréhension. Voila dans le bout de code suivant : 

    string[] jours = new string[] { "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche" };

    int i = 0;

    bool trouve = false;

    while (!trouve)

    {

        string valeur = jours[i];

        if (valeur == "Jeudi")

        {

            trouve = true;

        }

        else

        {

            i++;

        }

    }

    Console.WriteLine("Trouvé à l'indice " + i);


    De ce que j'ai pu comprendre jusqu’à présent, l'opérateur "!" signifie "est différent". Hors ici dans le code (partie verte) on voit que la bouche while a pour paramètre: "différent de la valeur de la variable booléenne trouve. Cette variable est plus haut initialisée avec la valeur false. J"en conclu donc que "!trouve" est en fait true. Mais cela ne suit pas la logique de la suite du code.. Quelqu'un pourrait m'éclairer svp?

    Je vous remercie d'avance


    • Partager sur Facebook
    • Partager sur Twitter
      12 mars 2020 à 0:42:00

      "!" Ne signifie pas "est différent de", c'est l'opérateur de négation logique.

      https://docs.microsoft.com/fr-fr/dotnet/csharp/language-reference/operators/boolean-logical-operators#logical-negation-operator-

      Pour le reste faudrait savoir ce que t'entends par "ça suit pas la logique de la suite"

      Le corps d'un while est exécuté tant que sa condition vaut true, donc quand on passe trouve à true alors !trouve vaut false et on sort donc de la boucle.

      À noter qu'en l'état si le tableau ne contient pas l'élément recherché tu ne pourrais pas sortir de la boucle, «heureusement» l'accès au tableau finira par planter quand l'indice dépassera ses bornes ce qui terminera le programme.

      • Partager sur Facebook
      • Partager sur Twitter
      Censément, quelqu'un de sensé est censé s'exprimer sensément.
        12 mars 2020 à 9:48:10

        Merci de ta réponse mais je ne percute pas encore.. Je me doute bien que c'est moi qui ai un soucis car le code fonctionne mais voila ce que moi j'en comprend..

        On initialise la variable booléenne "trouve" avec la valeur false, ensuite on lance une boucle while dans laquelle on met la condition !trouve (donc si je comprend bien c'est la négation de "trouve" qui à été initialisé à false donc !trouve =true).. 

        Et on lui dit, boucle sur le tableau jusqu’à ce que tu rencontre 'jeudi' et la passe "trouve" à true.. Mais pour moi trouve est déjà sur true depuis le début puisque qu'on lui donne la négation de "trouve"...

        Je suis perdu dans la logique ..

        • Partager sur Facebook
        • Partager sur Twitter
          12 mars 2020 à 9:57:09

          (!trouve) équivaut à (trouve==false) 

          et

          while(!trouve) équivaut à while(trouve==false)



          Au début, on dit 

          trouve = false;
          Donc la condition du while est verifié, et ainsi le programme rentre dans la boucle.

          Lorsque tu ne trouve pas "jeudi", tu augmentes i de 1, ce qui te permets de passer à l'élement suivant du tableau à la prochaine execution de la boucle.

          Lorsque tu trouves "jeudi", tu passes trouve à true, donc la condition while(!trouve) n'est plus verifié, il sort donc de la boucle.

          -
          Edité par earp91 12 mars 2020 à 10:00:14

          • Partager sur Facebook
          • Partager sur Twitter
            12 mars 2020 à 10:02:45

            On lui donne pas la valeur true en faisant !trouve on évalue l'expression !trouve y'a pas d'assignation.

            Faudrait faire «trouve = !trouve;» pour ça

            C'est comme si j'avais un «while (x != 42)» ça ne donne pas la valeur 42 à x.

            • Partager sur Facebook
            • Partager sur Twitter
            Censément, quelqu'un de sensé est censé s'exprimer sensément.
              12 mars 2020 à 10:07:54

              OK, ca y'est j'ai compris :)

              Un grand merci à vous deux ;)

              Bonne journée 

              • Partager sur Facebook
              • Partager sur Twitter
                12 mars 2020 à 11:54:24

                N'oublie pas de passer le sujet en résolu
                • Partager sur Facebook
                • Partager sur Twitter
                Censément, quelqu'un de sensé est censé s'exprimer sensément.

                Opérateur de comparaison

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown