Programmerare, skeptiker, sekulärhumanist, antirasist.
Författare till bok om C64 och senbliven lantis.
Röstar pirat.
2014-02-26
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.
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;
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)));
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;
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.
Categories: Delphi
Bjud mig på en kopp kaffe (20:-) som tack för bra innehåll!
Leave a Reply