Partage
  • Partager sur Facebook
  • Partager sur Twitter

Opérateur d'inégalité sur un IF ou une boucle

    9 septembre 2021 à 22:22:41

    Salut, 

    Je sais que ma question est assez élémentaire mais je bloque depuis pas mal de temps dessus et je n'arrive pas a trouver de ressource dessus. 
    Je veux mettre dans la condition de ma boucle WHILE et de mon IF une comparaison avec une inégalité en C#. 

    while (utilisationPseudo != "P" || != "N") 
                {
                    Console.WriteLine("Souhaitez vous qu'on vous appel avec votre pseudo plutot que votre nom ? (P = Pseudo ; N = Nom)");
                    utilisationPseudo = Console.ReadLine();
    
                    if((utilisationPseudo != "P" || ! "N"))
                    {
                        Console.WriteLine("Vous devez répondre à la question par \"N\" ou \"P\""); 
                    }
                }

    Merci de votre aide ! 

    -
    Edité par TelmoS 9 septembre 2021 à 22:23:40

    • Partager sur Facebook
    • Partager sur Twitter
      10 septembre 2021 à 11:45:01

      Votre code d'illustration est extrêmement maladroit.

      En utilisant "correctement" les possibilités du langage, votre "besoin" n'existerait vraisemblablement pas.

      string[] = authorizedRep = {"P", "N"};
      
      string rep = "";
      
      do
      {
          Console.WriteLine("Souhaitez-vous ... Je vous laisse regarder comment générer un message à partir d'une liste/tableau de valeurs");
          rep = Console.ReadLine();
          if(!authorizedRep.Contains(rep))
          {
              Console.WriteLine("Vous devez ... idem");
          }
      }while(!authorizedRep.Contains(rep));
      
      utilisationPseudo = rep;


      Et "votre" manière de l'écrire et tellement floue que vous même vous l'écrivez de 2 manières différentes (avec ou sans le "=" dans la seconde clause). Et je crois bien que vous confondez 'ou' (||) et 'et' (&&).

      La manière "carrée" d'écrire cette condition c'est :

      (utilisationPseudo != "P" && utilisationPseudo != "N")

      Chaque clause est évaluée indépendamment et certain langage, comme VB (pas VB.NET), ne garantissent pas l'ordre d'évaluation de ces clauses.

      J'ai du mal à voir l'intérêt d'une écriture "condensée" car elle serait, pour moi, moins lisible et bien trop ambiguë.

      Si la formulation devient peu claire, C# (et LINQ en particulier, cf. mon premier code) permet de disposer de tout un attirail d'expression booléen bien plus lisible que des "shortcut" mal spécifiés.

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        10 septembre 2021 à 12:56:23

        Ce qui se dit en français

             X est égal à A ou à B

        Se traduit, dans la plupart des langages de programmation, par 

            X est égal à A, ou X est égal à B

        Soit, en C et autres langages qui empruntent  sa syntaxe superficielle

            (X == A)  ||  (X == B)

        Et pas X == A || B

        Exception, en Cobol on peut écrire  if X = A or B. C'est pour ça que c'est sans conteste le plus beau langage du monde.

        • Partager sur Facebook
        • Partager sur Twitter

        Opérateur d'inégalité sur un IF ou une boucle

        × 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