mehrfache Verwendbarkeit von Prozeduren
es wird in der Prozedur nur ein Wert abgefragt
—> aber z.B. zwei mal aufgerufen
—> begin
write(‘gib eine Zahl ein’)
readln(a);
end;
dafür muss dies aber auch im Hauptprogramm vereinbart werden
—> Variablen, für welche das alias steht müssen in Klammern hinter den Prozedurnamen geschrieben werden
Eingabe(Z);
Eingabe(N);
…
außerdem muss eine Werte- oder Variablenübergabe stattfinden
Variablenübergabe
man hinterlegt im Vereinbarungsteil im Prozedurkopf, dass die Prozedur eine Variable “von außen” mitgeteilt bekommt, welche dann für die in der Prozedur bereitgestellten Variable a verwendet wird
—> procedure Eingabe (VAR a: integer);
die globale Variable Z wird wird im Aufruf Eingabe(Z) an die Prozedur Eingabe übergeben
—> innerhalb der Prozedur erhält Z den Namen a
—> jede Veränderung von a ist gleichzeitig auch eine Veränderung von Z
ruft man z.B Eingabe(N) auf sind N und a temporär die selbe Variable
die globalen Variablen werden in dieser Prozedur verändert
die Datentypen müssen beim referenzieren übereinstimmen
begin
write(‘gib eine Zahl ein: ‘)
Werteübergabe
die Variablen müssen und dürfen keinesfalls verändert werden (z.B. bei der Ausgabe)
—> eine Ausgabe von Werten soll den Wert an sich nicht verändern
beim Vereinbaren der Prozedur in der Parameterliste das VAR weglassen
—> procedure Ausgabe (a,b: integer);
—> die beiden Variablen werden in der Prozedur Ausgabe lokal vereinbart und erhalten beim Aufruf der Prozedur die gleichen Werte, wie zu diesem Zeitpunkt die globalen Variablen haben (a und b sind also nicht die globalen Variablen bzw. deren Referenz, sondern sind neue Variablen —> Arbeitskopien der globalen Variablen)
Variablenübergabe + Werteübergabe
procedure addieren (a,b: integer; VAR s: integer);
—> a und b sind Arbeitskopien der global vereinbarten Summanden (werden nicht verändert)
—> s ist die Referenz der global vereinbarten Variable Summe (wird von s zu einer bestimmten Zahl —> wird verändert)
den Unterschied zwischen Variablenübergabe und Werteübergabe sieht man nur in der Vereinbarung der entsprechenden Prozedur
Beachte
wir verwenden nur dann Variablenübergabe, wenn wir tatsächlich die globale Variable verändern wollen/müssen
Sollten die globalen Variablen nicht verändert werden, verwenden wir IMMER Werteübergabe!!!
Last changed2 years ago