logo

Deelopdracht 3

Bij deze deelopdracht waren ik en Khadija Aweys Mohamed verder gegaan met het programmeren van een micro:bit en wat meer complexere onderdelen behandeld.

3.1 Links of rechts

De start van het nieuwe deelopdracht 3 hadden we geleerd over de volgorde wat het code volgt om uitgevoerd te worden. Dit gebeurt altijd van boven naar beneden. Dit kan zorgen voor onverwachte uitkomsten, bijvoorbeeld bij het maken van een spel die de A, B en/of A en B knoppen tegelijk als inputs nemen (zie Afb 1).

Wanneer hierbij de A en B Knoppen tegelijk ingedrukt worden, toont het apparaat alleen een smiley in plaats van een zonnebril smiley. Dit komt doordat het eerst kijkt of de A knop is ingedrukt. Dit klopt, gezien bij het indrukken van A en B de A knop ingedrukt is. Daarna voert het de code onder A knop uit en slaat het de rest over.

Om dit te oplossen zou de A en B knop blok boven de A knop blok en de B knop blok gezet moeten worden. Zo wordt die wel als eerste gecheckt.

de volgorde van code uitvoeren zorgt ervoor dat de zonnebril smiley nooit kan getoont worden.

Afb 1: de volgorde van code uitvoeren zorgt ervoor dat de zonnebril smiley nooit kan getoont worden.



3.2. Rock, paper, scissors

We kregen hierbij de opdracht om de code te bekijken van een steen, papier schaar spel (zie Afb 2). Hierbij kiest het spel een willekeurig getal tussen 1 en 3 bij het drukken van de A knop. De nummer die werd gekozen was dan het resultaat van de steen, papier, schaar worp.

Hierbij kregen wij te maken met if en else-if. De if statement kijkt of een stelling klopt of niet (true of false is). Als die klopt voert het de bijhorende code uit en slaat het alle onderstaande else statements over. Als de eerste if-statement niet klopt, dan gaat het door naar de else-if-statement die dan ook een vergelijking maakt.

Als deze wel klopt voert het deze code uit en slaat het alle onderstaande else statements over. Als de stelling niet klopt gaat het door naar de else statement.

Hier wordt de bijhorende code gelijk uitgevoerd zonder nog een stelling te zetten. Dat is bij dit spel ook prima, gezien er maar 3 uitkomsten zijn bij het kiezen van een getal tussen de 1 en de 3 en dat er alleen steen, papier en schaar zijn als uitkomsten.

micro:bit code voor steen, papier, schaar spel

Afb 2: micro:bit code voor steen, papier, schaar spel



3.3. Variabelen, loops en ifs

Bij dit onderdeel kregen we veel te maken met if-statements en hoe ze werken, loops en de verschillende soorten ervan en variabelen en wat ze zijn en waarom ze belangrijk zijn.

Netzoals bij onderdeel 3.2 was besproken werken if statements door eerst een stelling te bekijken of het klopt of niet (true of false). Daarna voert het de onderstaande code uit als het klopt, of gaat het door naar de volgende else-statement wanneer de stelling incorrect is.

Er zijn in de micro:bit workspace veel verschillende loops te gebruiken. Deze loops had ik bij deelopdracht 2 al behandeld en zal ik niet veel in diepte in de verschillende soorten gaan, maar bij specifiek dit onderdeel hebben wij ontdekt dat de for index loop een erg belangrijke en hulpvolle loop is.

De for index loop is een loop die gebruikt maakt van een variabel en deze optelt aan het einde van de loop. De loop blijft doorgaan totdat het getal van de variabel gelijk staat aan het getal die gegeven is bij de for index loop.

Wat nieuw was aan dit onderdeel is dat er waren 3 oefeningen die deze code blokken gebruikten en waarvan we de stappen moesten volgen om verschillende kleine tests te maken.


Oefening 1

Bij oefening 1 moesten we kijken hoe we een bepaald plaatje kunnen laten zien wanneer we op A, B of A en B drukken.

Hierbij gebruikte we een if-statement die eerst kijkt of de A en B knoppen zijn ingedrukt, dan of de A knop is ingedrukt en als laatst of de B knop is ingedrukt. Als er niks is ingedrukt blijft het scherm leeg.


