[Indekso][Instrukcio]


Eratostena kribrilo en Paskalo

   
VAR prima: TABELO [1..n] EL Bulea;
    baro,i,j:entjera;
STARTO
  baro:=trunko(rad(n));         {-- la supera baro por la analizo}
  POR i:=2 SUPRE n FARU prima[i]:=vero;        {-- komencvalorizo}
  prima[1] := falso;                            {-- "forstreku" 1}
  POR i:=2 SUPRE baro FARU
    SE prima[i] TIAM STARTO
      j:=i+i;
      DUM j<=n FARU STARTO
        prima[j]:=falso; j:=j+i;
      FINO;
    FINO;
  POR i:=2 SUPRE n FARU SE prima[i] TIAM skribu(i);
FINO.


La Hanojaj Turoj

   
PROCEDURO Hanojo(n: entjera; fS, cS, hS: signa);
   STARTO
      SE n>0 TIAM STARTO
         Hanojo(n-1, fS, hS, cS);
         skribuLin('la supran diskon de', fS, 'metu al', cS);
         Hanojo(n-1, hS, cS, fS);
      FINO;       {de la SEo}
   FINO;          {de Hanojo}

{Ekzempla voko:}      Hanojo(4, 'F', 'C', 'H');


Programo entenanta ingitan iteracion

   
PROGRAMO kopiuTekston(enigo, eligo);
STARTO
  DUM NE doFin(enigo) FARU STARTO
    DUM NE liFin(enigo) FARU STARTO {--- la ingita iteracio:}
      eligo@:=enigo@; metu(eligo); prenu(enigo);
    FINO;    {--- de la ingita iteracio}
       leguLin(enigo); skribuLin(eligo);
  FINO       {--- de la ekstera iteracio}
FINO.


Faktorialo: rikure iteracia (f) kaj rekursia (F) realigoj

   
FUNKCIO f(n:entjera):entjera;   | FUNKCIO F(n:entjera):entjera;
  VAR  i,r:entjera;             | STARTO
STARTO                          |    SE n>1 TIAM
  r:=1;                         |        F:=n*F(n-1)
  POR i:=1 SUPRE n FARU r:=r*i; |    ALIE F:=1
  f:=r;                         | FINO; { de la rekursia realigo }
FINO; { de la rikura realigo }  |


Rapida Ordigo

   
PROCEDURO rapid ( unua,lasta: entjera  {la indiclimoj de subdivido}
                ; funkcio ordas(i,j:entjera):Bulea {ĉu x[i]<=x[j]?}
                ; proceduro permutu
                );
   VAR et {la et-indica fronto},
       eg {la eg-indica fronto}: entjera;
   STARTO
      et:=unua; eg:=lasta;
      DUM et<eg FARU STARTO
         DUM ordas(et,eg) KAJ (et<eg) FARU eg:=ant(eg);
         permutu(et,eg);
         DUM ordas(et,eg) KAJ (et<eg) FARU et:=sek(et);
         permutu(et,eg);
      FINO;
      SE unua<ant(et) TIAM rapid(unua,ant(et),ordas,permutu);
      SE sek(et)<lasta TIAM rapid(sek(et),lasta,ordas,permutu);
   FINO;

        {--- sekvas deklaroj, necesaj por ordigi vektoron v: ---}

   VAR v: TABELO [0..99] EL reela;

   FUNKCIO kreske(i,j: entjera): Bulea;
      STARTO kreske := v[i]<=v[j];
      FINO;

   PROCEDURO aroko(i,j: entjera);
      VAR lab: reela;
      STARTO lab:=v[i]; v[i]:=v[j]; v[j]:=lab;
      FINO;

{Ekzempla voko:}     rapid(0,99,kreske,aroko);


Paskala realigo de stako

   KONST stakAlto=1000; {maksimuma nombro de stakigeblaj elementoj}
   TIPO  T=reela;       {stakigotaj datumoj}
   VAR   pinto: entjera;
         stako: TABELO [1..stakAlto] EL T;

   PROCEDURO surstakigu(x: T);
      STARTO
         SE pinto<=stakAlto TIAM STARTO
            stako[pinto]:=x; pinto:=pinto+1;
         FINO ALIE eraro('surstakigo sur plenan stakon');
      FINO;

   PROCEDURO elstakigu(VAR y: T);
      STARTO
         SE pinto>1 TIAM STARTO pinto:=pinto-1; y:=stako[pinto] FINO
         ALIE eraro('elstakigo el malplena stako');
      FINO;

STARTO        {de la programo; la komencvalorizo:}
   pinto:=1;  { ... }


Solvo de problemo pri la Nederlanda standardo

   
VAR ruĝo, blanko, bluo: numero;
STARTO ruĝo:=1; blanko:=n; bluo:=n;
  DUM blanko>=ruĝo FARU
    KAZO kia(blanko) EL
      ruĝa:   STARTO permutu(blanko,ruĝo); ruĝo:=ruĝo+1 FINO;
      blanka: blanko:=blanko-1;
      blua:   STARTO permutu(blanko,bluo);
                     blanko:=ant(blanko); bluo:=ant(bluo);
              FINO
    FINO
FINO.

 +---+----+----+---+----+--+-----+-----+-----+----+-----+----+
 |ru | ru | ru |???????????| bla | bla | bla |blu | blu | blu|
 +---+----+----+---+----+--+-----+-----+-----+----+-----+----+
                ^ru       ^bla            ^blu


[Indekso][Instrukcio]