[Powered by Google Translate] JOE MCCORMICK: Τώρα θα πάμε να μιλήσουμε για τις μεταβλητές.
Μεταβλητές στην επιστήμη των υπολογιστών είναι ένας τρόπος για να αποθηκεύσετε μια τιμή.
Τώρα, το τι και το πώς αποθηκεύουμε ότι
αξία δεν είναι πάρα πολύ σημαντικό.
Μπορούμε να έχουμε μια τιμή που είναι μια λέξη, που θα μπορούσε να
να αποθηκευτεί ως ένα string.
Ή θα μπορούσαμε να έχουμε κάτι που είναι ένας χαρακτήρας,
όπως το γράμμα a.
Και αυτό θα πρέπει να αποθηκεύονται ως char.
Θα μπορούσαμε να έχουμε έναν αριθμό, όπως ένα ή 12, αυτό θα ήταν
αποθηκεύονται ως έναν ακέραιο ή έναν int.
Στη συνέχεια, έχουμε διαφορετικά πράγματα, όπως ένα άρμα, το οποίο μπορεί να αποθηκεύσει
πράγματα όπως 1,01 ή 111,13.
Αυτές οι τιμές είναι πάντα ονομάζεται ευμετάβλητος.
Αυτό σημαίνει ότι αν έχουμε αποθηκευμένο το νούμερο ένα σε έναν ακέραιο αριθμό σε
η κορυφή ενός προγράμματος αργότερα, θα μπορούσε να αλλάξει τον αριθμό αυτό με
είναι τρεις ή επτά.
Τώρα, μια τοπική μεταβλητή είναι αυτό που θα συναντήσετε συνήθως,
κατά την εκτέλεση μιας λειτουργίας.
Ας πούμε ότι είστε στην κύρια λειτουργία σας.
Και θέλετε να δημιουργήσετε μια μεταβλητή που ονομάζεται num.
Και εμείς θα αποθηκεύσει έναν ακέραιο αριθμό σε αυτό.
Έτσι, θα μπορούσαμε να πούμε κάτι σαν int num = 3.
Τώρα, θα πάμε εκεί.
Έχετε μια τοπική μεταβλητή.
Τώρα, αυτή η μεταβλητή μπορεί να αλλάξει στη συνέχεια στην κύρια
λειτουργία, λέγοντας κάτι σαν num = 6 ή num = 7.
Αλλά μεταβλητή σας έχει κολλήσει εντός της
το πεδίο εφαρμογής της εν λόγω λειτουργία.
Και το πεδίο εφαρμογής ξεκινά συνήθως με τα σγουρά στήριγμα σε ο
αρχίζοντας από τις κύριες και τελειώνει με το άγκιστρο ότι
κλείνει την κύρια λειτουργία.
Και αυτή η τοπική μεταβλητή είναι πλέον κολλήσει σε αυτό το πεδίο.
Έτσι δεν μπορεί πλέον να έχει πρόσβαση σε μια άλλη λειτουργία,
έξω από την κύρια λειτουργία.
Και μόλις η κύρια λειτουργία τελειώνει την εκτέλεσή του και
επιστρέφει, αυτή η τοπική μεταβλητή με το όνομα num έχει φύγει.
Έτσι, σε αντίθεση με τις τοπικές μεταβλητές, έχουμε κάτι
ονομάζονται καθολικές μεταβλητές.
Τώρα, μια παγκόσμια μεταβλητή έχει δηλωθεί στην κορυφή της
προγράμματος και μπορεί να προσπελαστεί οπουδήποτε στο πρόγραμμα.
Ας πούμε ότι έχετε δηλώσει μια global μεταβλητή στην κορυφή
πρόγραμμα, που ονομάζεται δοκιμασία.
Τώρα, αυτή η μεταβλητή θα μπορούσε να προσεγγιστεί
οπουδήποτε στο πρόγραμμα.
Μπορείτε να αποκτήσετε πρόσβαση στην κύρια λειτουργία ή μια συνάρτηση
κάτω από αυτό.
Αλλά αν ποτέ προσπαθήσει να δημιουργήσει μια τοπική μεταβλητή σε μία από τις
αυτές οι λειτουργίες, με το ίδιο όνομα όπως
δοκιμή, υπάρχει μια σύγκρουση.
Επειδή δεν ξέρετε ποια μεταβλητή που θέλετε να χρησιμοποιήσετε.
Θέλετε να χρησιμοποιήσετε την παγκόσμια δοκιμή,
δήλωσε στην κορυφή του προγράμματος;
Ή μήπως θέλετε να χρησιμοποιήσετε την τοπική μεταβλητή δοκιμή που
προσπαθείτε να δημιουργήσετε μέσα σε αυτή τη λειτουργία;
Τώρα, αυτό είναι ένας από τους λόγους για τους οποίους δεν θέλουμε να
απλά χρησιμοποιήστε καθολικές μεταβλητές ελεύθερα.
Υπάρχει κάτι που λέγεται χαλάτε το χώρο ονόματος.
Ακόμα κι αν δεν σημαίνει να, μπορείτε να δημιουργήσετε ένα λάθος
τοπική μεταβλητή, αργότερα στο πρόγραμμα, με την ίδια
όνομα, καθώς η παγκόσμια μεταβλητή.
Και αυτό δεν δημιουργεί ένα τεράστιο πρόβλημα, όταν εργάζεστε σε
μικρό 10, 20, 30-line προγράμματα.
Μόλις έχετε έως και χιλιάδες γραμμές κώδικα, δεν θα
θυμάμαι ακριβώς τι έχετε αποθηκεύσει για την παγκόσμια μεταβλητή.
Έτσι, ένα πράγμα για να εξετάσει, όταν χρησιμοποιεί το τοπικό και παγκόσμιο
μεταβλητές είναι να σκεφτούμε το πεδίο εφαρμογής τους.
Τώρα, το πεδίο αναφέρεται στο όπου αυτές οι μεταβλητές μπορούν να χρησιμοποιηθούν σε
το πρόγραμμα.
Έτσι, μια καθολική μεταβλητή έχει αυτό που ονομάζεται παγκόσμια εμβέλεια,
έννοια ότι θα μπορούσε να χρησιμοποιηθεί οπουδήποτε στο πρόγραμμα.
Μόλις αρχικοποιήσετε ότι αυτή η μεταβλητή, μπορεί να χρησιμοποιηθεί σε
κάθε λειτουργία, είτε αυτή είναι η κύρια λειτουργία ή ένα
λειτουργία 10 λειτουργίες κάτω, που ονομάζεται foo10.
Δεν έχει σημασία, όπου μπορείτε να το χρησιμοποιήσετε.
Αλλά μια τοπική μεταβλητή έχει συγκεκριμένο πεδίο εφαρμογής.
Και το πεδίο εφαρμογής της εν λόγω τοπικής μεταβλητής καθορίζεται από
όπου αρχικοποιείται.
Τώρα, το πεδίο προσδιορίζεται τυπικά από το άνοιγμα
στήριγμα της λειτουργίας ότι η μεταβλητή έχει δηλωθεί στην, μέχρι
το κλείσιμο στήριγμα αυτής της λειτουργίας.
Ας πούμε ότι είστε στην κύρια λειτουργία.
Και μπορείτε να δημιουργήσετε μια μεταβλητή.
Αλλά τώρα, σε αυτή την κύρια λειτουργία, καλούμε άλλη
λειτουργούν foo.
Σε συνάρτηση foo, δεν μπορούμε να καλέσετε τη μεταβλητή που μόλις
δημιουργήθηκε στην κύρια λειτουργία, επειδή δεν είναι σε έκταση.
Αυτή η μεταβλητή είναι μόνο στο πεδίο εφαρμογής κατά την κύρια λειτουργία.
Έτσι, θα μπορούσαμε να το χρησιμοποιήσει περαιτέρω, στο πλαίσιο της κύριας λειτουργίας, αλλά
όχι μέσα σε μια συνάρτηση που καλείται από την κύρια λειτουργία.
Έτσι, όπως της στοίβας και του σωρού, είναι καθολικές μεταβλητές
αποθηκεύονται σε ένα ορισμένο μέρος της μνήμης.
Τώρα, αυτό το μέρος της μνήμης εξαρτάται από το σύστημα που
που χρησιμοποιείτε.
Οι καθολικές μεταβλητές έχουν δύο διαφορετικά σημεία ότι είναι
αποθηκεύονται, μία για καθολικές μεταβλητές αρχικοποιηθούν, όπως εάν
είχατε δηλώσει int δοκιμή = 5, στο πάνω μέρος του προγράμματός σας.
Και ο άλλος τομέας είναι για unitialized global μεταβλητές,
αν απλά είπε, int δοκιμή, στην κορυφή του προγράμματός σας και
επρόκειτο να ρυθμίσετε τις μεταβλητές ελέγχου
αργότερα στο πρόγραμμα.
Έτσι, τώρα είμαι πρόκειται να μιλήσω για κάτι που ονομάζεται # define,
η οποία είναι ένας τρόπος για να δώσει ένα συμβολικό όνομα σε μία σταθερή.
Και εδώ έχουμε ένα παράδειγμα ενός προγράμματος C που υπολογίζει
το εμβαδόν ενός κύκλου.
Και στην κορυφή του προγράμματος θα κάνουμε κάτι που λέει
# Define pi 3,14159.
# Define δεν δημιουργεί τεχνικά μια global μεταβλητή.
Αντίθετα, λέει προεπεξεργαστή του μεταγλωττιστή να
βρείτε και να αντικαταστήσετε όλες τις εμφανίσεις του με pi
3,14159 πριν από τη σύνταξη.
Παρ 'όλα αυτά, γίνεται μια χρήσιμη τεχνική για την κήρυξη
σταθερές, για χρήση σε όλο το πρόγραμμα.
Τώρα, κοιτάζοντας τη λειτουργία περιοχή, παίρνει σε μια float
rad και απλά επιστρέφει το εμβαδόν ενός κύκλου με εκείνη
ακτίνα ή pi r τετράγωνο, ή pi φορές rad rad φορές.
Και αυτό είναι όπου το # define παίζει σημαντικό ρόλο.
Επειδή ο compiler θα αντικαταστήσει ουσιαστικά ότι η pi
σύμβολο με τον αριθμό 3,14159.
Και έτσι δεν έχουμε να γράψετε ότι ξανά και ξανά.
Και αργότερα, αν αποφασίσετε να χρησιμοποιήσετε μια πιο ψηφία του π, ας
3.1415926 λένε, θα μπορούσαμε να προσθέσουμε μόνο ότι στην κορυφή του
πρόγραμμα και δεν θα πρέπει να το αλλάξει,
αργότερα στο πρόγραμμα.
Αυτή είναι μια καλή χρήση της # define.
Δεν θέλετε να αποθηκεύσετε pi ως καθολική μεταβλητή, διότι
θα μπορούσε να αλλάξει αργότερα στο πρόγραμμα.
Και ξέρουμε pi δεν αλλάζει.
Είναι μια συνεχής.
Έτσι, αυτό αναδιπλώνεται μέχρι το θέμα μας από την παγκόσμια μεταβλητές.
Έτσι, σήμερα μιλήσαμε για τη διαφορά μεταξύ των τοπικών και
καθολικές μεταβλητές? πότε να τα χρησιμοποιήσετε, ανάλογα με τους
πεδίο? και γιατί όχι να χρησιμοποιήσει την παγκόσμια μεταβλητές κατά βούληση
λόγω δημιουργούμε σύγχυση του χώρου του ονόματος.
Είμαι Joe McCormick.
Και αυτό είναι CS50.