Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Loogiset Operaattorit | Ohjausrakenteet
Johdatus Golangiin

bookLoogiset Operaattorit

Toinen operaattoriluokka tunnetaan loogisina operaattoreina. Toisin kuin muut operaattorit, jotka toimivat numeerisilla arvoilla, loogiset operaattorit on suunniteltu käsittelemään totuusarvoja (boolean-arvoja). Loogisia operaattoreita on kolme:

OperaattoriLogiikka
!EI
||TAI
&&JA

NOT (!) -operaattoria käytetään boolean-lausekkeen kieltämiseen (kääntämiseen). Tässä on yksinkertainen esimerkki, joka sisältää if-lauseen:

index.go

index.go

copy
12345678
package main import "fmt" func main() { if (false) { fmt.Println("Print if True") } }

Yllä olevassa koodissa Print-lausetta ei suoriteta, koska ehto on oletuksena false. Jos kuitenkin lisäämme lausekkeeseen NOT-operaattorin, ehto käännetään ja siitä tulee vastaava kuin true:

index.go

index.go

copy
12345678
package main import "fmt" func main() { if (!false) { fmt.Println("Print if True") } }

Voimme käyttää myös EI (!) -operaattoria monimutkaisemmissa tapauksissa. Meidän täytyy kuitenkin sulkea lausekkeet sulkuihin ennen niiden kieltämistä. Esimerkiksi, jos haluamme kieltää 3 > 4, kirjoitamme !(3 > 4):

index.go

index.go

copy
12345678
package main import "fmt" func main() { if (!(3 > 4)) { fmt.Println("Print if True") } }

TAI (||) -operaattori arvioi kaksi operandia ja palauttaa true, jos vähintään yksi operandi on true.

Huomautus

Operandi tarkoittaa arvoa tai lauseketta, jota käytetään syötteenä operaattorille lauseessa tai lausekkeessa. Esimerkiksi lausekkeessa 1 + 2 arvot 1 ja 2 ovat operandeja. Loogisten operaattoreiden tapauksessa operandi on aina totuusarvolauseke tai -arvo.

Tässä on esimerkki, joka havainnollistaa loogisten operaattoreiden peruskäyttöä:

index.go

index.go

copy
1234567
package main import "fmt" func main() { fmt.Println(true || false) fmt.Println(false || false) }

Ensimmäinen lauseke tulostaa true, koska toinen operandeista lausekkeessa true || false on true. Toisaalta toinen lauseke tulostaa false, koska molemmat operandit ovat false kyseisessä lausekkeessa. Alla on totuustaulu loogiselle TAI-operaatiolle:

Huomio

Totuustaulu on looginen esitys, joka näyttää kaikki mahdolliset syötteiden yhdistelmät ja niiden vastaavat tulosarvot.

InputOutput
true || truetrue
true || falsetrue
false || truetrue
false || falsefalse

Loogisia TAI-operaattoreita voidaan ketjuttaa yhdistämään useita operandeja. Tässä tapauksessa lauseke arvioidaan vasemmalta oikealle:

index.go

index.go

copy
123456
package main import "fmt" func main() { fmt.Println(false || false || true || false) }

Yllä olevan lausekkeen arviointijärjestys on seuraava:

Huom

Oletuksena kaikki loogiset lausekkeet arvioidaan vasemmalta oikealle.

Looginen JA (&&) -operaattori on samanlainen kuin TAI (||) -operaattori, mutta se palauttaa arvon true vain, jos molemmat operandit ovat true. Loogisen JA (&&) -operaation totuustaulu on esitetty alla:

InputOutput
true && truetrue
true && falsefalse
false && truefalse
false && falsefalse

Alla on monimutkaisempi esimerkki, joka havainnollistaa loogisten operaattoreiden käytännön sovellusta. Tutustu koodiin ja pyri ymmärtämään sen toiminta:

index.go

index.go

copy
1234567891011
package main import "fmt" func main() { var x int = 99 if (1 <= x && x <= 10 || 90 <= x && x <= 100) { fmt.Printf("The value %d is in the range 1-10 or 90-100", x) } else { fmt.Printf("The value %d is not in the range 1-10 or 90-100", x) } }

Huomaa, että yllä olevassa esimerkissä käytetään useita operaattoreita ja arvoja monimutkaisemman ehdon muodostamiseksi. Suorituksen aikana lauseke arvioidaan operaattoreiden etusijajärjestyksen mukaisesti. Korkean prioriteetin operaattorit arvioidaan ensin, ja on tärkeää ymmärtää, missä järjestyksessä ne käsitellään. Vertailuoperaattoreilla on korkeampi prioriteetti kuin loogisilla operaattoreilla.

Alla oleva kaavio havainnollistaa loogisten operaattoreiden prioriteettijärjestystä:

Seuraava kaavio havainnollistaa, miten lauseke 1 <= x && x <= 10 || 90 <= x && x <= 100 arvioidaan:

question mark

Mitä seuraavista lausekkeista voidaan käyttää if-lauseessa tarkistamaan, onko muoto neliö perustuen sen width- ja height-arvoihin?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Awesome!

Completion rate improved to 1.96

bookLoogiset Operaattorit

Pyyhkäise näyttääksesi valikon

Toinen operaattoriluokka tunnetaan loogisina operaattoreina. Toisin kuin muut operaattorit, jotka toimivat numeerisilla arvoilla, loogiset operaattorit on suunniteltu käsittelemään totuusarvoja (boolean-arvoja). Loogisia operaattoreita on kolme:

OperaattoriLogiikka
!EI
||TAI
&&JA

NOT (!) -operaattoria käytetään boolean-lausekkeen kieltämiseen (kääntämiseen). Tässä on yksinkertainen esimerkki, joka sisältää if-lauseen:

index.go

index.go

copy
12345678
package main import "fmt" func main() { if (false) { fmt.Println("Print if True") } }

Yllä olevassa koodissa Print-lausetta ei suoriteta, koska ehto on oletuksena false. Jos kuitenkin lisäämme lausekkeeseen NOT-operaattorin, ehto käännetään ja siitä tulee vastaava kuin true:

index.go

index.go

copy
12345678
package main import "fmt" func main() { if (!false) { fmt.Println("Print if True") } }

Voimme käyttää myös EI (!) -operaattoria monimutkaisemmissa tapauksissa. Meidän täytyy kuitenkin sulkea lausekkeet sulkuihin ennen niiden kieltämistä. Esimerkiksi, jos haluamme kieltää 3 > 4, kirjoitamme !(3 > 4):

index.go

index.go

copy
12345678
package main import "fmt" func main() { if (!(3 > 4)) { fmt.Println("Print if True") } }

TAI (||) -operaattori arvioi kaksi operandia ja palauttaa true, jos vähintään yksi operandi on true.

Huomautus

Operandi tarkoittaa arvoa tai lauseketta, jota käytetään syötteenä operaattorille lauseessa tai lausekkeessa. Esimerkiksi lausekkeessa 1 + 2 arvot 1 ja 2 ovat operandeja. Loogisten operaattoreiden tapauksessa operandi on aina totuusarvolauseke tai -arvo.

Tässä on esimerkki, joka havainnollistaa loogisten operaattoreiden peruskäyttöä:

index.go

index.go

copy
1234567
package main import "fmt" func main() { fmt.Println(true || false) fmt.Println(false || false) }

Ensimmäinen lauseke tulostaa true, koska toinen operandeista lausekkeessa true || false on true. Toisaalta toinen lauseke tulostaa false, koska molemmat operandit ovat false kyseisessä lausekkeessa. Alla on totuustaulu loogiselle TAI-operaatiolle:

Huomio

Totuustaulu on looginen esitys, joka näyttää kaikki mahdolliset syötteiden yhdistelmät ja niiden vastaavat tulosarvot.

InputOutput
true || truetrue
true || falsetrue
false || truetrue
false || falsefalse

Loogisia TAI-operaattoreita voidaan ketjuttaa yhdistämään useita operandeja. Tässä tapauksessa lauseke arvioidaan vasemmalta oikealle:

index.go

index.go

copy
123456
package main import "fmt" func main() { fmt.Println(false || false || true || false) }

Yllä olevan lausekkeen arviointijärjestys on seuraava:

Huom

Oletuksena kaikki loogiset lausekkeet arvioidaan vasemmalta oikealle.

Looginen JA (&&) -operaattori on samanlainen kuin TAI (||) -operaattori, mutta se palauttaa arvon true vain, jos molemmat operandit ovat true. Loogisen JA (&&) -operaation totuustaulu on esitetty alla:

InputOutput
true && truetrue
true && falsefalse
false && truefalse
false && falsefalse

Alla on monimutkaisempi esimerkki, joka havainnollistaa loogisten operaattoreiden käytännön sovellusta. Tutustu koodiin ja pyri ymmärtämään sen toiminta:

index.go

index.go

copy
1234567891011
package main import "fmt" func main() { var x int = 99 if (1 <= x && x <= 10 || 90 <= x && x <= 100) { fmt.Printf("The value %d is in the range 1-10 or 90-100", x) } else { fmt.Printf("The value %d is not in the range 1-10 or 90-100", x) } }

Huomaa, että yllä olevassa esimerkissä käytetään useita operaattoreita ja arvoja monimutkaisemman ehdon muodostamiseksi. Suorituksen aikana lauseke arvioidaan operaattoreiden etusijajärjestyksen mukaisesti. Korkean prioriteetin operaattorit arvioidaan ensin, ja on tärkeää ymmärtää, missä järjestyksessä ne käsitellään. Vertailuoperaattoreilla on korkeampi prioriteetti kuin loogisilla operaattoreilla.

Alla oleva kaavio havainnollistaa loogisten operaattoreiden prioriteettijärjestystä:

Seuraava kaavio havainnollistaa, miten lauseke 1 <= x && x <= 10 || 90 <= x && x <= 100 arvioidaan:

question mark

Mitä seuraavista lausekkeista voidaan käyttää if-lauseessa tarkistamaan, onko muoto neliö perustuen sen width- ja height-arvoihin?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4
some-alt