Malloka variablo

En programlingvoj, malloka variablo estas variablo deklarita ekster ĉiu subprogramo aŭ klaso, 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 
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ŭ 
 Loka variablo 
 Neloka variablo 
 Statika variablo 

Kategorio: Programadaj konstruoj
Kategorio:Programlingvaj konceptoj
Kategorio:Variablo (programlingva)