Δεδομένου ότι οι υπολογιστές έχουν γίνει μια τεράστια πτυχή της ζωής μας τώρα και, όπως όλοι γνωρίζουμε, μας έχουν υποδουλώσει, δεν βλάπτει ποτέ να γνωρίζουμε μερικές από τις λεπτομέρειες που μας βοηθούν σε καθημερινή βάση.
Για να εμβαθύνουμε σε ένα θέμα που είναι αρκετά τεχνικό και βαθύ, θα πρέπει να ρίξουμε μια ματιά στην έννοια των μεταβλητών και τη διαφορά μεταξύ των τύπων τους - τοπικό και γενικό.
Βασικές τακτικές
- Οι τοπικές μεταβλητές υπάρχουν σε μια συγκεκριμένη συνάρτηση, περιορίζοντας το εύρος και την προσβασιμότητά τους μόνο σε αυτήν τη συνάρτηση.
- Οι καθολικές μεταβλητές είναι προσβάσιμες σε όλο το πρόγραμμα, επιτρέποντας την κοινή χρήση δεδομένων μεταξύ πολλαπλών λειτουργιών.
- Η χρήση τοπικών μεταβλητών μπορεί να βελτιώσει την αναγνωσιμότητα και τη συντηρησιμότητα του κώδικα, ενώ οι καθολικές μεταβλητές θα πρέπει να χρησιμοποιούνται με φειδώ για την αποφυγή πιθανών συγκρούσεων.
Τοπικές έναντι καθολικών μεταβλητών
Μια τοπική μεταβλητή ορίζεται μέσα σε μια συνάρτηση και μπορεί να προσπελαστεί μόνο εντός αυτής της συνάρτησης. Εξαφανίζεται μετά την εκτέλεση της συνάρτησης. Μια καθολική μεταβλητή ορίζεται εκτός οποιασδήποτε συνάρτησης και μπορεί να προσπελαστεί από οποιαδήποτε συνάρτηση του προγράμματος
Μια τοπική μεταβλητή συμβαίνει να είναι ένα είδος μεταβλητής. Δηλώνεται μέσα στη συνάρτηση και η διάρκεια ζωής της κυμαίνεται από την εκτέλεσή της έως τον τερματισμό της.
Το πεδίο εφαρμογής του περιορίζεται επίσης στη λειτουργία στην οποία έχει δηλωθεί. Μπορεί να αποθηκεύσει την "αξία σκουπιδιών" εάν δεν είναι αρχικοποιημένη.
Από την άλλη πλευρά, μια καθολική μεταβλητή είναι επίσης ένας τύπος μεταβλητής. Χαρακτηρίζεται από τη δήλωση εκτός συνάρτησης.
Δημιουργείται ακόμη πριν ξεκινά η εκτέλεση του προγράμματος. όμως λήγει με τη λήξη του προγράμματος. Εάν είναι μη αρχικοποιημένο, τότε αποθηκεύεται μηδέν ως προεπιλογή.
Συγκριτικός πίνακας
Παράμετροι σύγκρισης | Τοπικές μεταβλητές | Καθολικές μεταβλητές |
---|---|---|
Κοινή χρήση δεδομένων | Αυτό είναι αδύνατο εδώ, καθώς μόνο μία συνάρτηση μπορεί να έχει πρόσβαση στα δεδομένα. | Καθώς πολλές λειτουργίες έχουν πρόσβαση σε αυτό, αυτή η δυνατότητα είναι δυνατή |
Παράμετρος | Η μετάβαση των παραμέτρων στην τιμή πρόσβασης είναι άκρως απαραίτητη | Η μετάδοση των παραμέτρων δεν είναι απολύτως απαραίτητη, καθώς η τιμή είναι προσβάσιμη σε όλο το πρόγραμμα. |
τροποποιήσεις | Εάν η τιμή τροποποιηθεί σε μία από τις συναρτήσεις, τότε τέτοιες τροποποιήσεις δεν αντικατοπτρίζονται στις άλλες συναρτήσεις. | Εάν η τιμή τροποποιηθεί σε μία από τις συναρτήσεις, τότε τέτοιες τροποποιήσεις αντικατοπτρίζονται σε όλο το πρόγραμμα |
Προσβασιμότητα | Αυτό είναι προσβάσιμο μέσω των δηλώσεων που περιέχονται σε μια συνάρτηση. | Αυτό είναι προσβάσιμο μέσω οποιασδήποτε δήλωσης που υπάρχει στο πρόγραμμα. |
Αποθηκευτικός χώρος | Αυτό αποθηκεύεται σε μια απροσδιόριστη τοποθεσία, εκτός εάν έχει καθοριστεί. | Αυτό αποθηκεύεται σε μια καθορισμένη τοποθεσία. |
Τι είναι οι Τοπικές Μεταβλητές;
Αυτό είναι ένα είδος μεταβλητής. Τα χαρακτηριστικά του είναι ότι δηλώνεται εντός ή εντός μιας συγκεκριμένης συνάρτησης και η τιμή της μπορεί να προσπελαστεί μόνο από μια τέτοια δήλωση που έχει ενσωματωθεί στη συνάρτηση.
Η διάρκεια ζωής του αρχίζει όταν ξεκινά η εκτέλεση του προγράμματος και τελειώνει με τον τερματισμό του.
Μια άλλη πτυχή είναι ότι το πεδίο εφαρμογής του περιορίζεται επίσης στη λειτουργία στην οποία έχει δηλωθεί. Μπορεί να αποθηκεύσει την "αξία σκουπιδιών" εάν δεν είναι αρχικοποιημένη.
Για αυτό, η κοινή χρήση δεδομένων δεν είναι δυνατή και αυτό συμβαίνει επειδή η πρόσβαση στα δεδομένα είναι δυνατή μόνο από μία λειτουργία. Επίσης, η μετάβαση των παραμέτρων στην τιμή πρόσβασης είναι άκρως απαραίτητη.
Ένας άλλος παράγοντας που πρέπει να σημειωθεί είναι ότι εάν η τιμή τροποποιηθεί σε ένα από τα λειτουργίες, τότε τέτοιες τροποποιήσεις δεν αντικατοπτρίζονται στις άλλες συναρτήσεις.
Αυτό είναι προσβάσιμο μέσω των δηλώσεων που περιέχονται σε μια συνάρτηση.
Έχει μερικά πλεονεκτήματα, όπως η εγγύηση ότι οι τιμές θα παραμείνουν άθικτες ακόμα και όταν η εργασία εκτελείται. Καθώς κάθε εργασία δημιουργεί την τοπική της μεταβλητή, τα αποτελέσματα θα εξακολουθούν να είναι προβλέψιμα.
Διαγράφονται με την ολοκλήρωση οποιασδήποτε λειτουργίας, απελευθερώνοντας έτσι τον προηγουμένως κατειλημμένο χώρο μνήμης.
Τι είναι οι καθολικές μεταβλητές;
Αυτό, επίσης, είναι ένα είδος μεταβλητής. Χαρακτηρίζεται από τη δήλωση εκτός συνάρτησης. Δημιουργείται ακόμη και πριν ξεκινήσει η εκτέλεση του προγράμματος. όμως λήγει με τη λήξη του προγράμματος.
Εάν δεν έχει αρχικοποιηθεί, τότε αποθηκεύει το μηδέν ως προεπιλογή. Η κοινή χρήση δεδομένων είναι δυνατή εδώ επειδή πολλές λειτουργίες έχουν πρόσβαση σε αυτό. Αυτή η δυνατότητα είναι δυνατή.
Η μετάβαση των παραμέτρων δεν είναι άκρως αναγκαία, καθώς η τιμή μπορεί να προσπελαστεί πλήρως χάρη στις μεταβλητές που δηλώνονται εκτός των συναρτήσεων.
Εάν η τιμή τροποποιηθεί σε μία από τις συναρτήσεις, τότε τέτοιες τροποποιήσεις αντικατοπτρίζονται σε όλο το πρόγραμμα. Αυτό είναι προσβάσιμο μέσω οποιασδήποτε δήλωσης που υπάρχει στο πρόγραμμα.
Έχει ορισμένα πλεονεκτήματα, όπως η πρόσβαση σε αυτό από όλες τις λειτουργίες του προγράμματος. Είναι ζωτικής σημασίας για την αποθήκευση «σταθερών» και βοηθά στη διατήρηση της συνέπειας.
Αυτό είναι πιο χρήσιμο όταν πολλές λειτουργίες έχουν πρόσβαση στα ίδια δεδομένα. Τα μειονεκτήματά του είναι ότι αρκετές μεταβλητές παραμένουν στη μνήμη μέχρι την εκτέλεση του προγράμματος, κάτι που με τη σειρά του μπορεί να οδηγήσει στο πρόβλημα «Εκτός μνήμης».
Επιπλέον, μερικές φορές τα αποτελέσματα μπορεί να είναι αναξιόπιστα και απρόβλεπτα καθώς οποιαδήποτε συνάρτηση μπορεί να αλλάξει ή να αλλάξει τα δεδομένα.
Κύριες διαφορές μεταξύ τοπικών και καθολικών μεταβλητών
- Ενώ οι Τοπικές Μεταβλητές έχουν αποκτήσει το όνομά τους με βάση το πώς εκτελούν, δηλαδή είναι εσωτερικές συναρτήσεις, οι Καθολικές Μεταβλητές επίσης έχουν αποκτήσει το όνομά τους από το γεγονός ότι είναι εξωτερικές συναρτήσεις.
- Η διάρκεια ζωής της μεταβλητής για τις Τοπικές Μεταβλητές αρχίζει με την εκτέλεση του προγράμματος και τελειώνει με τον τερματισμό του. Αντίθετα, η διάρκεια ζωής της μεταβλητής στο Global Variable ξεκινά ακόμα και πριν από την εκτέλεση του προγράμματος. Ωστόσο, τελειώνει με τη λήξη του.
- Οι τοπικές μεταβλητές έχουν την αποθήκευσή τους σε απροσδιόριστες στοίβες εάν δεν έχουν καθοριστεί. Από την άλλη πλευρά, η αποθήκευση των καθολικών μεταβλητών βρίσκεται σε μια σταθερή τοποθεσία.
- Όπου τα αποτελέσματα που παράγονται στις Τοπικές μεταβλητές δεν έχουν περιθώριο αλλοίωσης, τα αποτελέσματα μπορεί να είναι αναξιόπιστα και απρόβλεπτα, καθώς τα δεδομένα μπορούν να αλλάξουν ή να τροποποιηθούν από οποιαδήποτε συνάρτηση στην περίπτωση των Καθολικών Μεταβλητών.
- Ενώ η κοινή χρήση δεδομένων δεν μπορεί να είναι δυνατή στην περίπτωση των Τοπικών Μεταβλητών, συμβαίνει ακριβώς το αντίθετο στην περίπτωση των Καθολικών Μεταβλητών.
- https://onlinelibrary.wiley.com/doi/full/10.1111/cogs.12831
- https://www.sciencedirect.com/science/article/pii/S1878029615001905
Τελευταία ενημέρωση: 11 Ιουνίου 2023
Η Sandeep Bhandari είναι κάτοχος πτυχίου Μηχανικού στους Υπολογιστές από το Πανεπιστήμιο Thapar (2006). Διαθέτει 20ετή εμπειρία στον τομέα της τεχνολογίας. Έχει έντονο ενδιαφέρον σε διάφορους τεχνικούς τομείς, συμπεριλαμβανομένων συστημάτων βάσεων δεδομένων, δικτύων υπολογιστών και προγραμματισμού. Μπορείτε να διαβάσετε περισσότερα για αυτόν στο δικό του βιο σελίδα.
Το περιεχόμενο της ανάρτησης προσφέρει μια βαθιά, τεχνική εικόνα για τοπικές και καθολικές μεταβλητές. Είναι μια συναρπαστική ανάγνωση για όσους θέλουν να διευρύνουν τις γνώσεις τους στον προγραμματισμό.
Απολύτως, Astevens. Η εξήγηση των τοπικών και καθολικών μεταβλητών εδώ είναι τόσο διαφωτιστική όσο και ελκυστική.
Ένα πραγματικά διαφωτιστικό κομμάτι που αναλύει σχολαστικά τις αποχρώσεις των τοπικών και παγκόσμιων μεταβλητών. Είναι ένας εξαιρετικός οδηγός για τους λάτρεις του προγραμματισμού.
Είναι προφανές ότι ο συγγραφέας έχει βαθιά κατανόηση του θέματος. Η ακρίβεια και η σαφήνεια των συγκρίσεων μεταξύ τοπικών και παγκόσμιων μεταβλητών καθιστούν αυτήν την ανάρτηση μια ξεχωριστή πηγή για την εκπαίδευση προγραμματισμού.
Δεν θα μπορούσα να το πω καλύτερα, Μπέικερ Μπάρι. Η σχολαστική ανάλυση σύνθετων εννοιών εδώ είναι πραγματικά αξιέπαινη.
Η ανάρτηση είναι σαφής και εμπεριστατωμένη, παρέχοντας μια ολοκληρωμένη κατανόηση των τοπικών και καθολικών μεταβλητών. Είναι μια τέλεια πηγή για όσους εμβαθύνουν στον προγραμματισμό.
Οπωσδήποτε, Τόμας Άρθουρ. Αυτή η λεπτομερής σύγκριση ρίχνει φως σε κρίσιμες έννοιες προγραμματισμού από τις οποίες μπορούν να επωφεληθούν πολλοί.
Δεν θα μπορούσα να συμφωνήσω περισσότερο. Αυτό είναι ένα εξαιρετικό διάβασμα για όποιον ενδιαφέρεται για προγραμματισμό και κωδικοποίηση.
Αυτό το άρθρο είναι μια ανεκτίμητη πηγή πληροφοριών τόσο για τους λάτρεις του προγραμματισμού όσο και για τους επαγγελματίες. Η κατανομή των τοπικών και καθολικών μεταβλητών είναι εξαιρετικά λεπτομερής και διαφωτιστική.
Συμφωνώ, Φρεντ Χιουζ. Η εις βάθος εξερεύνηση αυτών των μεταβλητών αποτελεί απόδειξη της τεχνογνωσίας του συγγραφέα στον τομέα.
Η ανάρτηση παρέχει μια εξαιρετικά λεπτομερή και περιεκτική σύγκριση μεταξύ τοπικών και καθολικών μεταβλητών. Είναι μια εξαιρετική εκπαιδευτική πηγή για μαθητές προγραμματισμού και για ειδικούς.
Συμφωνώ ολόψυχα, Wprice. Η πληρότητα της ανάλυσης ανυψώνει αυτό το κομμάτι σε μια υποδειγματική πηγή για την κατανόηση μεταβλητών στον προγραμματισμό.
Απολύτως, Wprice. Αυτή είναι μια φανταστική συμβολή στη λογοτεχνία προγραμματισμού.
Ένα απίστευτα κατατοπιστικό άρθρο που παρέχει μια βαθιά εικόνα για την έννοια των μεταβλητών και τη διαφορά μεταξύ των τύπων τους. Αυτή είναι μια πολύτιμη συμβολή στον τομέα της κωδικοποίησης και του προγραμματισμού.
Συμφωνώ μαζί σου, Daniel23. Η εξήγηση των τοπικών και καθολικών μεταβλητών είναι εξαιρετικά επεξεργασμένη και κατανοητή.
Το άρθρο είναι εντυπωσιακά περιεκτικό και καλά διατυπωμένο. Η κατανομή των τοπικών και καθολικών μεταβλητών παρουσιάζεται με αξιοσημείωτη σαφήνεια και λεπτομέρεια.
Συμμερίζομαι τα συναισθήματά σου, Grichardson. Η ενδελεχής εξέταση αυτών των μεταβλητών αποτελεί απόδειξη της εμπειρίας του συγγραφέα.