Redstone Les booléens et priorités, même pour les débutants!

  • Auteur de la discussion Auteur de la discussion rezemika
  • Date de début Date de début

rezemika

Initiateur du projet "Mers & océans"
19 Mars 2011
1 306
197
102
Bonjour!


/!\ En rédaction! /!\


Aujourd'hui, je vais vous présenter les booléens pour les nuls, à la portée de tous!


Sommaire :
  1. Les booléens, c'est quoi?
  2. Les booléens plus en détails
  3. Applications dans la redstone
  4. Applications en détails, la logique du système
Notre programme est chargé, alors allons-y! ;)


1) Les booléennes, c'est quoi?
Les booléens, c'est une logique. Pour les wikipédiens, c'est un type de variable à deux états.
Plus précisément, c'est soit ça, soit ça, on n'a pas d'autre choix.
L'exemple le plus connu est le binaire :
L'état est soit "1", soit "0", et pas autre chose.


Cela marche aussi avec "Vrai" et "Faux", "True" ou "False" en Anglais.
Par exemple :
Si le bouton de la lumière est enfoncé :
lumière allumée = Vrai / 1
lumière éteinte = Faux / 0


Mais, dans ce cas, comment on fait si la question nécessite une grande réponse?
Très bonne question, à laquelle je vais répondre.
Pour répondre à : De quelle couleur est cette voiture?, on pourra dire :
La voiture est blanche = Faux
La voiture est rouge = Faux
La voiture est grise = Vrai
La voiture n'est donc ni blanche ni rouge, elle est grise.


/!\ Ce n'est pas une méthode universelle, mais ce sera celle employée dans ce tutoriel!


2) Les booléens plus en détails
Rentrons dans les détails. C'est la partie agaçante avec du cours bête et méchant, mais essentiel. Mais rassurez-vous, ce n'est pas réservé aux matheux! ;)

1) Précisons que "Vrai" et "Faux" sont appelés des valeurs de vérité.

2) On utilise des lettres pour symboliser des propositions (= variable pour les matheux).
Par exemple, un bouton sera appelé B et la lampe sera appelée L.
L'état de L dépend logiquement de l'état de B.
Si B est allumé, L le sera forcément.

3) On utilise aussi des conjonctions et coordination et de subordination (pas besoin de retenir ces noms barbares rassurez-vous) tel que :
  • et
  • si
  • quand
  • donc
Voici un exemple d'utilisation : où B est un bouton, C un second bouton et L une lampe qui s'allume quand B et C sont activés.​
SI B est vrai ET C est faux, ALORS L est faux.​
SI B est vrai ET C est vrai, ALORS L est vrai.​
C'est ce qu'on appellera un ET logique.

Si L s'allume quand B ou C est allumé, on note :​
SI B OU C est vrai alors L est vrai.​
C'est ce qu'on appel un OU logique.

5) Quand l'état d'une proposition dépend de l'état d'une autre, on note P1 → P2.
Dans notre dernier exemple, cela donne : L → B, autrement dit, L dépend de B. Cela s'appelle une implication. On lit L implique B.

6) On peut dire A → B, mais comment on dit l'inverse?
C'est simple (à priori), cela s'appelle une contraposée!
Étant donné que je n'ai pas d'exemple en tête, j'ai honteusement pompé l'exemple de Wikipédia : Puisque la cause d'une implication engendre la conséquence, alors l'absence de la conséquence implique automatiquement l'absence de la cause.
Pour reprendre A → B, on note sa contraposée ¬B → ¬A.
On peut lire : non-B implique non-A.
IMPORTANT : Si vous voyez le signe "¬", ce n'est pas forcément parce que contraposée il y a! Mais ce signe (ou un similaire tel que /A = ¬A) signifie simplement qu'il y a eu "inversion" ou négation de la proposition.

7) Pour dire que deux implications sont identiques, on utilise le signe "≡" identique à.
Pour l'exemple du dessus, on écrit : A → B ≡ ¬B → ¬A.
Et on lit : A implique B est identique à non-B implique non-A.

3) Applications dans la redstone
Dans Minecraft, c'est pareil qu'au dessus, sauf qu'il y a quelques règles en plus.
Mais pas d'inquiétude, c'est simple à comprendre! ;)
Voici ces règles, à retenir absolument :

