![[Indekso]](bildoj/indekso.gif)
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 } |
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);
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; { ... }
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]](bildoj/indekso.gif)
![[Instrukcio]](bildoj/kovrilo.gif)