Le type de données booléen (bool
) peut être l'une des deux valeurs, soittrue oufalse. Les booléens sont utilisés en programmation pour établir des comparaisons et contrôler le déroulement du programme.
Les booléens représentent les valeurs de vérité associées à la branche logique des mathématiques, qui informe les algorithmes en informatique. Nommé d'après le mathématicien George Boole, le mot booléen commence toujours par unB
majuscule.
Le type de données dans Go pour Boolean estbool
, tout en minuscules. Les valeurstrue
etfalse
seront toujours avec unt
etf
minuscule respectivement, car ce sont des valeurs spéciales dans Go.
Ce didacticiel couvrira les bases dont vous aurez besoin pour comprendre le fonctionnement du type de donnéesbool
, y compris la comparaison booléenne, les opérateurs logiques et les tables de vérité.
Opérateurs de comparaison
En programmation,comparison operators est utilisé pour comparer les valeurs et évaluer jusqu'à une seule valeur booléenne vraie ou fausse.
Le tableau ci-dessous présente les opérateurs de comparaison booléens.
Opérateur | Ce que cela veut dire |
---|---|
== |
Égal à |
!= |
Pas égal à |
< |
Moins que |
> |
Plus grand que |
⇐ |
Inférieur ou égal à |
>= |
Plus grand ou égal à |
Pour comprendre le fonctionnement de ces opérateurs, assignons deux nombres entiers à deux variables dans un programme Go:
x := 5
y := 8
Dans cet exemple, puisquex
a la valeur de5
, il est inférieur ày
qui a la valeur de8
.
En utilisant ces deux variables et leurs valeurs associées, passons en revue les opérateurs du tableau précédent. Dans ce programme, vous demanderez à Go d’imprimer si chaque opérateur de comparaison a la valeur true ou false. Pour vous aider à mieux comprendre cette sortie, vous devrez également imprimer une chaîne pour vous montrer ce qu’elle évalue:
package main
import "fmt"
func main() {
x := 5
y := 8
fmt.Println("x == y:", x == y)
fmt.Println("x != y:", x != y)
fmt.Println("x < y:", x < y)
fmt.Println("x > y:", x > y)
fmt.Println("x <= y:", x <= y)
fmt.Println("x >= y:", x >= y)
}
Outputx == y: false
x != y: true
x < y: true
x > y: false
x <= y: true
x >= y: false
Suivant la logique mathématique, Go a évalué les expressions suivantes:
-
Est-ce que 5 (
x
) est égal à 8 (y
)? false -
5 n'est pas égal à 8? true
-
Est-ce que 5 est inférieur à 8? true
-
Est-ce que 5 est supérieur à 8? false
-
Est-ce que 5 est inférieur ou égal à 8? true
-
Est-ce que 5 n'est pas inférieur ou égal à 8? false
Bien que des entiers aient été utilisés ici, vous pouvez les remplacer par des valeurs flottantes.
Les chaînes peuvent également être utilisées avec des opérateurs booléens. Ils sont sensibles à la casse, sauf si vous utilisez une méthode de chaîne supplémentaire.
Vous pouvez regarder comment les chaînes sont comparées dans la pratique:
Sammy := "Sammy"
sammy := "sammy"
fmt.Println("Sammy == sammy: ", Sammy == sammy)
OutputSammy == sammy: false
La chaîneSammy
n'est pas égale à la chaînesammy
, car elles ne sont pas exactement les mêmes; l'un commence par unS
majuscule et l'autre par uns
minuscule. Mais, si vous ajoutez une autre variable à laquelle la valeurSammy
est attribuée, elle sera évaluée comme étant égale:
Sammy := "Sammy"
sammy := "sammy"
alsoSammy := "Sammy"
fmt.Println("Sammy == sammy: ", Sammy == sammy)
fmt.Println("Sammy == alsoSammy", Sammy == alsoSammy)
OutputSammy == sammy: false
Sammy == alsoSammy true
Vous pouvez également utiliser les autres opérateurs de comparaison, y compris>
et<
pour comparer deux chaînes. Go comparera ces chaînes lexicographiquement en utilisant les valeurs ASCII des caractères.
Vous pouvez également évaluer les valeurs booléennes avec des opérateurs de comparaison:
t := true
f := false
fmt.Println("t != f: ", t != f)
Outputt != f: true
Le bloc de code précédent a évalué quetrue
n'est pas égal àfalse
.
Notez la différence entre les deux opérateurs=
et==
.
x = y // Sets x equal to y
x == y // Evaluates whether x is equal to y
Le premier=
est l'opérateur d'affectation, qui définira une valeur égale à une autre. Le second,==
, est un opérateur de comparaison et évaluera si deux valeurs sont égales.
Opérateurs logiques
Deux opérateurs logiques sont utilisés pour comparer les valeurs. Ils évaluent les expressions jusqu'à des valeurs booléennes, renvoyant soittrue
, soitfalse
. Ces opérateurs sont&&
,||
et!
, et sont définis dans la liste ci-dessous:
-
&& (
x && y
) est l'opérateurand
. C'est vrai si les deux affirmations sont vraies. -
|| (
x || y
) est l'opérateuror
. C'est vrai si au moins une affirmation est vraie. -
! (
!x
) est l'opérateurnot
. C'est vrai que si la déclaration est fausse.
Les opérateurs logiques sont généralement utilisés pour évaluer si deux expressions ou plus sont vraies ou non. Par exemple, ils peuvent être utilisés pour déterminer si la note est réussie et si l'étudiant est inscrit au cours. Si les deux cas sont vrais, alors une note sera attribuée à l'étudiant dans le système. Un autre exemple consisterait à déterminer si un utilisateur est un client actif valide d'une boutique en ligne en fonction de son crédit en magasin ou de son achat au cours des 6 derniers mois.
Pour comprendre le fonctionnement des opérateurs logiques, évaluons trois expressions:
fmt.Println((9 > 7) && (2 < 4)) // Both original expressions are true
fmt.Println((8 == 8) || (6 != 6)) // One original expression is true
fmt.Println(!(3 <= 1)) // The original expression is false
Outputtrue
true
true
Dans le premier cas,fmt.Println((9 > 7) && (2 < 4))
,9 > 7
et2 < 4
devaient être évalués à vrai puisque l'opérateurand
était utilisé.
Dans le second cas,fmt.Println((8 == 8) || (6 != 6))
, puisque8 == 8
est évalué à vrai, cela n'a pas fait de différence que6 != 6
évalue à faux car l'opérateuror
a été utilisé. Si vous aviez utilisé l'opérateurand
, cela donnerait la valeur false.
Dans le troisième cas,fmt.Println(!(3 <= 1))
, l'opérateurnot
annule la valeur fausse que3 <=1
renvoie.
Remplaçons les nombres entiers par un flotteur et visons les fausses évaluations:
fmt.Println((-0.2 > 1.4) && (0.8 < 3.1)) // One original expression is false
fmt.Println((7.5 == 8.9) || (9.2 != 9.2)) // Both original expressions are false
fmt.Println(!(-5.7 <= 0.3)) // The original expression is true
Dans cet exemple:
-
and
doit avoir au moins une expression fausse évaluée à fausse. -
or
doit avoir les deux expressions évaluées à false. -
!
doit avoir son expression interne à true pour que la nouvelle expression soit évaluée à false.
Si ces résultats ne vous semblent pas clairs, passez par quelquestruth tables pour plus de précisions.
Vous pouvez également écrire des instructions composées en utilisant&&
,||
et!
:
!((-0.2 > 1.4) && ((0.8 < 3.1) || (0.1 == 0.1)))
Jetez d'abord un œil à l'expression la plus interne:(0.8 < 3.1) || (0.1 == 0.1)
. Cette expression est évaluée àtrue
car les deux instructions mathématiques sonttrue
.
Ensuite, Go prend la valeur renvoyéetrue
et la combine avec l'expression interne suivante:(-0.2 > 1.4) && (true)
. Cet exemple renvoiefalse
car l'instruction mathématique-0.2 > 1.4
est fausse et (false
) et (true
) renvoiefalse
.
Enfin, nous avons l'expression externe:!(false)
, qui évalue àtrue
, donc la valeur finale retournée si nous imprimons cette instruction est:
Outputtrue
Les opérateurs logiques&&
,||
et!
évaluent les expressions et renvoient des valeurs booléennes.
Tables de vérité
Il y a beaucoup à apprendre sur la branche logique des mathématiques, mais vous pouvez en apprendre de manière sélective pour améliorer votre pensée algorithmique lors de la programmation.
Voici les tables de vérité pour l'opérateur de comparaison==
et chacun des opérateurs logiques&&
,||
et!
. Bien que vous puissiez les raisonner, il peut également être utile de les mémoriser, car cela peut accélérer le processus de prise de décision en matière de programmation.
Table de vérité==
(égal)
x | == | y | Retour |
---|---|---|---|
true |
== |
true |
true |
true |
== |
faux |
faux |
faux |
== |
true |
faux |
faux |
== |
faux |
true |
Table de vérité&&
(et)
x | and | y | Retour |
---|---|---|---|
true |
and |
true |
true |
true |
and |
faux |
faux |
faux |
and |
true |
faux |
faux |
and |
faux |
faux |
Table de vérité||
(ou)
x | or | y | Retour |
---|---|---|---|
true |
or |
true |
true |
true |
or |
faux |
true |
faux |
or |
true |
true |
faux |
or |
faux |
faux |
Table de vérité!
(pas)
not | x | Retour |
---|---|---|
not |
true |
faux |
not |
faux |
true |
Les tables de vérité sont des tables mathématiques couramment utilisées en logique et qu'il est utile de garder à l'esprit lors de la construction d'algorithmes (instructions) en programmation informatique.
Utilisation d'opérateurs booléens pour le contrôle de flux
Pour contrôler le flux et les résultats d'un programme sous la forme d'instructions de contrôle de flux, vous pouvez utiliser uncondition suivi d'unclause.
Uncondition évalue jusqu'à une valeur booléenne de vrai ou faux, présentant un point où une décision est prise dans le programme. Autrement dit, une condition vous dirait si quelque chose est évalué comme étant vrai ou faux.
Leclause est le bloc de code qui suit lescondition et dicte le résultat du programme. Autrement dit, il s'agit de la partie «faire ceci» de la construction «Six
esttrue
, alors faites-le.»
Le bloc de code ci-dessous montre un exemple d'opérateurs de comparaison travaillant en tandem avec des instructions conditionnelles pour contrôler le flux d'un programme Go:
if grade >= 65 { // Condition
fmt.Println("Passing grade") // Clause
} else {
fmt.Println("Failing grade")
}
Ce programme évaluera si chaque élève a réussi ou échoué. Dans le cas d'un élève avec une note de83
, la première instruction sera évaluée àtrue
, et l'instruction d'impression dePassing grade
sera déclenchée. Dans le cas d'un étudiant avec une note de59
, la première instruction sera évaluée àfalse
, donc le programme passera à exécuter l'instruction d'impression liée à l'expression else:Failing grade
.
Les opérateurs booléens présentent des conditions qui peuvent être utilisées pour décider du résultat final d'un programme via des instructions de contrôle de flux.
Conclusion
Ce tutoriel est passé en revue et comparé des opérateurs logiques appartenant au type booléen, ainsi que des tables de vérité et utilisant des booléens pour le contrôle de flux de programme.