Skip to main content

Programmeerlussen - C++

Icoon Toolbox voor docenten Activiteitenoverzicht de Toolbox voor leerkrachten

  • In dit onderzoek maken leerlingen kennis met het programmeren van repetitieve gedragingen door gebruik te maken van herhaal- of eeuwigdurende lussen.

  • Door te leren programmeren met behulp van herhalende en eeuwigdurende lussen, kunnen leerlingen tijd besparen bij het bouwen van een project waarin steeds dezelfde acties worden herhaald. Voor meer informatie over de instructies die in een tekstproject worden gebruikt, gaat u naar dehelpinformatie.

De Clawbot V5 is klaar voor gebruik!

Deze verkenning geeft je de tools om te beginnen met het maken van een aantal coole projecten die loops gebruiken.

  • VEXcode V5-instructies die in deze verkenning zullen worden gebruikt:

    • Drivetrain.driveFor(vooruit, 300, mm);

    • Drivetrain.turnFor(rechts, 90, graden);

    • ClawMotor.spinFor(achteruit, 70, graden);

    • ArmMotor.spinFor(vooruit, 360, graden);

    • while (true) {}

    • repeat (4) {}

    • wacht(5, seconden);

Voor toegang tot aanvullende informatie klikt u met de rechtermuisknop op de naam van een opdracht in uw werkruimte. Er wordt danhelpvoor die opdracht weergegeven.

Tips voor leraren-pictogram Tips voor leraren

Als dit de eerste keer is dat de student VEXcode V5 gebruikt, kan hij/zij diverse artikelen lezen in de-bibliotheek.

Tips voor leraren-pictogram Tips voor docenten - Automatisch aanvullen gebruiken

Autocomplete is een functie in VEXcode V5 die de rest van de opdracht die u typt voorspelt. Terwijl studenten met VEXcode V5 werken, moedig je ze aan om de functie Automatisch aanvullen te gebruiken als hulp bij desyntaxis.

In het artikelAutocomplete - Tutorialswordt uitgelegd hoe u de functie Autocomplete gebruikt. Bekijk de instructievideo's in VEXcode V5 voor meer informatie.

Selecteer de zelfstudie Automatisch aanvullen.

 

Zorg ervoor dat u de benodigde hardware, uw technische notebook en VEXcode V5 hebt gedownload en gereed 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

Voorbeeldproject Clawbot Template (Drivetrain 2-motor, No Gyro)

Stap 1: Laten we beginnen met programmeren met lussen

  • Voordat u aan uw project begint, selecteert u het juiste sjabloonproject. Het voorbeeldproject Clawbot Template (Drivetrain 2-motor, No Gyro) bevat de motorconfiguratie van de Clawbot. Als de sjabloon niet wordt gebruikt, zal uw robot het project niet correct uitvoeren.

    Afbeelding met het menu Bestand geopend in VEXcode V5 met de optie Voorbeelden openen

     

  • SelecteerBestandenOpen Voorbeelden.
  • Blader door de verschillendeVoorbeeldprojecten. Deze projecten laten een verscheidenheid aan acties zien die je Clawbot kan uitvoeren. Selecteer en open het voorbeeldprojectClawbot Template (Drivetrain 2-motor, No Gyro).

     

  • Geef het project een naam HerhalendeActies.

    Afbeelding met de projectnaam voor herhalende acties in VEXcode V5

  • Typ de volgende code:

    int main() {
      //Robotconfiguratie initialiseren. NIET VERWIJDEREN!
      vexcodeInit();
    
      // Rijdt vooruit en draait 90 graden gedurende 4 iteraties 
      herhaal(4){
        Drivetrain.driveFor (vooruit, 300, mm);
        Drivetrain.turnFor (rechts, 90, graden);
        wacht(5, seconden);
    
      }
    }

Bekijk het project en doe dan het volgende in je technische notitieblok.

  1. Voorspel wat het project de Clawbot zal laten doen. Leg meer uit dan dat het project zich herhaalt.

    Wat herhaalt het? Wat doet de Clawbot?

  2. Schrijf je voorspelling, maar breek het korte project niet op in meer dan twee delen.

Icoon Toolbox voor docenten Toolbox voor leraren - antwoorden

  1. Bij dit project moet de robot 300 millimeter vooruit rijden, 90 graden naar rechts draaien en vervolgens 4 keer 5 seconden wachten om een vierkant af te maken. In plaats van dezelfde 3 instructies 4 keer te gebruiken, beperkt de herhaalinstructie dit tot slechts 1 keer. Met de herhaalinstructie worden de handelingen van vooruit rijden en vervolgens draaien herhaald.

  2. De voorspelling zou simpelweg kunnen zijn: "De Clawbot beweegt in een vierkant." Dit zou een bondige manier zijn om de herhaalde bewegingen van de Clawbot vast te leggen, zonder enige context.

Studenten kunnen hun technische notitieboekjes bijhouden en individueel of als team,ofscoren. 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 2: Voer het project uit en observeer de robot

Een vergelijking van twee C++ codefragmenten in VEXcode. Het linkse fragment gebruikt sensorinvoer om te bepalen wanneer moet worden gedraaid, met een tijdlus die controleert of de bumperschakelaar wordt ingedrukt; indien ingedrukt, draait de robot 90 graden naar rechts, anders rijdt hij vooruit. Het rechterfragment gebruikt een vaste afstand om te bepalen wanneer moet worden gedraaid, met een herhaallus die de robot 300 mm naar voren drijft, 90 graden naar rechts draait en 5 seconden wacht, waarbij deze volgorde vier keer wordt herhaald

