Sekvan paĝon! Antaŭan paĝon! Indekson! Instrukcion!

Pri Paskalo

  1. Ŝlosilvortoj de Pascal kaj Paskalo
  2. Pradifinitaj nomoj de Pascal kaj Paskalo
  3. Subvariejoj en Paskalo
  4. Rikordoj en Paskalo
  5. Okazelekta ordono 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 okazo 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 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

Noto. 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 } 
       OKAZO      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;

Okazelekta ordono 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 okazelekta ordono:

   OKAZO 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 okazelekta ordono }

La aperoj de la monatnomoj en tiu okazelekta ordono estas nomataj okazmarkoj, kiujn oni ne konfuzu kun saltmarkoj (vd salto); la esprimo mon estas la okazindico; la okazmarkoj devas esti konstantoj de tiu sama tipo, kiel la okazindico, kaj tiu tipo rajtas esti nur numerebla tipo. Ago konsistiganta apartan okazon (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


Sekvan paĝon Indekson Instrukcion