Programmeren met voorwaardelijke opdrachten - Python
Toolbox voor leerkrachten
-
Het doel van deze activiteit
Met deze activiteit maken leerlingen kennis met het gebruik van de stellingen while en if om de robot vooruit te laten rijden, tenzij er op het scherm wordt gedrukt.
- Met deze activiteit maken leerlingen kennis met voorwaardelijke opdrachten en instructies waarbij de robot vooruit moet rijden tenzij er op het scherm wordt gedrukt.
- Voor meer informatie over if en if-else statements of andere statements die in deze activiteit worden gebruikt, kunt u de helpinformatie in VEXcode V5 raadplegen. Voor meer informatie over deze ingebouwde helptool, bekijk het artikel over help in Python.
Toolbox voor leraren
Suggesties voor lesstrategieën voor dit onderdeel vindt u in de kolom 'Bezorging' van de 'To Do or Not to Do Pacing Guide'! (Google Doc / .docx / .pdf)
De Clawbot is klaar om beslissingen te nemen!
Met deze verkenning krijgt u de tools in handen om een aantal coole projecten te kunnen maken dieif-else,statement gebruiken.
- VEXcode V5 Python-opdrachten die in deze verkenning worden gebruikt:
- aandrijflijn.drive_for(VOORUIT)
- brain.screen.pressing()
- aandrijflijn.stop()
- indien voorwaarde:
- else:
- terwijl True:
- wacht(5, SECONDEN)
U kunt de Help-informatie in VEXcode V5 gebruiken om meer te leren over de Python-opdrachten.

Zorg ervoor dat je de benodigde hardware, je technische notebook en VEXcode V5 bij de hand hebt.
| Aantal | Benodigde materialen |
|---|---|
| 1 |
VEX V5 Classroom Starter Kit (met up-to-date firmware) |
| 1 |
VEXcode V5 (nieuwste versie, Windows, macOS) |
| 1 |
Technisch notitieboekje |
| 1 |
Clawbot (Aandrijving 2-motor, Geen Gyro) Sjabloon |
Tips voor leraren
Als dit de eerste keer is dat de student VEXcode V5 gebruikt, kan hij/zij de tutorials op elk gewenst moment tijdens de verkenning raadplegen. De tutorials bevinden zich in de werkbalk.

Stap 1: Laten we beginnen met het begrijpen van voorwaardelijke uitspraken
Lees het artikel waarinif-else,statements worden uitgelegd voordat u begint met programmeren met voorwaarden. Het artikel is hier te vinden (Google Doc / .docx / .pdf).
Voor een lijst met operatoren die u in de if-elsestatements kunt gebruiken, lees het artikel met uitleg over Booleaanse waarden. Dit artikel is hier te vinden (Google Doc/.docx/.pdf).
Stap 2: Laten we beginnen met programmeren met voorwaardelijke instructies.
-
Open het voorbeeldproject Clawbot (Drivetrain 2-motor, No Gyro).

