6. Szerkezeti utasítások
Ciklust és elágazást szerkezeti utasításokkal hozhatunk létre. Ezen kívül a Pascal-ban létezik az összetett utasítás fogalma: összetett utasítás a BEGIN és END közé tett több utasítás. Erre akkor van szükség, ha azt szeretnénk, hogy egy több utasításból álló blokkot a Pascal egy utasításként kezeljen.
Elágazás:
Ha a logikai kifejezés igaz, az elsõ, ha hamis, a második utasítás lesz végrehajtva. Az elágazás egyetlen utasításnak számít, tehát csak a legvégére kerül pontosvesszõ! Az ELSE-ágat nem kötelezõ megadni. Ha az egyes ágakban több utasítást is végre szeretnénk hajtani, azokat Begin és End közé kell tenni, és így egyetlen összetett utasítást csinálni belõlük. Példa:
PROGRAM Atlagsebesseg;
VAR s,t:real;
BEGIN
Write('Add meg az utat (km-ben):'); Readln(s);
Write('Add meg az idõt (h-ban): '); Readln(t);
If t=0 Then Writeln('Rossz adatok!')
Else Begin
Writeln;
Writeln('Az
átlagsebesség: ',s/t:6:2,' km/h');
End ; {az
elágazást lezáró pontosvesszõ}
END.
A másik fajta elágazás egy diszkrét változó bizonyos értékeitõl függ.
Program Mitviszakishajo;
Var c:char;
BEGIN
Write('Írj be egy betût: '); Readln(c);
Case c of
'a': Writeln('Almát!');
'b': Writeln('Banánt!);
'c': Begin
Writeln('Cérnát,');
Writeln('cicát!');
End;
Else Writeln('Erre nem tudok mit lépni.');
End;
END.
Ciklusok:
Ciklusból háromfajta van: elöltesztelõs, hátultesztelõs és számlálós.
A diszkrét típusú változó sorban felveszi a két kifejezés közti összes értéket, és mindegyik esetben elvégzi az utasítást. Ha visszafelé akarunk számolni, TO helyett DOWNTO-t használunk. Ha kifejezés1>kifejezés2 (TO esetén), a ciklusmag egyszer sem fut le.
Var i:integer;
BEGIN
For i:=1 to 10 do Writeln(i,' négyzete=',sqr(i));
END.
Megvizsgálja a logikai kifejezést, ha igaz, végrehajtja az utasítást és kezdi elölrõl. Ha a logikai kifejezés hamis, a ciklusmag egyszer sem fut le. A For-ciklushoz hasonlóan itt is csak egy utasítás lehet a ciklusmag, több utasítás esetén a Begin és End segítségével összetett utasítást kell csinálnunk.
Var i:integer;
BEGIN
i:=0;
While i<10 Do Begin
i:=i+2;
Writeln(i);
End;
END.
A program kiírja a 2,4,6,8,10 számokat.
Elvégzi az utasításokat. Megvizsgálja a logikai kifejezést, ha hamis, visszaugrik a REPEAT-hez. Tehát a logikai kifejezés a ciklusból való kilépés feltétele. (Until=mígnem). Ha a kifejezés kezdetben igaz, a ciklusmag akkor is lefut egyszer.
REPEAT
Readln(a);
If a<>0 Then Writeln(1/a);
UNTIL a=0;