4.4 Omkeren van een conditie

Als je wilt weten of een meisje meerderjarig is, dan kun je haar dat op verschillende manieren vragen. Hier volgen twee manieren:
- ben je 18 jaar of ouder?
- ben je onder de 18 jaar?
Een eerlijk meisje van 19 zal op de eerste vraag ja antwoorden en op de tweede vraag nee. Het antwoord is verschillend, maar dat is logisch omdat de tweede vraag naar het omgekeerde informeert van de eerste vraag. De informatie die we aan beide antwoorden kunnen ontlenen is, dat het meisje meerderjarig is.

illustratie: Geert Nijmolen

cartoon

In sommige gevallen kan het ook in COBOL handig zijn om een vraag om te keren. De twee vragen van hiervoor kunnen we in COBOL zo schrijven:

if leeftijd >= 18                 if leeftijd < 18 then
   display "meerderjarig"            display "niet meerderjarig"
else                               else
   display "niet meerderjarig"       display "meerderjarig"
end-if                            end-if
  

Bij het omkeren van een conditie op deze manier is het goed opletten geblazen. Als je niet even nadenkt gaat het makkelijk fout. Dan denk je misschien dat '< 18' het omgekeerde is van '> 18'. Maar dat is niet zo, het omgekeerde van '< 18' is '>= 18'.

COBOL kent nog een andere manier om condities om te keren: plaats het woordje not vóór de totale conditie (negated condition).

if leeftijd >= 18                 if not leeftijd >= 18 then
   display "volwassen"               display "niet volwassen"
else                               else
   display "niet volwassen"          display "volwassen"
end-if                            end-if
  

Deze mogelijkheid om een conditie om te keren is bedoeld om het programmeren makkelijk te maken. In beide voorbeelden staat op de eerste regel als vergelijkingsteken >=. In het tweede geval staat er voor de conditie het woordje not om de voorwaarde om te keren.

Het woordje not mag voor elke voorwaarde staan, waardoor die voorwaarde wordt omgedraaid. In de conditie zelf kan ook al not voorkomen. Zoals in

leeftijd not = 18

of

leeftijd not numeric. 
  

Het is niet verboden om voor deze condities nog eens een keer not te schrijven. Duidelijk is dat natuurlijk niet, want dan krijg je:

not leeftijd not = 18

en

not leeftijd not numeric
  

In zulke gevallen is het veel duidelijker om meteen te zeggen wat je bedoelt:

leeftijd = 18

en

leeftijd numeric.
  

In de volgende paragraaf zullen we een nieuw soort conditie tegenkomen. Een van de voorbeelden in die paragraaf bevat een voorbeeld van een omgekeerde conditie. Dat kun je zien aan het woordje not.

omslag leerboek

Serie: leerboeken informatica

Titel: Tijd voor COBOL 1

Auteur: Andree Hollander

naamlogo