- Bouw het onderstaande project.
# Begin projectcode
terwijl Waar: driveetrain.drive
(VOORUIT)
als brain.screen.pressing (): driveetrain.stop
()
terwijl brain.screen.pressing():
wait(5, MSEC)
wait(5, MSEC)Doe het volgende in je technische notitieblok:
- Leg uit wat het project de Clawbot laat doen. Je zult meer moeten uitleggen dan dat er een stopknop ontstaat. Leg uit welke instructies de Clawbot wat laten doen.
- Schrijf een samenvatting van één zin die vastlegt wat het project doet.
- Test om te zien of je voorspelling van wat het project de Clawbot laat doen correct is.
- Noem het projectCreatingAStopButton. Download en voer het project uit op de Clawbot.
- Controleer uw uitleg van het project en voeg opmerkingen toe om ze indien nodig te corrigeren.
Toolbox voor leraren
-
antwoorden
Bij dit project rijdt de robot continu vooruit, maar stopt als er op het scherm wordt gedrukt. Dit gebeurt door gebruik te maken van een "forever"-instructie (while True)om continu te rijden en te controleren. Als het scherm wordt ingedrukt (True), stopt de Clawbot met rijden.
Van studenten wordt niet verwacht dat ze begrijpen waarom de opdrachten while brain.screen.pressing():en wait(5, MSEC) worden gebruikt. Leg uit dat deze opdrachten noodzakelijk zijn vanwege de snelheid van de programmastroom van de robot. Als dat niet zo was, zouden de motoren van Clawbot zich gedragen alsof de gebruiker steeds opnieuw op het scherm drukt terwijl het project wordt herhaald. In plaats daarvan stoppen deze instructies de programmastroom en zorgt ervoor dat het project de lus niet opnieuw start totdat de gebruiker stopt met het aanraken van het scherm.
De pseudocode zou er zo simpel uit kunnen zien: Rijd vooruit totdat het scherm wordt ingedrukt.
De technische notitieboekjes van studenten kunnen individueel (Google Doc / .docx / .pdf) of als team (Google Doc / .docx / .pdf) worden bijgehouden en beoordeeld. De voorgaande links bieden een andere rubriek voor elke aanpak. Wanneer een rubriek wordt opgenomen in de onderwijsplanning, is het een goed idee om de rubriek uit te leggen of in ieder geval kopieën aan de studenten te geven voordat de activiteit begint.
Stap 3: Dewhileenwait()statements begrijpen.
Houd er rekening mee dat als u op het scherm van Brain drukt, de projectstroom sneller verloopt en het project doorgaat naar de volgende instructie, namelijk de opdracht drivetrain.stop().
Het project heeft dus de commando's while en wait nodig die de robot vertellen om gestopt te blijven totdat het scherm van de hersenen wordt vrijgegeven. Anders zou de instructie voor altijdervoor zorgen dat het project opnieuw begint.
terwijl brain.screen.pressing():
wacht(5, MSEC)De opdrachtenwhile en waitzijn noodzakelijk vanwege de snelheid van het projectverloop. Als ze er niet waren, zou het project naar de volgende instructie gaan voordat de robot ooit tijd had om te reageren.
Stap 4: Wijzig het project.
Onze volgende stap is het veranderendeifinstructie naar eenif-else instructie.
- Begin met het opslaan vanCreatingAStopButtonals het nieuwe project,StopOrDrive.
- Als u hulp nodig hebt bij het opslaan van een project, bekijk deze artikelen.
- Bouw vervolgens het onderstaandeStopOrDriveproject.
# Begin projectcode
terwijl Waar:
if brain.screen.pressing (): driveetrain.stop
()
while brain.screen.pressing ():
wait(5, MSEC)
else:
driveetrain.drive(FORWARD)
wait(5, MSEC)- DownloadStopOrDrivenaar Slot 2 op je Clawbot.
- Voor hulp bij het downloaden en uitvoeren van project, zie dit artikel.
- TestCreatingAStopButton(Slot 1) en test vervolgensStopOrDrive(Slot 2) en vergelijk deze om te zien of er verschillen zijn in het gedrag van de robot. Let op eventuele verschillen in je technische notebook
Toolbox voor leraren
-
antwoord
Wat betreft het gedrag van de robot mag er een verschilnietzijn tussen de projecten CreatingAStopButtonen StopOrDrive.
Als de studenten verdere hulp nodig hebben bij het begrijpen vanif-else-stellingen, zie dan dit artikel (Google Doc / .docx / .pdf).
De twee projecten laten de Clawbot zich op dezelfde manier gedragen. Het enige verschil is het gebruik van de if-else instructie in het StopOrDrive project.
Met de if-else instructie kunt u extra knoppen toevoegen aan het scherm bij toekomstige activiteiten.
Breid uw leerproces uit
Tijdens dit STEM-lab ontwikkelen studenten projecten waarmee het scherm van de Clawbot als gebruikersinterface kan functioneren. Ter voorbereiding kunt u uw leerlingen uitdagen om een gekleurde rechthoek op het scherm te tekenen die als een knop functioneert. Omdat momenteel het indrukken van een willekeurige plek op het scherm de voorwaarde is, moet de knop het hele scherm in beslag nemen. Studenten moeten het project een gebeurtenis laten uitzenden om de knop te tekenen wanneer het wordt gestart.
Laat de leerlingen eerst leren hoe het hersenscherm is georganiseerd in een coördinatensysteem. Ze moeten dit begrijpen om parameters te kunnen instellen binnen de opdrachten die ze gaan gebruiken. De gebruikte coördinaten komen overeen met het aantal pixels, niet met het nummer van de kolom of rij. Dit is de schermindeling:
Studenten moeten deze wijzigingen in het project plannen, testen en verfijnen en deze vervolgens documenteren in hun technische notitieboekjes. Voor de individuele rubriek voor technische notitieboeken klikt u op een van de volgende links (Google Doc / .docx / .pdf), of klikt u op een van de volgende links voor teamnotitieboeken (Google Doc / .docx / .pdf).
Hier is een voorbeeldoplossing:
# Begin projectcode
draw = Event()
def draw_button():
brain.screen.set_fill_color(Color.RED)
brain.screen.draw_rectangle(0, 0, 480, 240)
wait(1, SECONDS)
draw(draw_button)
while True:
draw.broadcast()
drivetrain.drive(FORWARD)
if brain.screen.pressing():
drivetrain.stop()
while brain.screen.pressing():
wait(5, MSEC)
else:
drivetrain.drive(FORWARD)
wait(5, MSEC)Zoals u kunt zien, is de knop zo getekend dat deze het hele scherm in beslag neemt, beginnend bij de oorsprong (0, 0) en alle 480 horizontale (x-as) pixels en 240 verticale (y-as) pixels vult.
