Silmuste mõistmine ja kasutamine Delphi programmeerimisel

Silmus on kõigis programmeerimiskeeltes tavaline element. Delphil on kolm juhtimisstruktuurid mis täidavad koodiplokke korduvalt: jaoks, korrake... kuni ja kuni... teha.

FOR-silmus

Oletame, et peame operatsiooni korrata kindlaksmääratud arv kordi.

// näita 1,2,3,4,5 teadete kaste
var j: täisarv;
alustada
jaoks j: = 1 kuni 5 teha
alustada
ShowMessage ('Kast:' + IntToStr (j));
lõpp;
lõpp;

Kontrollmuutuja (j) väärtus, mis on tegelikult vaid loendur, määrab, mitu korda a-lause töötab. Märksõna loenduri seadistamiseks. Eelmises näites on loenduri algväärtuseks seatud 1. Lõppväärtus on seatud 5-le.
Kui avalduse käivitamine algab, seatakse loendusmuutuja algväärtusele. Delphi kui kontrollib, kas loenduri väärtus on väiksem kui lõppväärtus. Kui väärtus on suurem, siis midagi ei tehta (programmi täitmine hüppab koodireale kohe pärast silmuskoodiploki). Kui algväärtus on väiksem kui lõppväärtus, siis teostatakse ahela põhiosa (siin kuvatakse teadete kast). Lõpuks lisab Delphi loendurile 1 ja alustab protsessi uuesti.

instagram viewer

Mõnikord on vaja tagasi loota. alla märksõna täpsustab, et loenduri väärtust tuleks vähendada iga kord, kui ahel käivitub (muud kui lisandumist / vähendamist pole võimalik ühele määrata). Näide tagasiulatuva silmuse jaoks.

var j: täisarv;
alustada
jaoks j: = 5 alla 1 teha
alustada
ShowMessage ('T miinus' + IntToStr (j) + 'sekundit');
lõpp;
ShowMessage ('Jada teostatud!');
lõpp;

Märkus: on oluline, et te ei muuda kunagi juhtmuutuja väärtust ahela keskel. See põhjustab vigu.

Pesastatud FOR silmuste jaoks

Silmuse kirjutamine teises piires (silmustes pesad) on väga kasulik, kui soovite andmeid tabelis või ruudus täita / kuvada.

var k, j: täisarv;
alustada
// see topeltsilmus teostatakse 4x4 = 16 korda
jaoks k: = 1 kuni 4 teha
jaoks j: = 4 alla 1 teha
ShowMessage ('Kast:' + IntToStr (k) + ',' + IntToStr (j));
lõpp;

Järgmiste silmuste pesastamise reegel on lihtne: sisemine silmus (j loendur) tuleb täita enne välise silmuse järgmise avalduse ilmumist (k loendur). Meil võib olla kolme või nelja pesaga silmuseid või isegi rohkem.

Märkus. Nagu näete, pole algus- ja lõpumärksõnad rangelt nõutavad. Kui algust ja lõppu ei kasutata, loetakse avalduse jaoks vahetult järgnev lause silmuse põhiosaks.

FOR-IN silmus

Kui teil on Delphi 2005 või mõni uuem versioon, saate konteinerites kasutada elemendi in-collection stiilis iteratsiooni "uus". Järgmine näide näitab iteratsioon stringilausete kohal: kontrollige iga sümboliga, kas märk on „a” või „e” või „i”.

const
s = 'Delphi programmeerimise kohta';
var
c: söe;
alustada
jaoks c sisse s teha
alustada
kui c sisse ['a', 'e', ​​'i'] siis
alustada
// tee midagi
lõpp;
lõpp;
lõpp;

Silmused WHILE ja REPEAT

Mõnikord ei tea me täpselt, mitu korda silmus peaks tsüklit tegema. Mis siis saab, kui tahame operatsiooni korrata, kuni jõuame kindla eesmärgini?

Olulisim erinevus vahelduva silmuse ja kordussilmuse vahel on see, et kood korrata avaldust teostatakse alati vähemalt üks kord.

Korduva (ja samas) tüüpi silmuse kirjutamisel Delphis on üldine muster järgmine:

korda
alustada
avaldused;
lõpp;
kuni tingimus = tõsi
samas tingimus = tõsi teha
alustada
avaldused;
lõpp;

Siin on kood 5 järjestikuse teadekasti kuvamiseks, kasutades kordust kuni:

var
j: täisarv;
alustada
j: = 0;
korda
alustada
j: = j + 1;
ShowMessage ('Kast:' + IntToStr (j));
lõpp;
kuni j> 5;
lõpp;

Nagu näete, hindab korduv lause silmuse lõpus olekut (seetõttu teostatakse kordussilm vähemalt üks kord kindlasti).

Teisalt hindab samal ajal lause, mis seisab silmuse alguses. Kuna testi tehakse ülaosas, peame tavaliselt enne silmuse töötlemist veenduma, et tingimus on mõttekas, kui see pole tõsi, koostaja võib otsustada silmuse koodist eemaldada.

var j: täisarv;
alustada
j: = 0;
samas j <5 teha
alustada
j: = j + 1;
ShowMessage ('Kast:' + IntToStr (j));
lõpp;
lõpp;

Murdke ja jätkake

Protseduure Break ja Continue saab kasutada korduvate avalduste voo juhtimiseks: The Break protseduur põhjustab juhtimisvoo väljumise for, samal ajal või korrata avaldust ja jätkata järgmisel avaldus silmuse järgimine avaldus. Jätka võimaldab juhtimisvoolul liikuda korduva toimingu järgmise iteratsioonini.