Αρχική ΑΕΠΠ - Δομές Δεδομένων Λειτουργικά Συστήματα Δίκτυα Υπολογιστών ΙΙ Βάσεις Δεδομένων Παιδαγωγικά - Διδακτική
Μεταβλητή - Έκφραση Δομή Ακολουθίας Δομή Επιλογής Δομή Επανάληψης
Μονοδιάστατοι Δισδιάστατοι Πολυδιάστατοι Αναζήτηση Ταξινόμηση Στοίβα Ουρά
Συναρτήσεις Διαδικασίες Σχετικά με τις παράμετρους
Οι μεταβλητές που υπάρχουν στη λίστα των παραμέτρων σε μία εντολή κλήσης διαδικασίας ή συνάρτησης ονομάζονται πραγματικές παράμετροι.
Στο παραπάνω παράδειγμα πραγματικές είναι οι μεταβλητές Α, Β, Γ, ΜΙΚΡΗ
και ΜΕΓΑΛΗ
που δίνονται ως παράμετροι στη συνάρτηση (γραμμή 6) και στη διαδικασία (γραμμή 8).
Οι μεταβλητές που βρίσκονται στη λίστα παραμέτρων της δήλωσης μίας συνάρτησης ή μιας διαδικασίας, ονομάζονται τυπικές παράμετροι. Στη γραμμή 12 βλέπουμε τις τυπικές παράμετρους Χ, Υ
της συνάρτησης και στη γραμμή 23 της διαδικασίας.
Προσέξτε εδώ ότι οι μεταβλητές Χ, Υ
υπάρχουν και στη συνάρτηση και στη διαδικασία. Δεν έχουν όμως καμία σχέση μεταξύ τους. Αυτές οι μεταβλητές είναι γνωστές μόνο στο πρόγραμμα ή το υποπρόγραμμα στο οποίο δηλώνονται. Οι μεταβλητές αυτές ονομάζονται τοπικές. Στη ΓΛΩΣΣΑ, όπως περιγράφεται στο βιβλίο της ΑΕΠΠ της Γ' Γενικού Λυκείου συναντάμε μόνο τοπικές μεταβλητές. Σε άλλες γλώσσες προγραμματισμού υπάρχουν και οι καθολικές μεταβλητές.
Όταν η κλήση συνάρτησης ή διαδικασίας γίνεται κατ' αξία, το καλούμενο υποπρόγραμμα παίρνει ένα αντίγραφο των πραγματικών παραμέτρων σε προσωρινές μεταβλητές. Δεν, έχει, λοιπόν άμεση πρόσβαση στις πραγματικές παραμέτρους αλλά σε ένα τοπικό αντίγραφό τους. Αποτέλεσμα της κλήσης κατ' αναφορά είναι ότι τυχόν μεταβολές στις τυπικές παραμέτρους δε θα περάσουν πίσω στο πρόγραμμα που έκανε την κλήση.
Στην περίπτωση της ΓΛΩΣΣΑΣ αυτό θα είχε συνέπεια ότι οι διαδικασίες δε θα μπορούσαν να επιστρέψουν τιμή στο πρόγραμμα όπου έγινε η κλήση τους.
Παράδειγμα: Η διαδικασία ΜΙΝ_ΜΑΧ
Η κλήση της διαδικασίας είναι:
ΚΑΛΕΣΕ ΜΙΝ_ΜΑΧ(Α, Β, Γ, ΜΙΚΡΗ, ΜΕΓΑΛΗ)
Οι μεταβλητές Χ, Υ, Ζ, ΜΙΝ
και MAX
θα έχουν αντίγραφο των τιμών των μεταβλητών Α, Β, Γ, ΜΙΚΡΗ
και ΜΕΓΑΛΗ
, αντίστοιχα, κατά τη στιγμή της κλήσης. Οποιαδήποτε αλλαγη γίνει στις μεταβλητές αυτές, όπως στις γραμμές 5, 6, 8, 14 και 17 δε θα έχουν επίδραση στις τιμές των μεταβλητών Α, Β, Γ, ΜΙΚΡΗ
και ΜΕΓΑΛΗ
. Άρα, μετά την κλήση, οι μεταβλητές ΜΙΚΡΗ
και ΜΕΓΑΛΗ
θα έχουν την τιμή που είχαν και πριν την κλήση.
Στις περισσότερες σύγχρονες γλώσσες προγραμματισμού η κλήση υποπρογραμμάτων γίνεται με πέρασμα παραμέτρων κατ' αξία. Αυτό, γενικά, είναι πλεονέκτημα διότι προστατεύει τις μεταβλητές από ακούσιες αλλαγές.
Όταν πρέπει το υποπρόγραμμα να έχει άμεση πρόσβαση στις πραγματικές παραμέτρους, τότε γίνεται ειδική δήλωση στο υποπρόγραμμα σε συγκεκριμένες παραμέτρους της λίστας παραμέτρων και για εκείνες γίνεται κλήση κατ' αναφορά.
Στην κλήση κατ' αναφορά το καλούμενο υποπρόγραμμα έχει άμεση πρόσβαση στις πραγματικές παραμέτρους. Αυτό σημαίνει ότι οποιαδήποτε αλλαγή γίνει σε τυπική παραμέτρο του υποπρογράμματος περνάει και στην αντίστοιχη πραγματική παράμετρο του προγράμματος που έκανε την κλήση.
Αυτή είναι η περίπτωση που συναντάμε στη ΓΛΩΣΣΑ.
Copyright 2008 - Άρης Φεργάδης