# 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++ kan true ook weergeven worden door een 1 en false door een 0.

Voorbeeld:

```cpp
#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.

De volgende operatoren kan je gebruiken bij booleans

<table><thead><tr><th width="109.5">Operator</th><th width="344">Beschrijving</th><th>Voorbeeld</th></tr></thead><tbody><tr><td><p>AND</p><p>&#x26;&#x26;</p></td><td>De AND-operator levert True op als beide voorwaardes True zijn. In alle andere gevallen is het resultaat false.</td><td><code>If ((getal1 &#x3C; 10) and (getal2 &#x3C; 10))</code></td></tr><tr><td><p>OR</p><p> || </p></td><td>De OR-operator levert True op als een beide voorwaardes True is. Dus alleen als beide voorwaardes False zijn, levert de OR-operator False op.</td><td><code>If ((getal1 &#x3C; 10) or (getal2 &#x3C; 10))</code></td></tr><tr><td><p>NOT</p><p>!</p></td><td>De NOT-operator keert de waarde om. Dus als de voorwaarde False is wordt deze True en andersom</td><td>if (not(getal&#x3C;10))</td></tr></tbody></table>

**Opdracht 6.2**\
Maak de bever opdracht [Alfred de beroemde bever](https://informatica.cuttle.org/?action=question_standalone\&que_id=182\&t=a2ff8b69118a7c4a)

**Opdracht 6.3**\
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, OR and NOT. Het is mogelijk om maar één if statement te gebruiken.

```cpp
#include <iostream> 
using namespace std;

int main(){
  bool PincodeOK = true ;
  bool GeldOpRekening = true;
  bool MaximumBedragAlGepind = false;

  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;              
}
```

<figure><img src="https://155810540-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fag1wUPh8M2n58lYXKcOY%2Fuploads%2Fgnr6IWdW55UIx9r3QKK3%2Fpinautomaat.jpg?alt=media&#x26;token=deefc7bb-7d2a-4c23-afc9-a95095ba1586" alt="" width="375"><figcaption></figcaption></figure>

**Opdracht 6.4**\
Maak de opdracht [Wachtwoord](https://informatica.cuttle.org/?action=question_standalone\&que_id=211\&t=72ea26e7cccf3ced)

{% hint style="info" %}
Om te controleren of een karakter een cijfer is kun je gebruik maken van de functie isdigit:

`bool isCijfer = isdigit(c); // true als c tussen '0' en '9' is`\
Hiervoor moet je wel de library #include \<cctype> toevoegen aan het begin van je programma.
{% endhint %}

Ook in een for-lus wordt een boolean gebruikt.

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

**Opdracht 6.5**\
Welk gedeelte van de _for_-lus is van het type boolean?
