Malloka variablo

El Vikipedio, la libera enciklopedio
Salti al navigilo Salti al serĉilo

En programlingvoj, malloka variablo estas variablo deklarita ekster ĉiu subprogramoklaso, variablo kies regiono estas la tuta komputila programo.

Mallokajn variablojn oni povas uzi anstataŭ parametrojn de subprogramoj, por provizi al tiuj argumentojn kaj ricevi de ili rezultojn. Tio estas malaprobata praktiko, kiu malklarigas la programon.

Pli pravigebla estas uzado de mallokaj variabloj en programpartoj kiuj malhavas malimplicajn vokojn, kiaj estas signaltraktiloj aŭ plenumfadenoj.

Ekzemplo[redakti | redakti fonton]

Jen estas ekzempla programo en esperantigita Paskala pseŭdokodo.

   La programo manipulas stakon (inversvican memoron); la variabloj Stako kaj pinto estas mallokaj kaj kune manipulataj de la antingaj proceduroj kaj funkcioj. Male, la «aplika» proceduro TienReen entenas lokan variablon i.

programo P;
 konst stakkapacito = 100;
 tipo datumo = 0 .. MaksEnt;
 var Stako : tabelo [1 .. stakkapacito] el datumo; {malloka}
     pinto : 0 .. stakkapacito; {pinto estas ankoraŭ unu malloka variablo}
 proceduro preparuStakon; starto pinto := 0 fino;
 funkcio malplenas : bulea; starto malplenas := (pinto = 0) fino;
 funkcio troo: bulea; starto troo := (pinto+1 = stakkapacito) fino;
 funkcio elstakigu : entjera;
      starto
         se malplenas tiam elstakigu := -1
         alie starto
            elstakigu := Stako[pinto];
            pinto := pinto - 1; 
         fino;
      fino;
 proceduro surstakigu(d : datumo);
   starto
     se ne troo tiam starto
          pinto := pinto + 1;
          Stako[pinto] := d;
     fino;
   fino;
 proceduro TienReen; {ĉi tiu estas proceduro kiu "aplikas" la ĉi-suprajn}
   var i: entjera;   {i estas loka en TienReen}
   starto
      por i := 1 supre 7 faru surstakigu(i);
      por i := 1 supre 7 faru skribu(elstakigu:2);
      skribuLin;
   fino;
starto {de la programo}
     preparuStakon;
     TienReen;
fino.

(La korpo de la programo entenas vokon de la proceduro TienReen, kiu unue surstakigas la vicon de 1 2 ... 7 kaj poste deprenas ilin — en la inversa ordo — kaj printas 7 6 5 4 3 2 1.)

Vidu ankaŭ[redakti | redakti fonton]