De meeste mensen denken dat coderen over complexe algoritmen gaat. Dat is het niet. Het gaat vooral om het maken van simpele keuzes. In C komen die keuzes neer op één ding: Booleaanse expressies.
Je hebt ze gezien in if -instructies en while -lussen. Zij zijn de stoplichten van uw programma. Groen gaat. Rode stops.
Neem dit eenvoudige voorbeeld.
Er wordt om een nummer gevraagd. Er wordt gecontroleerd of dat getal kleiner is dan nul. Als dat zo is, spreekt het programma. Als dat niet zo is? Stilte.
Het deel (b < 0) is de Booleaanse expressie. C beoordeelt het. Waar betekent dat de volgende regel wordt uitgevoerd. Vals betekent dat je het overslaat. Eenvoudig.
Maar wat gebeurt er als je meer nuance nodig hebt?
Omgaan met nul- en positieve waarden
De enkele controle hierboven laat een leemte achter. Wat als de gebruiker nul invoert? Of een positief geheel getal? Het programma negeert ze.
Hier is een iets complexere structuur.
Nu heb je logica voor negatieve, nul- en positieve waarden. De secties 'else if' en 'else' vangen de andere gevallen op. Het is nog steeds eenvoudig, maar het omvat alle basissen.
Complexe omstandigheden en veelvoorkomende valkuilen
Logica uit de echte wereld blijft zelden eenvoudig. Soms heb je twee voorwaarden nodig om tegelijk waar te zijn.
Overweeg deze regel:
Lees het als Engels. Als x gelijk is aan y EN j groter is dan k, stel z dan in op 1. Anders stel je q in op 10.
Let op de operators.
C gebruikt == om te testen op gelijkheid. Er wordt een enkele = gebruikt om een waarde toe te wijzen.
Dit is een klassieke valstrik. Als je 'if (x = y)' schrijft, controleer je niet of ze gelijk zijn. U wijst y toe aan x en controleert vervolgens of het resultaat niet nul is. Je logica breekt. Gebruik altijd dubbele gelijken voor vergelijkingen.
Het && -symbool vertegenwoordigt een Booleaanse AND-bewerking. Beide kanten moeten waar zijn.
De complete toolkit voor Booleaanse operatoren
Je hoeft deze niet te onthouden, maar je moet wel weten hoe ze eruit zien. Ze verschijnen overal in C-code.
- Gelijkheid :
== - Ongelijkheid :
!= - Minder dan :
< - Groter dan :
> - Kleiner dan of gelijk aan :
<= - Groter dan of gelijk aan :
>= - EN :
&& - OF :
|| - NIET :
!
Waarom dit belangrijk is voor dagelijkse gebruikers
Luslogica in C: while, do-while en voor structuren
U kunt while -lussen met hetzelfde gemak gebruiken als standaard if -instructies. Beschouw een eenvoudig voorbeeld:
Deze code herhaalt deze twee regels totdat a groter is dan of gelijk is aan b. De structuur is eenvoudig. C biedt ook een do-while -constructie, die garandeert dat het codeblok minstens één keer wordt uitgevoerd voordat de voorwaarde wordt gecontroleerd. Hier is een fragment met een eenvoudige invoercontrole:
Hoe de for-lus iteratie vereenvoudigt
De for -lus is in wezen een afkorting voor een while -lus. Als je code als deze hebt:
Je kunt het comprimeren in een enkele for -instructie:
De while -lus bestaat uit drie afzonderlijke delen: initialisatie (x=1 ), de test (x<10 ) en increment (x++ ). De for -lus verpakt deze in één regel. Maar u bent niet beperkt tot eenvoudige variabelen. Kijk eens naar dit complexere scenario:
Je kunt dit herschrijven met behulp van een for -lus:
Het ziet er rommelig uit. Het is verwarrend. Maar het werkt. Met de komma-operator kunt u meerdere instructies aan elkaar koppelen in de initialisatie- en ophogingssecties van een for -lus. Je kunt echter geen komma in het testgedeelte plaatsen.
Veel C-programmeurs houden ervan om logica op één regel te verpakken. Anderen beweren dat het de leesbaarheid vernietigt. Er bestaat geen universele consensus. U hoeft alleen maar te beslissen of u beknoptheid belangrijker vindt dan duidelijkheid.
Het gevaar van = vs == in Booleaanse expressies
Het dubbele gelijkteken == is een bron van frequente bugs in C. Ontwikkelaars typen vaak per ongeluk een enkel gelijkteken =. De compiler accepteert beide, maar het gedrag is drastisch anders.
In C resulteren Booleaanse expressies in gehele getallen. Nul betekent Onwaar. Elk geheel getal dat niet nul is, betekent Waar. Dit betekent dat u legaal kunt schrijven:
Maar wat gebeurt er als je 'if (a=b)' schrijft?
Dit is geen vergelijking. Het is een opdracht. De verklaring if (a=b) wijst de waarde van b toe aan a, en test vervolgens de resulterende waarde van a op de Booleaanse waarachtigheid ervan. Als a nul wordt, is de voorwaarde False. Als het iets anders wordt, is het Waar.
Uw variabele a verandert tijdens dit proces van waarde. Dit is zelden wat u wilt als u waarden wilt vergelijken. Hoewel deze functie van toewijzing in voorwaardelijke omstandigheden nuttig kan zijn in specifieke contexten, is het een valkuil voor onoplettende mensen. Wees voorzichtig met uw = en == gebruik. Eén typefout verandert alles.



























