If
If-satser innehåller endast ett semikolon efter att hela satsen är slut. Detta exempel visar en test som alltid utvärderar till false:
if false then
writeln('Sant');
Semikolon ska förekomma efter sista satsen. Detta exempel visar en if-sats med en else-sats:
if false then
writeln('Sant')
else
writeln('Falskt');
Och detta visar två stycken else if-satser:
if false then
writeln('Sant')
else if false then
writeln('Annars falskt')
else if true then
writeln('Annars sant')
else
writeln('Falskt');
Om fler än en rad ska exekvera när ett uttryck utvärderas till true, ska dessa kapslas in mellan begin och end.
if false then
writeln('Sant')
else if true then
begin
writeln('Rad 1');
writeln('Rad 2');
end
else if false then
writeln('...')
else
writeln('Falskt');
Om begin … end-blocket hade legat sist, hade end avslutats med semikolon.
Case
I ett case-block används alltid semikolon efter satserna, och således även semikolon efter end om man vill skapa ett block. Det finns ingen fall through, så delarna i case-blocket behöver inget kommando för att avbryta exekvering.
i := 3;
case i of
1:
writeln('1');
2:
writeln('2');
3:
begin
writeln('3 a');
writeln('3 b');
end;
end;
For
Den grundläggande syntaxen för for påverkar endast en rad:
for i := 0 to 9 do writeln(i);
För att flera rader ska ingå i iterationen används begin … end med semikolon.
for i := 0 to 9 do begin writeln(i); writeln(i); end;
Efter att uppräkningen gjorts har i värdet 10. Det går även att använda t.ex. enumereringar i for, vilket illustreras här:
uses System.SysUtils, TypInfo; type Räkneord = (Första, Andra, Tredje, Fjärde); var i : Räkneord; begin for i := Första to Fjärde do writeln(GetEnumName(TypeInfo(Räkneord), integer(i)));
Repeat
För 1-till-flera används repeat. Iterationen pågår tills uttrycket efter until utvärderas till true.
i := 1; repeat writeln(i); inc(i); until i >= 10;
While
För 0-till-flera används while. Till skillnad från repeat så gäller while bara för efterföljande rad såvida inte ett begin … end-block skapas.
i := 1; while i < 10 do begin writeln(i); inc(i); end;
Både for, repeat och while kan avbrytas med break.
Leave a Reply