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  xy = xy,

 x||y  xy = x + y - xy,
 
!x  ¬x = 1 - x



x
y
x&&y x||y
0 0
0 0
1 0
0 1
0 1
0 1
1 1
1 1


x
!x
0
1
1
0

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 value true 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,271