### Pri Paskalo

1. Ŝlosilvortoj de Pascal kaj Paskalo
2. Pradifinitaj nomoj de Pascal kaj Paskalo
3. Subvariejoj en Paskalo
4. Rikordoj en Paskalo
5. Kazaj ordonoj en Paskalo
6. Komenckondiĉaj iteracioj en Paskalo
7. Nombrilaj iteracioj en Paskalo

#### Ŝlosilvortoj de Pascal kaj Paskalo

and | kaj | function | funkcio | program | programo
array | tabelo | goto | al | record | rikordo
begin | starto | if | se | repeat | ripetu
case | kazo | in | en | set | aro
const | konst | label | marko | to | supre
div | div | mod | mod | then | tiam
do | faru | nil | nul | type | tipo
downto | sube | not | ne | until | ĝis
else | alie | of | el | var | var
end | fino | or | aŭ | while | dum
file | dosiero | packed | pakita | with | super
for | por | procedure | proceduro

#### Pradifinitaj nomoj de Pascal kaj Paskalo

Abs | abs | Integer | entjera | Sin | sin
ArcTan | tanArk | Ln | ln | Sqr | kvad
Boolean | Bulea | MaxInt | maksEnt | Sqrt | rad
Char | signa | New | kreu | Succ | sek
Chr | sgn | Odd | nepara | Text | teksta
Cos | kos | Ord | nro | True | vero
Dispose | detruu | Output | eligo | Trunk | trunko
Eof | doFin | Pack | paku | Unpack | malpaku
Eoln | liFin | Page | paĝo | Reset | hejmen
Exp | eksp | Pred | ant | Rewrite | reskribu
False | malvero | Put | metu | Round | ronde
forward | daŭrigota | Read | legu | Write | skribu
Get | prenu | Readln | leguLin | Writeln | skribuLin
Input | enigo | Real | reela

Fil. La mallongigoj kot, kos, tg aperis jam en la «Fundamenta Krestomatio» («La sunhorloĝo de Dijon»); la formojn div, eksp, kos, rad, sin, tan donas [EKV] kajaŭ [Rei87]; cetere tiu lasta proponas maltangenton, dum ni restas ĉe la PIV-a tangentarko.

#### Subvariejoj en Paskalo

Ekzemploj:

       TIPO semajntago = (lu,ma,me,ĵa,ve,sa,di);   { enumeracio }
            labortago  = lu..ve;     { subvariejo de semajntago }
            litero     = 'A' .. 'Z';      { subvariejo de signa }
            vertikalo  = 1..80;         { subvariejo de entjera }
            natura     = 0..maksEnt;    { subvariejo de entjera }

Subvariejo ebligas pli klare prezenti programon. Al la tradukilo subvariejo donas okazon ŝpari memoron (ekz-e por la valoroj de la tipo vertikalo sufiĉas unu bajto, dum por nelimigita entjero multaj tradukiloj rezervas 4 bajtojn) kaj kontroli la akcepteblon de la valoroj (ekz-e de indica variablo) pli proksime al la loko, kie unue estiĝas eraro (t.e. en la esprimo, kie la variablo ricevis maltaŭgan valoron, kiu loko povas esti tre malproksima de ĝia apero en la indica pozicio).

#### Rikordoj en Paskalo

    TIPO kompleksa = RIKORDO re, im: reela FINO;

         dato = PAKITA RIKORDO
                    jaro  : 1990..2100;
                    monato: 1..12;
                    tago  : 1..31;
                FINO;

        figuro =
           RIKORDO
              x, y, areo: reela;    { kampoj komunaj al ĉiuj varioj }
           KAZO       f : formo EL
              ortogramo : (lateroA,lateroB:reelo; oblikvo:angulo);
              triangulo : (latero: reela; klino,alfo,beto: angulo);
                 cirklo : (diametro: reelo)
           FINO;

       VAR z:      kompleksa;
           jubileo: dato;
           bildeto: figuro;

#### Kazaj ordonoj en Paskalo

Ekz-e, en la regiono de la deklaroj

       TIPO monato = (jan,feb,mar,apr,maj,jun,jul,aŭg,sep,okt,nov,dec);
       VAR  longo,jaro: entjera;
            mon: monato;

por determini la tagnombron`longo` en la monato`mon` uzeblas la kaza ordono.

       KAZO mon EL
         jan, mar, maj, jul, aŭg, okt, dec:
            longo := 31;
         feb:
            SE (jaro MOD 4 = 0) KAJ (jaro MOD 100 ≠ 0) TIAM longo := 29
            ALIE longo := 28;
         apr, jun, sep, nov:
            longo := 30
       FINO    { de la kaza ordono }

La aperoj de la monatnomoj en tiu kaza ordono estas nomataj kazmarkoj, kiujn oni ne konfuzu kun saltmarkoj (vd salto); la esprimo mon estas la kazindico; la kazmarkoj devas esti konstantoj de tiu sama tipo, kiel la kazindico, kaj tiu tipo rajtas esti nur numerebla tipo. La ago, kiu konsistigas apartan kazon (aŭ «branĉon»), sintakse estas ordono; se oni bezonas branĉon el pluraj ordonoj, oni arigu ilin en parentezan ordonon.

#### Komenckondiĉaj iteracioj en Paskalo

Ekzemploj (ankaŭ vd la programon kopiuTekston):

       DUM i > 1 FARU STARTO
          SE nepara(i) TIAM y := y * x;
          i := i DIV 2; x := kvad(x);
       FINO;

       DUM NE doFin(d) FARU STARTO P(d↑); prenu(d) FINO

En la unua ekzemplo nombrila iteracio ne taŭgas, ĉar la «iteracinombrilo»`i` ne estas simple krementata; en la dua ekzemplo komenckondiĉa iteracio pli konvenas ol finkondiĉa iteracio, ĉar la dosiero`d` povas esti tute malplena.

Komenckondiĉa iteracio havanta la formon:

`DUM Kondiĉo FARU Ordono`
ekvivalentas al

       SE Kondiĉo TIAM STARTO
          Ordono;
          DUM Kondiĉo FARU Ordono;
       FINO

(se la Ordono ne entenas markitan ordonon).

#### Nombrilaj iteracioj en Paskalo

Ekzemplo:

       POR i:=1 SUPRE 63 FARU
         SE grizogrado[i]<0.5 TIAM skribu(' ') ALIE skribu('*')

Estu nombrila iteracio havanta la formon:

`POR ñ:=Esprimo1 SUPRE Esprimo2 FARU Ordono`
(aŭ resp.`POR ñ:=Esprimo1 SUBE Esprimo2 FARU Ordono`), kaj estu variabloj `ë` kaj `β`, ne uzataj en la konsiderata programo kaj tiaj, ke `ë` havas la tipon de`ñ`, dum `β` estu`Bulea`. Tiam la indikita nombrila iteracio ekvivalentas al

       STARTO
          ñ:=Esprimo1; ë:=Esprimo2; β:=malvero;
          SE ñ≤ë TIAM STARTO      { resp. SE ñ≥ë TIAM STARTO  }
             RIPETU
                Ordono;
                SE ñ=ë TIAM β:=vero
                ALIE ñ:=sek(ñ);      { resp. ñ:=ant(ñ) }
             ĜIS β
          FINO                     { ñ iĝas nedifinita }
       FINO