6. Boolean

In de voorgaande hoofdstukken heb je al verschillende variabele typen gezien, zoals integer, float of string. Dit hoofdstuk kijken we uitgebreider naar het variabele type boolean. Een boolean kent slechts 2 waarden: TRUE (=waar) of FALSE (=niet waar). In C++ wordt TRUE weergeven door een 1 en FALSE door een 0.

Voorbeeld:

#include <iostream> 
using namespace std;

int main(){
  bool uitkomst;
  uitkomst = ((5*2) == 10);
  cout << "Uitkomst  = " << uitkomst << endl; 
  return 0;              
}

Opdracht 6.1 Probeer bovenstaande code uit. Wat is de waarde van uitkomst als: uitkomst = ((5*2) == 11)? De voorwaarde van een if-statement is een stukje code van het type boolean. Zoals je al gezien hebt als de voorwaarde TRUE is dan wordt het eerste gedeelte van de if-statement uitgevoerd. En als de expressie FALSE is dan wordt het else gedeelte uitgevoerd.

We kijken nog een keer naar de voorwaarde in het volgende if-statement: If (getal < 10) (getal < 10) -> dit is een stukje code van het type boolean Als getal de waarde 9 heeft dan heeft de boolean de waarde TRUE want 9 is kleiner dan 10. Als getal de waarde 11 heeft dan heeft de boolean de waarde FALSE want 11 is niet kleiner dan 10.

Opdracht 6.2 Is (getal < 10) TRUE of FALSE in de volgende gevallen: - als getal de waarde 1 heeft -> (1 < 10)? - als getal de waarde 100 heeft -> (100 < 10)? - als getal de waarde 10 heeft -> (10 < 10)?

Met de operatoren AND en OR kan je twee booleans combineren en dit levert een nieuwe boolean waarde op.

Bijvoorbeeld: If ((getal1 < 10) and (getal2 < 10))

De AND-operator levert True op als beide voorwaardes True zijn. In alle andere gevallen is het resultaat false.

A

B

A and B

True

True

True

True

False

False

False

True

False

False

False

False

Opdracht 6.3 Is ((getal1 < 10) and (getal2 < 10)) TRUE of FALSE in de volgende gevallen: - als getal1 de waarde 1 heeft en getal2 de waarde 5 -> ((1 < 10) and (5<10))? - als getal1 de waarde 1 heeft en getal2 de waarde 15 -> ((1 < 10) and (15<10))? - als getal1 de waarde 20 heeft en getal2 de waarde 5 -> ((20 < 10) and (5<10))? - als getal1 de waarde 20 heeft en getal2 de waarde 25 -> ((20 < 10) and (25<10))?

Naast de And-operator is er ook de Or-operator. Deze levert True op als een beide voorwaardes True is. Dus alleen als beide voorwaardes False zijn, levert de or-operator False op.

A

B

A or B

True

True

True

True

False

True

False

True

True

False

False

False

Opdracht 6.4 Is ((getal1 < 10) or (getal2 < 10)) TRUE of FALSE in de volgende gevallen: - als getal1 de waarde 1 heeft en getal2 de waarde 5 -> ((1 < 10) or (5<10))? - als getal1 de waarde 1 heeft en getal2 de waarde 15 -> ((1 < 10) or (15<10))? - als getal1 de waarde 20 heeft en getal2 de waarde 5 -> ((20 < 10) or (5<10))? - als getal1 de waarde 20 heeft en getal2 de waarde 25 -> ((20 < 10) or (25<10))?

In C++ wordt AND weergeven door een && en OR door ||. Opdracht 6.5 Hieronder staat een programma voor een pinautomaat. Een pinautomaat moet kijken of iemand de goede pincode heeft ingetoetst, of er nog geld op de rekening staat en of er nog niet teveel geld is gepind op die dag. - Probeer de code uit. Probeer ook verschillende waarden voor de 3 variabelen. - De code ziet er niet heel overzichtelijk uit. Verander de code door gebruik te maken van de logische operatoren AND en OR. Het is mogelijk om maar 1 if statement te gebruiken.

#include <iostream> 
using namespace std;

int main(){
  bool PincodeOK = 1 ;
  bool GeldOpRekening = 1;
  bool MaximumBedragAlGepind = 0;

  if (PincodeOK){
    if (GeldOpRekening){
      if (MaximumBedragAlGepind){
        cout << "Je mag geen geld opnemen";
      }
      else {
        cout << "Spuug geld uit";
      }
    }
    else {
      cout << "Je mag geen geld opnemen";
    }
  }
  else {
    cout << "Je mag geen geld opnemen";
  }
    
  return 0;              
}

Opdracht 6.6 Schrijf het schrikkeljaar programma nog een keer maar nu gebruikmakend van de logische operatoren OR en AND.

Ook in een for-lus wordt een boolean gebruikt.

for (int i = 0; i < 5; i++) {
    cout << "Hallo allemaal" << endl;
}

Opdracht 6.7 Welk gedeelte van de for-lus is van het type boolean?

Last updated