Förstå och använda loopar i Delphi-programmering

Loopen är ett vanligt inslag i alla programmeringsspråk. Delphi har tre kontrollstrukturer som kör kodblock upprepade gånger: för, upprepa... tills och medan... do.

FOR-slingan

Anta att vi måste upprepa en åtgärd ett fast antal gånger.

// visa 1,2,3,4,5 meddelandelådor
var j: heltal;
Börja
för j: = 1 till 5 do
Börja
ShowMessage ('Box:' + IntToStr (j));
slutet;
slutet;

Värdet på en kontrollvariabel (j), som egentligen bara är en räknare, avgör hur många gånger ett för uttalande körs. Nyckelordet för skapar en räknare. I föregående exempel är startvärdet för räknaren inställt på 1. Slutvärdet är satt till 5.
När för-påståendet börjar körs är räknarvariabeln inställd på startvärdet. Delphi än kontrollerar om räknarens värde är mindre än slutvärdet. Om värdet är större görs ingenting (programutförande hoppar till kodraden omedelbart efter blockets for loop-kod). Om startvärdet är mindre än slutvärdet, körs slingans kropp (här: meddelanderutan visas). Slutligen lägger Delphi till 1 i räknaren och startar processen igen.

instagram viewer

Ibland är det nödvändigt att räkna bakåt. De ner till nyckelord anger att värdet på en räknare ska minskas med en varje gång slingan körs (det är inte möjligt att ange en ökning / minskning annan än en). Ett exempel på en for-loop som räknar bakåt.

var j: heltal;
Börja
för j: = 5 ner till 1 do
Börja
ShowMessage ('T minus' + IntToStr (j) + 'sekunder');
slutet;
ShowMessage ('För sekvens exekverad!');
slutet;

Obs! Det är viktigt att du aldrig ändrar värdet på styrvariabeln mitt i slingan. Om du gör det kommer det att orsaka fel.

Häckt FÖR öglor

Att skriva en for loop i en annan för loop (häckslingor) är mycket användbart när du vill fylla / visa data i en tabell eller ett rutnät.

var k, j: heltal;
Börja
// denna dubbla slinga körs 4x4 = 16 gånger
för k: = 1 till 4 do
för j: = 4 ner till 1 do
ShowMessage ('Box:' + IntToStr (k) + ',' + IntToStr (j));
slutet;

Regeln för att häcka nästa slingor är enkel: den inre slingan (j-räknaren) måste vara klar innan nästa påstående för den yttre slingan stöter på (k-räknare). Vi kan ha tripplade eller fyrdubbla kapslade öglor, eller ännu mer.

Obs! I allmänhet krävs det inte strikt nyckelord för start och slut, som du kan se. Om inte början och slut inte används, anses uttalandet omedelbart efter uttalandet vara öglets kropp.

FOR-IN-slingan

Om du har Delphi 2005 eller någon nyare version kan du använda den "nya" iterationen för element-i-samling-stil över containrar. Följande exempel visar iteration över stränguttryck: för varje char i strängen, kontrollera om tecknet antingen är 'a' eller 'e' eller 'i'.

const
s = 'Om Delphi-programmering';
var
c: char;
Börja
för c i s do
Börja
om c i ['a e i'] sedan
Börja
// göra någonting
slutet;
slutet;
slutet;

WHILE- och REPEAT-slingorna

Ibland vet vi inte exakt hur många gånger en slinga ska cykla. Tänk om vi vill upprepa en operation tills vi når ett specifikt mål?

Den viktigaste skillnaden mellan loopen och repetitionsslingan är att koden för upprepa uttalande körs alltid minst en gång.

Det allmänna mönstret när vi skriver en repetitions (och medan) typ av slinga i Delphi är som följer:

upprepa
Börja
uttalanden;
slutet;
fram tills villkor = sant
medan villkor = sant do
Börja
uttalanden;
slutet;

Här är koden för att visa 5 på varandra följande meddelandelådor med upprepning tills:

var
j: heltal;
Börja
j: = 0;
upprepa
Börja
j: = j + 1;
ShowMessage ('Box:' + IntToStr (j));
slutet;
fram tills j> 5;
slutet;

Som du ser utvärderar upprepningsförklaringen ett villkor i slutet av slingan (därför repeteras repetitionssäkerheten minst en gång).

Samtidigt uttalandet utvärderar å andra sidan ett villkor i början av slingan. Eftersom testet görs på toppen måste vi vanligtvis se till att villkoret är vettigt innan slingan behandlas, om detta inte är sant kompilator kan besluta att ta bort slingan från koden.

var j: heltal;
Börja
j: = 0;
medan j <5 do
Börja
j: = j + 1;
ShowMessage ('Box:' + IntToStr (j));
slutet;
slutet;

Bryt och fortsätt

Break and Continue-procedurerna kan användas för att kontrollera flödet av upprepade påståenden: The Break procedur får kontrollflödet att lämna ett för, medan eller upprepa uttalande och fortsätta vid nästa påstående följa slingan påstående. Fortsätt gör att kontrollflödet går vidare till nästa iteration av upprepande operation.

instagram story viewer