Πεδίο Εφαρμογής Μεταβλητής (Scope of Variable)

Πεδίο Εφαρμογής Μεταβλητής (Scope of Variable)

Σε αυτό το άρθρο θα δούμε που μπορούμε να ορίσουμε μια μεταβλητή (Τμήμα Ορισμού Μεταβλητών) και που μπορούμε να τη χρησιμοποιήσουμε (Πεδίο Εφαρμογής Μεταβλητής).

Τμήμα Ορισμού Μεταβλητών

Στην Pascal οι μεταβλητές ορίζονται μόνο μέσα σε κάποιο τμήμα ορισμού μεταβλητών

Υπάρχουν 2 είδη τμήματων ορισμού μεταβλητών:

  • τμήμα ορισμού μεταβλητών του προγράμματος
    Βρίσκεται στην αρχή του προγράμματος μετά την εντολή “program ονομα_προγράμματος;” και πριν απο το το κύριο “begin end.”, το μοναδικό που τελειώνει με τελεία “.”. Αυτό το τμήμα του προγράμματος είναι μοναδικό.
  • τμήμα ορισμού μεταβλητών μεθόδου
    Με τον όρο μέθοδο εννοούμε συνάρτηση ή διαδικασία. Κάθε μέθοδος μπορεί να έχει ένα τμήμα ορισμού μεταβλητών μετά τον τίτλο της και πριν από το κύριό της μέρος.

Τα τμήματα ορισμού μεταβλητών είναι προαιρετικά. Μπορεί να κάνει compile ένα πρόγραμμα που δεν έχει ορισμένες μεταβλητές.

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

Πεδίο Εφαρμογής Μεταβλητής

Το τμήμα του προγράμματος στο οποίο αναφέρεται μια μεταβλητή (δηλαδή στο οποίο γίνεται κατανοητή απο τον μεταγλωττιστή) λέγεται πεδίο εφαρμογής της μεταβλητής (scope of variable).
Οι μεταβλητές που ορίζονται στο τμήμα ορισμού μεταβλητών του κυρίου προγράμματος ονομάζονται global (παγκόσμιες, καθολικές) και μπορούμε να αναφερθούμε σε αυτές ΚΑΙ από το κύριο μέρος του προγράμματος(Begin End.) ΚΑΙ από το κύριο μέρος ΟΠΟΙΟΥΔΗΠΟΤΕ τμήματος προγράμματος (Begin End;). Δηλαδή το πεδίο εφαρμογής τους είναι ΟΛΟ το πρόγραμμα.
Όλες οι μεταβλητές που ορίζονται σε μεθόδους λέγονται τοπικές γι’ αυτή τη μέθοδο και ΔΕΝ μπορούμε να αναφερθούμε σε αυτές σε κάποιο σημείο του κώδικα έξω απο αυτή τη μέθοδο. Το πεδίο εφαρμογής τους είναι ΜΟΝΟ αυτή η μέθοδος (υποπρόγραμμα).

Δηλαδή αν έχουμε ορίσει μια μεταβλητή σε μια συνάρτηση και γράψουμε το αναγνωριστικό της στο κύριο μέρος μιας άλλης συνάρτησης, είτε θα κάνουμε compiler error (Error 3 : "Unknown identifier".), είτε θα αναφέρθουμε (χωρίς να το θέλουμε) σε άλλη μεταβλητή που είναι ορισμένη στη 2η συνάρτηση και τυχαίνει να έχει το ίδιο όνομα. Το φαινόμενο που παρατηρείται στη 2η περίπτωση λέγεται επισκίαση (shadowing). Δεν είναι λάθος και μας επιτρέπει να χρησιμοποιούμε το ίδιο αναγνωριστικό για μεταβλητές που εφαρμόζονται σε διαφορετικά πεδία.

Παράδειγμα:

Program local_variables;
Var
    num : Byte;
Procedure factor(value : Byte);
Var
    factorial : Real;
    count : Byte;
Begin
    factorial := 1.0;
    For count := 1 To value Do
        factorial := factorial * count;
        Write('Το παραγοντικό του ', value,' είναι : ' );
        Writeln(factorial);
End; { Τέλος της διαδικασίας Factor }
Begin { Κύριο πρόγραμμα }
    Write('Δώστε έναν αριθμό μικρότερο του 34 : ');
    Readln(num);
    Factor(num);
End. { Τέλος του προγράμματος }

Στο παραπάνω πρόγραμμα:

  • Το num είναι καθολική μεταβλητή
  • Τα factrorial και count είναι τοπικές μεταβλητές της διαδικασίας factor.
  • Το value είναι παράμετρος της διαδικασίας factor άρα και τοπική μεταβλητή της.

Απάντηση

Αυτός ο ιστότοπος χρησιμοποιεί το Akismet για να μειώσει τα ανεπιθύμητα σχόλια. Μάθετε πώς υφίστανται επεξεργασία τα δεδομένα των σχολίων σας.