Startsidan  ▸  Texter  ▸  Teknikblogg

Anders Hesselbom

Programmerare, skeptiker, sekulärhumanist, antirasist.
Författare till bok om C64 och senbliven lantis.
Röstar pirat.

Tester och iterationer

2014-02-26

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.

Categories: Delphi

Leave a Reply

Your email address will not be published. Required fields are marked *



En kopp kaffe!

Bjud mig på en kopp kaffe (20:-) som tack för bra innehåll!

Bjud på en kopp kaffe!

Om...

Kontaktuppgifter, med mera, finns här.

Följ mig

Twitter Instagram
GitHub RSS

Public Service

Folkbildning om public service.

Hem   |   linktr.ee/hesselbom   |   winsoft.se   |   80tal.se   |   Filmtips