1 00:00:07,150 --> 00:00:08,850 [Powered by Google Translate] DAVID DICIURCIO: Έτσι, μια σημαντική έννοια για να κατανοήσουν σε 2 00:00:08,850 --> 00:00:11,010 προγραμματισμού είναι η έννοια του πεδίου εφαρμογής. 3 00:00:11,010 --> 00:00:13,860 Πεδίο εφαρμογής μπορεί να οριστεί ως το πλαίσιο στο οποίο μια μεταβλητή είναι 4 00:00:13,860 --> 00:00:15,610 ορατές ή προσβάσιμο. 5 00:00:15,610 --> 00:00:18,150 Για παράδειγμα, ας υποθέσουμε ότι έχουμε μια συνάρτηση, κυρίως, που είναι 6 00:00:18,150 --> 00:00:22,570 υποτίθεται ότι προσαυξήσετε μια μεταβλητή, χ, από μία έως δύο. 7 00:00:22,570 --> 00:00:25,690 Όπως μπορούμε να δούμε, κυρίως αρχικοποιεί x σε ένα, εκτυπώνει 8 00:00:25,690 --> 00:00:28,740 από κάποιο κείμενο, τότε διατρέχει τον προσαύξηση λειτουργία, πριν από 9 00:00:28,740 --> 00:00:30,540 εκτύπωση περισσότερο κείμενο. 10 00:00:30,540 --> 00:00:32,545 Αν αυτή η λειτουργία ήταν να λειτουργήσει σωστά, θα ήταν 11 00:00:32,545 --> 00:00:34,120 εκτυπώσετε ως x 2. 12 00:00:34,120 --> 00:00:35,370 Ας το προσπαθήσουμε. 13 00:00:38,870 --> 00:00:43,075 >> Έτσι, όπως μπορείτε να δείτε, το κύριο δεν κάνουμε ό, τι αναμένεται. 14 00:00:43,075 --> 00:00:45,310 Επιστρέφει την τιμή 1, μάλλον 15 00:00:45,310 --> 00:00:47,150 από το 2 περιμέναμε. 16 00:00:47,150 --> 00:00:50,060 Ο λόγος για αυτό το σφάλμα μπορεί να εξηγηθεί από το πεδίο εφαρμογής. 17 00:00:50,060 --> 00:00:52,185 Σε συνάρτηση, κυρίως, έχουμε προετοιμαστεί x 18 00:00:52,185 --> 00:00:53,820 μόνο εντός της λειτουργία. 19 00:00:53,820 --> 00:00:56,580 Με άλλα λόγια, η μεταβλητή x έχει δηλωθεί τοπικά εντός του 20 00:00:56,580 --> 00:00:58,640 λειτουργία, κυρίως, και δεν είναι προσβάσιμο 21 00:00:58,640 --> 00:01:00,210 έξω από τη συνάρτηση. 22 00:01:00,210 --> 00:01:03,580 Μόνο κύριος μπορούν να έχουν πρόσβαση x σε αυτή την κατάσταση. 23 00:01:03,580 --> 00:01:06,990 Όταν λέμε αύξηση δεν περνούν x ως την είσοδο, αλλά 24 00:01:06,990 --> 00:01:08,960 απλώς ένα αντίγραφο του x. 25 00:01:08,960 --> 00:01:11,640 Ως αποτέλεσμα αυτού, η αύξηση της λειτουργίας μόνο προσθέτει 26 00:01:11,640 --> 00:01:14,190 η τιμή 1 σε ένα αντίγραφο της αξίας του x. 27 00:01:14,190 --> 00:01:16,170 Αλλά δεν είναι το ίδιο με x. 28 00:01:16,170 --> 00:01:19,090 Όταν επιστρέψετε στην κύρια, x η ίδια δεν έχει αλλάξει καθόλου. 29 00:01:19,090 --> 00:01:22,370 Έτσι εκτύπωση x θα δώσει μόνο την τιμή 1. 30 00:01:22,370 --> 00:01:24,890 >> Λοιπόν, στη συνέχεια, ότι αφήνει το ερώτημα: πώς θα πρέπει να καθορίσει 31 00:01:24,890 --> 00:01:26,230 αυτή η λειτουργία; 32 00:01:26,230 --> 00:01:29,500 Μια λύση έχει αύξηση επιστρέψει μια τιμή. 33 00:01:29,500 --> 00:01:31,180 Με τον τρόπο αυτό, η αύξηση της λειτουργίας θα 34 00:01:31,180 --> 00:01:33,350 να μας δώσει πίσω έναν ακέραιο. 35 00:01:33,350 --> 00:01:35,420 Τόσο εδώ είναι αναθεωρημένο κώδικα μας με το 36 00:01:35,420 --> 00:01:37,480 εναλλακτική λειτουργία προσαύξηση. 37 00:01:37,480 --> 00:01:41,510 Εδώ, αντί να επιστρέψει το x + 1, και όχι μόνο τέλος 38 00:01:41,510 --> 00:01:44,070 με x είναι ίσο με x + 1. 39 00:01:44,070 --> 00:01:46,290 Επίσης, να σημειωθεί ότι αντικαταστήσαμε την έξοδο του 40 00:01:46,290 --> 00:01:49,630 αύξηση, προηγουμένως ακυρώσει, με int, δηλώνοντας ότι 41 00:01:49,630 --> 00:01:52,230 αύξηση θα περάσει τώρα πίσω μια ακέραια τιμή. 42 00:01:52,230 --> 00:01:55,000 Τώρα, μετά την αύξηση τρέχει, θα επιστρέψει με την αξία του 43 00:01:55,000 --> 00:01:56,535 2, ακριβώς όπως εμείς έχουμε σκοπό. 44 00:01:59,630 --> 00:02:02,260 >> Μια άλλη κατάσταση που δείχνει το πεδίο εφαρμογής της σημασίας 45 00:02:02,260 --> 00:02:04,860 είναι στην scopeloop.c. 46 00:02:04,860 --> 00:02:07,320 Σε αυτόν τον κώδικα, έχουμε α για το βρόχο στην οποία η μεταβλητή 47 00:02:07,320 --> 00:02:10,310 συνολικά ξεκινά κατά τη διάρκεια κάθε βήματος. 48 00:02:10,310 --> 00:02:13,720 Δυστυχώς, αυτός ο κώδικας δεν συγκεντρώνει. 49 00:02:13,720 --> 00:02:16,690 Αυτό συμβαίνει επειδή η μεταβλητή συνολική πραγματικότητα δεν υπάρχει 50 00:02:16,690 --> 00:02:18,550 έξω από το βρόχο for. 51 00:02:18,550 --> 00:02:21,000 Οι μεταβλητές που δηλώνονται μέσα σε βρόχους υπάρχει μόνο εντός της 52 00:02:21,000 --> 00:02:23,967 βρόχο και η ίδια αποδεικνύεται σε λάθος μας 53 00:02:23,967 --> 00:02:25,880 μήνυμα, συνολικά αδήλωτα. 54 00:02:25,880 --> 00:02:28,710 Η μεταβλητή συνολικά έχει ακόμη να δηλωθεί εντός του πεδίου 55 00:02:28,710 --> 00:02:30,420 της λειτουργίας κύριο. 56 00:02:30,420 --> 00:02:33,610 Επιπλέον, κατά τη διάρκεια κάθε επανάληψη του βρόχου για μας, έχουμε 57 00:02:33,610 --> 00:02:36,340 Τα συνολικά reinitializing μας στο 0. 58 00:02:36,340 --> 00:02:39,210 Αυτό από μόνο του δεν τηρεί τον κώδικα από την κατάρτιση, αλλά 59 00:02:39,210 --> 00:02:42,920 θα αποτρέψει συνολικά από ποτέ αθροίζοντας σε αξία παρελθόν 1. 60 00:02:42,920 --> 00:02:45,760 >> Και πάλι, ποιος είναι ο καλύτερος τρόπος να το διορθώσω αυτό; 61 00:02:45,760 --> 00:02:48,520 Ένα από τα πιο εύκολο μεθόδων περιλαμβάνει τη διάθεση συνολικά το τοπικό έως το 62 00:02:48,520 --> 00:02:51,990 η συνάρτηση, κυρίως, όχι στην ίδια βρόχο. 63 00:02:51,990 --> 00:02:55,210 Αυτό θα ανέλθει συνολικά σε πραγματικά αυξήσετε, και, τελικά, 64 00:02:55,210 --> 00:02:57,880 ώστε να μπορεί να εκτυπωθεί μετά το βρόχο for. 65 00:02:57,880 --> 00:03:00,093 Μια άλλη τεχνική που θα συνοψίσω εν συντομία μόνο θα 66 00:03:00,093 --> 00:03:02,190 είναι η χρήση των καθολικών μεταβλητών. 67 00:03:02,190 --> 00:03:04,890 Οι καθολικές μεταβλητές είναι μεταβλητές που έχουν δηλωθεί πριν από τα κύρια 68 00:03:04,890 --> 00:03:07,860 που διατηρούν την αξία τους σε όλο το πρόγραμμα. 69 00:03:07,860 --> 00:03:10,710 Φυσικά, οι λειτουργίες μπορεί να αλλάξει την αξία του σε παγκόσμιο, 70 00:03:10,710 --> 00:03:13,470 αλλά δεν πηγαίνουν από το πεδίο εφαρμογής όπως οι τοπικές μεταβλητές. 71 00:03:13,470 --> 00:03:15,880 Ωστόσο, η χρήση καθολικών μεταβλητών τείνει να παρακινδυνευμένο 72 00:03:15,880 --> 00:03:18,180 από το κακό σχεδιασμό, δεδομένου ότι υπάρχουν καλύτεροι τρόποι 73 00:03:18,180 --> 00:03:20,080 ανταλλαγή δεδομένων μεταξύ των λειτουργιών. 74 00:03:20,080 --> 00:03:21,920 Για παράδειγμα, χρησιμοποιώντας δείκτες. 75 00:03:21,920 --> 00:03:24,250 Αλλά περισσότερα για αυτό μια άλλη φορά. 76 00:03:24,250 --> 00:03:26,670 >> Τέλος, είναι σημαντικό να υπάρχει κατανόηση του πεδίου εφαρμογής 77 00:03:26,670 --> 00:03:29,550 στο πλαίσιο της μνήμης του υπολογιστή, ή RAM. 78 00:03:29,550 --> 00:03:32,470 Κατά την εκτέλεση ενός προγράμματος, τις τοπικές μεταβλητές και συναρτήσεις 79 00:03:32,470 --> 00:03:34,040 προστίθενται σε μια συγκεκριμένη θέση στην 80 00:03:34,040 --> 00:03:36,010 RAM ονομάζεται τη στοίβα. 81 00:03:36,010 --> 00:03:39,230 Ως λειτουργίες επιστροφής, είναι τα πλαίσια στοίβα των μεταβλητών 82 00:03:39,230 --> 00:03:43,910 απομακρύνεται αποτελεσματικά από τη στοίβα απελευθερώνοντας περισσότερο μνήμη. 83 00:03:43,910 --> 00:03:46,750 Έτσι, όταν επανεξέτασης του πεδίου εφαρμογής, βεβαιωθείτε ότι έχετε να θυμάστε αυτά τα τρία 84 00:03:46,750 --> 00:03:47,980 βασικά σημεία. 85 00:03:47,980 --> 00:03:51,220 Ένα, το πεδίο μπορεί να είναι είτε τοπικό ή παγκόσμιο επίπεδο. 86 00:03:51,220 --> 00:03:53,990 Εξαρτάται από όπου η μεταβλητή έχει δηλωθεί. 87 00:03:53,990 --> 00:03:57,040 Δύο, μεταβλητές που δηλώνονται ή αρχικοποιηθεί σε λειτουργίες 88 00:03:57,040 --> 00:03:59,510 το τοπικό έως την λειτουργία και δεν μπορεί να αλλάξει από άλλους 89 00:03:59,510 --> 00:04:02,790 λειτουργίες, τουλάχιστον όχι χωρίς τη χρήση δεικτών. 90 00:04:02,790 --> 00:04:05,340 Τέλος, οι μεταβλητές είναι επίσης τοπικά στα κυκλώματα που είναι 91 00:04:05,340 --> 00:04:06,490 δηλώνονται μέσα. 92 00:04:06,490 --> 00:04:08,100 Οι μεταβλητές δεν είναι προσβάσιμες 93 00:04:08,100 --> 00:04:09,860 εκτός του βρόχου. 94 00:04:09,860 --> 00:04:11,170 >> Αυτό είναι όλο για τώρα και στο πεδίο. 95 00:04:11,170 --> 00:04:12,420 Ευχαριστώ για την προσοχή.