Die Webseiten der Fachschaft Informatik am ERG Saalfeld


globale und lokale Variable, aktuelle und formale Parameter

globale Variable
wir bezeichnen damit eine Variable, die im Hauptprogramm definiert wird. Auf diese kann im gesamten Programm zugegriffen werden.
Hinweis: in Perl wird das deutlich differenzierter gesehen als in anderen Sprachen. m.E. sind das für uns die globalen Variablen und die Package-Variablen.
lokale Variable
in Perl gibt es "my" und "local". Wir verwenden hier in der Schule nur "my". Diese kann in jedem Block definiert werden und gilt dann auch nur in diesem Block. Eine Subroutine ist aber auch ein Block. Wir betrachten und verwenden das hier in der Schule so: die lokale Variable wird in der Prozedur/Funktion definiert und steht auch nur dort zur Verfügung. Eine gleichnamige Variable im Hauptprogramm wird durch diese verdeckt.
aktueller Parameter
das ist ein Wert, der beim Aufruf der Prozedur/Funktion als Parameter übergeben wird.
formaler Parameter
das ist eine Variable, die mit einen aktuellen Parameter belegt wird. Bei Perl ist das immer ein Element der vordefinierten Liste @_ .
 

Am Beispiel des Programms "Gausssumme" sollen die in der Überschrift angegebenen Begriffe deutlich gemacht werden.

Programm

 use strict;
 use warnings;

 my $zahl1 = 40;                            # 1
 my $zahl2 = 100;                          # 2

 my $summe;                                 # 3

 $summe = &gauss_summe(10);        # 4
 print "Gausssumme von 10: ", $summe, "\n";

 $summe = &gauss_summe($zahl1);    # 5
 print "Gausssumme von $zahl1: ", $summe, "\n";

 $summe = &gauss_summe($zahl2);    # 6
 print "Gausssumme von $zahl2: ", $summe, "\n";

 ### Ende des Hauptprogramms ###

 sub gauss_summe {
   my $groesste_zahl = shift @_;     # 7
   my $summe = 0;                        # 8

   foreach my $summand ( 1 .. $groesste_zahl ) {
     $summe = $summe + $summand;
   }

   # nur zum Verdeutlichen des Zugriffs auf globale Variablen
   # print "\n", 'Zahl1: ', $zahl1, '  Zahl2: ', $zahl2, "\n";

   return $summe;
 }

__END__

 

Der Aufruf des Programms sah bei mir so aus:

 

Aufgaben

  1. Bringen Sie das Programm zum Laufen.
  2. Geben Sie bei #1, #2, #3, #7 und #8 an, ob es sich um eine globale oder eine lokale Variable handelt.
  3. Geben Sie bei #4, #5, #6 und #7 an, ob es sich um einen aktuellen oder einen formalen Parameter handelt.
  4. Um deutlich zu machen, dass man auch in der Funktion auf globale Variablen zugreifen kann, entfernen Sie in der Zeile über "return" das Kommentarzeichen. Testen Sie!
  5. Auf welche globale Variable könnte beim Aufruf von &gauss_summe nicht mehr zugegriffen werden? Begründen Sie!

 

zurück


© ERG Saalfeld   -   Hans-Dietrich Kirmse   17.05.2015