Partage
  • Partager sur Facebook
  • Partager sur Twitter

Débutant sur csharp

erreur structure conditionnelle

    16 novembre 2017 à 13:17:38

    Bonjour, je suis débutante en csharp et suis ici le cours pour débutant, je teste des petits programmes au fur et à mesure que j'avance dans le cours (je ne suis qu'à la première partie) et là je chipote avec les structures conditionnelles, mais dans ce petit bout de programme joint je n'obtiens pas les résultats que j'espère, je les interprète peut-être mal ou alors je fais une erreur dans ma logique ? quelqu'un saurait il me dire quoi ?

    if (estFaux) // on dirait que cet instruction ne s'exécute pas... pourquoi ?
                    Console.WriteLine("La valeur est fausse");
                else Console.WriteLine("La valeur est vraie");
                    if (!estFaux)
                   Console.WriteLine("La valeur est vraie");
                else Console.WriteLine("La valeur est fausse");

    J'obtiens ceci : 

    Il m semble bien que dans le premier cas, je devrais avoir "la valeur est fausse" en réponse, non ? 

    Merci beaucoup^^.

    • Partager sur Facebook
    • Partager sur Twitter
    Oses faire les bons choix! ... c'est ce que je pensais..... tu es une personne extraordinaire.
      16 novembre 2017 à 13:41:19

      Salut,

      Tes deux blocs if else font exactement la même chose, en corrigeant un peu l'indentation ça donne :

      if (estFaux)
      	Console.WriteLine("La valeur est fausse");
      else 
      	Console.WriteLine("La valeur est vraie");
      	
      if (!estFaux)
      	Console.WriteLine("La valeur est vraie");
      else 
      	Console.WriteLine("La valeur est fausse");

      Dans le premier cas tu affiches "La valeur est fausse" si estFaux == true, dans le second cas tu affiches "La valeur est fausse" si !estFaux == false ce qui revient à estFaux == true.

      Je ne sais pas si c'était volontaire mais je préfère en parler.

      Donc tes conditions ont l'air correctes, il faudrait que tu donnes le code qui détermine la valeur de estFaux, le problème vient sans doute de là.

      • Partager sur Facebook
      • Partager sur Twitter
        16 novembre 2017 à 13:48:08

        Pour ta culture perso, on prononce CSharp mais on l'écrit C# c'est plus compréhensible :)

        Ensuite pour ton problème, il manque clairement des informations là, ton " if (estFaux)" pose problème tu dis, mais c'est quoi la variable estFaux ? 

        Si ton code c'est juste ce morceau, normalement tu ne peux même pas compiler, donc ta variable est bien initialiser quelque part.

        J'espere que cette variable est de type Bool, sinon c'est très mal exprimé, mais si c'est le cas, donc si "estFaux" vaut true ou false, alors ton code marche pafaitement.

        Ensuite mis a part que tu as pris l'indentation, et que tu l'a balancé par la fenêtre, ton 2ème if ne sert a rien.

        En gros tu fais :

        Si c'est vrai : Affiche Vrai
        Sinon : Affiche Faux
        
        Si c'est faux : Affiche Faux
        Sinon : Affiche Vrai

        donc tu fais 2 fois la même chose, c'est tout l'interet du else que tu as raté là.

        Donc je sais pas ce que vaut ta variable estFaux, mais ce qui est sur c'est que c'est tout a fait normal que tu ai à chaque fois la même phrase de retour, puisque tes conditions teste la même chose.

        Edit: post plus haut identique au miens j'ai pas du écrire assez vite :/

        -
        Edité par Skyvask 16 novembre 2017 à 13:49:00

        • Partager sur Facebook
        • Partager sur Twitter
          16 novembre 2017 à 14:11:58

          Oui c'est le cas je l'ai bien initialisée : 
          bool estFaux = false;
                      if (estFaux) // on dirait que cet instruction ne s'exécute pas... pourquoi ?
                          Console.WriteLine("La valeur est fausse");
                      else Console.WriteLine("La valeur est vraie");
                          if (!estFaux)
                         Console.WriteLine("La valeur est vraie");
                      else Console.WriteLine("La valeur est fausse");
          

           Comme ceci je suppose que le problème est donc celui dans la première réponse ? un souci de logique, le fait que je fasse exactement la même chose en bas et en haut ? 

          ici pour cet autre bout: 

           string ageDuvisiteur = "18";

                      Console.WriteLine("Entrez la valeur de l'âge");

                      Console.ReadKey();

                      switch (ageDuvisiteur)

                      { case "15": 

                          Console.WriteLine("Vous ne pouvez avoir accès à ce site!");

                          break;

                        case "18": 

                            Console.WriteLine ("Cliquez sur \"Continuer\"");

                            break;}

          je n'arrive pas à rentrer toute ma chaîne de caractères, la console se ferme tout de suite après la saisie d'un seul caractère... je ne sais pas pourquoi quoi je fasse comme modification dans le code... une idée ? ^^merci pour la culture ^^.

          • Partager sur Facebook
          • Partager sur Twitter
          Oses faire les bons choix! ... c'est ce que je pensais..... tu es une personne extraordinaire.
            16 novembre 2017 à 14:31:24

            Utilisez le débogueur. :euh:
            • Partager sur Facebook
            • Partager sur Twitter
            Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
              16 novembre 2017 à 14:43:38

              Console.ReadLine(), faut être logique, tu lui demande de lire une "key" un caractère quoi, donc forcement il stop des que tu en rentre un ;)
              • Partager sur Facebook
              • Partager sur Twitter
                16 novembre 2017 à 14:45:12

                Désolée^^ : 

                string ageDuvisiteur = "18";
                            Console.WriteLine("Entrez la valeur de l'âge");
                            Console.ReadKey();
                            switch (ageDuvisiteur)
                            { case "15": 
                                Console.WriteLine("Vous ne pouvez avoir accès à ce site!");
                                break;
                              case "18": 
                                  Console.WriteLine ("Cliquez sur \"Continuer\"");
                                  break;
                
                            }



                • Partager sur Facebook
                • Partager sur Twitter
                Oses faire les bons choix! ... c'est ce que je pensais..... tu es une personne extraordinaire.
                  16 novembre 2017 à 15:25:16

                  Pour revenir à ton premier problème, le fait d'avoir deux bouts de code qui font la même chose n'est pas un problème pour le fonctionnement du programme (par contre c'en est un niveau conception, ça ne sert à rien d'avoir deux portions de code qui servent à la même chose).

                  Le problème vient bien de l'initialisation de ta variable, je pense que tu t'es emmélée les pinceaux entre le nom de la variable et sa valeur. Tu as fait une double négation (ex : je ne veux pas ne rien manger = je veux manger), si estFaux vaut false alors il est vrai donc tu obtiens "La valeur est vraie". Si estFaux vaut true alors il est faux donc tu obtiendras "La valeur est fausse".

                  Change le nom de la variable en quelque chose de plus concret, par exemple ilFaitJour, tu pourras faire tes conditions plus facilement.

                  -
                  Edité par Stormweaker 16 novembre 2017 à 15:26:54

                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 novembre 2017 à 18:49:41

                    Ohh mince purée merci beaucoup !!!! pour le "key". pour les structures conditionnelles qui me posent problème j'ai chipoté oui avec les instructions pour voir si ça changeait quelques choses et non soit j'obtiens deux fois 'la valeur est fausse" soit deux fois "La valeur est vraie"... :/ je ne sais pas...
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Oses faire les bons choix! ... c'est ce que je pensais..... tu es une personne extraordinaire.
                      16 novembre 2017 à 19:20:00

                      Hello,

                      Un petit conseil également quand tu fais des blocs de structures conditionnelles n'hésite pas à utiliser des accolades ou l'indentation proprement.   
                      Je ne sais pas si c'est un copié/collé foireux ou si ton code est vraiment indenté comme ça mais c'est assez moche et difficile à suivre.

                      Pour ta culture perso, on prononce CSharp mais on l'écrit C# c'est plus compréhensible :)

                      Pour le coup par contre c'est bien d'avoir les deux. Selon ton moteur de recherche favori ou le sens du vent, si tu cherches des réponses sur internet, si tu lui donnes csharp ou c# comme mot-clé tu peux avoir des résultats différents et pas forcément moins pertinent :)

                      -
                      Edité par Pyrobolser 16 novembre 2017 à 19:20:13

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Si un message vous a aidé, n'oubliez pas le +1 et de passer votre sujet en "Résolu" ! :)
                        16 novembre 2017 à 19:25:12

                        De plus quoi que je saisisse comme chaîne de caractère dans le switch, j'obtiens l'instruction pour le cas où j'aurais saisi "18"... :(, j'aimerais tester quelques petites opérations sur les nombres complexes, comment est ce qu'on les déclare et initialise... ? :/ je ne sais pas ...
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Oses faire les bons choix! ... c'est ce que je pensais..... tu es une personne extraordinaire.
                          16 novembre 2017 à 19:54:49

                          J'avais pas regardé ton nouveau programme mais tu te mélanges les pinceaux.

                          Tu utilises ReadKey() qui va lire ici une frappe sur une touche et passer à la suite.
                          Tu devrais utiliser ReadLine() et surtout, ReadLine() renvoi une chaîne de caractère, tu dois la stocker dans une variable et t'en servir dans ton programme. Elle ne va pas atterrir comme par magie dans ageDuVisiteur, c'est à toi de faire tout ça.

                          Conseil supplémentaire, utiliser TryParse(...) pour convertir ta chaîne de caractère en entier, ça fait plus de sens pour un âge. Transforme ton switch case en if/else c'est plus simple à lire pour la question que tu poses si âge supérieur à 18 ans, alors OK, sinon KO.

                          Lis la documentation, regarde des exemples ça sera beaucoup plus simple que d'y aller limite au hasard comme ça ;)

                          Il me semble que les nombre complexes en C# sont cachés dans le namespace System.Numerics, la doc devrait t'en dire plus.

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Si un message vous a aidé, n'oubliez pas le +1 et de passer votre sujet en "Résolu" ! :)
                            16 novembre 2017 à 23:08:37

                            Bonjour, pyrobolser... comme je lai dit plus haut je suis le cours pour débutant ici et c'est en fonction de mon avancée dans le cours que je fais des petites manips (que je ne copie-colle pas) et donc oui du coup mon code n'est pas très propre et très clair... tout ce que je fais c'est faire des instructions les unes à la suite des autres pour comment ça marche^^.
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Oses faire les bons choix! ... c'est ce que je pensais..... tu es une personne extraordinaire.

                            Débutant sur csharp

                            × 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