Lykkjur

Í Scratch notuðum við lykkjur. Þær báru einfaldlega nöfn eins og "repeat 10 times" og þessháttar. Í p5js munum við nota while eða for lykkjur.

While-lykkjur

Skoðum hvað skilgreining lykkju eins og while(i < 5) gerir.

Það sem er sett inn í lykkuna er því keyrt 5 sinnum, þegar i er 0, 1, 2, 3 og 4. Þegar i er 5 þá hættir lykkjan að keyrast.

Óendanlegar lykkjur

Við viljum aldrei búa til óendanlegar lykkjur. Svo þegar við setjum fram skilyrði í lykkju, skulum við athuga að því verði einhverntíman náð.

Athugaðu hvað gerist ef þú tekur burt skipunina i = i+1;. Þá breytist gildið á i aldrei og lykkjunni lýkur aldrei. Þá ættirðu að fá villu því skriftan nær aldrei að klára neitt.

For-lykkjur

Skoðum hvað skilgreining lykkju eins og for(var i = 0; i < 5; i = i+1) gerir:

Það sem er sett inn í lykkuna er því keyrt 5 sinnum, þegar i er 0, 1, 2, 3 og 4. Þegar i er 5 þá hættir lykkjan að keyrast.

Svo þessi skrifta hér að neðan ætti að gera nákvæmlega það sama og skriftan að ofan.

For vs. while

Hvernær viljum við nota for og hvenær while?

Það fer nokkuð eftir smekk og viðfangsefni. Við getum notað hvora sem er í öllum tilfellum til þess að fá sömu niðurstöðuna.

Prófaðu til dæmis að setja skipunina text("Lykkja búin", width/2, 20+i*10); á eftir lykkjunni í skriftunum hér að ofan. Þetta ætti að virka vel fyrir while-lykkjuna en virkar ekki fyrir for-lykkjuna. Það er vegna þess að breytan i er bara til inni í for lykkjunni.

Í dæmum hér mun ég almennt nota for-lykkjur.

For-lykkja teiknar hringi

Prófaðu að breyta kóðanum þannig að 10 hringir séu teiknaðir.

Prófaðu að færa fill skipunina inn í for lykkjuna. Hvað breytist? Reyndu að sjá það fyrir þér áður en þú keyrir forritið.

For lykkja teiknar línur

Breytan stepSize er skilgreind í fyrstu línu. Hún segir til um hversu langt er á milli tveggja lína.

for lykkjan teiknar línu frá punktinum 0,y sem er við vinstri rönd yfir í punktinn width, y sem er á hægri rönd. y hefur gildir 20 í upphafi, en eykst svo um stepSize í hvert skipti sem farið er í gegn um lykkjuna.

Lykkjan stoppar þegar y er orðið jafnstórt eða stærra en height sem er hæðin á skjánum.

Prófið að breyta gildinu á stepSize og sjá hvaða áhrif það hefur á teikninguna!

Slembilitur valinn með random

Rétthyrningurinn er teiknaður í x = 0, x = 10, x = 20, o.s.fr.v. í hvert sinn sem lykkjan er keyrð er gildið á x aukið um 10. Liturinn á rétthyrningnum er valinn í fill. Við veljum slembilit á bilinu frá 50 upp í 150. 0 er svart og 255 er hvítt.

Faldaðar lykkjur

Við getum sett lykkju inn í lykkju, þá köllum við hana í heild faldaða lykkju (e. nested loop).

Þetta gerum við t.d. þegar við viljum ýtra yfir tvær breytur í einu:

Hér fyrir neðan tekur x gildi á 20 punkta fresti frá 0 og upp í width, sem er breidd gluggans. y tekur gildi á bilinu frá 0 upp í height, sem að er hæð gluggans.

Önnur dæmi