Forståelse og brug af sløjfer i Delphi-programmering

Løkken er et almindeligt element i alle programmeringssprog. Delphi har tre kontrolstrukturer der udfører kodeblokke gentagne gange: for, gentag... indtil og mens... gøre.

FOR-løkken

Antag, at vi er nødt til at gentage en handling et fast antal gange.

// Vis 1,2,3,4,5 meddelelsesbokse
Var j: heltal;
begynde
til j: = 1 til 5 gøre
begynde
ShowMessage ('Box:' + IntToStr (j));
ende;
ende;

Værdien af ​​en kontrolvariabel (j), som egentlig bare er en tæller, bestemmer, hvor mange gange en for sætning kører. Nøgleordet til sætter en tæller. I det foregående eksempel er startværdien for tælleren indstillet til 1. Sluttværdien er sat til 5.
Når for-sætningen begynder at køre, indstilles tællervariablen til startværdien. Delphi end kontrollerer, om værdien for tælleren er mindre end slutværdien. Hvis værdien er større, gøres der intet (programafvikling springer til kodelinjen umiddelbart efter for-loop-kodeblokken). Hvis startværdien er mindre end slutværdien, udføres loopens krop (her: meddelelsesfeltet vises). Endelig tilføjer Delphi 1 til tælleren og starter processen igen.

instagram viewer

Nogle gange er det nødvendigt at tælle baglæns. Det ned til nøgleord specificerer, at værdien af ​​en tæller skal dekrementeres med en hver gang løkken udføres (det er ikke muligt at specificere et andet inkrement / dekrement end et). Et eksempel på en for-loop, der tæller bagud.

Var j: heltal;
begynde
til j: = 5 ned til 1 gøre
begynde
ShowMessage ('T minus' + IntToStr (j) + 'sekunder');
ende;
ShowMessage ('For sekvens udført!');
ende;

Bemærk: det er vigtigt, at du aldrig ændrer værdien af ​​kontrolvariablen midt i løkken. Det vil medføre fejl.

Indlejret FOR løkker

Det er meget nyttigt at skrive en for-loop inden for en anden til loop (indlejringssløjfer), når du vil udfylde / vise data i en tabel eller et gitter.

Var k, j: heltal;
begynde
// denne dobbeltsløjfe udføres 4x4 = 16 gange
til k: = 1 til 4 gøre
til j: = 4 ned til 1 gøre
ShowMessage ('Box:' + IntToStr (k) + ',' + IntToStr (j));
ende;

Reglen for indlejring af næste sløjfer er enkel: den indvendige sløjfe (j-tæller) skal udfyldes, før den næste erklæring for den ydre sløjfe findes (k-tæller). Vi kan have tredobbelt eller firedoblet indlejrede sløjfer, eller endnu mere.

Bemærk: Generelt er start- og slutnøgleord ikke strengt påkrævet, som du kan se. Hvis start og slut ikke bruges, betragtes udsagnet umiddelbart efter for-sætningen som en del af løkken.

FOR-IN-løkken

Hvis du har Delphi 2005 eller en nyere version, kan du bruge den "nye" iteration til element-i-samling-stil over containere. Følgende eksempel demonstrerer iteration over strengudtryk: Kontroller, om tegnet enten er 'a' eller 'e' eller 'i' for hver char i streng.

const
s = 'Om Delphi-programmering';
Var
c: char;
begynde
til c i s gøre
begynde
hvis c i [ 'A', 'e', ​​'jeg'] derefter
begynde
// gør noget
ende;
ende;
ende;

WHILE og REPEAT sløjfer

Nogle gange ved vi ikke nøjagtigt, hvor mange gange en løkke skal cykle. Hvad hvis vi vil gentage en operation, indtil vi når et specifikt mål?

Den vigtigste forskel mellem loop-mens-loop og gentag-løkke er, at koden til gentag erklæring udføres altid mindst én gang.

Det generelle mønster, når vi skriver en gentaget (og mens) type loop i Delphi, er som følger:

gentage
begynde
udsagn;
ende;
indtil betingelse = sandt
mens betingelse = sandt gøre
begynde
udsagn;
ende;

Her er koden for at vise 5 på hinanden følgende meddelelsesbokse ved hjælp af gentagelse indtil:

Var
j: heltal;
begynde
j: = 0;
gentage
begynde
j: = j + 1;
ShowMessage ('Box:' + IntToStr (j));
ende;
indtil j> 5;
ende;

Som du kan se, evaluerer gentagelsesangivelsen en betingelse i slutningen af ​​løkken (derfor udføres gentagelsesslynge med sikkerhed mindst en gang).

Mens udsagnet vurderes på den anden side en betingelse i begyndelsen af ​​løkken. Da testen udføres øverst, bliver vi normalt nødt til at sørge for, at tilstanden giver mening, inden loopen behandles, hvis dette ikke er sandt compiler kan beslutte at fjerne sløjfen fra koden.

Var j: heltal;
begynde
j: = 0;
mens j <5 gøre
begynde
j: = j + 1;
ShowMessage ('Box:' + IntToStr (j));
ende;
ende;

Break og fortsæt

Break and Continue-procedurerne kan bruges til at kontrollere strømmen af ​​gentagne udsagn: The Break procedure får kontrolstrømmen til at forlade en for, mens eller gentage erklæringen og fortsætte med det næste udmelding følge løkken udmelding. Fortsæt gør det muligt for strømmen af ​​kontrol at fortsætte til den næste gentagelse af gentagen operation.

instagram story viewer