Το πρόβλημα των παραμέτρων

Το πρόγραμμα που ακολουθεί είναι κατάλληλο για τη μελέτη των παραμέτρων. Στη γλώσσα προγραμματισμού Pascal οι παράμετρες χρησιμοποιούνται για την επικοινωνία του κυρίως προγράμματος με τα υποπρογράμματα (ή και υποπρογραμμάτων μεταξύ τους). Από τα δύο είδη υποπρογραμμάτων που υποστηρίζει η γλώσσα, διαδικασίες (procedures) και συναρτήσεις (functions), στο παράδειγμά μας κάνουμε χρήση μόνον διαδικασίας.
Εντός του προγράμματος περιλαμβάνονται, υπό μορφή σχολίων, κάποιες παρατηρήσεις σχετικές με το πέρασμα των παραμέτρων κατά την κλήση υποπρογραμμάτων.

program TestSubs;

var
  Var_1: Boolean;
  Var_2: string;
  Var_3: Char;
  Var_4: Real;

procedure Subroutine( Param_1: Char; Param_2: Boolean; Param_3: Real;
                      Param_4, Param_5: Integer; var Param_6: string );
{
  α) Μετά το όνομα του υποπρογράμματος ακολουθεί
     η λίστα των τυπικών (formal) παραμέτρων
  β) Η αντιστοιχία τυπικών-πραγματικών παραμέτρων
     είναι ένα-προς-ένα. Αυτό σημαίνει πως θα πρέπει:
     · Να έχουν το ίδιο πλήθος
     · Τα ζευγάρια να είναι του ίδιου τύπου
  γ) Μετά τη δήλωση του τύπου της τελευταίας παραμέτρου,
     πριν την παρένθεση δεν βάζουμε ερωτηματικό (;) είναι
     συντακτικό λάθος
}
begin
  Writeln('Μέσα στο υποπρόγραμμα -- Αρχή');
  Writeln('Param_1 = ', Param_1);
  Writeln('Param_2 = ', Param_2);
  Writeln('Param_3 = ', Param_3:6:2);
  Writeln('Param_4 = ', Param_4);
  Writeln('Param_5 = ', Param_5);
  Writeln('Param_6 = ', Param_6);
  Readln();

  Param_1 := 'Z';
  Param_2 := FALSE;
  Param_3 := 18.5;
  Param_4 := 10;
  Param_5 := 20;
  Param_6 := 'COLD';

  Writeln('Μέσα στο υποπρόγραμμα -- Τέλος');
  Writeln('Param_1 = ', Param_1);
  Writeln('Param_2 = ', Param_2);
  Writeln('Param_3 = ', Param_3:6:2);
  Writeln('Param_4 = ', Param_4);
  Writeln('Param_5 = ', Param_5);
  Writeln('Param_6 = ', Param_6);
  Readln();
end;

begin
  Var_1 := TRUE;
  Var_2 := 'HOT';
  Var_3 := 'A';
  Var_4 := 9.5;

  Writeln('Πριν την κλήση του υποπρογράμματος');
  Writeln('Var_1 = ', Var_1);
  Writeln('Var_2 = ', Var_2);
  Writeln('Var_3 = ', Var_3);
  Writeln('Var_4 = ', Var_4:6:2);
  Readln();

{ Μετά το όνομα (κλήση) του υποπρογράμματος ακολουθεί
  η λίστα των πραγματικών (actual) παραμέτρων
  η οποία αντικαθιστά τη λίστα των τυπικών παραμέτρων }
  Subroutine( Var_3, { Char }
              Var_1, { Boolean }
              Var_4, { Real }
              12 mod 7, { Integer }
              10,
              Var_2 { μεταβλητή τύπου string }
                    { (!) Όταν η τυπική παράμετρος απαιτεί πέρασμα μεταβλητής
                          δεν μπορούμε να στείλουμε σταθερά } );

  Writeln('Μετά την κλήση του υποπρογράμματος');
  Writeln('Var_1 = ', Var_1);
  Writeln('Var_2 = ', Var_2);
  Writeln('Var_3 = ', Var_3);
  Writeln('Var_4 = ', Var_4:6:2);
  Readln();
end.

Ακολουθεί η έξοδος της εκτέλεσης του προγράμματος.

Πριν την κλήση του υποπρογράμματος
Var_1 = TRUE
Var_2 = HOT
Var_3 = A
Var_4 =   9.50

Μέσα στο υποπρόγραμμα -- Αρχή
Param_1 = A
Param_2 = TRUE
Param_3 =   9.50
Param_4 = 5
Param_5 = 10
Param_6 = HOT

Μέσα στο υποπρόγραμμα -- Τέλος
Param_1 = Z
Param_2 = FALSE
Param_3 =  18.50
Param_4 = 10
Param_5 = 20
Param_6 = COLD

Μετά την κλήση του υποπρογράμματος
Var_1 = TRUE
Var_2 = COLD
Var_3 = A
Var_4 =   9.50

Παρατηρήσεις:

  1. Τα ονόματα των μεταβλητών-παραμέτρων δεν παίζουν ρόλο, ο τύπος τους είναι αυτό που θα πρέπει να ταιριάζει.
  2. Στο πέρασμα παραμέτρου τιμής, η πραγματική παράμετρος μπορεί να είναι είτε μεταβλητή είτε σταθερά είτε έκφραση. Στο πέρασμα παραμέτρου μεταβλητής μόνον μεταβλητή.
Advertisements

Posted on 04/03/2012, in Γλώσσα Pascal, Δομημένος Προγραμματισμός and tagged , . Bookmark the permalink. Σχολιάστε.

Σχολιάστε

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s

Αρέσει σε %d bloggers: