totta
tai
valetta
boolean-lauseista - true ja false
mitä tiedätte tästä jo?
taustaa: 10110000 01100001
tietokone ajattelee binäärisesti
- tietokone ajattelee binäärisesti: asiat on tai ei
- tekoälyn ongelma
- toiminta pohjimmiltaan perustuu siihen että ehto joko toteutuu tai ei toteudu
- koko ohjelmointikieli pohjimmiltaan rakentuu binäärioperaatioille
taustaa: ajattele binäärisesti
Sanojen merkityksistäBitti = bit, binary digit -> binäärinen numero
Binary
bi-n-ary: kaksilukujärjestelmä
quinary: viisilukujärjestelmä
nonary: yhdeksänlukujärjestelmä
decimal, base ten (sometimes denary):
kymmenlukujärjestelmä
taustaa:
Binäärilukujen käsittely
boolean-algebra
- x&&y x∧y = xy,
- x||y x∨y = x + y - xy,
-
- !x ¬x = 1 - x.
|
|
boolean - totuusarvon vertailu
bool olenIloinen=true;
while(olenIloinen==true){
printf("olen iloinen");
olenIloinen=false;
}
printf("en ole enää iloinen");
boolean - lyhemmin
bool olenIloinen=true;
while(olenIloinen){ // toimii myös
printf("olen iloinen");
olenIloinen=false;
}
printf("en ole enää iloinen");
sivuhuomautus
bool-tyyppi on tullut C-kieleen vasta C-kielen vuoden 1999 versiossa nimeltä C99.
Vanhemmissa versioissa bool-tyypin saa käyttöön seuraavalla koodirivillä:
typedef enum { false, true } bool;
booleanien käyttö
sisäänrakennettu kieleen
- Vertailuoperaattorit <, >, <=, >=, ==, !=
- Kaksi arvoa parametreina, esim a < b
- Tuloksena boolean-arvo (totuusarvo)
- Vertailuoperaattorit == ja !=
- Boolean-arvojen vertailu
- Tuloksena boolean-arvo
-
Implisiittinen vertailu
if(a) // sama kuin if(a==true)
- Negaatio !
- Parametrina 1kpl boolean
- Tuloksena käänteinen boolean ulos
int vs bool
int olenIloinen=1;
while(olenIloinen){
printf("olen iloinen");
olenIloinen=0;
}
printf("en ole enää iloinen");
int vs bool
int olenIloinen=42;
while(olenIloinen){
printf("olen iloinen");
olenIloinen=0;
}
printf("en ole enää iloinen");
int vs bool
int olenIloinen=true; // ???
while(olenIloinen){
printf("olen iloinen \n");
olenIloinen=0;
}
printf("en ole enää iloinen \n");
int vs bool
int olenIloinen=1;
while(olenIloinen){
printf("olen iloinen \n");
olenIloinen=false; // ???
}
printf("en ole enää iloinen \n");
If the source type is bool, the value
false
is converted to zero and the valuetrue
is converted to one.
toinen esimerkki
Koska vertailuoperaattorit tuottavat boolean-arvoja, niitä voi säilöä boolean-muuttujiin.
int i=4;
bool isompiKuinViisi=i>5; //
if(isompiKuinViisi){
printf("isompi kuin 5 \n");
}else{
printf("ei isompi kuin 5 \n");
}
Toinen esimerkki - toimiiko?
int i=4;
bool isompiKuinViisi=i>5; //
if(isompiKuinViisi){
printf("isompi kuin 5 \n");
}else{
printf("ei isompi kuin 5 \n");
}
i=6;
if(isompiKuinViisi){
printf("isompi kuin 5 \n");
}else{
printf("ei isompi kuin 5 \n");
}
toinen esimerkki - korjattu
Ehto täytyy toistaa jotta uusi arvo otetaan huomioon
int i=4;
bool isompiKuinViisi=i>5;
if(isompiKuinViisi){
printf("isompi kuin 5 \n");
}else{
printf("ei isompi kuin 5 \n");
}
i=6;
isompiKuinViisi=i>5;
if(isompiKuinViisi){
printf("isompi kuin 5 \n");
}else{
printf("ei isompi kuin 5 \n");
}
kolmas esimerkki - funktio
ei toistoa!
int i=4;
if(biggerThanFive(i)){
printf("isompi kuin 5 \n");
}else{
printf("ei isompi kuin 5 \n");
}
i=6;
if(biggerThanFive(i)){
printf("isompi kuin 5 \n");
}else{
printf("ei isompi kuin 5 \n");
}
miten funktio biggerThanFive toteutetaan?kolme pistettä!
totta tai valetta
By Olli Savolainen
totta tai valetta
- 2,386