A ; elválasztójel, nem lezáró. Ha utasítás3 után is írnánk ;-t, az azt jelentené, hogy a szekvencia négy utasításból áll, ahol a negyedik az üres utasítás. Gyakorlatban mégis oda szoktuk írni, hátha később új utasítás kerül a végére.
Az elágazásokkal a programunk végrehajtását bizonyos feltételek teljesüléséhez köthetjük. Pascalban kétféle feltételes utasítás létezik: az if és a case.
Az if utasítás szintaxisa a következő:
vagy
A kifejezés tetszőleges logikai érték lehet, de pl. szám nem. Megfigyelhető, hogy az egyes ágakban csak egyetlen utasítás állhat, ezért ha több utasítást akarunk végrehajtani, akkor azokat begin end; blokkba kell zárnunk. Azt is észrevehettük, hogy az else előtt nem állhat ; (pontosvessző). A Delphiben nincs elseif utasítás, ezt a következőképpen valósíthatjuk meg:
A case utasítás egy kifejezést és az általa felvehető értékeket (vagy azok egy részét) tartalmazza. Ezek az értékek csak konstansok lehetnek, és mindenképpen megszámlálható típusúnak kell lenniük. Minden érték legfeljebb egyszer szerepelhet. Használhatunk else ágat is, amely akkor hajtódik végre, ha egyetlen érték sem felel meg a kifejezésnek. Egy kiválasztott ág végrehajtása után a vezérlés az end kulcsszó után folytatódik.
Példa a case utasítás használatára:
A Pascal nyelvben is léteznek olyan utasítások, melyek egy adott programrész többszörös végrehajtását teszik lehetővé. Ezen utasításokat vizsgáljuk meg a következő pontokban.
A Delphi számláló ciklusa a for utasítással adható meg. Példa:
A ciklusmag egyetlen utasításból állhat, több utasítást úgy tudunk megadni, ha begin end; blokkba zárjuk. A Pascal for ciklusa kötöttebb, mint más programnyelvekben, pl. C-ben. Arra azonban van mód, hogy a számlálás visszafelé történjen: a to helyére downto-t kell írni, és persze a megadott intervallumnak csökkenőnek kell lennie. Ha bonyolultabb ciklust szeretnénk írni, válasszuk a while vagy repeat utasítást. Lényeges még, hogy a for ciklus ciklusváltozója csak lokális változó lehet! (Erre a fordító is figyelmeztet.) A ciklusváltozó értéke nem módosítható a ciklusmagból.
Pl.:
A Pascal nyelv általános előltesztelő ciklusa a while-do ciklus. Szintaxisa:
A ciklus addig fut, míg a logikai kifejezés igaz. Több utasítás esetén itt is a begin end; blokk a megoldás.
A Pascal nyelv hátultesztelő ciklusa a repeat-until ciklus. Szintaxisa:
A ciklus akkor ér véget, ha a logikai_kifejezés igaz (!) lesz, de legalább egyszer mindenképpen végrehajtódik a ciklusmag. Látható, hogy itt több utasítás is megadható, nincs szükség begin end; blokkra.
A Delphi 9-es verziójában megjelenő egyik újdonság a C#-ból is ismert foreach ciklusszervező utasítás megjelenése. Szintaxisa:
A for .. in bejárja a konténert és elemeit sorra értékül adja a ciklusváltozónak, amelynek megfelelő típusúnak kell lennie. Konténernek minősülnek a tömbök (akár a többdimenziósak és a dinamikusak is), a stringek, a halmazok, valamint a megfelelő interfésszel rendelkező rekordok és osztályok.
Egy rekord vagy osztály akkor tekinthető konténernek, ha van GetEnumerator() metódusa. A visszaadott „enumerátor”-nak (ez lehet rekord, osztály vagy interfész típusú) az alábbi két dologgal kell rendelkeznie: egy MoveNext():Boolean függvénnyel, amely a következő elemre áll és false-t ad vissza, ha ez nem sikerült, valamint egy Current csak olvasható jellemzővel (property), ennek típusa lesz a konténer elemtípusa és az értékét kapja meg a ciklusváltozó. A könyvtárbeli konténer osztályok (pl. TList, TCollection, TStringList, TComponent, TMenuItem) rendelkeznek a megfelelő enumerátorral.
Goto címkenév: a címkenévvel jelölt utasításra ugrik a végrehajtás. A címkét a goto-t tartalmazó alprogram vagy főprogram utasításblokkja előtt fel kell sorolni a label kulcsszó után. Egy utasítás úgy látható el címkével, hogy az utasítás elé odaírjuk a címkét kettősponttal elválasztva. Ha lehet, ne használjuk, legalább tanáraink tisztelete miatt. A goto nem tud kiugrani kivételkezelő blokkból és bele se.
Exit : Befejezi az aktuális alprogram vagy főprogram futását. A következő példában, ha a felhasználó nem adja meg a nevét valamelyik inputablakban, hanem csak bezárja azt, a vezérlés az Exit parancsra jut, aminek hatására befejeződik a függvény futása.
Continue : A számlálásos ciklus következő iterációjára lép. Elvileg tudja ezt elől- illetve hátultesztelőnél is, de ugye ott nem teljesen definiált, hogy mi a következő iteráció. Ha ezt használjuk, érdemes a ciklust kivételkezeléssel levédeni, mert ha az utolsó iterációban lép fel a dolog, akkor ugye nincs következő iteráció. A következő példa kimenete: s = 1 2 4 5 6 8 9
Break : A ciklusokból ugrik ki, a ciklus utáni első utasításra. A következő példa kimenete: i = 6 s = 1 2 3 4 5 6ő>
Abort : Egy speciális kivételt vált ki, úgy viselkedik, mint egy kivétel, de ha nincs lekezelve sehol, akkor már nem, azaz nem jut el a felhasználóhoz. Az alábbi példa ezt az üzenetet produkálja: Before abort Operation aborted exception occured After try
Halt : Abnormális terminálást idéz elő, megadható utána zárójelben egy kód, amelyet az operációs rendszer kiír, nyilván csak programtesztelésnél használatos. A következő példa ezt a hibaüzenetet adja: Runtime error 4 at 0069FC94
Runerror : Run-time errort idéz elő, vissza az operációs rendszernek, hasonló a halthoz, adható egy kód (default értéke 0), szintén kizárólag tesztelésnél használatos. Ebben a példában a program ezzel a hibaüzenettel áll le: Runtime error 0 at 00452105
Akkor használjuk, ha pl. elágazás, ciklus, kivételkezelés belsejébe egy utasítás helyett többet szeretnénk írni. Ez a kulcsszópár szerepel továbbá a főprogram és alprogramok törzse körül is, de ott nem hagyhatók el.