In alle programma's tot nu toe zijn alle opdrachten uitgevoerd, zonder dat er een regel werd overgeslagen. Zoals in het volgende voorbeeld.
Klik op de knoppen Back (terug) en Forward (vooruit) om door het programma te gaan. Of gebruik de pijltjestoetsen.
Opmerking: "line that has just executed" betekent "regel die als laatste is uitgevoerd" en " next line to execute" betekent " de regel die als eerstvolgende zal worden uitgevoerd".
Het nieuwe in deze les is de if-opdracht, die het mogelijk maakt om, afhankelijk van of aan een voorwaarde is voldaan, bepaalde opdrachten wel of niet uit te voeren. Laten we als voorbeeld ons programma aanpassen om een boodschap af te drukken wanneer de leeftijd van een persoon voldoende is. We zullen twee regels toevoegen: if leeftijd > 65: (hetgeen betekent "als de leeftijd is hoger dan 65" en print('Geniet van uw pensioen'). Ga nu nog eens stap voor stap door het programma.
Merk op dat de nieuwe print-opdracht werd overgeslagen omdat leeftijd slechts 32 was. Wat gebeurt er met exact hetzelfde programma wanneer geboorteJaar veranderd wordt in 1928:
Heb je het verschil gezien? In de laatste versie (met leeftijd 85) werden er twee regels afgedrukt en geen enkele regel overgeslagen. Dit is precies wat de if-opdracht beoogt: een voorwaarde nagaan (is leeftijd groter dan 65?) en bepaalde opdrachten uitvoeren (afdrukken van Geniet van uw pensioen!) enkel wanneer de voorwaarde waar is.
We noemen de opdrachten die enkel uitgevoerd worden als de voorwaarde waar is, het lichaam (Eng.: body) van de if-opdracht. Het lichaam moet inspringen, dat wil zeggen dat er extra spaties zijn aan het begin van de regel (zoals in het voorbeeld hierboven). Het lichaam kan meer dan één opdracht bevatten: die moeten dan allemaal evenveel spaties inspringen. Hier volgt een voorbeeld.
- Probeer bovenstaand programma in de console of de visualizer uit te voeren met geboortejaar 1982.
- if x < y: betekent "als x is kleiner dan y"
- if x >= y: betekent "als x is groter dan of gelijk aan y"
- if x <= y: betekent "als x is kleiner dan of gelijk aan y"
De algemene structuur van een if-opdracht
- De eerste regel
if «voorwaarde»:
heeft drie delen: het woordjeif, de«die ofwel Waar of Onwaar (True of False) moet zijn (meer hierover hieronder), en een dubbele puntvoorwaarde»: - Dan het lichaam, wat een voorbeeld is van een blok, waarmee we een reeks opdrachten bedoelen die één of meerdere opdrachten lang kan zijn. Python leidt af waar het blok begint en eindigt door inspectie van de inspringing, of anders gezegd je moet een zelfde aantal spaties plaatsen voor iedere regel in het blok.
Lichamen
Lichamen zullen later op veel meer plaatsen worden gebruikt: in for-lussen, en wanneer je bijvoorbeeld je eigen functies schrijft. (Een typische manier in vele andere programmeertalen om een lichaam aan te geven is met accoladen { }.) Alle regels in het lichaam moeten op precies op dezelfde manier inspringen: ze moeten starten met exact hetzelfde aantal spaties. Zodra Python ziet dat de volgende regel meer spaties heeft, neemt het aan dat er een nieuw lichaam wordt gestart, en wanneer er minder spaties zijn, eindigt het lichaam.
De volgende oefening bestaat eigenlijk uit 4 oefeningen. Je moet de regels van een programma in een andere volgorde zetten om telkens een ander resultaat te krijgen. Klik op de horizontale balk-knoppen om elk van de onderdelen te openen; je kunt dat in elke gewenste volgorde doen. Zoals gebruikelijk kun je in elk onderdeel de regels verslepen.
True, False, en Booleaanse waarden
Tot nu toe zagen we, in het «deel van een voorwaarde»--opdracht, eenvoudige numerieke ongelijkheden zoals if en x > y, die al of niet waar zijn. Meer in het algemeen wordt iedere expressie die of waar of niet waar is Booleaans genoemd (naar George Boole). In Python wordt het booleaanse type gebruikt om Booleaanse waarden voor te stellen; er bestaan slechts twee Booleaanse waarden, x <= yTrue en False (waar en onwaar).
Merk op dat als je in Python de Booleaanse waarden True en direct in het programma gebruikt, ze met een hoofdletter moeten beginnen, anders krijg je een foutmelding.False
Vergelijkingen
We zijn al eerder de operatoren , <, > en <= tegengekomen, waarin twee getallen worden vergeleken>= en waarbij een Boole. Er zijn nog twee manieren om getallen te vergelijken:aanse waarde wordt teruggegeven
is de is-gelijk-operator; ze zalx == yteruggeven als en slechts alsTrueenxgelijk zijn.yis de is-ongelijk-operator; ze zalx != yTrueteruggeven als en slechts alsxenyniet gelijk zijn.==en!=werken ook op tekenreeksen en andere types van waarden.
(Hier worden twee gelijktekens gebruikt omdat het enkelvoudige gelijkteken al betekenis heeft in == waarmee bedoeld wordt "ken aan x = «expressie» de waarde van «expressie» toe". Het verwarren van x en = komt vaak voor: source of bugs.)==
Hier volgt om te beginnen een voorbeeld.
We hebben zojuist het concept blok geïntroduceerd (meerdere regels na elkaar die hetzelfde inspringen). Er kan een blok in een ander blok voorkomen:
if wachtwoord=='SesamOpenU':
print('De gebruiker is ingelogd.')
if uur>18:
print('Goedenavond!')
print('Type een opdracht in:')Hier bestaat uit het buitenste blok uit 4 regels en het binnenblok uit maar 1 regel: if wachtwoord=='SesamOpenU':print('De gebruiker is ingelogd.')
if uur>18:print('Goedenavond!')print('Type een opdracht in:')
ifsuur>18 onwaar is (waardoor het binnenblok wordt overgeslagen), zal de regel print('Type een opdracht in:') van het buitenblok toch worden uitgevoerd.Later, in les 9, zullen we zien dat in programma's waarin meerdere Booleaanse waarden moeten worden gecheckt, ze kunnen worden vereenvoudigd door middel van else en elif (else if) en tevens het gebruik van de operatoren "and", "or" en "not". Nu kun je naar de volgende les gaan.



