Der boolesche Datentyp (bool
) kann einer von zwei Werten sein, entwedertrue oderfalse. Boolesche Werte werden bei der Programmierung verwendet, um Vergleiche anzustellen und den Programmablauf zu steuern.
Boolesche Werte stellen die Wahrheitswerte dar, die dem logischen Zweig der Mathematik zugeordnet sind, der Algorithmen in der Informatik informiert. Das nach dem Mathematiker George Boole benannte Wort Boolean beginnt immer mit einem großgeschriebenenB
.
Der Datentyp in Go for Boolean istbool
, alles in Kleinbuchstaben. Die Wertetrue
undfalse
werden immer mit Kleinbuchstabent
bzw.f
angegeben, da es sich um spezielle Werte in Go handelt.
Dieses Tutorial behandelt die Grundlagen, die Sie benötigen, um zu verstehen, wie der Datentypbool
funktioniert, einschließlich Boolescher Vergleiche, logischer Operatoren und Wahrheitstabellen.
Vergleichsoperatoren
Bei der Programmierung werdencomparison operators verwendet, um Werte zu vergleichen und bis zu einem einzelnen Booleschen Wert von entweder wahr oder falsch auszuwerten.
Die folgende Tabelle zeigt Boolesche Vergleichsoperatoren.
Operator | Was es bedeutet |
---|---|
== |
Gleicht |
!= |
Nicht gleichzusetzen mit |
< |
Weniger als |
> |
Größer als |
⇐ |
Weniger als oder gleich |
>= |
Größer als oder gleich wie |
Um zu verstehen, wie diese Operatoren funktionieren, weisen Sie zwei Ganzzahlen in einem Go-Programm zwei Variablen zu:
x := 5
y := 8
In diesem Beispiel hatx
den Wert5
und weniger alsy
den Wert8
.
Gehen wir mit diesen beiden Variablen und ihren zugehörigen Werten die Operatoren aus der vorhergehenden Tabelle durch. In diesem Programm werden Sie aufgefordert, auszudrucken, ob jeder Vergleichsoperator entweder wahr oder falsch ist. Zum besseren Verständnis dieser Ausgabe muss Go auch eine Zeichenfolge drucken, um anzuzeigen, was ausgewertet wird:
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
Nach mathematischer Logik hat Go aus den Ausdrücken Folgendes ausgewertet:
-
Ist 5 (
x
) gleich 8 (y
)? false -
Ist 5 ungleich 8? true
-
Ist 5 weniger als 8? true
-
Ist 5 größer als 8? false
-
Ist 5 kleiner oder gleich 8? true
-
Ist 5 nicht kleiner oder gleich 8? false
Obwohl hier Ganzzahlen verwendet wurden, können Sie diese durch Gleitkommawerte ersetzen.
Zeichenfolgen können auch mit Booleschen Operatoren verwendet werden. Sie unterscheiden zwischen Groß- und Kleinschreibung, es sei denn, Sie verwenden eine zusätzliche Zeichenfolgemethode.
Sie können sehen, wie Zeichenfolgen in der Praxis verglichen werden:
Sammy := "Sammy"
sammy := "sammy"
fmt.Println("Sammy == sammy: ", Sammy == sammy)
OutputSammy == sammy: false
Die ZeichenfolgeSammy
ist nicht gleich der Zeichenfolgesammy
, da sie nicht genau gleich sind. einer beginnt mit einem GroßbuchstabenS
und der andere mit einem Kleinbuchstabens
. Wenn Sie jedoch eine andere Variable hinzufügen, der der WertSammy
zugewiesen ist, werden sie als gleich ausgewertet:
Sammy := "Sammy"
sammy := "sammy"
alsoSammy := "Sammy"
fmt.Println("Sammy == sammy: ", Sammy == sammy)
fmt.Println("Sammy == alsoSammy", Sammy == alsoSammy)
OutputSammy == sammy: false
Sammy == alsoSammy true
Sie können auch die anderen Vergleichsoperatoren einschließlich>
und<
verwenden, um zwei Zeichenfolgen zu vergleichen. Go vergleicht diese Zeichenfolgen lexikografisch mit den ASCII-Werten der Zeichen.
Sie können Boolesche Werte auch mit Vergleichsoperatoren auswerten:
t := true
f := false
fmt.Println("t != f: ", t != f)
Outputt != f: true
Der vorhergehende Codeblock bewertete, dasstrue
nicht gleichfalse
ist.
Beachten Sie den Unterschied zwischen den beiden Operatoren=
und==
.
x = y // Sets x equal to y
x == y // Evaluates whether x is equal to y
Das erste=
ist der Zuweisungsoperator, der einen Wert gleich einem anderen setzt. Das zweite,==
, ist ein Vergleichsoperator und bewertet, ob zwei Werte gleich sind.
Logische Operatoren
Es gibt zwei logische Operatoren, die zum Vergleichen von Werten verwendet werden. Sie werten Ausdrücke bis auf Boolesche Werte aus und geben entwedertrue
oderfalse
zurück. Diese Operatoren sind&&
,||
und!
und werden in der folgenden Liste definiert:
-
&& (
x && y
) ist der Operatorand
. Es ist wahr, wenn beide Aussagen wahr sind. -
|| (
x || y
) ist der Operatoror
. Es ist wahr, wenn mindestens eine Aussage wahr ist. -
! (
!x
) ist der Operatornot
. Es ist nur wahr, wenn die Aussage falsch ist.
Logische Operatoren werden normalerweise verwendet, um zu bewerten, ob zwei oder mehr Ausdrücke wahr sind oder nicht. Sie können beispielsweise verwendet werden, um zu bestimmen, ob die Note bestanden wurde und ob der Schüler im Kurs registriert ist. Wenn beide Fälle zutreffen, wird dem Schüler eine Note im System zugewiesen. Ein anderes Beispiel wäre zu bestimmen, ob ein Benutzer ein gültiger aktiver Kunde eines Onlineshops ist, basierend darauf, ob er über ein Guthaben verfügt oder in den letzten 6 Monaten einen Kauf getätigt hat.
Um zu verstehen, wie logische Operatoren funktionieren, werden drei Ausdrücke ausgewertet:
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
Im ersten Fall musstenfmt.Println((9 > 7) && (2 < 4))
, sowohl9 > 7
als auch2 < 4
als wahr bewertet werden, da der Operatorand
verwendet wurde.
Im zweiten Fall,fmt.Println((8 == 8) || (6 != 6))
, machte es keinen Unterschied, dass6 != 6
als falsch ausgewertet wurde, da8 == 8
als falsch ausgewertet wurde, da der Operatoror
verwendet wurde. Wenn Sie den Operatorand
verwendet hätten, würde dies als falsch ausgewertet.
Im dritten Fall,fmt.Println(!(3 <= 1))
, negiert der Operatornot
den falschen Wert, den3 <=1
zurückgibt.
Lassen Sie uns ganze Zahlen durch Floats ersetzen und falsche Auswertungen anstreben:
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
In diesem Beispiel:
-
and
muss mindestens einen falschen Ausdruck haben, der als falsch ausgewertet wird. -
or
muss beide Ausdrücke als falsch auswerten lassen. -
!
muss seinen inneren Ausdruck wahr haben, damit der neue Ausdruck als falsch ausgewertet wird.
Wenn Ihnen diese Ergebnisse unklar erscheinen, gehen Sie zur weiteren Klärung einigetruth tablesdurch.
Sie können zusammengesetzte Anweisungen auch mit&&
,||
und!
schreiben:
!((-0.2 > 1.4) && ((0.8 < 3.1) || (0.1 == 0.1)))
Schauen Sie sich zuerst den innersten Ausdruck an:(0.8 < 3.1) || (0.1 == 0.1)
. Dieser Ausdruck ergibttrue
, da beide mathematischen Aussagentrue
sind.
Als nächstes nimmt Go den zurückgegebenen Werttrue
und kombiniert ihn mit dem nächsten inneren Ausdruck:(-0.2 > 1.4) && (true)
. In diesem Beispiel wirdfalse
zurückgegeben, da die mathematische Aussage-0.2 > 1.4
falsch ist und (false
) und (true
)false
zurückgeben.
Schließlich haben wir den äußeren Ausdruck:!(false)
, der zutrue
ausgewertet wird. Der endgültige Rückgabewert, wenn wir diese Anweisung ausdrucken, lautet also:
Outputtrue
Die logischen Operatoren&&
,||
und!
werten Ausdrücke aus und geben boolesche Werte zurück.
Wahrheitstabellen
Es gibt viel zu lernen über den logischen Zweig der Mathematik, aber Sie können einige davon selektiv lernen, um Ihr algorithmisches Denken beim Programmieren zu verbessern.
Das Folgende sind Wahrheitstabellen für den Vergleichsoperator==
und jeden der Logikoperatoren&&
,||
und!
. Möglicherweise können Sie sie auch auswendig lernen, aber es kann auch hilfreich sein, sie auswendig zu lernen, um Ihren Programmierentscheidungsprozess zu beschleunigen.
==
(gleich) Wahrheitstabelle
x | == | y | Kehrt zurück |
---|---|---|---|
true |
== |
true |
true |
true |
== |
falsch |
falsch |
falsch |
== |
true |
falsch |
falsch |
== |
falsch |
true |
&&
(und) Wahrheitstabelle
x | and | y | Kehrt zurück |
---|---|---|---|
true |
and |
true |
true |
true |
and |
falsch |
falsch |
falsch |
and |
true |
falsch |
falsch |
and |
falsch |
falsch |
||
(oder) Wahrheitstabelle
x | or | y | Kehrt zurück |
---|---|---|---|
true |
or |
true |
true |
true |
or |
falsch |
true |
falsch |
or |
true |
true |
falsch |
or |
falsch |
falsch |
!
(nicht) Wahrheitstabelle
not | x | Kehrt zurück |
---|---|---|
not |
true |
falsch |
not |
falsch |
true |
Wahrheitstabellen sind gebräuchliche mathematische Tabellen, die in der Logik verwendet werden, und sind nützlich, um bei der Erstellung von Algorithmen (Anweisungen) in der Computerprogrammierung zu berücksichtigen.
Verwenden von Booleschen Operatoren zur Flusssteuerung
Um den Stream und die Ergebnisse eines Programms in Form von Flusssteuerungsanweisungen zu steuern, können Siecondition gefolgt vonclause verwenden.
Acondition wird bis zu einem Booleschen Wert von wahr oder falsch ausgewertet und zeigt einen Punkt an, an dem eine Entscheidung im Programm getroffen wird. Das heißt, eine Bedingung würde Ihnen sagen, ob etwas als wahr oder falsch bewertet wird.
clause ist der Codeblock, der aufcondition folgt und das Ergebnis des Programms bestimmt. Das heißt, es ist der Teil "do this" der Konstruktion "Wennx
true
ist, dann mach das."
Der folgende Codeblock zeigt ein Beispiel für Vergleichsoperatoren, die zusammen mit bedingten Anweisungen arbeiten, um den Ablauf eines Go-Programms zu steuern:
if grade >= 65 { // Condition
fmt.Println("Passing grade") // Clause
} else {
fmt.Println("Failing grade")
}
Dieses Programm bewertet, ob die Note jedes Schülers bestanden wird oder nicht. Bei einem Schüler mit einer Note von83
wird die erste Anweisung mittrue
bewertet, und die Druckanweisung vonPassing grade
wird ausgelöst. Bei einem Schüler mit einer Note von59
wird die erste Anweisung mitfalse
bewertet, sodass das Programm die Druckanweisung ausführt, die an den Ausdruck else gebunden ist:Failing grade
.
Boolesche Operatoren stellen Bedingungen dar, anhand derer das endgültige Ergebnis eines Programms über Flusssteuerungsanweisungen entschieden werden kann.
Fazit
In diesem Lernprogramm wurden Vergleichsoperatoren und logische Operatoren des Booleschen Typs sowie Wahrheitstabellen und die Verwendung von Booleschen Operatoren für die Programmflusssteuerung behandelt.