Loopa igenom arrayer och hitta tal med bestämd delbarhet
För att kunna leta igenom en array används oftast en for-loop
En for-loop har följande struktur för villkoret.
for ( från när; till när; vad ska ändras) { //händelse som utförs så länge villkoret är sant }
Om du behöver uppdatera dina kunskaper om for-loopar kan du titta på denna sida
För att hitta om ett tal är delbart med ett annat tal används i programmering en operator som heter modulo. Modulo betecknas med det som ni känner igen som procenttecken % och anger rest av en beräkning. Modulo används alltså när man vill veta resten av en division inte kvoten.
7 % 3 = 1. dvs det som blir kvar när 3 har tagits bort ur sju så många gånger det går. Ett exempel till 15 % 4 = 3
För att ta reda på vilka tal mellan 0 och 100 som är jämnt delbara med 3 kan man skriva följande kod:
function setup() { createCanvas(400, 400); for( let i = 0; i < 100; i++){ if( i % 3 ==0){ console.log(i); } } }
I for-loopen skapas en variabel som heter i. Att namnge variabeln i är vanligt i for-loopar. Andra parametern anger hur länge loopen ska köras. Här är det så länge i är mindre än 100. Den tredje parametern anger att i ska ökas med ett varje gång loopen körs.
Villkoret if säger sen att om i delat på tre ger en rest på 0 då ska i skrivas ut i konsolen.
Lägg märke till att det används två lika med-tecken när man kontrollerar om värden är lika stora. Ett = används bara när man tilldelar ett värde.
EX:
let i = 0 ger värdet 0 till variabeln i
i == 0 är en fråga om i har värdet 0 och ger ett svar som är sant(true) eller falskt(false). Man kan också använda tre === och då frågar man om värdet och datatypen är samma. Datatyper kan vara strängar(text), nummer eller booleska värden (true eller false).
Om man vill ta reda på vilka tal i en array som är jämna används också modulo.
Då är villkoret att n % 2 == 0, där n står för alla reella tal.
Vi skapar ett program som söker igenom en array och anger vilka av talen som är jämna. För att söka igenom alla tal i en array används i < arr.length; som villkor två i for-loopen. Det står alltså att for-loopen ska köras så länge i är mindre än längden på arrayen.
För att se på canvasen vilken array vi söker igenom så skrivs den ut som text. Texten placeras på x = 90 och y = en fjärdedel av canvasens höjd. Om i % 2 == 0 ska färgen fill() vara grön, annars ska den vara röd. Därefter ritas cirklar ut med diametern 12 på x = i * 20 +100 och y= halva höjden på canvasen.
Kan du ändra i koden så att alla tal i arrayen som är ojämna markeras med grön cirkel? Om villkoret för jämna tal är n % 2 == 0, vad är då villkoret för de ojämna?