Oefening 2

Bij oefening 2 ging het om het maken van een FizzBuzz. Dat houdt in dat we een programma moesten maken die de volgende eisen heeft:

  • Het toont de getallen 1 t/m 100 achter elkaar op het LED-scherm.
  • Als het getal deelbaar is door 3, dan toont het een schuine streep van linksboven naar rechtsonder in plaats van het getal.
  • Als het getal deelbaar is door 5, dan toont het een schuine streep van rechtsboven naar linksonder in plaats van het getal.
  • Als het getal deelbaar is door 3 én 5, dan toont het een kruis in plaats van het getal.

Dit werd gedaan door eerst een for index loop te maken die tot 100 gaat. Daarna komt er in de code een if statement die kijkt of wanneer het getal van de index gedeeld kan worden door 3 zonder rest en gedeeld kan worden door 5 zonder rest.

Als dat klopt geeft het een kruis. Zo niet dan kijkt het of het getal deelbaar is door 3 zonder rest.

Als dat klopt geeft het een schuine streep van linksboven naar rechtsonder. Zo niet dan kijkt het of het getal deelbaar is door 5 zonder rest.

Als dat klopt geeft het een schuine streep van rechtsboven naar linksonder. Zo niet dan toont het het getal op het LED-scherm.


Oefening 3

Bij oefening 3 was het doel om een voor een lampjes van links naar rechts voor elke regel van boven naar beneden totdat alle LED's aan staan. Hierbij is gebruik gemaakt van de functie Plot.

De functie Plot laat met behulp van een x waarde en een y waarde een lampje op het LED-scherm branden. De waardes van x kan van 0 tot 4 (0 is aan de linkerkant en 4 is aan de rechterkant) en de waardes van y ook (0 is bovenaan en 4 is onderaan).

Door gebruik te maken van twee for index loops kan dit gedaan worden met maar 1 Plot blok (zie Afb 3).

micro:bit instructies om met 1 plot instructie het hele scherm op te verlichten

Afb 3: micro:bit instructies om met 1 plot instructie het hele scherm op te verlichten



3.4. Cheat sheet en reflectie

Bij dit onderdeel waren we gevraagd om een cheatsheet en een reflectie bij te houden van ons werk.

De cheatsheet helpt voor het bijhouden van kennis en kan makkelijk erbij gepakt worden voor wanneer je een nieuwe term vindt en er voor wilt zorgen dat je de betekenis op een plek terug kan vinden.

De reflectie is belangrijk voor het terugkijken op een onderdeel en te zien wat goed en wat slecht ging. Zo weet je voor de volgende keren wat wel te doen en wat niet.

Deze pagina's kunt u bovenaan vinden, maar kunt u ook hier klikken:



3.5. Snelkoppelingen

Deelopdracht 3.5 ging over functie-blokken (snelkoppelingen) en hoe je deze kan gebruiken.

Functie-blokken zijn blokken die stukken code kan uitvoeren door alleen de functie aan te roepen. Dit kan handig zijn als een bepaalde reeks instructies telkens moet gebruikt te worden, of als de instructies erg lang zijn en je de code overzichtelijk wilt houden.

Bij dit onderdeel keken we de code van een zelf-spelende snake spel (zie Afb 4). Hierbij beweegt de slang continu naar een van de muren en draait dan weg van de muur.

Hierbij werd het functie-blok "blabla" gebruikt om de code overzichtelijk te houden, gezien dezelfde code ook in de forever-blok geplaatst kon worden en het nog steeds zou werken.

Afb 4: micro:bit code voor een zelf-spelende snake spel



3.6. Pixels besturen

Deelopdracht 3.6 ging over hoe je bepaalde lichtjes op de LED display aan en uit kan zetten door gebruik te maken van de plot-blok.

Hierbij kregen we ook te weten over de x en y coordinaten van het LED display. De x-as gaat van links naar rechts en is van 0 tot 4. De y-as gaat van boven naar beneden en is ook van 0 tot 4.

Als je dus bijvoorbeeld een LED lichtje aan wilt zetten onderaan in het midden, dan doe je dat door plot x = 2 en y = 4 te zetten.