[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 |
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=5Zunä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.
siehe auch:
automatisch erstellt am 17. 6. 2009 |