DataStructures: Parameters-Theory

Πραγματικές και Τυπικές Παράμετροι

Οι μεταβλητές που υπάρχουν στη λίστα των παραμέτρων σε μία εντολή κλήσης διαδικασίας ή συνάρτησης ονομάζονται πραγματικές παράμετροι.

  1. ΠΡΟΓΡΑΜΜΑ ΠΑΡΑΔΕΙΓΜΑ
  2. ΜΕΤΑΒΛΗΤΕΣ
  3.   ΠΡΑΓΜΑΤΙΚΕΣ: Α, Β, Γ, ΜΙΚΡΗ, ΜΕΓΑΛΗ
  4. ΑΡΧΗ
  5.   ΔΙΑΒΑΣΕ Α, Β, Γ
  6.   ΜΙΚΡΗ <- ΕΛΑΧΙΣΤΟ(Α, Β)
  7.   ΓΡΑΨΕ "ΜΙΚΡΟΤΕΡΗ ΜΕΤΑΞΥ ΤΩΝ ", Α, Β, " ΕΙΝΑΙ Η ΤΙΜΗ ", ΜΙΚΡΗ
  8.   ΚΑΛΕΣΕ ΜΙΝ_ΜΑΧ(Α, Β, Γ, ΜΙΚΡΗ, ΜΕΓΑΛΗ)
  9.   ΓΡΑΨΕ "ΜΕΤΑΞΥ ΤΩΝ ΤΙΜΩΝ ", Α, Β, Γ, " Η ΜΙΚΡΟΤΕΡΗ ΕΙΝΑΙ Η ", ΜΙΚΡΗ, " ΚΑΙ Η ΜΕΓΑΛΥΤΕΡΗ ", ΜΕΓΑΛΗ
  10. ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
  11.  
  12. ΣΥΝΑΡΤΗΣΗ ΕΛΑΧΙΣΤΟ(Χ, Υ): ΠΡΑΓΜΑΤΙΚΗ
  13. ΜΕΤΑΒΛΗΤΕΣ
  14.   ΠΡΑΓΜΑΤΙΚΕΣ: Χ, Υ
  15. ΑΡΧΗ
  16.   ΑΝ Χ < Υ ΤΟΤΕ
  17.     ΕΛΑΧΙΣΤΟ <- Χ
  18.   ΑΛΛΙΩΣ
  19.     ΕΛΑΧΙΣΤΟ <- Υ
  20.   ΤΕΛΟΣ_ΑΝ
  21. ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
  22.  
  23. ΔΙΑΔΙΚΑΣΙΑ ΜΙΝ_ΜΑΧ(Χ, Υ, Ζ, ΜΙΝ, ΜΑΧ)
  24. ΜΕΤΑΒΛΗΤΕΣ
  25.   ΠΡΑΓΜΑΤΙΚΕΣ: Χ, Υ, Ζ, ΜΙΝ, ΜΑΧ
  26. ΑΡΧΗ
  27.   ΜΙΝ <- Χ
  28.   ΜΑΧ <- Υ
  29.   ΑΝ Υ < ΜΙΝ ΤΟΤΕ
  30.     ΜΙΝ <- Υ
  31.   ΤΕΛΟΣ_ΑΝ
  32.   ΑΝ Ζ < ΜΙΝ ΤΟΤΕ
  33.     ΜΙΝ <- Ζ
  34.   ΤΕΛΟΣ_ΑΝ
  35.   ΑΝ Υ > ΜΑΧ ΤΟΤΕ
  36.     ΜΑΧ <- Υ
  37.   ΤΕΛΟΣ_ΑΝ
  38.   ΑΝ Ζ > ΜΙΝ ΤΟΤΕ
  39.     ΜΑΧ <- Ζ
  40.   ΤΕΛΟΣ_ΑΝ
  41. ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Στο παραπάνω παράδειγμα πραγματικές είναι οι μεταβλητές Α, Β, Γ, ΜΙΚΡΗ και ΜΕΓΑΛΗ που δίνονται ως παράμετροι στη συνάρτηση (γραμμή 6) και στη διαδικασία (γραμμή 8).

Οι μεταβλητές που βρίσκονται στη λίστα παραμέτρων της δήλωσης μίας συνάρτησης ή μιας διαδικασίας, ονομάζονται τυπικές παράμετροι. Στη γραμμή 12 βλέπουμε τις τυπικές παράμετρους Χ, Υ της συνάρτησης και στη γραμμή 23 της διαδικασίας.

Προσέξτε εδώ ότι οι μεταβλητές Χ, Υ υπάρχουν και στη συνάρτηση και στη διαδικασία. Δεν έχουν όμως καμία σχέση μεταξύ τους. Αυτές οι μεταβλητές είναι γνωστές μόνο στο πρόγραμμα ή το υποπρόγραμμα στο οποίο δηλώνονται. Οι μεταβλητές αυτές ονομάζονται τοπικές. Στη ΓΛΩΣΣΑ, όπως περιγράφεται στο βιβλίο της ΑΕΠΠ της Γ' Γενικού Λυκείου συναντάμε μόνο τοπικές μεταβλητές. Σε άλλες γλώσσες προγραμματισμού υπάρχουν και οι καθολικές μεταβλητές.

