De meeste for's zien er zo uit
Delphi Code:
dh1:
lopendevariable:=lowerbound;
while upperbound>=lopendevariabele do
begin
dh0: code block // dh0 label alleen voor argumentatie
inc(lopendevariabele,loopincrease ); // 2 in dit geval
end;
C's FOR is een heel goed voorbeeld. De 3 elementen (initializatie,eindconditie,increase) zijn argumenten van het for statement.
Pascal is een tikje anders (dan b.v. C) in de zin dat upperbound eerst voorberekend wordt, en dus niet als expressie in de while staat:
Delphi Code:
upperboundtemp:=upperbound
while upperboundtemp>=lopendevariable;
Verder is het ook zo dat de lopendevariable niet gedefinieerd is na de loop (behalve in break gevallen), dus loops zonder gebruik van de lopendevariabele en zonder break kunnen vrij makkelijk geoptimalizeerd worden tot iets wat alleen het aantal iteraties afloopt:
Delphi Code:
lopendevarcount:=upperbound-lowerbound+1;
while lopendevarcount>0 do
begin
<block>
dec(lopendevarcount);
end;
Nu zal VB3 dat niet doen, want het is een interpreter. Kijk echter wat de lopende variabele op 0 zetten en springen naar dh0 in de while boven doet......
Bookmarks