Mo Logo [Home] [Lexikon] [Aufgaben] [Tests] [Kurse] [Begleitmaterial] [Hinweise] [Mitwirkende] [Publikationen]

Mathematik-Online-Lexikon:

Globale und persistente Variablen


A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Übersicht

Definiert wird die folgende Funktion fa:
  function fa
  persistent PVAR
  global GVAR
  GVAR=GVAR+1;
  if isempty(PVAR)
    PVAR=1;
  else
    PVAR=PVAR+1;
  end
  fprintf('Funktion fa: PVAR=%d, GVAR=%d\n',PVAR,GVAR);   
Diese Funktion verwendet die persistente Variable PVAR und die globale Variable GVAR. Mit Hilfe der if-Bedingung wird auf den Fall reagiert, dass PVAR nach der ersten Deklaration eine leere Matrix ist. Bei GVAR wird davon ausgegangen, dass sie bereits als natürliche Zahl definiert wurde. Die Funktion erhöht beide Variablen um 1 und gibt dann die jeweiligen Werte aus.

Analog dazu wird eine zweite Funktion fb definiert, in der ebenfalls die persistente Variable PVAR und die globale Variable GVAR verwendet werden:

  function fb
  persistent PVAR
  global GVAR
  GVAR=GVAR+1;
  if isempty(PVAR)
    PVAR=1;
  else
    PVAR=PVAR+1;
  end
  fprintf('Funktion fb: PVAR=%d, GVAR=%d\n',PVAR,GVAR);   

Ausgabe eines Testlaufs:

  >> global GVAR
  >> GVAR=0;
  >> fa, fa, fb, fa, fb
  Funktion fa: PVAR=1, GVAR=1
  Funktion fa: PVAR=2, GVAR=2
  Funktion fb: PVAR=1, GVAR=3
  Funktion fa: PVAR=3, GVAR=4
  Funktion fb: PVAR=2, GVAR=5
Zunächst wird in der Befehlsumgebung die globale Variable GVAR deklariert und auf 0 gesetzt. Anschließend werden die Funktionen fa und fb mehrfach aufgerufen. Wie an der Ausgabe zu erkennen ist, kann der Wert der globalen Variablen sowohl in der Befehlsumgebung, als auch von beiden Funktionen geändert werden. Im Gegensatz dazu haben die persistenten Variablen (trotz gleicher Variablennamen) nur innerhalb der jeweiligen Funktion Gültigkeit. Somit gibt GVAR die Anzahl aller Funktionsaufrufe und PVAR die Anzahl der jeweiligen Funktionsaufrufe von fa und fb wieder.
(Autoren: Hörner/Wipper)

[Verweise]

  automatisch erstellt am 17.  6. 2009