Sand og/
eller falsk
Radio
Løkker 1.0:
Gentag og
mens
Medium
Lister
START
Svær
Svær
Ikke falsk
og ikke
sand
Tidsmålere 1.0: Milli-
sekunder
LED’er og
koordinater
Ekstra svær
Tidsmålere 2.0: Stopure
Løkker 2.0:
For hvert
Let øvet
Grundlæggende
Grundlæggende
1/32
2/5
Der er knas i koden
Når man tænder BBC micro:bit, burde den vise et hjerte.
Men…
Den viser et kranie i stedet for.
Se på koden, og gæt hvorfor.
Her ser du en kode med en fejl i.
Men…
Den viser et kranie i stedet for.
Se på koden, og gæt hvorfor.
Du skal derfor se på koden og prøve at finde fejlen.
4/5
Der er knas i koden
Når man tænder BBC micro:bit, burde den vise et hjerte.
1/5
Men den gør det her i stedet for.
3/5
Du kan se svaret på næste side.
5/5
Koden burde gøre det her.
Havde du ret? Her kan du se den rigtige kode.
1/3
2/32
Der er knas i koden
Når man tænder BBC micro:bit, burde den vise et hjerte.
Men…
Den viser et kranie i stedet for.
Se på koden, og gæt hvorfor.
Og her kan du se en forklaring på fejlen.
2/3
Nu er du klar til at gå videre!
Svar
Kodeblokken “vis ikon” var sat til at vise et kranie i stedet for et hjerte.
3/3
LED’er og koordinater
1/18
Der er knas i koden
Når man trykker på knappen “A”, burde LED’en i øverste venstre hjørne på BBC micro:bit tænde:
Men…
Den tænder ikke:
Se på koden, og gæt hvorfor.
1/13
Tidsmålere 1.0: Millisekunder
Der er knas i koden
Hvis BBC micro:bit har været tændt i mere end 5 sekunder, burde den vise ikonet “✓”.
Men…
Den viser ikonet “✓” næsten med det samme!
Se på koden, og gæt hvorfor.
KNAS I KODEN
Selv de bedste programmører laver fejl. Mange fejl! At være en dygtig programmør handler ikke om at kunne undgå fejl, men om at kunne finde og fikse de fejl, som med sikkerhed popper op.
3/32
Der er knas i koden
Når man tænder BBC micro:bit, burde den vise “Hej!”
Men…
Den viser “Farvel!” i stedet for.
Se på koden, og gæt hvorfor.
4/32
Der er knas i koden
Når man tænder BBC micro:bit, burde den vise “Hej!”
Men…
Den viser “Farvel!” i stedet for.
Se på koden, og gæt hvorfor.
Svar
Der står “Farvel!” i kodeblokken “vis streng” i stedet for “Hej!”.
5/32
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde BBC micro:bit vise nummeret “5”.
Men…
Der sker ikke noget, når man trykker på knappen “A”!
Se på koden, og gæt hvorfor.
6/32
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde BBC micro:bit vise nummeret “5”.
Men…
Der sker ikke noget, når man trykker på knappen “A”!
Se på koden, og gæt hvorfor.
Svar
Kodeblokken “når der trykkes på knappen” er ved en fejl blevet sat til “B” i stedet for “A”.
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde BBC micro:bit vise bogstavet “A”.
Og når man trykker på knappen “B”, burde BBC micro:bit vise bogstavet “B”.
Men…
Når man trykker på knappen “A”, viser den bogstavet “A”, som den skal.
Men når man trykker på knappen “B”, viser den et “A” i stedet for et “B”!
Se på koden, og gæt hvorfor.
7/32
8/32
Svar
Der står “A” i stedet for “B” i kodeblokken “vis streng”, som vises ved tryk på knappen “B”.
Der er knas i koden
BBC micro:bit burde vise et hjerte, der banker langsomt.
Når hjertet banker, burde det kunne ses i 5 sekunder, være væk i 5 sekunder og så kunne ses i 5 sekunder igen – om og om igen. For altid.
Men…
Hjertet slår virkelig hurtigt i stedet for langsomt!
Se på koden, og gæt hvorfor.
9/32
Svar
Længden på pausen er indtastet i sekunder i stedet for millisekunder.
Millisekunder er den enhed, som kodeblokken “pause” måler en pause i. Der skal 1000 millisekunder til 1 sekund.
Så for at vise hjertet i 5 sekunder og rydde skærmen i 5 sekunder, burde der stå “5000” i “pause”-blokkene.
10/32
Der er knas i koden
BBC micro:bit burde vise et hjerte, der banker hurtigt.
Hjertet burde kunne ses i 1 sekund, være væk i 1 sekund og så kunne ses i 1 sekund igen – om og om igen.
Men…
Hjertet slår kun 1 gang, og så forsvinder det! Det kommer ikke igen.
Se på koden, og gæt hvorfor.
11/32
Svar
Koden er sat ind i kodeblokken “ved start”, så den kun bliver kørt en enkelt gang ved start.
Den burde være sat ind i kodeblokken “for altid”, så den bliver gentaget for altid.
12/32
13/32
Der er knas i koden
BBC micro:bit burde vise et bankende hjerte, der slår 3 gange, før det stopper.
Men…
Hjertet slår 4 gange, før det stopper.
Se på koden, og gæt hvorfor.
Der er knas i koden
BBC micro:bit burde vise et bankende hjerte, der slår 3
gange, før det stopper.
Men…
Hjertet slår 4 gange, før det stopper.
Se på koden, og gæt hvorfor.
14/32
Svar
Der står “4” i den grønne kodeblok, som bestemmer, hvor mange gange koden skal gentages.
Der burde stå “3” i kodeblokken.
15/32
Der er knas i koden
BBC micro:bit burde vise et bankende hjerte, der slår 5 gange, før det stopper.
Men…
Hjertet slår meget mere end 5 gange – det stopper ikke med at slå!
Se på koden, og gæt hvorfor.
Svar
Koden er sat ind i kodeblokken “for altid”. Derfor vil BBC micro:bit for altid gentage koden 5 gange – om og om igen.
Koden burde være sat ind i kodeblokken “ved start”. For så vil BBC micro:bit kun gentage koden 5 gange ved start – og så stoppe bagefter.
16/32
17/32
Der er knas i koden
BBC micro:bit burde vise tallet “4”.
Men…
BBC micro:bit viser tallet “5” i stedet for.
Se på koden, og gæt hvorfor.
18/32
Der er knas i koden
BBC micro:bit burde vise tallet “4”.
Men…
BBC micro:bit viser tallet “5” i stedet for.
Se på koden, og gæt hvorfor.
Svar
Variablen “tal” er sat til “5”, derfor viser BBC micro:bit variablen “5”.
Variablen “tal” burde være sat til “4” for at vise tallet “4”.
19/32
Der er knas i koden
BBC micro:bit burde vise variablen “tal”, som er sat til “4 + 3”.
Derfor burde BBC micro:bit vise tallet “7”.
Men…
BBC micro:bit viser ingenting!
Se på koden, og gæt hvorfor.
Svar
Kodenblokken “vis nummer” mangler. I kodeblokken “vis nummer” burde variablen “tal” være sat ind. Ellers ved BBC micro:bit ikke, at den skal vise det tal, variablen er sat til.
20/32
21/32
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde variablen “tal” blive 2 numre større og blive vist på BBC micro:bit.
Når man trykker på knappen “A” 10 gange, burde BBC micro:bit derfor vise tallene
2, 4, 6, 8, 10, 12, 14, 16, 18 og 20.
Men…
BBC micro:bit viser tallene
1, 2, 3, 4, 5, 6, 7, 8, 9 og 10 i stedet for!
Se på koden, og gæt hvorfor.
22/32
Svar
Når man trykker på knappen “A” på BBC micro:bit, er variablen “tal” sat til at ændre sig med “+1”.
Der burde have stået “+2” i den lilla blok.
23/32
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde variablen “bogstav” blive sat til bogstavet “A”.
Når man trykker på knappen “B” på BBC micro:bit, burde variablen “bogstav” blive sat til bogstavet “B”.
BBC micro:bit burde vise variablen “bogstav” blinke for altid.
Men…
Bogstavet “A” begynder at blinke, når man trykker på knappen “A”, men den skifter ikke til “B”, når man trykker knappen “B”!
Se på koden, og gæt hvorfor.
Svar
Der er sat en forkert variabel ind i kodeblokken “når der trykkes på knappen B”.
Det er variablen “tal”, der er sat til “B”. Det burde være variablen “bogstav”.
24/32
25/32
Der er knas i koden
Hvis “liv” er mere end 0, burde BBC micro:bit vise et bankende hjerte.
BBC micro:bit burde derfor vise et bankende hjerte, fordi variablen “liv” er sat til “4”.
Men…
Hjertet banker ikke!
Se på koden, og gæt hvorfor.
Svar
Der er brugt det forkerte større-eller-mindre-end-tegn i koden.
Der står “liv < 0”. Altså at variablen “liv” skal være mindre end 0 for at vise et hjerte.
Der burde have stået, at variablen “liv” skal være større end 0. Altså “liv > 0”.
26/32
Der er knas i koden
Man burde kunne give et dødt hjerte på BBC micro:bit “førstehjælp” og få det til at slå ved at trykke på knappen “A”.
For ved tryk på knappen “A”, burde variablen “pres” blive 1 nummer større. Og når variablen er over 3, burde hjertet begynde at slå.
Men…
Hjertet banker allerede, når man tænder BBC micro:bit, og når man trykker på knappen “A”, stopper det med at slå!
Se på koden, og gæt hvorfor.
27/32
28/32
Svar
Der er brugt det forkerte større-eller-mindre-end-tegn i koden.
Der står “pres < 1”. Altså at hjertet skal slå, hvis man har trykket på knappen “A” mindre end 1 gang. Derfor banker hjertet fra start og stopper, når man trykker på knappen “A”.
Der burde stå “pres > 3”. Altså at hjertet skal slå, hvis man har trykket på knappen “A” mere end tre gange. For så vil hjertet være “dødt” fra starten og først begynde at slå, når man har givet “førstehjælp” med 3 tryk.
29/32
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde variablen “liv” blive 1 mindre.
Og hvis variablen “liv” er større end 0, burde BBC micro:bit vise et hjerte – ellers burde den vise et kranie.
Fordi man starter med 5 liv, burde BBC micro:bit vise det her, hvis man trykker på knappen “A” 10 gange:
Men…
Når man trykker 10 gange, viser BBC micro:bit det her i stedet for:
Se på koden, og gæt hvorfor.
Lige nu bliver hjertet vist, når er
mindre end 1, og ellers vises kraniet. Det er det omvendte af, hvad vi vil have!
Det kan vi fikse ved enten at...
Ændre
til
Eller…
Bytte rundt på kraniet og hjertet.
Klik tilbage for at se den fejlagtige kode.
Svar
Der er brugt det forkerte større-eller-mindre-end-tegn i koden.
Der står “liv < 1”. Altså at BBC micro:bit skal vise et hjerte, når variablen “liv” er mindre end 1.
Der burde stå “liv > 1”. Altså at BBC micro:bit skal vise et hjerte, når variablen “liv” er større end 1.
Ellers burde der være byttet rundt på ikonet for hjertet og kraniet i koden, hvis der stadig skulle stå “liv < 1”.
30/32
Der er knas i koden
Når man trykker på knappen ”A” på BBC micro:bit, burde variablen “liv” blive 1 mindre.
Hvis “liv” er større end 0, burde BBC micro:bit vise et bankende hjerte.
Ellers burde BBC micro:bit vise et kranie, hvis “liv” er mindre end 0.
Fordi variablen “liv” er 5 ved start, burde BBC micro:bit vise et bankende hjerte ved start og bagefter vise et kranie efter 5 tryk på knappen “A”.
Men…
Ved start blinker hjertet og kraniet på skift!
Se på koden, og gæt hvorfor.
31/32
Svar
Kodeblokken med kraniet er ikke sat ind i logikkodeblokken “hvis-så”. Den er kun sat ind i kodeblokken “for altid”. Derfor vises kraniet for altid.
Logikkodeblokken “hvis-så” burde være udvidet til “hvis-så-ellers”. Og så burde kodeblokken med kraniet være sat ind under “ellers”.
32/32
Tillykke!
Du klarede det! Er du frisk på flere udfordringer? Så kan du prøve at finde flere fejl i de andre kategorier, hvor der er også er Knas i Koden!
Svar
Der er brugt en forkert kodeblok.
LED’en skal jo tændes, ikke slukkes!
Der er knas i koden
Når man trykker på knappen “A”, burde LED’en i øverste venstre hjørne på BBC micro:bit tænde:
Men…
Den tænder ikke:
Se på koden, og gæt hvorfor.
2/18
3/18
Der er knas i koden
Når man klikker knappen “A”, burde LED’en i øverste venstre hjørne på BBC micro:bit tænde:
Men…
LED’en tænder et andet sted:
Se på koden, og gæt hvorfor.
Der er knas i koden
Når man klikker knappen “A”, burde LED’en i øverste venstre hjørne på BBC micro:bit tænde:
Men…
LED’en tænder et andet sted:
Se på koden, og gæt hvorfor.
Svar
Der står de forkerte koordinater.
BBC micro:bits LED-display er nul-indekseret. Det betyder, at den tæller fra 0.
Så det øverste venstre hjørne har koordinatet (0,0).
4/18
Der er knas i koden
Når man klikker knappen “A”, burde den midterste LED på BBC micro:bit tænde:
Men…
Den tænder her i stedet for:
Se på koden, og gæt hvorfor.
5/18
Der er knas i koden
Når man klikker knappen “A”, burde den midterste LED på BBC micro:bit tænde:
Men…
Den tænder her i stedet for:
Se på koden, og gæt hvorfor.
6/18
Svar
Der står de forkerte koordinater.
Husk, at BBC micro:bits LED-display er nul-indekseret. Det betyder, at den tæller fra 0.
Så i stedet for at tælle “1, 2, 3” ud til midten, så tæller den faktisk “0, 1, 2”!
Der er knas i koden
Når man trykker på knappen “A”, burde BBC micro:bit vise en vandret streg i bunden af displayet:
Men…
Men stregen bliver vist i toppen af displayet i stedet for:
Se på koden, og gæt hvorfor.
7/18
8/18
Svar
Der står de forkerte koordinater.
BBC micro:bits display vender på hovedet i forhold til, hvad du nok er vant til i matematik.
Det nederste punkt på y-aksen er 4, og det øverste punkt på y-aksen er 0.
Derfor burde alle koordinaterne slutte på “4” for at BBC micro:bit viser en streg i bunden af displayet.
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde man tænde LED’en yderst til venstre i midten og slukke den til højre.
Når man trykker på knappen “B”, burde man tænde LED’en yderst til højre i midten og slukke den til venstre.
Men…
Der sker det her:
Se på koden, og gæt hvorfor.
11/18
Der er knas i koden
Når man trykker på knappen “A”, burde man tænde den midterste LED på BBC micro:bit.
Og når man trykker knappen “B”, burde man slukke den midterste LED.
Men…
Når man trykker på knappen “B” sker der ingenting:
Se på koden, og gæt hvorfor.
10/18
Svar
Knappen “B” slukker det forkerte koordinat.
9/18
12/18
Svar
Der er blevet byttet rundt på X- og Y-koordinaterne.
Der er knas i koden
Ved start er en LED tændt i midten af displayet på BBC micro:bit.
Når man trykker på knappen “A”, burde LED’en flytte sig opad.
Men…
Der sker det her:
Se på koden, og gæt hvorfor.
13/18
14/18
Svar
Der står de forkerte koordinater.
Fordi BBC micro:bits display “vender på hovedet”, skal variablen “yPosition” blive mindre for at bevæge sig opad.
Derfor burde der stå “-1” i stedet for “+1”.
Der er knas i koden
Ved start er en LED tændt i midten af displayet på BBC micro:bit.
Når man trykker på knappen “A”, burde LED’en flytte sig opad.
Men…
Der sker det her:
Se på koden, og gæt hvorfor.
Hold musen over,
for at se nærmere
15/18
Der er knas i koden
Ved start er en LED tændt i midten af displayet på BBC micro:bit.
Når man trykker på knappen “B”, burde LED’en flytte sig mod højre.
Men…
Flere LED’er tænder i stedet for:
Se på koden, og gæt hvorfor.
Der er knas i koden
Ved start er en LED tændt i midten af displayet på BBC micro:bit.
Når man trykker på knappen “A”, flytter LED’en sig opad. Når den er nået til kanten, burde den starte forfra fra bunden:
Men…
LED’en “forsvinder” efter den har nået kanten:
Se på koden, og gæt hvorfor.
17/18
16/18
Svar
Man “flytter” faktisk aldrig en LED. Man slukker bare dens tidligere position og tænder en ny position. Så fejlen i koden er, at den ikke slukker den gamle position.
18/18
Svar
Der er indtastet en position, som ikke kan vises.
Koordinatsystemet på BBC micro:bit går fra 0-4.
Hvis man indtaster en position i koden, der er lavere end “0” eller højere end “4”, kan den ikke vises, fordi den så er udenfor koordinatsystemet.
Variablen “yPosition” burde derfor sættes til “4” i stedet for “5”, hvis LED’en når til kanten af displayet.
Tillykke!
Sådan! Du ved nu, hvordan man tænder og slukker LED’er på BBC micro:bits display!
Du kan tegne streger eller få det til at se ud, som om en prik bevæger sig!
Er du frisk på flere udfordringer? Så kan du prøve at finde flere fejl i de andre kategorier, hvor der er også er Knas i Koden!
Sand og/eller falsk
1/15
Man bruger oftest udsagn som et slags spørgsmål til at starte noget kode. Hvis udsagnet er sandt, så kører koden.
Alle sekskanter i kodeblokkene er noget, der hedder udsagn. Alle udsagn kan enten være eller .
En variabel kan også sættes til
eller !
Der er knas i koden
BBC micro:bit burde vise et bankende hjerte, hvis variablen “hjertetSlår” er “sand”.
Men…
Hjertet slår ikke!
Se på koden, og gæt hvorfor.
Svar
Variablen “hjertetSlår” er sat til “falsk”.
Variablen “hjertetSlår” burde være sat til “sand” for at få hjertet til at slå.
Der er knas i koden
BBC micro:bit burde vise et bankende hjerte, hvis man trykker på knappen “A”.
Hvis man trykker på knappen “B”, burde hjertet stoppe med at slå.
Men…
Hjertet starter, når man trykker på knappen “A”, men det starter også på knappen “B”! Hjertet vil ikke stoppe med at slå.
Se på koden, og gæt hvorfor.
Svar
Begge knapper er sat til at gøre det samme. De sætter variablen “hjertetSlår” til “sand”.
Når variablen “hjertetSlår” er “sand”, banker hjertet.
Når variablen “hjertetSlår” er “falsk”, banker hjertet ikke.
Når der trykkes på knappen “B”, burde variablen “hjertetSlår” derfor sættes til “falsk” for at få hjertet til at stoppe med at slå.
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde hjertet begynde at slå, hvis temperaturen er højere end 30°C.
Men…
Hjertet slår i stedet, når temperaturen er under 30°C!
Se på koden, og gæt hvorfor.
Svar
Der er brugt det forkerte større-eller-mindre-end-tegn i koden.
Variablen “hjertetSlår” bliver sat til “sand”, når temperaturen er under 30°C.
Den burde blive sat til “sand” når den er over 30°C.
Der er knas i koden
Så længe man holder knappen “A” på BBC micro:bit nede og temperaturen er over 30°C, så burde hjertet slå.
Men…
Hjertet slår ikke, når temperaturen er over 30°C, og man trykker på knappen “A”!
Se på koden, og gæt hvorfor.
Svar
Der er valgt det forkerte bogstav i “der trykkes på knappen”-blokken.
Der står i koden, at hjertet skal slå, hvis temperaturen er over 30°C og “der trykkes på knappen B”.
Der burde stå, at det er knappen “A”, der skal trykkes på.
Der er knas i koden
Hvis man holder knappen “A” og knappen “B” nede samtidig, burde BBC micro:bit vise et bankende hjerte.
Men…
Hjertet banker, som det skal, når man holder begge knapper nede – men det banker også, hvis man kun holder én knap nede!
Se på koden, og gæt hvorfor.
Svar
Der står “eller” i stedet for “og”.
Når man bruger “eller”, behøver kun ét udsagn at være sandt.
Når man bruger “og”, skal begge udsagn være sande.
Der er knas i koden
Hvis temperaturen er over 30°C, og man enten holder knappen “A” eller knappen “B” nede, så burde BBC micro:bit vise et bankende hjerte.
Men…
Hjertet banker kun, når man holder begge knapper nede!
Se på koden, og gæt hvorfor.
Svar
Der står “og” i stedet for “eller”.
Når man bruger “og”, skal begge udsagn være sande.
Men man burde kunne trykke på bare én knap – enten “A” eller “B” – for at få BBC micro:bit til at vise hjertet.
Derfor burde der stå “eller” i koden.
Der er knas i koden
Hvis temperaturen er over 30°C, eller man holder både knappen “A” og knappen “B” nede, så burde BBC micro:bit vise et bankende hjerte.
Men…
Ingen hjælp at finde her. Hvad er problemet, tror du?
Se på koden, og gæt hvorfor.
Svar
Alle kodeblokkene er rigtige og står i den rigtige rækkefølge, men de er sat ind i hinanden på den forkerte måde.
Prøv at se på de tynde linjer, der viser, hvilke sekskanter blokkene er sat ind i.
I den forkerte kode er “temperatur (°C) > 30”, “eller” og “der trykkes på knappen “A”” sat ind i samme sekskant. Kodeblokken “og” og “der trykkes på knappen B” står alene. Derfor står der, at temperaturen skal være over 30°C, eller der skal trykkes på knappen “A”, mens man trykker på knappen “B”.
I den rigtige kode står “temperatur (°C) > 30” og “og” alene, mens “der trykkes på knappen A”, “og” og “der trykkes på knappen B” er sat ind i samme samme sekskant. Derfor står der, at temperaturen skal være over 30°C, eller at der skal trykkes på knappen “A” og knappen “B” samtidig, for at BBC viser et bankende hjerte.
Tillykke!
Stærkt gået! Du er en sand løgnedetektor!
Du kan nu bruge “sand” eller “falsk”, og du kan sætte dem sammen med både “og” og “eller”!
Er du frisk på flere udfordringer? Så kan du prøve at finde flere fejl i de andre kategorier, hvor der er også er Knas i Koden!
Prøv for eksempel kategorien “Ikke falsk er sandt?”, hvis du tør lede efter fejl i nogle endnu sværere koder med “sand” og “falsk”!
Radio
Der er knas i koden
Når man trykker på knappen “A” på den venstre BBC micro:bit, burde den sende tallet “4”. Når den højre BBC micro:bit modtager tallet “4”, burde den vise tallet.
Men…
Tallet “5” bliver vist i stedet for!
Se på koden, og gæt hvorfor.
1/12
Svar
Der står i koden, at den venstre BBC micro:bit skal sende tallet “5”.
Der burde stå, at den skal sende tallet “4”.
2/12
Der er knas i koden
Når man trykker på knappen “A” på den venstre BBC micro:bit, burde den sende strengen “Ping”.
Når den højre BBC micro:bit modtager en streng, burde den vise strengen.
Men…
Den højre BBC micro:bit viser strengen “Pong”, uanset hvilken streng den venstre BBC micro:bit sender!
Se på koden, og gæt hvorfor.
3/12
Svar
Koden på den højre BBC micro:bit er sat til at vise strengen “Pong”.
Koden burde være sat til at vise variablen “receivedString”, som betyder “modtaget streng”.
4/12
Der er knas i en af koderne
Når man trykker på knappen “A” på den venstre BBC micro:bit, skal den sende strengen “Ping”.Når den højre BBC micro:bit modtager en streng, skal den vise strengen.
Hvilken kode får dem til at gøre det?
Svar
Begge koder får den højre BBC micro:bit til at skrive “Ping”. Men koden til venstre viser, hvad
den modtager, mens koden til højre skriver “Ping”, uanset hvad den modtager.
Den højre BBC micro:bit skulle vise, hvad den modtager. Derfor er koden til venstre rigtig.
5/12
6/12
Der er knas i koden
Når man trykker på knappen “A” på den venstre BBC micro:bit, burde den få den højre BBC micro:bit til at vise et bankende hjerte.
Når man trykker på knappen “B” på den venstre BBC micro:bit, burde den få den højre BBC micro:bit til at stoppe med at vise et bankende hjerte.
Men…
Begge knapper viser hjertet! Ingen af dem får det til at stoppe.
Se på koden, og gæt hvorfor.
7/12
Svar
Både knappen “A” og “B” på den venstre BBC micro:bit sender nummer “1”, som får den højre BBC micro:bit til at vise et bankende hjerte.
Når der trykkes på knappen “B”, burde der derfor sendes et andet nummer – for eksempel et 0 – for at få den højre BBC micro:bit til at stoppe med at vise et hjerte.
Der er knas i koden
Når den venstre BBC micro:bit modtager en streng, burde den vise “Fedt!”.
Når den højre BBC micro:bit modtager en streng, burde den vise “Sejt!”.
Men…
Der sker ingenting, når man trykker på knappen “A” på hverken den ene eller den anden BBC micro:bit.
Se på koden, og gæt hvorfor.
8/12
9/12
Svar
Den venstre og højre BBC micro:bit er ikke indstillet til den samme radiogruppe.
De skal være indstillet til den samme gruppe for at kunne sende og modtage fra hinanden.
Derfor burde der enten stå “1” i begge grupper eller “4” i begge grupper.
Tallet er lige meget – så længe det er det samme.
10/12
11/12
Svar
Der er ikke indstillet en radiogruppe.
Hvis man ikke indstiller en radiogruppe på BBC micro:bit, så får den bare en tilfældig gruppe mellem 0 og 255.
Så det er virkelig tilfældigt, hvis to BBC micro:bits ender med at have den samme gruppe, hvis man ikke indstiller dem!
Tillykke!
Radiotårnet har modtaget klar besked om, at du har klaret den!
Du kan også prøve at finde andre slags fejl i de andre kategorier, hvor der er også er
Knas i Koden!
12/12
Løkker 1.0: Gentag og mens
1/16
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde den vise et hjerte, der banker 4 gange.
Men…
Når man trykker på knappen “A”, banker hjertet kun 3 gange i stedet for!
Se på koden, og gæt hvorfor.
Svar
Den grønne kodeblok er det, der hedder en “løkke”. Den fortæller BBC micro:bit, hvor mange gange, den skal gentage koden inde i løkken.
Der burde derfor stå “gentag 4 gange” i løkken for at få BBC micro:bit til at vise det bankende hjerte 4 gange.
2/16
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde den vise et hjerte, der banker 5 gange.
Men…
Når man trykker på knappen “A”, banker hjertet 7 gange i stedet for!
Se på koden, og gæt hvorfor.
3/16
4/16
Svar
Løkken er sat til at gentage koden det antal gange, som variablen “tæller” er sat til.
Variablen “tæller” er sat til “7”. Derfor gentager BBC micro:bit koden for det bankende hjerte 7 gange.
Variablen “tæller” burde være sat til “5”.
5/16
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit første gang, burde hjertet banke 1 gang.
Når man trykker på knappen anden gang, burde hjertet banke 2 gange.
Når man trykker på knappen tredje gang, burde hjertet banke 3 gange og så videre.
Men…
Når man trykker på knappen “A” første gang, banker hjertet 2 gange! Og anden gang 4 gange! Og så 6, 8, 10, 12 gange og så videre!
Se på koden, og gæt hvorfor.
6/16
Svar
Løkken er sat til at gentage koden det antal gange, som variablen “tæller” er sat til.
Variablen “tæller” er sat til at stige med “+2”, hver gang man trykker på knappen “A”.
Der burde stå “+1” for at hjertet banker 1 gang mere, hver gang man trykker på knappen “A” 1 gang mere.
7/16
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde hjertet banke 5 gange.
Men…
Hjertet banker 6 gange i stedet for!
Se på koden, og gæt hvorfor.
Svar
Variablen “tæller” er sat til 0.
BBC micro:bit viser et bankende hjerte, mens variablen “tæller” er mindre end 6. Derfor viser BBC micro:bit et bankende hjerte, mens variablen er 0, 1, 2, 3, 4 og 5. Det er 6 gange.
Der burde stå, at BBC micro:bit viser et bankende hjerte, mens variablen “tæller” er mindre end 5. Altså når den er 0, 1, 2, 3 og 4, hvilket er 5 gange.
8/16
Der er knas i koden
Når man trykker på knappen “A”, burde BBC micro:bit vise alle tal i 3-tabellen, som er mindre end 20.
Den burde derfor vise tallene:0, 3, 6, 9, 12, 15 og 18.
Men…
Den viser tallene:0, 2, 4, 6, 8, 10, 12, 14, 16 og 18.
Se på koden, og gæt hvorfor.
9/16
Svar
Koden viser 2-tabellen i stedet for.
Det gør den, fordi variablen “tæller” er sat til at stige med “+2”.
Der burde stå “+3” for at vise 3-tabellen.
10/16
11/16
Svar
Koden til højre får BBC micro:bit til at vise tallene 0, 2, 4, 6 og 8. Den viser tallet 0 først, fordi den er sat til at vise variablen “tæller”, som er sat til 0, inden den begynder at ændre på variablen.
Koden til venstre får BBC micro:bit til at vise tallene 2, 4, 6, 8 og 10. Den viser tallet 2 først, fordi den er sat til at ændre variablen “tæller”, som er sat til 0, inden den viser variablen.
Der er knas i den ene kode
Når man trykker på knappen “A”, skal BBC micro:bit vise tallene 0, 2, 4, 6 og 8. Hvilken kode får den til at gøre det?
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde den vise alle tal i 4-tabellen, som er mindre end 20.
Så den burde vise tallene 0, 4, 8, 12 og 16.
Men…
Den viser tallene 4, 8, 12, 16 og 20 i stedet for!
Se på koden, og gæt hvorfor.
12/16
Svar
Koden er sat til at vise variablen “tæller”, efter der er blevet ændret på den.
Den burde vise variablen “tæller”, før den ændrer på variablen for at vise tallet “0” først.
13/16
14/16
...Og så den svære!
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde den vise variablen “tæller”, hvorefter den burde lægge et tilfældigt tal mellem 0 og 2 til “tæller”.
Det burde den gentage, så længe “tæller” er mindre end 10.
Men…
Der sker ingenting, når man trykker på knappen “A”!
Se på koden, og gæt hvorfor.
15/16
Svar
Der er brugt det forkerte større-eller-mindre-end-tegn i koden.
Der står “10 < tæller”. Altså at løkken kun kører, mens variablen “tæller” er større end 10.
Men koden skulle kun køre, mens variablen er mindre end 10.
Derfor burde der stå “10 > tæller” eller “tæller < 10” i stedet for.
Tillykke!
Det “løkkedes”!
Du har nu vist, hvordan man kan få kode til at gentage sig selv.
Du har nu vist, hvordan man kan få kode til at gentage sig selv.
Du har nu vist … hvordan man også kan stoppe kode med at gentage sig selv!
Er du frisk på flere udfordringer med løkker? Så kan du prøve kategorien “Lister og løkker”.
Du kan også prøve kræfter med andre kategorier, hvor der er også er Knas i Koden!
16/16
1/14
Hvis man har alt for mange variabler at holde styr på, eller man gerne vil sortere i dem (for eksempel i sine yndlingsfilm), så kan en liste være smart!
Der kan stå mange film på en liste, men hver film skal have sin egen plads. En plads kalder man et “indeks”, og pladserne er nul-indekseret. Det vil sige, at de starter ved 0. Så hvis du for eksempel vil vise din tredje yndlingsfilm, “Fuglekrigen”, så skal BBC micro:bit hente den ved “indeks 2” på din liste. Men du kan ikke sige “Hej BBC micro:bit. Hent film ved indeks 2”. For BBC micro:bit ved ikke, hvad en film er. Derfor kalder man alt, der står på en plads, for en værdi i stedet for.
2/14
0
3
1
2
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde den vise det første bogstav i listen.
Det første bogstav er “A”.
Men…
Når man trykker på knappen “A”, viser BBC micro:bit bogstavet “B” i stedet for.
Se på koden, og gæt hvorfor.
3/14
Svar
Lister er nul-indekseret. Det vil sige, at de starter ved “0”, ikke ved “1”.
Derfor burde der stå “hent værdi ved 0”, for at hente det første bogstav i listen.
4/14
5/14
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde den vise det sidste bogstav i listen.
Det sidste bogstav er “D”.
Men…
Den viser ingenting!
Se på koden, og gæt hvorfor.
6/14
Svar
Den viser ikke noget, fordi den bliver bedt om at hente bogstavet ved indeks 4. Men der er ikke noget indeks 4!
Husk, at lister er nul-indekseret, så de starter ved “0”, ikke ved “1”.
Bogstaverne i listen har derfor 0, 1, 2, 3 som indeks.
For at vise det sidste bogstav i listen, burde der derfor stå “hent værdi ved 3”.
7/14
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde den vise et tilfældigt bogstav fra listen.
Men…
Nogle gange viser den et bogstav, nogle gange ikke. Den viser aldrig bogstavet “A”.
Se på koden, og gæt hvorfor.
Svar
Husk, at lister er nul-indekseret, så de starter ved “0”, ikke ved “1”.
Bogstaverne i listen har 0, 1, 2, 3 som indeks.
Derfor burde variablen “indeks” vælges tilfældigt fra 0 til 3 i stedet for 1 til 4 for at kunne vise alle bogstaverne.
8/14
9/14
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde den vise et tilfældigt navneord efterfulgt af et tilfældigt udsagnsord.
Men…
Nogle gange viser den ikke et udsagnsord!
Se på koden, og gæt hvorfor.
10/14
Svar
Der er kun 3 ord på listen med udsagnsord. De 3 ord har indeks
0, 1 og 2.
Derfor burde der stå i koden, at BBC micro:bit skal vælge et tilfældigt indeks fra 0 til 2 i stedet for 0 til 3, når der skal vises et udsagnsord.
11/14
Der er knas i koden
Hvilken knap eller knapper skal man trykke på for at vise det sidste bogstav i listen?
Se på de tre koder, og tryk på den, som du tror er den rigtige.
Svar
Man skal trykke på knappen “A” for at hente værdi ved “listensLængde - 1”.
En listes længde svarer altid til antallet af ting i listen. Så en liste med bogstaverne A, B, C og D har derfor en længde på 4.
Men det første indeks i en liste er altid 0. Derfor har det sidste bogstav eller sidste værdi i en liste altid et indeks, der er 1 mindre en listens længde.
.
12/14
(Pst! “Matrix” er bare et meget nørdet ord for liste.)
Der er knas i koden
Når man trykker på knappen “A”, burde BBC micro:bit vise det sidste bogstav i en liste, som man ikke kender længden på.
Men…
Ingen hjælp at finde her.
Hvad tror du, problemet er?
Se på koden, og gæt hvorfor.
Svar
Der mangler et “-1” for at finde nummeret på det sidste indeks i listen.
En listes længde svarer altid til antallet af ting i listen.
Men det første indeks i en liste er altid 0.
Derfor har den sidste værdi i en liste altid et indeks, der er 1 mindre en listens længde.
13/14
Tillykke!
Du listede dig hurtigt igennem de her opgaver! Godt gået!
Du har nu styr på, at lister er nul-indekseret, og at alle ting i en liste har hver deres indeks.
Hvis du vil prøve kræfter med flere lister, så prøv kategorien “Lister og løkker”.
Du kan også prøve at finde andre slags fejl i de andre kategorier, hvor der også er Knas i Koden!
14/14
2/13
Svar
Længden på køretiden er indtastet i sekunder i stedet for millisekunder.
Køretiden er den tid, der går, fra BBC micro:bit tændes. Og køretiden måles i “ms”, som står for millisekunder.
Der skal 1000 millisekunder til 1 sekund.
Derfor skal der stå “5000”, for at BBC micro:bit viser ikonet “✓” 5 sekunder efter, den er blevet tændt.
Der er knas i koden
Hvis BBC micro:bit har været tændt i mere end 5 sekunder, burde den vise ikonet “✓”.
Men…
Den viser ikonet “✓” næsten med det samme!
Se på koden, og gæt hvorfor.
3/13
Der er knas i koden
Hvis BBC micro:bit har været tændt i mere end 3,5 sekunder, så burde den vise ikonet “✓”.
Men…
Den viser ikonet “✓” med det samme!
Se på koden, og gæt hvorfor.
4/13
Svar
Der er brugt det forkerte større-eller-mindre-end-tegn i koden.
Der står “køretid (ms) < 3500”. Altså at ikonet “✓” skal vises, hvis BBC micro:bit har været tændt i mindre end 3,5 sekunder.
Der burde have stået, at den skal være tændt i mere end 3,5 sekunder. Altså “køretid (ms) > 3500”.
Der er knas i koden
Hvis BBC micro:bit har været tændt i mere end 40 sekunder, så burde den vise ikonet “✓”.
Men…
Ikonet “✓” vises allerede efter 4 sekunder!
Se på koden, og gæt hvorfor.
5/13
Svar
Variablen “sekund” er sat til det forkerte antal millisekunder.
Der skal 1000 millisekunder til
1 sekund.
Derfor burde variablen “sekund” være sat til 1000.
6/13
Der er knas i koden
Hvis BBC micro:bit har været tændt i mere end 15 minutter, burde den vise ikonet “✓”.
Men…
Ikonet “✓” vises aldrig!
Se på koden, og gæt hvorfor.
7/13
Svar
Der brugt det forkerte større-eller-mindre-end-tegn i koden.
Der står “køretid < grænse”. Altså at køretiden skal være mindre end grænsen.
Der burde stå, at køretiden skal være større end grænsen. Altså
“køretid > grænse”.
8/13
Der er knas i koden
Hvis BBC micro:bit har været tændt i mere end 2 timer, burde den vise ikonet “✓”.
Men…
Ikonet “✓” vises efter lidt under en time!
Se på koden, og gæt hvorfor.
9/13
10/13
Svar
Variablen “time” er sat til det forkerte.
Der skal 60 minutter til 1 time.
Derfor burde der stå “sæt time til 60”.
Der er knas i koden
Hvis BBC micro:bit har været tændt i mere end 2 dage, så burde BBC micro:bit vise ikonet “✓”.
Men…
Der mangler noget i koden!
Se på koden, og gæt hvorfor.
11/13
12/13
Svar
Der mangler en variabel, der fortæller BBC micro:bit, hvor lang en dag er, og at variablen “grænse” skal være sat til 2 dage.
1 sekund = 1000 millisekunder. 1 minut = 60 sekunder. 1 time = 60 minutter. 1 dag = 24 timer.
13/13
Tillykke!
Du klarede den! Og lige til tiden!
Du har nu styr på, hvordan man omregner til millisekunder og bruger det i en tidsmåler!
Hvis du vil udfordres i flere måder at bruge tidsmålere på, så tjek kategorien “Tidsmålere 2.0: Stopure”.
Du kan også prøve kræfter af med at finde andre slags fejl i de andre kategorier, hvor der også er Knas i Koden!
Ikke falsk og ikke sand
Har du gennemført kategorien
“Sand og/eller falsk”? Det er bedst at have gjort det, inden du går i gang med den her kategori.
Der er knas i koden
Forestil dig, at BBC micro:bit kan trække vejret og har et hjerte, der kan slå.
Hvis BBC micro:bit trækker vejret, burde dens hjerte også slå. Sagt på “kodesprog”:
Hvis variablen “trækkerVejret” er sand, så burde BBC micro:bit vise et bankende hjerte.
Men…
Den gør det omvendte! Hjertet banker, når variablen “trækkerVejret” ikke er sand!
Se på koden, og gæt hvorfor.
OK
Svar
Der står “ikke” foran “trækkerVejret”.
Det giver det omvendte resultat:
Ikke sand = falsk.Ikke falsk = sand.
2/15
3/15
Der er knas i koden
Forestil dig, at der er et monster efter BBC micro:bit.
Hvis BBC micro:bit bliver fanget, burde dens hjerte stoppe med at slå. Sagt på “kodesprog”:
Hvis variablen “fanget” er sand, burde BBC micro:bit ikke vise et bankende hjerte.
Men…
Den gør det omvendte! Hjertet banker først, når den er blevet fanget!
Se på koden, og gæt hvorfor.
4/15
Svar
Hjertet bør slå, når BBC micro:bit ikke er blevet fanget.
Derfor burde der stå et “ikke” foran “fanget”.
5/15
Der er knas i koden
Så længe BBC micro:bit trækker vejret og ikke bliver fanget af monsteret, burde hjertet banke.
Men…
Hjertet banker kun, hvis BBC micro:bit bliver fanget, mens den trækker vejret.
Se på koden, og gæt hvorfor.
6/15
Svar
Der manglede et “ikke” foran variablen “fanget” i koden.
7/15
Hvilke udsagn betyder det samme?
Træk hvert udsagn hen til den rigtige boks.
"Hjertet slår er sandt"
"Hjertet slår er falsk"
Der er knas i koden
Forestil dig, at en robot har fået et mekanisk hjerte.
Knappen “A” på BBC micro:bit virker som en kontakt til hjertet.
Knappen burde tænde hjertet, hvis det er slukket, eller slukke hjertet, hvis det er tændt.
Men…
Hjertet starter ikke, uanset hvor mange gange man trykker på knappen “A”!
Se på koden, og gæt hvorfor.
8/15
9/15
Svar
Der er et “ikke” for meget i koden.
Når man sætter “ikke” foran noget, så “omvender” man det, så det kommer til at betyde det modsatte.
Hvis man omvender noget to gange, kommer det til at betyde det samme, som hvis der slet ikke stod “ikke”!
Der burde derfor bare stå “ikke hjertetSlår”, så variablen bliver sat til det omvendte af, hvad den er.
På den måde kan man tænde for hjertet, når det er slukket, og slukke for hjertet, når det er tændt..
Der er knas i koden
Forestil dig, at du har gemt dig.
Så længe du ikke bliver set eller hørt af nogen, burde dit hjerte være i sikkerhed og banke videre.
Men…
Der sker det omvendte! Hjertet banker kun, hvis du faktisk er blevet set eller hørt!
Se på koden, og gæt hvorfor.
10/15
11/15
Svar
Der mangler et “ikke” i koden.
I koden står der, at hvis du er blevet set, eller du er blevet hørt, så banker hjertet.
Der burde ske det omvendte. Derfor burde der stå “ikke” foran det samlede udsagn for at omvende det:
“Hvis ikke du er blevet set eller du er blevet hørt, så banker hjertet.”
Læg mærke til, at “ikke” er sat ind i en sekskant, som omkranser hele udsagnet.
På den måde gælder “ikke” både for “duErBlevetSet” og “duErBlevetHørt”.
Svar
Der mangler et “og” i koden for at BBC micro:bit ved, at det er begge knapper, der skal holdes nede.
Med et “og” kommer der til at stå, at hvis ikke der trykkes på knappen “A” og “B” samtidigt, så banker hjertet.
Men der er også en anden løsning, som måske er lidt sværere at forstå.
Med et “eller” og et ekstra “ikke” kommer der til at stå, at hvis knappen “A” ikke holdes nede eller knappen “B” ikke holdes nede, så banker hjertet.
Altså hvis én af knapperne ikke bliver holdt nede, så skal hjertet fortsætte med at banke. For hvis én af dem ikke bliver holdt nede betyder det jo, at det ikke er begge knapper, der bliver holdt nede!
Hvor man sætter sit “ikke” har altså stor betydning.
12/15
Der er knas i koden
Forestil dig, at nogen har bygget en farlig kamp-robot og tilføjet en nødstops-funktion til den, hvis den nu skulle gå amok.
Robottens hjerte burde blive ved med at slå, så længe man ikke bruger nødstops-funktionen ved at holde begge knapper på BBC micro:bit nede.
Men…
Man behøver kun at holde én knap nede, før hjertet stopper med at slå!
Se på koden, og gæt hvorfor.
Svar
Der mangler et “og” i koden for at BBC micro:bit ved, at det er begge knapper, der skal holdes nede.
Med et “og” kommer der til at stå, at hvis ikke der trykkes på knappen “A” og “B” samtidigt, så banker hjertet.
Men der er også en anden løsning, som måske er lidt sværere at forstå.
Med et “eller” og et ekstra “ikke” kommer der til at stå, at hvis knappen “A” ikke holdes nede eller knappen “B” ikke holdes nede, så banker hjertet.
Altså hvis én af knapperne ikke bliver holdt nede, så skal hjertet fortsætte med at banke. For hvis én af dem ikke bliver holdt nede betyder det jo, at det ikke er begge knapper, der bliver holdt nede!
Hvor man sætter sit “ikke” har altså stor betydning.
13/15
“Hvis du ikke er blevet set eller ikke blevet hørt, så…”
14/15
“Hvis ikke du er blevet set eller hørt, så…”
“Hvis ikke du er blevet set og hørt, så…”
“Hvis du ikke er blevet set og ikke blevet hørt, så…”
Tillykke!
Du er ikke dårlig! Forstod du den? Du er det omvendte af dårlig. Du er god!
Du har nu bevist, hvor sej du er til logik! Du har lært, at “ikke” kan bruges til at omvende et udsagn.
Er du frisk på flere udfordringer? Så kan du prøve at finde flere fejl i de andre kategorier, hvor der er også er Knas i Koden!
15/15
Løkker 2.0: For hvert
Med “for hvert element”-løkker er det meget nemmere! Den her kode gør det samme som den ovenover.
Hvis man gerne vil gøre noget med alle ting i en liste, så kan det gå hen at blive besværligt, hvis der er mange ting i listen.
Har du gennemført kategorierne “Lister” og “Løkker 1.0”? Det er bedst at have gjort det, inden du går i gang med den her kategori.
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde den vise alle tal i listen, som er større end 2.
Men…
Når man trykker på knappen “A”, viser den ingenting!
Se på koden, og gæt hvorfor.
Der er knas i koden
Der er brugt det forkerte større-eller-mindre-end-tegn i koden.
Der står “værdi < 2”. Altså at variablen “værdi” skal være mindre end 2 for at blive vist. Men der er ikke nogen værdier, der er mindre end 2. Derfor er der ikke nogen, der bliver vist.
Der burde have stået, at variablen “værdi” skal være større end 2. Altså “værdi > 2”. Så bliver alle værdier, der er større end 2, vist.
Svar
Der er brugt det forkerte større-eller-mindre-end-tegn i koden.
Der står “værdi < 2”. Altså at variablen “værdi” skal være mindre end 2 for at blive vist. Men der er ikke nogen værdier, der er mindre end 2. Derfor er der ikke nogen, der bliver vist.
Der burde have stået, at variablen “værdi” skal være større end 2. Altså “værdi > 2”. Så bliver alle værdier, der er større end 2, vist.
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde den vise alle lige tal i listen.
BBC micro:bit burde kunne genkende et lige tal på, at det altid kan divideres med 2, uden der er noget “tilovers”. Altså at resten af tallet divideret med 2 er 0.
Men…
Når man trykker på knappen “A”, viser den tallene 5 og 3!
Se på koden, og gæt hvorfor.
Svar
Der er brugt et tegn i koden, der betyder “er ikke lig med” i stedet for et tegn, der betyder “er lig med”. Altså “≠” i stedet for “=”.
BBC micro:bit kan genkende et lige tal på, at det altid kan divideres med 2, uden der er noget “tilovers”. Altså at resten af tallet divideret med 2 er 0.
Man kunne også have sagt “er lig med 0”. Altså “= 0”.
Derfor burde der stå “resten af værdi ÷ 2 = 0” for at vise de lige tal.
Der er knas i den ene kode
Når man trykker knappen “A” på BBC micro:bit, skal den vise summen af alle tallene i listen. “Summen” betyder resultatet af alle tallene lagt sammen. BBC micro:bit skal derfor vise tallet “18”. Hvilken kode får den til at gøre det?
Svar
Koden til højre lægger alle tallene sammen og viser resultatet “18”.
Koden til venstre lægger først “2” sammen med “5” og viser resultatet “7”, så lægger den “7” sammen med “3” og viser resultatet “10”, inden den lægger “10” sammen med “8” og viser resultatet “18” til sidst.
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde den lægge alle tal i listen, som er større end 3, sammen. Derefter burde den vise resultatet.
Men…
Når man trykker på knappen “A”, viser den “0”!
Se på koden, og gæt hvorfor.
Svar
Når der trykkes på knappen “A”, bliver variablen “lagtSammen” sat til “0”. Regnestykket “lagtSammen + lagtSammen” giver derfor også 0.
Der burde stå “lagtSammen + værdi” i regnestykket i stedet for.
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde den vise gennemsnittet af tallene i listen. Gennemsnittet findes ved at lægge alle tallene sammen og dividere resultatet med antallet af tal. “Antallet af tal” hedder “længde på matrix liste” i koden. BBC micro:bit burde derfor vise tallet “4,5”.
Men…
Når man trykker på knappen “A”, viser den et forkert tal!
Se på koden, og gæt hvorfor.
Svar
Der står minus, altså “-”, i stedet for dividere, altså “÷”, i koden.
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde den vise det største tal i listen.
Men…
Når man trykker på knappen “A”, viser den “0”!
Se på koden, og gæt hvorfor.
Svar
BBC micro:bit er sat til at vise variablen “værdi” i stedet for variablen “størsteTal”.
Når der trykkes på knappen “A”, bliver variablen “størsteTal” sat til “0”. Bagefter kører den grønne løkke alle tallene fra listen igennem en ad gangen.
Hvis værdien, altså tallet fra listen, er større end “størsteTal”, så bliver “størsteTal” ændret til at være det større tal fra listen.
Koden starter med at vurdere, om værdien “2” er større end “størsteTal”, som er sat til “0”. Det er det. Så bliver “størsteTal” sat til “2”.
Så vurderer den, om 5 er større end 2. Det er det. Så bliver “størsteTal” sat til “5”. Så når den til 3. Men 3 er ikke større end 5. Så “størsteTal” er stadig 5. Til sidst vurderer den, om 8 er større end 5. Det er det. Så bliver “størsteTal” sat til “8”.
Når løkken har kørt hele listen af tal igennem, viser den “størsteTal” til sidst.
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde den vise det mindste tal i listen.
Men…
Når man trykker på knappen “A”, viser den “1.000.000”!
Se på koden, og gæt hvorfor.
Svar
Der er en stavefejl i koden.
Der står, at løkken skal gå igennem alle værdierne i “list”.
Men der er ikke nogen “list”. Listen med tal hedder “liste”.
Derfor kan BBC micro:bit ikke finde nogen tal, der er mindre end 1000000.
Tillykke!
For hver udfordring du klarer, bliver du skrappere til kode!
Lister er noget af det smarteste at have styr på i kode, fordi man tit jonglerer med vildt mange tal og andre værdier. Og du er godt på vej!
Er du frisk på flere udfordringer? Så kan du prøve at finde flere fejl i de andre kategorier, hvor der er også er Knas i Koden!
1/17
Tidsmålere 2.0: Stopure
En tidsmåler hedder en “timer” på engelsk. Det udtales “taj-mer”. Det er lidt kortere at bruge i en kode.
Kodeblokken “køretid (ms)” kan måle, hvor lang tid der er gået, siden man tændte sin BBC micro:bit.
Men BBC micro:bit har ikke indbygget en timer, der kan måle fra andre tidspunkter. Derfor må man være lidt kreativ.
Man kan lave sin egen timer ved at sætte en variabel til den køretid, BBC micro:bit er nået op på.
På den måde “gemmer” man køretiden, når man sætter sin timer.
Hvis man så senere trækker den gemte køretid fra den køretid, BBC micro:bit er nået op på, så får man, hvor lang tid der er gået, siden man startede timeren.
Har du gennemført kategorierne “Tidsmålere 1.0” og“Sand og/eller falsk”? Det er bedst at have gjort det, inden du går i gang med den her kategori.
Så hvis man gerne vil have, at der for eksempel skal ske noget efter 5 sekunder, så skriver man:
2/17
3/17
4/17
Der er knas i koden
BBC micro:bit burde vise ikonet “✓” blinke hvert sekund:
Men…
Den blinker hurtigere end det:
Se på koden, og gæt hvorfor.
Svar
Der er brugt det forkerte større-eller-mindre-end-tegn i koden.
Regnestykket ”køretid (ms) - tidenDaViStartedeTimeren” giver den tid, der er gået, siden man startede timeren.
Så hvis man skal se, om der er gået nok tid siden da, så er resultatet nødt til at være større end grænsen på 1 sekund.
5/17
6/17
Der er knas i koden
BBC micro:bit burde vise ikonet “✓” blinke hvert sekund.
Når man trykker på knapperne “A” eller “B”, burde man kunne ændre, hvor hurtigt den blinker.
Men…
BBC micro:bit viser ikonet “✓” hvert sekund, som den skal. Men når man trykker på knapperne, ændrer hastigheden på blinkene sig ikke!
Se på koden, og gæt hvorfor.
7/17
Svar
Der bliver ændret en masse på variablen “grænse”, når man trykker på knapperne, men “grænse” bliver ikke brugt til noget.
Den burde være sat ind i logik-kodeblokken, så der står “hvis køretid (ms) - tidenDaTimerBlevSat > grænse så”.
8/17
Der er knas i den ene kode
BBC micro:bit burde vise ikonet “✓” med 5 sekunders mellemrum.
Hvilken kode får den til at gøre det?
Svar
Koden til højre gør det rigtige. Det gør den, fordi regnestykket “køretid (ms) - tidenDaViStartedeTimeren” giver den tid, der er gået, siden man startede timeren.
Der er knas i koden
Når man trykker på knappen “A” på BBC micro:bit, burde den vise ikonet “✓”.
Men…
Der sker ingenting, når man trykker på knappen “A”!
Se på koden, og gæt hvorfor.
9/17
10/17
Svar
Variablen “knapKlikket” skal sættes til “sand” i stedet for “falsk”, når man trykker på knappen “A”.
Der er knas i koden
Når man trykker knappen “A” på BBC micro:bit, burde den vise ikonet “✓” efter 5 sekunder.
Men…
Der sker ingenting, når man trykker på knappen “A”!
Se på koden, og gæt hvorfor.
11/17
12/17
Svar
Der er byttet om på variablen “tidenDaViStartedeVoresTimer” og “køretid (ms)” i regnestykket i logik-kodeblokken.
Det er regnestykket “køretid (ms) - tidenDaViStartedeTimeren”, der giver den tid, der er gået, siden man startede timeren.
Derfor burde der stå “køretid (ms) - tidenDaViStartedeTimeren” i logik-kodeblokken.
13/17
Der er knas i koden
Når man trykker knappen “A” på BBC micro:bit, burde den vise ikonet “✓” en enkelt gang efter 5 sekunder og så forsvinde hurtigt igen.
Men…
Når man trykker på knappen “A”, begynder ikonet “✓” at blinke efter 5 sekunder – og så bliver det ved! Der mangler noget til at stoppe koden.
Se på koden, og gæt hvorfor.
14/17
Svar
Ikonet “✓” bliver kun vist én gang, hvis variablen “timerErSat” sættes til “falsk”, efter ikonet “✓” er blevet vist.
Hvis man vil have ikonet til at blive vist igen senere, så sætter man bare timeren igen ved at trykke på “A”.
Der er knas i koden
Når timeren er sat, burde man kunne stoppe den igen, hvis man har fortrudt.
Men…
Timeren kan ikke stoppes!
Se på koden, og brughttps://makecode.microbit.org/#editor eller papir og blyant til at komme med et bud på, hvad der skal tilføjes til koden.
15/17
16/17
Svar
Her er én måde at gøre det på.Er den tæt på dit bud?
Tillykke!
Du klarede den! Og lige til tiden!
Du har nu styr på, hvordan man sætter en timer og et par måder, man kan bruge en timer på.
Du kan også prøve at finde andre slags fejl i de andre kategorier, hvor der også er Knas i Koden!
17/17