Κλήση κατ' Αναφορά

Όταν η κλήση συνάρτησης ή διαδικασίας γίνεται κατ' αξία, το καλούμενο υποπρόγραμμα παίρνει ένα αντίγραφο των πραγματικών παραμέτρων σε προσωρινές μεταβλητές. Δεν, έχει, λοιπόν άμεση πρόσβαση στις πραγματικές παραμέτρους αλλά σε ένα τοπικό αντίγραφό τους. Αποτέλεσμα της κλήσης κατ' αναφορά είναι ότι τυχόν μεταβολές στις τυπικές παραμέτρους δε θα περάσουν πίσω στο πρόγραμμα που έκανε την κλήση.

Στην περίπτωση της ΓΛΩΣΣΑΣ αυτό θα είχε συνέπεια ότι οι διαδικασίες δε θα μπορούσαν να επιστρέψουν τιμή στο πρόγραμμα όπου έγινε η κλήση τους.

Παράδειγμα: Η διαδικασία ΜΙΝ_ΜΑΧ

  1. ΔΙΑΔΙΚΑΣΙΑ ΜΙΝ_ΜΑΧ(Χ, Υ, Ζ, ΜΙΝ, ΜΑΧ)
  2. ΜΕΤΑΒΛΗΤΕΣ
  3.   ΠΡΑΓΜΑΤΙΚΕΣ: Χ, Υ, Ζ, ΜΙΝ, ΜΑΧ
  4. ΑΡΧΗ
  5.   ΜΙΝ <- Χ
  6.   ΜΑΧ <- Υ
  7.   ΑΝ Υ < ΜΙΝ ΤΟΤΕ
  8.     ΜΙΝ <- Υ
  9.   ΤΕΛΟΣ_ΑΝ
  10.   ΑΝ Ζ < ΜΙΝ ΤΟΤΕ
  11.     ΜΙΝ <- Ζ
  12.   ΤΕΛΟΣ_ΑΝ
  13.   ΑΝ Υ > ΜΑΧ ΤΟΤΕ
  14.     ΜΑΧ <- Υ
  15.   ΤΕΛΟΣ_ΑΝ
  16.   ΑΝ Ζ > ΜΙΝ ΤΟΤΕ
  17.     ΜΑΧ <- Ζ
  18.   ΤΕΛΟΣ_ΑΝ
  19. ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

Η κλήση της διαδικασίας είναι:

ΚΑΛΕΣΕ ΜΙΝ_ΜΑΧ(Α, Β, Γ, ΜΙΚΡΗ, ΜΕΓΑΛΗ)

Οι μεταβλητές Χ, Υ, Ζ, ΜΙΝ και MAX θα έχουν αντίγραφο των τιμών των μεταβλητών Α, Β, Γ, ΜΙΚΡΗ και ΜΕΓΑΛΗ, αντίστοιχα, κατά τη στιγμή της κλήσης. Οποιαδήποτε αλλαγη γίνει στις μεταβλητές αυτές, όπως στις γραμμές 5, 6, 8, 14 και 17 δε θα έχουν επίδραση στις τιμές των μεταβλητών Α, Β, Γ, ΜΙΚΡΗ και ΜΕΓΑΛΗ. Άρα, μετά την κλήση, οι μεταβλητές ΜΙΚΡΗ και ΜΕΓΑΛΗ θα έχουν την τιμή που είχαν και πριν την κλήση.

Στις περισσότερες σύγχρονες γλώσσες προγραμματισμού η κλήση υποπρογραμμάτων γίνεται με πέρασμα παραμέτρων κατ' αξία. Αυτό, γενικά, είναι πλεονέκτημα διότι προστατεύει τις μεταβλητές από ακούσιες αλλαγές.

Όταν πρέπει το υποπρόγραμμα να έχει άμεση πρόσβαση στις πραγματικές παραμέτρους, τότε γίνεται ειδική δήλωση στο υποπρόγραμμα σε συγκεκριμένες παραμέτρους της λίστας παραμέτρων και για εκείνες γίνεται κλήση κατ' αναφορά.

Κλήση κατ' Αναφορά

Στην κλήση κατ' αναφορά το καλούμενο υποπρόγραμμα έχει άμεση πρόσβαση στις πραγματικές παραμέτρους. Αυτό σημαίνει ότι οποιαδήποτε αλλαγή γίνει σε τυπική παραμέτρο του υποπρογράμματος περνάει και στην αντίστοιχη πραγματική παράμετρο του προγράμματος που έκανε την κλήση.

Αυτή είναι η περίπτωση που συναντάμε στη ΓΛΩΣΣΑ.

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

Page last modified on 13-02-2008 (18:54)