Skip to main content

Programmeren met voorwaardelijke opdrachten - Python

Icoon Toolbox voor docenten 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.

Icoon Toolbox voor docenten 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.

VEXcode V5 met een station voor commando ingetypt in de werkruimte aan de linkerkant en de Help-informatie geopend aan de rechterkant. De Help toont een definitie van de opdracht en informatie over hoe deze wordt gebruikt.

Zorg ervoor dat je de benodigde hardware, je technische notebook en VEXcode V5 bij de hand hebt.

Benodigde materialen:
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-pictogram 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.

VEXcode V5-werkbalk met tutorials gemarkeerd in een rood vak. De werkbalk toont van links naar rechts het V5-logo, een wereldbolpictogram, Bestand en Tutorials. Rechts van Tutorials staan extra pictogrammen en functionaliteiten.

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).
Screenshot of the linked article titled Using If else statements in VEXcode V5 Python.
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).

Screenshot van het gekoppelde artikel met de titel Using Booleans in VEXcode V5 Python.

Stap 2: Laten we beginnen met programmeren met voorwaardelijke instructies.

  • Open het voorbeeldproject Clawbot (Drivetrain 2-motor, No Gyro).

    Voorbeeldprojecten in VEXcode V5 met het sjablonenfilter en de Clawbot Drivetrain 2 motor geen gyro-pictogram gemarkeerd met een rood vak dat aangeeft welk project moet worden geopend.

     

  • 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.
    Het dialoogvenster Projectnaam in de VEXcode V5-werkbalk leest Een stopknop maken en toont dat sleuf 1 is geselecteerd.
  • Controleer uw uitleg van het project en voeg opmerkingen toe om ze indien nodig te corrigeren.

Icoon Toolbox voor docenten 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.De functie van de opdrachten in het project Stop of Rijden is gelabeld. De if-instructie is gelabeld als Controleert of de voorwaarde True is: controleert of het scherm is ingedrukt. De blokken die eronder zijn ingesprongen, zijn gemarkeerd met: Als de voorwaarde Waar is, wordt het blok met codes uitgevoerd. Het commando 'while' waarmee je op het hersenscherm drukt, bepaalt de verwerkingssnelheid.

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.Het dialoogvenster Projectnaam in de VEXcode V5-werkbalk leest Stop of Drive en toont dat sleuf 1 is geselecteerd.
  • 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.

Het venster Slotselectie is geopend in de VEXcode V5-werkbalk en sleuf 2 is geselecteerd en gemarkeerd met een rood vak.

  • 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

Icoon Toolbox voor docenten 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-pictogram 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:Het pixelraster van het V5 Brain-scherm toont 12 genummerde rijen aan de linkerkant, waarbij de bovenste rij Rij 1 heet en de onderste Rij 12. Bovenaan staan 48 genummerde kolommen, waarbij kolom 1 helemaal links staat en kolom 48 helemaal rechts. De totale pixelafmetingen zijn 480 px breed en 240 px hoog.

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.