1. 1 à la priorité sur 0. Donc, si un levier est éteint et un autre allumé, la redstone reliée à ces deux leviers sera activée, même si un levier est éteint, car un autre est allumé.​
2. Le courant a de la "puissance" qui est notée de 0 à 16. De 0 à 15, le signal est allumé, à 16, le signal est éteint. Cela n'a pas de rapport avec les priorités de la redstone mais c'est important de le savoir si l'on veut à terme que nos circuits marchent.​
3. Un répéteur peut faire regagner 15 puissances à un signal. Il peut être placé jusqu'à 16 blocs à partir de la source du signal (une torche, un levier, une plaque de pression ou un bouton).​
1339358184-2012-06-08_22.06.38.png
4. Les blocs sont conducteurs, si un signal de puissance 15 est envoyé dedans avec une source d'énergie ou un répéteur collé au bloc, le courant en sort à puissance 15.​
1339358350-2012-06-10_21.58.26.png
5. Le verre est le seul bloc plein isolant. Même un répéteur ne peut faire traverser le verre à un signal de redstone. Les blocs non pleins (barreaux, vitres etc...) sont aussi isolants!​
1339358399-2012-06-10_21.58.41.png
1339358433-2012-06-10_21.58.48.png
6. Une torche de redstone émet du courant. Elle peut cesser d'en émettre si le bloc sur lequel elle est posée est alimenté par un signal, quelque soit sa puissance, ce qui s'appelle un inverseur ou porte NON / NOT.​
1339358500-2012-06-10_22.01.22.png
7. Le courant sortant d'une source d'alimentation tel qu'un bouton, un levier, une plaque de pression ou une torche sera toujours à puissance 15 et perdra une puissance par bloc parcouru.​

Voilà toutes les règles! Ne vous inquiétez pas, avec la pratique, vous les aurez toutes en tête naturellement! ;)

Voici deux images qui illustrent bien quelques règles : (désolé, l'intégration ne marche pas)
http://www.noelshack.com/2012-23-1339238798-2012-06-09_12.37.39.png
http://www.noelshack.com/2012-23-1339238632-2012-06-09_12.37.48.png

Pour les plus perdus d'entre-vous, les règles illustrées sont la 2, la 3, la 4 et la 6.

4) Applications en détails, la logique du système
Nous allons maintenant tenter de comprendre les différentes portes logiques de la redstone. Vous pourrez bientôt créer vos propres portes, sans même aller voir sur internet comment on les construit! :)

A) Comprendre les portes logiques
Les portes logiques sont des systèmes de redstone avec une ou des entrées, une ou des sorties et une partie système, laquelle peut être changée et modifiée selon vos besoins.

Mais avant de toucher à ça, il faut comprendre ce que l'on fait. Nous allons donc voir à quoi ressemble une porte logique, comment fonctionnent-t-elles et comment on peut les modifier.

Tout d'abord, la porte ET logique, ou porte AND, qui fonctionne sur le même principe que le ET logique abordé ci-dessus :
http://www.noelshack.com/2012-23-1339264113-2012-06-09_19.47.01.png
http://www.noelshack.com/2012-23-1339264178-2012-06-09_19.47.06.png
http://www.noelshack.com/2012-23-1339264253-2012-06-09_19.47.14.png

Décomposons son fonctionnement :
Les deux leviers sont des entrées, ce qui est posé sur la stone est la partie système modifiable, et le fil de droite est la sortie. Le levier du haut est l'entrée A et l'autre l'entrée B. La sortie est appelée C.
On note : SI A ET B sont vrais ALORS C est vrai.
Autre notation : C → A ET B.

Quand A est activé, une torche s'éteint mais une autre est allumée, le fil reliant les deux torches reste donc allumé et la 3ème torche est donc éteinte car le bloc sur lequel elle est posée est alimenté. La sortie est donc éteinte.

Quand A ET B sont vrais, les deux torches sont éteintes, le fil les reliant aussi. La 3ème torche est donc allumée car rien ne l'alimente, la sortie est donc allumée.

Passons maintenant à un système qui semble plus complexe, mais qui est tout aussi simple, la mémoire RS Nor latch. Elle sert à retenir des informations, et peut aussi les "oublier". Et cela ne nécessite que deux entrées!
http://www.noelshack.com/2012-23-1339266403-2012-06-09_20.25.47.png
http://www.noelshack.com/2012-23-1339266347-2012-06-09_20.25.11.png

Fonctionnement :
Lorsque l'entrée 1 s'active, la torche de gauche s'éteint, l'autre torche cesse d'être alimentée et s'allume. Le signal produit maintient la 1ère torche éteinte, et ce en boucle indéfiniment.
Cependant, il possible de rompre cette boucle, en éteignant la torche de droite avec le bouton de l'entrée 2. C'est pour cela qu'elle est aussi appelée "reset" ou "réinitialisation" en anglais.

On appel l'entrée 1 A, l'entrée 2 B, la sortie 1 C et la deuxième sortie D.
On note : SI A est vrai, C est vrai et D est faux. Dans cette configuration, SI B est vrai, C est faux et D est vrai.
Autre notation : C et D → A et B.

Bilan :
Pour aider à retenir, je vous ai concocté un petit bilan de tout le cours!
1) Toutes les portes logiques sont composées d'inverseurs placés de manière à interagir les-uns avec les autres. Prenons l'exemple de la porte ET :
Chaque entrée (A et B) est inversée, les deux signaux inversés fusionnent et le signal vrai prend le pas (propriété 1) puis il est inversé avant la sortie (C), le tout se note donc :
A et B → ¬A et ¬B → C.
Si A ET B sont vrais : 1 et 1 → 0 et 0 → 0.
0 peut aussi se noter ¬1 et 1 peut aussi se noter ¬0.

2) Si vosu voulez modifier une porte logique, munissez-vous d'un papier, faites son schéma de fonctionnement comme celui-ci et faites un système fonctionnant de la même façon, sans jamais tenir compte du schéma d'origine, le plus connu. De cette façon, vous pourrez adapter toutes les portes logiques selon vos besoins!

