zondag 22 juli 2012

JavaScript voor mensen, hobbits en elven - Deel 16: Lussen met lijstjes


Op weg naar Mordor

“Lussen gebruiken met arrays is de basis voor gegevensverwerking.”
                                                                                                - Sam Rain
Hobbits zijn wezens die fysiek het afleggen tegen Orcs. Wie niet sterk is moet slim zijn – en dit gaat ook op voor mensen, hobbits en elven! Met lussen kan een hobbit vele Orcs op afstand houden en de moedige mens zijn onneembaar fort verdedigen met de hulp van JavaScripts elite troepen: arrays.
Orcs hebben een hekel aan gezonde dingen en fruit is iets dat Hobbits tot grote afstand kunnen werpen. Om te kunnen werpen, hebben we de volgende elvenmagie nodig:
Function werp (fruit){
var doelwit = “Orc werd geraakt door” + fruit;
}
Naast het kunnen werpen hebben we ook nog soorten fruit nodig:
var fruitmand = new Array (“citroen”, “appel”, “peer”, “meloen”);
/*een genummerde lijst*/
Een hobbit zou ieder afzonderlijk stuk fruit kunnen werpen, zoals op deze manier:
werp (fruitmand[0]); /*werpt een citroen*/
werp (fruitmand[1]); /* werpt een appel*/
Als de fruitmand nu vol zou zitten met 100 stuks fruit, zou het voor de griffelende Hobbit een levenswerk worden – wat nogal een tijdrovend proces is zonder de ring der ringen. Met een lus wordt het voor een groep Orcs al snel een nederlaag:
for (var gegooid=0; gegooid<fruitmand.length; gegooid++)
{
werp (fruitmand[gegooid]);
}
/* al het fruit in de fruitmand wordt gegooid naar Orcs */
Deze magie kan even overweldigend zijn, maar wees geen laffe trol – maar trek het Elvenzwaard en bekijk wat deze ‘for’ lus nu eigenlijk doet. De ‘for’-lus heeft 3 onderdelen die de magie tussen de accolades laat herhalen. Eerst maken we een ‘tijdelijke’ variabele aan met de naam ‘gegooid’ met de waarde 0. Dit is wat tovenaars noemen de initiële waarde. Vervolgens komt er de ‘conditie’ – iedere keer als alle magie de sluitende accolade bereikt, controleert JavaScript deze ‘conditie’ op zijn ‘Booleaanse’ waarde. Is deze ‘waar’, dan wordt de magie nogmaals uitgevoerd totdat deze ‘onwaar’ wordt. Fruitmand is een array en heeft daarom de ‘length’ eigenschap – het totaal aantal elementen in de lijst. Zolang we niet even vaak ‘gegooid’ hebben als het aantal ‘fruit’ in de ‘fruitmand’, kunnen we blijven werpen. Als dus ‘gegooid’ kleiner is dan het ‘aantal’ fruit in de fruitmand moet er geworpen worden. Arrays tellen vanaf nul in de ‘index’, maar de length eigenschap niet. Daarom begint ‘gegooid’ wel met nul en is dus altijd ‘1’ kleiner dan de ‘length’ van een array. Als laatst is er de ‘incrementatie’ – of ‘stap’; met de ++ operator verhogen we met elvenmagie de ‘waarde’ van gegooid met 1.
In feite gebeurd er precies hetzelfde als wanneer we het volledig zouden uitschrijven – alleen schrijven we het korter en efficiënter op. Met een ‘associatieve array’ wordt het nog gemakkelijker, zelfs bij het complexer maken:
var mand = {“licht” : “appel”, “zwaar” : “meloen”};
/* korte manier voor het aanmaken van een associatieve array als
mand [“licht”] = “appel”;
mand [“zwaar”] = “meloen”; */

De lus wordt nu:
for (f in mand){
werp (mand[f]);
}
De eerste Orcs rennen weg na deze fruitverrassing! Op naar Mordor!

Meer lezen over Programmeren? Klik hier voor de inhoudsopgave van alle artikelen!

©SamRain
JavaScript - 16

Geen opmerkingen:

Een reactie posten