donderdag 5 juli 2012

JavaScript voor mensen, hobbits en elven - Deel 9


“Automatiseren draait om herhalen, herhalen en herhalen.”
                                                                                                - Sam Rain
Lussen, oftewel ‘looping’ in Tovenaarstaal, zijn vaak beangstigend voor Hobbits. Inderdaad, een foutje is zo gemaakt – en oneindige lussen zijn niet bepaald een blijk van kunde. Toch zijn lussen ook voor mensen en hobbits geen tovenaarskolder.
Een lus is doodweg herhalen van programmacode. Dat is het geheim. Om te voorkomen dat dit niet ongecontroleerd gebeurd, hebben lussen in JavaScript een Booleaanse conditie –dit heeft niets met mensensport te maken of de sprintsnelheid van menig Hobbit. Een conditie is een toverformule die zich op Dwergse wijze afspeelt; het resultaat is óf waar (de toverformule klopt) óf onwaar (de toverformule klopt niet). In JavaScript heet ‘waar’ gewoon true en ‘onwaar’ false.
De gemakkelijkste lus is de ‘while’ lus:
var x = true ;
while (x) {
            /* oneindige lus */
}
Hoewel dit niet meteen het meest ideale voorbeeld is, beschrijft het wél meteen de simpliciteit ervan. Wat je als Hobbit dient te begrijpen is dat formule tussen de haken voor JavaScript zal moeten uiten in een ‘true’ waarde. Als x ‘onwaar’ was geweest, had de code tussen de accolades (de { en } haakjes) nooit het daglicht gezien. Er komt voor efficiënte ‘while’ lussen toch wat Elvenmagie kijken; wees geduldig zo lang we nog op het droge oefenen!
De ietwat gecontroleerde lus is diegene met het toverwoord ‘for’; de ‘for’-lus herhaald zich een vast aantal keren, totdat deze eindigt.
for (var x = 1 ; x<5 ; x++)
{
/* herhaalt zich 5 keer */
}
De spreuk vraagt 3 ingrediënten, namelijk de startwaarde (x = 1), de eindwaarde (x < 5) en de stapsgrootte (x ++). Zoals je ziet is de lus al enigszins complexer, maar het nu enkel om het begrijpen waar de ingrediënten worden toegevoegd. Merk op dat ‘var’ maar 1 keer voorkomt!
Wanneer we met echte Elvenmagie aan de slag gaan zal het een stuk natuurlijker aanvoelen! De ‘for’ lussen worden vooral gebruikt in het dooslopen van ‘lijsten’ (arrays).
De ‘for...in’ lus is speciaal voor het doorlopen van ‘objecten’ waarvan de eigenschappen zijn gekenmerkt met een tekenreeks (associatieve arrays). Omdat objecten baak niet altijd even handig zijn met nummering, biedt de for...in lus uitkomst:
function MijnObject ( ) [
this.eigenschapA = “hallo” ;
this.eigenschapB = “hobbit” ;
this.eigenschapC = 5 ;
}
var x = new MijnObject ( ) ;                         */ LaatOpSchermZien () is */
for bla in x {                                                */ een nep-functie, maar de */
  LaatOpSchermZien (bla) ;                         */ bedoeling is vast duidelijk! */
}
Uiteraard laten deze lussen nog niet veel Elvenmagie zien, maar vormen deze drie lussen de basis van het herhalen:
1)    het herhalen totdat er een ‘onwaar’ resultaat wordt bereikt;
2)    het herhalen totdat er een doelstelling wordt behaald;
3)    het herhalen totdat ieder item in een object behandeld is.
JavaScript kent op deze lussen weer aanvullende varianten, zoals de “do..while” lus –die minimaal de code in de lus één keer uitvoert. De “for..each” lus is een verkorte versie van de ‘for’ lus die zich richt op numerieke arrays. De With-lus verkort de schrijfstijl voor het werken met objecten.
Echter, onder de motorkap zijn het allemaal varianten van de ‘while’ lus. We naderen steeds meer Rivendel...
 Meer lezen over Programmeren? Klik hier voor de inhoudsopgave voor alle artikelen!

Geen opmerkingen:

Een reactie posten