Silmukka on yleinen elementti kaikissa ohjelmointikielissä. Delphillä on kolme ohjausrakenteet jotka suorittavat koodilohkoja toistuvasti: toista... kunnes ja kunnes... tehdä.
FOR-silmukka
Oletetaan, että meidän täytyy toistaa toiminto kiinteästi useita kertoja.
// näytä 1,2,3,4,5 viestiruudut
var j: kokonaisluku;
alkaa
varten j: = 1 että 5 tehdä
alkaa
ShowMessage ('laatikko:' + IntToStr (j));
pää;
pää;
Ohjausmuuttujan (j) arvo, joka on oikeastaan vain laskuri, määrää kuinka monta kertaa lausekkeen a suoritetaan. Avainsana laskurin perustamiseen. Edellisessä esimerkissä laskurin aloitusarvoksi asetetaan 1. Loppuarvoksi asetetaan 5.
Kun lausekkeen käyttö alkaa, laskurimuuttuja asetetaan alkuarvoon. Delfoi kuin tarkistaa, onko laskurin arvo pienempi kuin lopetusarvo. Jos arvo on suurempi, mitään ei tehdä (ohjelman suorittaminen hyppää koodiriville heti linssikoodilohkon jälkeen). Jos aloitusarvo on pienempi kuin lopetusarvo, silmukan runko suoritetaan (tässä: viestiruutu tulee näkyviin). Lopuksi Delphi lisää 1 laskuriin ja aloittaa prosessin uudelleen.
Joskus on tarpeen laskea taaksepäin. downto avainsana määrittelee, että laskurin arvoa tulisi pienentää yhdellä kerralla, kun silmukka suoritetaan (ei ole mahdollista määritellä muuta kuin yhtä). Esimerkki silmukalle, joka laskee taaksepäin.
var j: kokonaisluku;
alkaa
varten j: = 5 downto 1 tehdä
alkaa
ShowMessage ('T miinus' + IntToStr (j) + 'sekuntia');
pää;
ShowMessage ('Suoritettu sekvenssi!');
pää;
Huomaa: on tärkeää, että et koskaan muuta säätömuuttujan arvoa silmukan keskellä. Se aiheuttaa virheitä.
Sisäkkäiset FOR-silmukat
Silmukan kirjoittaminen toiseen silmukalle (sisäkkäiset silmukat) on erittäin hyödyllistä, kun haluat täyttää / näyttää tietoja taulukossa tai ruudukossa.
var k, j: kokonaisluku;
alkaa
// tämä kaksoissilmukka suoritetaan 4x4 = 16 kertaa
varten k: = 1 että 4 tehdä
varten j: = 4 downto 1 tehdä
ShowMessage ('laatikko:' + IntToStr (k) + ',' + IntToStr (j));
pää;
Seuraavien silmukoiden pesänsääntö on yksinkertainen: sisäinen silmukka (j-laskuri) on suoritettava loppuun, ennen kuin seuraava ulomman silmukan lause tulee (k-laskuri). Meillä voi olla kolmen- tai nelinkertaisesti sisäkkäisiä silmukoita tai jopa enemmän.
Huomaa: Aloitus- ja lopetusavaimia ei yleensä vaadita ehdottomasti, kuten näet. Jos alkua ja loppua ei käytetä, lauseen välittömästi seuraavaa lauseketta pidetään silmukan rungona.
FOR-IN-silmukka
Jos sinulla on Delphi 2005 tai jokin uudempi versio, voit käyttää "uutta" kokoelmassa elementti-kokoelmassa -tyyppistä iteraatiota. Seuraava esimerkki osoittaa iterointi merkkijonolausekkeiden yli: tarkista jokaisesta merkkijonosta, onko merkki joko 'a' tai 'e' tai 'i'.
const
s = 'Tietoja Delphi-ohjelmoinnista';
var
c: char;
alkaa
varten C sisään s tehdä
alkaa
jos C sisään [ 'A', 'E', 'i'] sitten
alkaa
// tee jotain
pää;
pää;
pää;
WHILE- ja REPEAT-silmukat
Joskus emme tiedä tarkalleen kuinka monta kertaa silmukan tulisi kiertää. Entä jos haluamme toistaa operaation, kunnes saavutamme tietyn tavoitteen?
Tärkein ero while-do-silmukan ja toista-kunnes -silmukan välillä on, että toista lausunto suoritetaan ainakin kerran.
Yleinen malli, kun kirjoitamme Delphiin toistuvan (ja samalla) tyypin silmukkaa, on seuraava:
toistaa
alkaa
lausumat;
pää;
siihen asti kun ehto = totta
sillä aikaa ehto = totta tehdä
alkaa
lausumat;
pää;
Tässä on koodi viiden peräkkäisen viestiruudun näyttämiseksi toistamiseen saakka:
var
j: kokonaisluku;
alkaa
j: = 0;
toistaa
alkaa
j: = j + 1;
ShowMessage ('laatikko:' + IntToStr (j));
pää;
siihen asti kun j> 5;
pää;
Kuten näette, toistuva lause arvioi tilaa silmukan lopussa (siksi toistosilmukka suoritetaan varmasti ainakin kerran).
Taas, kun taas lausunto arvioi ehdon silmukan alussa. Koska testi tehdään yläosassa, meidän on yleensä varmistettava, että ehto on järkevä ennen silmukan käsittelyä, ellei tämä ole totta kääntäjä voi päättää poistaa silmukan koodista.
var j: kokonaisluku;
alkaa
j: = 0;
sillä aikaa j <5 tehdä
alkaa
j: = j + 1;
ShowMessage ('laatikko:' + IntToStr (j));
pää;
pää;
Tauko ja jatka
Tauko- ja Jatka-menettelyjä voidaan käyttää hallitsemaan toistuvien lauseiden kulkua: Tauko prosessi saa ohjauksen virtauksen poistumaan varten, kun taas tai toista lause ja jatkaa seuraavassa selvitys seuraa silmukkaa lausuma. Jatka antaa ohjauksen virtauksen siirtyä seuraavaan toistuvan toiminnan toistoon.