JeuWeb - Crée ton jeu par navigateur
ANDALSO et ORELSE - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : ANDALSO et ORELSE (/showthread.php?tid=6524)

Pages : 1 2 3


ANDALSO et ORELSE - Wells - 13-12-2012

Codant en temps normal en .Net j'ai prit l'habitude d’utiliser ces deux conditions.

Pour rappel, elles permettent dans un IF de s’arrêter à la première condition remplit/non remplit

Savez vous si il y a un équivalent en PHP?


RE: ANDALSO et ORELSE - BAK - 13-12-2012

C'est le cas par défaut des opérateurs classiques `or` et `and` (ou sous leurs formes `||` et `&&`).

En fait, c'est le cas dans quasiment tout les langages que je connait, .Net est une exception.


RE: ANDALSO et ORELSE - Sephi-Chan - 13-12-2012

Effectivement, je ne comprends pas ce qui change entre ces opérateurs et les classiques && et || (également présents dans C#).


RE: ANDALSO et ORELSE - keke - 13-12-2012

A savoir que pour le || , si l'une des premières conditions est vérifiée, celle qui suivent ne sont pas évaluées.
Code :
if (A || B || C || D)
{
  echo "truc";
}

Si A est faux et B est vrai , les conditions C et D ne sont pas testés.
Donc si vous lancez des fonctions qui réalisent des trucs en C et en D, ces fonctions ne sont pas executés.

Je crois que ce principe est vrai pour le PHP, mais ce n'est pas le cas dans tous les langages (genre Java).

kéké


RE: ANDALSO et ORELSE - qwarnant - 13-12-2012

(13-12-2012, 02:53 PM)keke a écrit : A savoir que pour le || , si l'une des premières conditions est vérifiée, celle qui suivent ne sont pas évaluées.
Code :
if (A || B || C || D)
{
  echo "truc";
}

Si A est faux et B est vrai , les conditions C et D ne sont pas testés.
Donc si vous lancez des fonctions qui réalisent des trucs en C et en D, ces fonctions ne sont pas executés.

Je crois que ce principe est vrai pour le PHP, mais ce n'est pas le cas dans tous les langages (genre Java).

kéké

Bonjour,

Si, ça existe en Java également et ça se retrouve dans la majorité des langages.

Ce sont les et, ou court circuités.

Pour évaluer quand même le reste de l'expression booléenne, il suffit de remplacer le || par | par exemple.

Cordialement


RE: ANDALSO et ORELSE - Xenos - 13-12-2012

C'est valide aussi pour le ET (si la première condition d'un ET est false, la suivante n'est pas évaluée)

Le terme que j'avais entendu était "évaluation paresseuse", je le trouve plus marrant que "court-circuit" :p
Et l'astuce du | marche aussi pour le &.

A noter que le xor est le seul pour lequel les deux membres sont forcément évalués (puisque l'état "attendu" du 2nd membre dépend du 1er membre)


RE: ANDALSO et ORELSE - Argorate - 14-12-2012

C'est ce que ma prof (je ne sais pas si c'est officiel) appel le "ET paresseux" ou "OU paresseux"

C'est quelque chose de natif en PHP en effet, tu peux allez râler a microsoft pour leur langage de merde.

Un ET paresseux s’arrête si toutes les conditions sont VRAI ou dès qu'il en rencontre une FAUSSE (logique, inutile de continuer à vérifier alors qu'on sait que c'est faux [pour sephi: c'est justement la différence avec les opérateur "non paresseux" qui comme des cons évalue toutes les conditions sans "réfléchir" et conclue qu'après]).
Même idée pour le OU mais inversé Wink


RE: ANDALSO et ORELSE - Ter Rowan - 14-12-2012

l'opérateur qui évalue les deux n'est pas "comme un con"

Eventuellement celui qui l'utilise sans le vouloir...

On peut tout à fait avoir des cas où on a besoin d'évaluer les expressions des deux côtés (en plus de l'aspect résultat true / false)


RE: ANDALSO et ORELSE - Sephi-Chan - 14-12-2012

Merci pour l'explication Argorate, il aurait été bienvenu d'avoir ça dans le message initial, de même que le contexte : de quel langage parle-t-on ? Dotnet est un framework, pas un langage. Smile

D'après la documentation de l'opérateur && en C#, l'opérateur est bien paresseux.
Visiblement, on parle du And de Visual Basic.

Après, est-on un développeur quand on programme avec Visual Basic ? Je pensais que c'était réservé aux chômeurs en reconversion. Confusediffle:


RE: ANDALSO et ORELSE - niahoo - 14-12-2012

en erlang les operateur and et or ne sont pas paresseux. Ils évaluent leurs deux opérandes avant de faire la conversion booléenne. Cet opérateur n'est pas con, et ce langage est loin d'être un langage de merde.

Il existe également andalso et orelse si on souhaite avoir une évaluation presseuse en erlang.