B) Ais-je bien compris?
Vous vous sentez perdus?
Testez vos nouvelles connaissances avec ce petit QCM!

Code ALT :
≡ 240 Identique à
¬A 170 Non-A (pour les contraposées)
 
C'est intéressant dans le fait que beaucoup l'utilise inconsciemment lors de la création de système en Redstone, même si les booléennes s'appliquent à tout type de langage de programmation que ça soit du Basic sur Calculette au C++ en passant par le PHP.

Même si c'est ce dernier dont je m'y connais le plus, avec le Basic sur Calculette et aussi la Redstone mais passons

Avec les fameux codes:
Code:
echo 'Bienvenue '.($user['login'] ? $user['name'] : 'Invité').'!';

On peut le détailler comme ça:
Code:
echo 'Bienvenue '; //Afficher Bienvenue
if($user['login']){ //SI l'utilisateur est connecté, retourne 1 (donc il est connecté)
  echo $user['name']; //Afficher son nom
}
else{echo 'Invité';}//SINON afficher Invité, si $user['login'] retourne 0
echo '!'; //Afficher un point d'exclamation pour finir
 
Je pense que ça ressemblerait plutôt à ça :
PHP:
$name = '';
if($user['login']) {
  $name = $user['name'];
} else {
  $name = 'Invité';
}
 
echo 'Bienvenue '. $name .' !';

Avec $name "caché" (s'il y a des erreurs de syntaxe, c'est que je ne code jamais en PHP).

Sinon, on dirait pas "booléens" à la place de "booléennes" ?
 
Tu peux faire comme ça mais ça change en rien la phrase, tu auras la même chose.

Sinon on dit algèbre booléenne ou fonction booléenne
 
Oui, parce que "algèbre" et "fonction" sont féminins. Mais quand je veux dire "une variable booléenne", je dis "un booléen" personellement.

Sinon tes deux codes diffèrent : dans le premier, "echo" est appellé une fois, et dans le deuxième, il est appellé trois fois.
 
Certes car c'est un if "compact" si on décompose ça donne:
Code:
echo 'Bienvenue '.($user['login'] ? $user['name'] : 'Invité').'!';
Afficher Bienvenue, puis dans les parenthèses c'est la condition, en gros on test si la variable $user['login'] existe, donc retourne 1 si elle existe sinon 0. Si oui, symboliser par '?' alors on affiche $user['name'] sinon, symboliser par ':', on affiche Invité puis on affiche ! et tout ça lier par des points pour former un string.
 
Je ne connais pas le fonctionnement interne de PHP, mais c'est sûrement comme ça plutôt :
Je créé la chaine "Bienvenue ", si $user['login'], j'ajoute $user['name'], sinon je rajoute "Invité", puis je rajoute "!", puis j'envoie le tout à echo, puis je passe à l'instruction suivante.


Sinon, pour revenir au sujet, rezemika a rajouté des trucs. Ça serait bien que tu écrives "A", "B", "C" sur les images plutôt que de décrir où ils sont, je pense.

Elle sert à retenir des informations, et peut aussi les "oublier".

La formulation est étrange, et pas tout à fait juste. Ça serait plus clair de dire qu'elle sert à retenir un booléen, non ?
 
Pour revenir au sujet principal, je vous informe que la rédaction du tuto est bientôt terminée! ;)
 
booléen est un adjectif donc booléenne ne me choque pas

un booléen c'est un terme très "informatique" (et ce n'est pas un adjectif :p)
une variable booléenne c'est "mathématiques"

par contre les booléennes ce n'est pas bon...

car là ce n'est plus un adjectif mais un nom
donc on dira les booléens. (l'ensemble des booléens)

Maintenant je vais dire ce que je pense du contenu,

Un début "théorique" c'est bien mais il ne faut pas se perdre des des conjonctions avec un sens flou

MAIS n'a aucun sens logique (et en Français c'est limite)
(ou alors MAIS et ET ont le même sens...)

et tu oublies certaines choses comme par exemple
A different de B
A eqivalent à B
A implique B
soit A soit B
A et B

Il faudrait des exemple concret et faire une transition vers une écriture plus formel


Ensuite, lorsque tu fais la relation entre la logique et minecraft,
un fil à 15 de puissance... ok mais le rapport?
(ne mélange pas la logique et le support)

et il y a à dire avant d'attaquer la porte AND...
ton explication est juste mais ne repose pas sur la "logique"
( Cf théorème de Morgan)

les portes mémoires viendront après...
 
  • J'aime
Reactions: rezemika
Merci pour toutes ces remarques constructives! J'ai édité mon message en conséquence.
Je prévois que le tuto soit fini d'ici lundi soir.
PS : pour la A implique B, ce ne serait pas pareil que A → B?
Cf. Wikipédia : Implication logique

En logique classique, dire qu'une proposition P implique logiquement une proposition Q, signifie qu'on ne peut avoir à la fois P vraie et Q fausse. Formellement cela s'écrit PQ.