Logikk med micro:bit

Bilde av Jens Lelie fra Unsplash

Bilde av Jens Lelie fra Unsplash

Grunnleggeren av Microsoft, Bill Gates sa en gang i et intervjue at programmering egentlig er ganske enkelt. Det aller meste av programmer er basert på "hvis" uttrykk. Hvis noe er sant eller usant, så utføres en handling. Når man går i dybden på all programmering så er det dette som er magien i alle program som lages enten det er kompliserte eller enkle programmer.

Hvis / ellers

Avgrening

Av og til vil vi at programmet vårt skal gjøre en av to handlinger. Enten en handling, eller en annen handling. Den enkleste måten å gjøre dette i MakeCode er med en "hvis / ellers" blokk. Denne sjekker om noe er sant, og utføre det som er inni "hvis" delen av blokken på samme måte som en vanlig "hvis" blokk. Om logikken i "hvis" feltet ikke er sant vil "ellers" delen av blokken utføres.

hvis, ellers blokk

En "hvis / ellers" blokk

Det som er inni en hvis blokk vil bare utføres om det logiske resultatet av det den sjekker er sant.

Et eksempel om bruk av logisk sjekk er å sjekke om en knapp er trykket ned. Om vi har en "hvis" blokk som sjekker om en knapp er trykket ned og det sant at knappen er trykket vil det logiske resultatet være sant. Om det ikke stemmer at knappen er trykket vil det logiske resultatet være usant.

Er ... bevegelse

Innebygde sensor funksjoner

Når man starter å ta i bruk sensorer på micro:bit starter man på den første stegene mot å lage virkelig spennende og artige prosjekter.

Vi skal nå lage et program hvor vi sjekker om micro:bit ristes. Om det er sant at micro:bit ristes viser vi et surt ansikt på skjermen. Om det ikke er sant at micro:bit ristes viser vi et glad ansikt på skjermen.

For å sjekk om micro:bit ristes vil bruke en av den innebygde "er ... bevegelse" funksjonene i MakeCode.

blokk program

Ferdig program

Om du åpner rullgardin listen på "er ... bevegelse" blokken kan du eksperimentere med mange andre metodene til den innebygde "er ... bevegelse" funksjoner i MakeCode.

skjermbilde som viser valg alternativene til er bevegelse funksjonen

Valg alternativene til "er ... ristet" blokken

Alle disse metodene gir ett logisk resultat. "er <ristes> bevegelse" sjekker om micro bit blir ristet, om det stemmer er det logiske resultatet sant. Om den ikke ristes er det logiske resultatet usant.

Inversering

Sant blir usant, og usant blir sant

En logisk funksjon som er veldig mye brukt er det å inversere et logisk resultat. Sagt på en annen måte så gjør vi noe som er sant til usant, eller noe som er usant til sant.

For å invertere et logisk resultat i MakeCode bruker vi "ikke" blokken. Denne er en del av logikk kode blokkene. Vi bruker denne ved å putte andre logiske blokker inni "ikke" blokken.

skjermbilde fra makecode

Inversering av "hvis / ellers" blokken.

Ved å putte "er ristes bevegelse" blokken inni "ikke" blokken vil skjermen vise et surt fjes om micro:bit ikke ristes, og et glad fjes om den ristes. Ved å gjøre dette har vi altså snudd på hodet hvordan "hvis / ellers" blokken vår fungerer.

Hvis det logiske resultatet fra blokken "er ristes bevegelse" blokken er usann, vil "ikke" blokken gjøre resultatet sant.

Jeg har forstått hvordan invertering med "ikke" blokken fungerer.

Og

To logiske resultat må være sann

Av og til ønsker vi at to logiske resultat skal være sant for at noe skal skje. For eksempel skal vekkeklokken vår kun ringe når det er hverdag og klokken er 0700. Et annet eksempel på bruk av en logisk "og" er at vi ønsket at både knapp A og B skal være trykt inn for at noe skal skje.

skjermbilde fra fra makecode hvor og blokken brukes

Både Knapp A og B må trykkes for at den det logiske resultatet skal bli sant.

For at "og" blokken skal bli sann, må det være sant at knapp A trykkes, og det må være sant at knapp B trykkes. Når og blokken er sann blir "hvis" delen av "hvis / ellers" blokken bli sann og vi vil se et utropstegn på micro:bit skjermen.

Jeg skjønte hvordan en logisk "og" fungerer.

Eller

Ev av de to logiske resultatene må være sann

Om du har to logiske resultat som skal kunne brukes til å gjøre noe bruker vi en "eller" blokk. Om en av de to logiske resultatene er sann, vil "eller" blokken bli sann.

skjermbilde fra fra makecode hvor eller blokken brukes

Enten Knapp A eller B må trykkes for at den det logiske resultatet skal bli sant.

Det som er spesielt med en eller blokk er at den vil også bli sann om begge de logiske resultatene er sanne. I eksempelet over kan man enten trykke på knapp A, eller man kan trykke på Knapp B. Man kan også trykke på begge knappene samtidig.

Jeg skjønte hvordan en logisk "eller" fungerer.