Løkken er et vanlig element i alle programmeringsspråk. Delphi har tre kontrollstrukturer som kjører blokker med kode gjentatte ganger: for, gjenta... til og med... gjøre.
FOR-loopen
Anta at vi må gjenta en operasjon et fast antall ganger.
// vis 1,2,3,4,5 meldingsbokser
Var j: heltall;
begynne
til j: = 1 til 5 gjøre
begynne
ShowMessage ('Box:' + IntToStr (j));
slutt;
slutt;
Verdien av en kontrollvariabel (j), som egentlig bare er en teller, avgjør hvor mange ganger a for setningen kjøres. Nøkkelordet for setter opp en teller. I foregående eksempel er startverdien for telleren satt til 1. Sluttverdien er satt til 5.
Når for-setningen begynner å kjøre, blir tellervariabelen satt til startverdien. Delphi enn sjekker om verdien for telleren er mindre enn sluttverdien. Hvis verdien er større, gjøres ingenting (programutførelse hopper til kodelinjen umiddelbart etter for-loop-kodeblokken). Hvis startverdien er mindre enn sluttverdien, utføres sløyfens kropp (her: meldingsboksen vises). Til slutt legger Delphi til 1 i skranken og starter prosessen på nytt.
Noen ganger er det nødvendig å telle bakover. De ned til nøkkelord spesifiserer at verdien til en teller skal dekrementeres av en hver gang sløyfen kjøres (det er ikke mulig å spesifisere en annen økning / reduksjon enn en). Et eksempel på en for-loop som teller bakover.
Var j: heltall;
begynne
til j: = 5 ned til 1 gjøre
begynne
ShowMessage ('T minus' + IntToStr (j) + 'sekunder');
slutt;
ShowMessage ('For sekvens utført!');
slutt;
Merk: det er viktig at du aldri endrer verdien på kontrollvariabelen midt i løkken. Dette vil føre til feil.
Heklet FOR løkker
Å skrive en for loop i en annen for loop (hekkingsløkker) er veldig nyttig når du vil fylle ut / vise data i en tabell eller et rutenett.
Var k, j: heltall;
begynne
// denne doble sløyfen utføres 4x4 = 16 ganger
til k: = 1 til 4 gjøre
til j: = 4 ned til 1 gjøre
ShowMessage ('Box:' + IntToStr (k) + ',' + IntToStr (j));
slutt;
Regelen for å hekke neste løkker er enkel: den indre sløyfen (j-telleren) må fullføres før neste setning for den ytre sløyfen blir møtt (k-telleren). Vi kan ha tredobbelte eller firedoblet nestede løkker, eller enda mer.
Merk: Generelt er ikke start- og sluttnøkkelordene strengt nødvendig, som du kan se. Hvis begynnelse og slutt ikke brukes, blir utsagnet umiddelbart etter uttalelsen ansett som kroppens løkke.
FOR-IN-sløyfen
Hvis du har Delphi 2005 eller en nyere versjon, kan du bruke den "nye" iterasjonen for element-i-samling-stil over containere. Følgende eksempel demonstrerer iterasjon over strenguttrykk: sjekk om tegnet enten er 'a' eller 'e' eller 'i' for hver karakter i streng.
konst
s = 'Om Delphi-programmering';
Var
c: røye;
begynne
til c i s gjøre
begynne
hvis c i [ 'A', 'e', 'i'] deretter
begynne
// gjør noe
slutt;
slutt;
slutt;
WHILE og REPEAT-løkkene
Noen ganger vil vi ikke vite nøyaktig hvor mange ganger en sløyfe skal sykle. Hva om vi vil gjenta en operasjon til vi når et spesifikt mål?
Den viktigste forskjellen mellom mens du gjør loopen og repetisjonssløyfen er at koden til gjenta uttalelse blir alltid henrettet minst en gang.
Det generelle mønsteret når vi skriver en repetisjonstype (og mens) type Delphi er som følger:
gjenta
begynne
uttalelser;
slutt;
før tilstand = sann
samtidig som tilstand = sann gjøre
begynne
uttalelser;
slutt;
Her er koden for å vise 5 påfølgende meldingsbokser ved å bruke gjenta til:
Var
j: heltall;
begynne
j: = 0;
gjenta
begynne
j: = j + 1;
ShowMessage ('Box:' + IntToStr (j));
slutt;
før j> 5;
slutt;
Som du ser, evaluerer gjentagelsesuttalelsen en tilstand på slutten av løkken (derfor blir repetisjonssløyfen utført med sikkerhet minst en gang).
Mens uttalelsen derimot evaluerer en tilstand i begynnelsen av løkken. Siden testen gjøres på toppen, vil vi vanligvis være nødt til å sørge for at tilstanden gir mening før løkken er behandlet, hvis dette ikke stemmer kompilatoren kan bestemme seg for å fjerne sløyfen fra koden.
Var j: heltall;
begynne
j: = 0;
samtidig som j <5 gjøre
begynne
j: = j + 1;
ShowMessage ('Box:' + IntToStr (j));
slutt;
slutt;
Bryt og fortsett
Break and Continue-prosedyrene kan brukes til å kontrollere flyten av repetitive utsagn: The Break prosedyre får kontrollstrømmen til å gå ut av en for, mens eller gjenta uttalelsen og fortsette ved neste uttalelse følge løkken uttalelse. Fortsett lar kontrollstrømmen gå videre til neste iterasjon av gjentatt operasjon.