EN DIRECT 1585 connexion / inscription
Connexion

Surnom/Pseudo
Mot de Passe :

[ Vous avez perdu votre mot de pass ? | Devenir membre ]

×

Opérateur logiques en C# ? "&&" et "||" ??

CowcotLand topic RSS feed Surveiller les réponses de ce sujet
Noxer2000
Ouvrier agricole
Ouvrier agricole

430pts

Inscrit le: 17 février 2015
Messages: 85

Navigateur : n.c.

Hors ligne
Message Posté le: Vendredi 11 Mar 2016 à 20:50:31  Lien permanent
Répondre en citant
Bonjour !

J'ai un petit problème depuis que je suis sur le java, qui est un langage, je trouve, plutôt proche du C#, et donc je retrouve pour moi le même "problème" sur les opérateur logique "||" (ou) et "&&" (et).

Dans la logique, quand on dit "tu dois attraper ceci ET cela", ca veut dire qui si attrape les 2 c'est bon, mais si tu en loupe un, t'a perdu.
et pour le ||, "Tu peux attraper cette chose OU celle ci", donc si tu attrape une des deux, c'est bon, pas besoin de choper les deux ^^.

Donc sur un TP du code JAVA, il faut créer un système de convertisseur de Fahrenheit en C° et C° en F° et j'ai eu l'idée de le refaire en C# comme la syntaxe du langage est très proche. A un moment je demande a l'utilisateur si il veut recommencez une conversion ou non ce qui donne :

"String restart = "";
do {
String restart = "";
Console.WriteLine("Voulez-vous recommencer une conversion ? (o/n)");
restart = Console.ReadLine();
}while(mode != "o" || mode != "n");
"

ce qui peux se traduire par :
"Fait //cecicela(instructions) tant que la variable restart n'est pas égale a "o" OU "n" "
car si au niveau du while() on avait mis "while(restart != "o" && restart != "n");"
alors "tant que restart n'est pas égale a "o" ET "n" " or pour passer en TRUE avec le && (ET), il fait que les 2 conditions soit remplient.. une seule variable ne peux pas contenir 2 valeur en même temps... on est d'accord ou je loupe un truc..

Tout ça pour dire qu'a la fin l'opérateur || me faire recommencer la boucle a l'infini même si je suis sur le mettre une entrée valide devant normalement me faire passer, alors qu'avec le && ça marche parfaitement ...

Merci de m'expliquer ! Très content (ne vous inquiétez pas je serais en mesure de comprendre si vous prenez un vocabulaire un peu plus poussé ;pppp)
Voir le profil de l'utilisateur Envoyer un message privé
garzebuth
Fermier
Fermier

5298pts

Inscrit le: 30 novembre 2011
Messages: 3250

Navigateur : n.c.

Hors ligne
Message Posté le: Vendredi 11 Mar 2016 à 21:14:08  Lien permanent
Répondre en citant
La boucle while se rejoue tant que la condition est vraie.
La condition que tu as écrite est vraie si mode est différent de o OU si mode est différent de n.

Si mode == o, alors mode est différent de n, donc la condition est vraie, et on boucle, et vice-versa.

Je pense que tu as mal formulé ce que tu voulais, en fait tu veux continuer la boucle tant que mode est différent de o ET mode est différent de b.
Et du coup, magie, ça donne while ( mode !="o" && mode!="n").

C'est d'ailleurs un des théorèmes de base de logique (tu dois pouvoir trouver une page wikipédia qui leur est consacrée):
tant que la variable restart n'est pas égale a "o" OU "n" s'écrit restart != ( "o" || "n" ) (mais ça n'est pas une écriture valide, donc il faut l'écrire autrement)
qui devient restart != "o" && restart != "n"

Sous forme plus simple c'est le théorème !(A | B) = !A & !B
Voir le profil de l'utilisateur Envoyer un message privé
Taloken
Céréalier
Céréalier

7841pts

Inscrit le: 22 octobre 2012
Age: 25
Messages: 4832
Localisation: Niort
Navigateur : Firefox

Hors ligne
Message Posté le: Vendredi 11 Mar 2016 à 21:18:35  Lien permanent
Répondre en citant
Ta première déclaration de restart est inutile, normalement ça devrait te donner un erreur d'ailleurs.

while(mode != "o" || mode != "n")
sera validée si :
mode est différent de 'o'
mode est différent de 'n'
mode est différent de 'o' ou 'n'

Donc supposons que tu choisisses 'o' :
mode n'est pas différent de 'o'
mode est différent de 'n' --> restart

Supposons que tu choisisses 'n' :
mode n'est pas différent de 'n
mode est différent de 'o' --> restart

Supposons que tu choisisses n'importe quoi d'autre :
mode est différent de 'n' et de 'o' --> restart


Ne pas oublier que le || signifie l'un OU l'autre OU les deux.

Dans ta condition, je suppose que tu veux restart seulement si mode est valorisé à 'o'.


Tu dois pouvoir trouver pas mal de cours sur le web sur l'Algèbre de Boole.


>> Rejoignez nous sur Star Citizen ! <<
Fond d'écran Cowcotland
Voir le profil de l'utilisateur Envoyer un message privé » Album Photos » Google Map
squal
Ouvrier agricole
Ouvrier agricole

483pts

Inscrit le: 01 juin 2013
Age: 50
Messages: 198

Navigateur : n.c.

Hors ligne
Message Posté le: Vendredi 11 Mar 2016 à 21:20:06  Lien permanent
Répondre en citant
Voir le profil de l'utilisateur Envoyer un message privé
Noxer2000
Ouvrier agricole
Ouvrier agricole

430pts

Inscrit le: 17 février 2015
Messages: 85

Navigateur : n.c.

Hors ligne
Message Posté le: Vendredi 11 Mar 2016 à 22:34:16  Lien permanent
Répondre en citant
Merci beaucoup les gens en fait oui c'est vrai que juste après avoir posé ce sujet je me le suis répété 100fois dans ma tête la formulation française et je me suis rendu compte de mon erreurs ! :)
Mais je voulais tt de même voir vos réponses ! Merci encore !
Voir le profil de l'utilisateur Envoyer un message privé
Sauter vers: 
Surveiller les réponses de ce sujet CowcotLand topic RSS feed  

Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Sujets similaires

Sujet Auteur Forum Réponses Posté le
Pas de nouveau message Fibre : J-15 : conseils pour le choix d'un opérateur ggcom Le poulailler 18 Dimanche 2 Juin 2019 à 11:58:50
Pas de nouveau message TV par satellite via opérateur internet lerameur19 Questions diverses... 11 Lundi 19 Juin 2017 à 19:27:39
Pas de nouveau message Le meilleur opérateur sur la base du ping ? Noxer2000 Questions diverses... 18 Jeudi 29 Oct 2015 à 17:52:52
Pas de nouveau message Question java opérateurs logiques "&& et ||&quo Noxer2000 Développement 8 Jeudi 19 Fév 2015 à 15:04:28
Pas de nouveau message Question concernant la fibre et le choix de l'opérateur UnKnown214 Questions diverses... 65 Vendredi 22 Aoû 2014 à 13:41:34