Lua-sheriffen, del 6- Aritmetik och logik

Kan det verkligen vara sant? Japp, du gissade rätt! Det är dags igen!

Lua-sheriffen

Förra gången gick vi igenom hur man kan bygga upp objekt i Lua, den här gången ska vi istället titta på aritmetik, eller hur man gör matematiska operationer, i Lua!

Till att börja med finns så klart de vanliga räknesätten (testa på denna sida):

Som du ser på utskriften blir ”d” ett flyttal. Om man vill ha ett heltal istället kan man istället skriva ”d = math.floor(c / 2)”. Floor returnerar det närmaste heltalet, och avrundar nedåt. Detta kallas trunkering.

Kan också passa på att nämna modulo och exponent, vilket är bra att ha i vissa beräkningssammanhang:

Fler matematiska operationer, särskilt inbyggda i biblioteket math, kommer vi titta på i senare inlägg! 🙂

Logiska operander

Vill man kontrollera huruvida två tal är lika stora eller om det ena är större än det andra kan man använda följande relationsuttryck där vi återanvänt den förra koden:

Om du testkör koden skrivs ”false true true false” ut. Observera att ”tostring()” används för att returvärdena inte automatiskt konverteras till strängar när de ska skrivas ut.

I Lua används ”~=” för ”ej lika med”. Annars är det vanligt att man använder ”!=”, men så är det alltså inte här. I övrigt är syntaxen ungefär den samma som i Java eller C.

När man ”beräknar” en relation, exempelvis ”a < b”, returneras en boolean som är antingen true eller false. I Lua betraktas ”nil” och ”false” som falska, och all övrig data som sann.

Nu ska  vi titta på de logiska uttrycken ”and”, ”or” och ”not” och hur de fungerar! Kom ihåg vad jag nämnde tidigare om vilken data som räknas som true respektive false:

Returvärdet för respektive uttryck kan man lätt förstå om man först förstår hur de respektive uttrycken fungerar. ”and” kräver att båda uttrycken är sanna för att returnera sant, så på den första raden evalueras först ”true”. Det är varken nil eller false, så därför är uttrycket än så länge sant. Därefter evalueras 5″, som också är något annat än nil/false. Så vad returneras? Det sista som evaluerades, nämligen 5.

I det andra fallet returneras nil, vilket alltså motsvarar false. Detta då båda uttrycken i ett and-uttryck måste vara sanna. Hade det stått ”nil and true” hade beräkningen gått lite snabbare, för då hade bara nil evaluerats och språket kan redan där konstatera att uttrycket inte är sant.

”not” vänder det efterföljande uttryckets värde. Så ”not nil” är samma sak som ”true”.

Det sista av de fyra uttrycken är ”false or not false”, vilket du kanske förstår är samma sak som ”false or true”. Or-uttryck evalueras på samma sätt som and, från vänster till höger. Om det vänstra uttrycket är skilt från nil/false returneras det, annars returneras det högra uttrycket.

Det sista i exempelkoden är ett exempel på vad or kan användas till. Man sätter värdet på x till x, förutsatt att variabeln har ett värde. Eftersom vi inte satt ett värde på x så returneras istället den högra delen av uttrycket, och det hela evalueras som ”x = v”.

Hoppas inte allt detta blev för rörigt!

Så vad har vi lärt oss idag?

  • Hur man gör enkla matematiska beräkningar i Lua
  • Hur man använder modulo och exponent
  • Hur man kan trunkera ett flyttal
  • Vilka värden i Lua som är sanna respektive falska
  • Hur man använder and, or och not i logiska uttryck

Allt har, som bekant, ett slut. Och så även detta inlägg! Nästa gång kommer vi att titta på inbyggda bibliotek och funktioner i dessa som kan vara av intresse. Ses då! 😀

Kommentera