Slučka je bežným prvkom vo všetkých programovacích jazykoch. Delphi má tri kontrolné štruktúry ktoré opakovane spúšťajú bloky kódu: pre, opakujte... dovtedy... robiť.
Slučka FOR
Predpokladajme, že musíme operáciu zopakovať pevne viackrát.
// zobrazia 1,2,3,4,5 rámčeky správ
var j: celé číslo;
začať
pre j: = 1 na 5 robiť
začať
ShowMessage ('Box:' + IntToStr (j));
koniec;
koniec;
Hodnota riadiacej premennej (j), ktorá je skutočne iba počítadlom, určuje, koľkokrát sa príkaz for spustí. Kľúčové slovo pre nastavenie počítadla. V predchádzajúcom príklade je počiatočná hodnota počítadla nastavená na 1. Konečná hodnota je nastavená na 5.
Po spustení príkazu for je premenná počítadla nastavená na počiatočnú hodnotu. Delphi potom skontroluje, či je hodnota počítadla nižšia ako konečná hodnota. Ak je hodnota väčšia, neurobí sa nič (vykonanie programu preskočí na riadok kódu bezprostredne po bloku kódu slučky). Ak je počiatočná hodnota menšia ako konečná hodnota, vykoná sa telo slučky (tu: zobrazí sa okno so správou). Nakoniec Delphi pridá čítač 1 a začne proces znova.
Niekedy je potrebné počítať spätne. downto Kľúčové slovo určuje, že hodnota počítadla by sa mala znižovať o jedno pri každom spustení slučky (nie je možné určiť iný prírastok / úbytok ako jeden). Príklad slučky for for, ktorá sa počíta dozadu.
var j: celé číslo;
začať
pre j: = 5 downto 1 robiť
začať
ShowMessage ('T mínus' + IntToStr (j) + 'sekundy');
koniec;
ShowMessage ('Pre vykonanie sekvencie!');
koniec;
Poznámka: Je dôležité, aby ste nikdy nezmenili hodnotu riadiacej premennej uprostred slučky. Ak tak urobíte, spôsobia chyby.
Vnorené FOR slučky
Zápis slučky for for other in loop for loop (vnorené slučky) je veľmi užitočný, ak chcete vyplniť / zobraziť údaje v tabuľke alebo mriežke.
var k, j: celé číslo;
začať
// táto dvojitá slučka sa vykoná 4x4 = 16-krát
pre k: = 1 na 4 robiť
pre j: = 4 downto 1 robiť
ShowMessage ('Box:' + IntToStr (k) + ',' + IntToStr (j));
koniec;
Pravidlo pre vnorenie ďalších slučiek je jednoduché: vnútorná slučka (počítadlo j) musí byť vyplnená skôr, ako sa objaví ďalší príkaz pre vonkajšiu slučku (počítadlo k). Môžeme mať trojité alebo štvornásobné vnorené slučky alebo dokonca viac.
Poznámka: Ako vidíte, spravidla nie sú striktne vyžadované počiatočné a koncové kľúčové slová. Ak sa nepoužívajú začiatok a koniec, za telo slučky sa považuje príkaz bezprostredne nasledujúci za príkazom.
Slučka FOR-IN
Ak máte Delphi 2005 alebo akúkoľvek novšiu verziu, môžete použiť kontajnery typu "nový" pre kolekciu prvkov v kolekcii. Nasledujúci príklad ukazuje iterácia nad reťazcovými výrazmi: pre každý znak v reťazci skontrolujte, či znak je buď „a“ alebo „e“ alebo „i“.
const
s = 'O programovaní Delphi';
var
c: char;
začať
pre C v s robiť
začať
ak C v [ 'A', 'e', 'i'] potom
začať
// urob niečo
koniec;
koniec;
koniec;
Slučky WHILE a REPEAT
Niekedy presne nevieme, koľkokrát by sa mal cyklus opakovať. Čo ak chceme zopakovať operáciu, kým nedosiahneme konkrétny cieľ?
Najdôležitejším rozdielom medzi slučkou while-do a loop-again je to, že kód opakovať vyhlásenie sa vykonáva vždy najmenej raz.
Všeobecný vzorec, keď v Delphi píšeme opakovaný (a zatiaľ) typ slučky, je nasledujúci:
opakovať
začať
Vyhlásenia;
koniec;
kým podmienka = true
zatiaľ čo podmienka = true robiť
začať
Vyhlásenia;
koniec;
Tu je kód na zobrazenie 5 po sebe nasledujúcich správ pomocou opakovania do:
var
j: celé číslo;
začať
j: = 0;
opakovať
začať
j: = j + 1;
ShowMessage ('Box:' + IntToStr (j));
koniec;
kým j> 5;
koniec;
Ako vidíte, príkaz opakovanie vyhodnocuje stav na konci slučky (opakovacia slučka sa teda určite vykoná aspoň raz).
Príkaz while na druhej strane vyhodnocuje stav na začiatku slučky. Pretože test sa vykonáva na vrchu, zvyčajne sa musíme uistiť, že stav má zmysel pred spracovaním slučky, ak to nie je pravda prekladač môže rozhodnúť o odstránení slučky z kódu.
var j: celé číslo;
začať
j: = 0;
zatiaľ čo j <5 robiť
začať
j: = j + 1;
ShowMessage ('Box:' + IntToStr (j));
koniec;
koniec;
Rozbiť a pokračovať
Postupy Break a Continue sa môžu použiť na riadenie toku opakovaných príkazov: Break Postup spôsobí, že tok kontroly opustí príkaz pre, while alebo opakujte a pokračuje v ďalšom výkaz po slučke vyhlásenia. Pokračovať umožňuje toku riadenia pokračovať do ďalšej iterácie opakovanej operácie.