Kijk opnieuw naar het project Herhalende acties (aan de rechterkant). Dit project zal het voorwaartse en vervolgens het gedrag vier keer herhalen. Een "repeat"-lusstructuur wordt gebruikt als u een reeks gedragingen een bepaald aantal keren wilt gebruiken.

Als de herhaalstructuur wordt vervangen door een "while"-lusstructuur, herhaalt de robot het vooruit- en vervolgens draaigedrag "terwijl" aan de voorwaarde wordt voldaan. U kunt de voorwaarde ook op "true" zetten, zodat de "while"-lus oneindig doorgaat.

In het project aan de linkerkant wordt de invoer van een sensor gebruikt om te bepalen wanneer er moet worden begonnen met draaien. Het project aan de rechterkant gebruikt een vaste aandrijflijn-afstand om te bepalen wanneer er moet worden begonnen met draaien.

Om de invoer van een sensor voortdurend te controleren, wordt een "if/else"-instructie gebruikt in combinatie met een "while"-lus. In het project aan de linkerkant draait de robot naar rechts wanneer de "BumperB" -sensor wordt ingedrukt, anders rijdt de robot voor altijd vooruit als de "BumperB" -sensor niet wordt ingedrukt. Om de waarde van de BumperB-sensor voortdurend te controleren, bevindt de "if"-instructie zich in een "while true"-lus.

Het bovenstaande project aan de linkerkant is een praktisch gebruiksvoorbeeld van een structuur die voor altijd wordt herhaald, waarbij while-lussen en if-instructies samen worden gebruikt. Stel je een zelfrijdende veegmachine voor die vooruit blijft rijden totdat hij tegen een muur of voorwerp aanloopt en vervolgens draait voordat hij verder rijdt.

Breid uw leerproces uit-pictogram Breid uw leerproces uit

Om verder te onderzoeken hoe lussen met voorwaarden gebruikt kunnen worden, kunnen de leerlingen een Floor Sweeper-project bouwen in VEXcode V5.

  • Laat de studentenbumperschakelaars monteren en bedraden.
  • Vraag de leerlingen om het voorbeeldprojectClawbot Template (Aandrijflijn 2 motoren, geen gyro)te openen.

     

  • Laat de leerlingen het project 'Vloerveger' noemen.

  • Vraag de leerlingen om het volgende project te bouwen.

    // Neem de V5-bibliotheek
    #include "vex.h"
      
    // Maakt eenvoudiger gebruik van de VEX-bibliotheek mogelijk
    met behulp van de naamruimte vex;
    
    // De functie pickRandom retourneert een willekeurig geheel getal tussen de minimale en
    waarden // die als parameters zijn doorgegeven.
    int pickRandom(int min, int max) {
      return min + rand() / (RAND_MAX / (max - min + 1));
    }
    
    int main() {
      // Robotconfiguratie initialiseren. NIET VERWIJDEREN!
      vexcodeInit();
    
      // Initialiseer de willekeurige getallengenerator.
      srand(randomSeed);
    
      while (true) {
        while (!BumperB.pressing()) {
          Drivetrain.drive(forward);
          wait(5, msec);
        }
        Drivetrain.stop();
        Drivetrain.turnFor((90 + pickRandom(0, 90)), graden);
        wait(5, msec);
      }
    }

Als de studenten hulp nodig hebben met een van de instructies, verwijs ze dan naar deHelpinformatie.

Vraag de studenten omhet project te downloaden en uit te voerenom te observeren hoe de robot beweegt. Begin vervolgens een discussie in de klas en vraag de studenten uit te leggen waarom er voor de forever-structuur is gekozen in plaats van de repeat-structuur.

De studenten moeten opmerken dat er voor de forever-structuur is gekozen omdat in dit project voortdurend wordt gecontroleerd of de bumperschakelaar is ingedrukt.

Stap 3: De Squared Loops Challenge!

Een diagram met een groen vierkant pad met pijlen die de bewegingsrichting rond het vierkant aangeven. Extra oranje pijlen buiten het vierkant wijzen in verschillende richtingen, overeenkomend met de bochten en bewegingen die nodig zijn om het pad te volgen

  • Laat je Clawbot in een vierkant rijden.
  • Vóór elke bocht moet de klauw worden geopend en gesloten en moet de arm worden opgeheven en neergelaten.
  • De Clawbot kan niet meer dan één keer langs een kant van het plein rijden.
  • U kunt het bovenstaande project RepeatingActions als uitgangspunt gebruiken, maar sla het op alsSquaredLoopsvoordat u wijzigingen aanbrengt.

Afbeelding van de projectnaam Squared Loops in de VEXcode V5-werkbalk

Plan het volgende in uw technische notitieblok:

  • Plan uw oplossing en voorspel wat elke instructie in uw project de Clawbot zal laten doen.
  • Download en voeruw project uit om het te testen voordat u het indient.
  • Breng indien nodig wijzigingen aan in het project en maak aantekeningen over wat er tijdens het testen is gewijzigd.

Icoon Toolbox voor docenten Teacher Toolbox - Oplossing

Hieronder vindt u een mogelijke oplossing voor de Squared Loops Challenge:

int main() {
  // Robotconfiguratie initialiseren. NIET VERWIJDEREN!
  vexcodeInit();

  repeat(4){
    Drivetrain.driveFor(vooruit, 300, mm);
    ClawMotor.spinFor(achteruit, 70, graden);
    ArmMotor.spinFor(vooruit, 360, graden);
    ClawMotor.spinFor(vooruit, 70, graden);
    ArmMotor.spinFor(achteruit, 360, graden);
    Drivetrain.turnFor(rechts, 90, graden);
    wait(5, msec);
  }
}

U kunt studenten eengeven voor het beoordelen van hun projecten met een programmeerrubriek
Studenten kunnen hun technische notitieboekjes bijhouden en beoordelen metindividueelof als team.