1 00:00:07,420 --> 00:00:08,160 [Powered by Google Translate] David J. Malan: Εντάξει. 2 00:00:08,160 --> 00:00:11,170 Αυτό είναι CS50, και αυτό είναι το τέλος της δεύτερης εβδομάδας. 3 00:00:11,170 --> 00:00:14,650 Αν περιμένετε να είναι πεινασμένοι γύρω από αυτή τη στιγμή αύριο, ξέρουμε ότι θα πάμε 4 00:00:14,650 --> 00:00:18,920 να συγκαλέσει ως μια μικρή ομάδα αύριο, Πέμπτη, 13.15 μ.μ.. 5 00:00:18,920 --> 00:00:21,460 Υπάρχει αυτό το URL εδώ αν θέλετε να RSVP. 6 00:00:21,460 --> 00:00:25,270 Ο χώρος είναι περιορισμένος, γι 'αυτό παρακαλώ συγχωρήστε εάν η φόρμα έχει συμπληρωθεί από τη στιγμή που θα 7 00:00:25,270 --> 00:00:26,680 συμπληρώσετε αυτό. 8 00:00:26,680 --> 00:00:29,400 Μια άλλη διεύθυνση URL αν και αυτό μπορεί να έχει ενδιαφέρον είναι αυτό. 9 00:00:29,400 --> 00:00:32,409 >> Έτσι, μέσα σε μόλις ένα μήνα περίπου, το μάθημα πρόκειται να διατεθούν 10 00:00:32,409 --> 00:00:36,090 όλα τα ευρύτερα μέσω EDX, μέσω της οποίας οι λαοί στο Διαδίκτυο θα είναι 11 00:00:36,090 --> 00:00:39,580 είναι σε θέση να παρακολουθήσει μαζί του, να ασκεί κατά τη διάρκεια αρκετά ενεργά, στην πραγματικότητα. 12 00:00:39,580 --> 00:00:43,070 Θα πρέπει να χρησιμοποιούν την συσκευή CS50 και CS50 Συζητήστε και τα περισσότερα από τα 13 00:00:43,070 --> 00:00:45,840 διάφορα εργαλεία λογισμικού που ήδη έχουν χρησιμοποιήσει αυτό το εξάμηνο. 14 00:00:45,840 --> 00:00:49,030 Και μια από τις πρωτοβουλίες που θα θέλαμε να αναλάβει ως ένα πείραμα φέτος 15 00:00:49,030 --> 00:00:53,120 είναι να δούμε πόσο περιεχόμενο μπορούμε να μεταφράσουμε σε άλλες μιλήσει και 16 00:00:53,120 --> 00:00:54,110 γραπτές γλώσσες. 17 00:00:54,110 --> 00:00:58,000 Έτσι, αν θα μπορούσε να έχει συμφέρον να συμμετέχει σε αυτό το έργο, σύμφωνα με την οποία 18 00:00:58,000 --> 00:01:02,090 θα παρέχουν αντίγραφα αγγλικά και υπότιτλους για την πορεία της 19 00:01:02,090 --> 00:01:05,190 διαλέξεις και σεμινάρια και σορτς και τα τμήματα και τα παρόμοια - 20 00:01:05,190 --> 00:01:08,700 αν μιλάτε άπταιστα ή γράψε άπταιστα κάποια άλλη γλώσσα, εμείς θα 21 00:01:08,700 --> 00:01:12,240 αγαπούν να συμμετέχετε σε αυτό το έργο, το οποίο σας μεταφέρει σε ένα ή περισσότερα από τα 22 00:01:12,240 --> 00:01:15,340 βίντεο, μετατροπή τους σε μια γλώσσα που γνωρίζουν αρκετά καλά. 23 00:01:15,340 --> 00:01:19,050 Για να σας δώσω μια αίσθηση της διεπαφής, δεν υπάρχει αυτό το web-based user interface 24 00:01:19,050 --> 00:01:22,330 ότι θα πρέπει να χρησιμοποιούν αυτό θα δημιουργήσει ουσιαστικά ένα UI σαν αυτό. 25 00:01:22,330 --> 00:01:24,520 Αυτό με τη διδασκαλία κάποια Απόκριες πριν. 26 00:01:24,520 --> 00:01:27,710 Και στη δεξιά πλευρά υπάρχει σε μαύρο δίπλα σε αυτά τα ένσημα του χρόνου, 27 00:01:27,710 --> 00:01:31,300 θα δείτε τα διάφορα πράγματα που βγήκε από το στόμα μου εκείνη την ημέρα. 28 00:01:31,300 --> 00:01:34,660 Και στη συνέχεια, κάτω από αυτό, θα είστε σε θέση να μεταφράσουν σε κάποια άλλη γλώσσα. 29 00:01:34,660 --> 00:01:37,840 Ακριβώς ό, τι είναι η χαρτογράφηση μεταξύ, στην περίπτωση αυτή, Αγγλικά 30 00:01:37,840 --> 00:01:38,660 και, ας πούμε, ισπανικά. 31 00:01:38,660 --> 00:01:40,480 Γι 'αυτό είναι πραγματικά ένα πολύ φιλικό προς το χρήστη εργαλείο. 32 00:01:40,480 --> 00:01:43,690 Μπορείτε να rewind και fast forward πολύ εύκολα με συντομεύσεις πληκτρολογίου. 33 00:01:43,690 --> 00:01:46,710 Έτσι, αν θα θέλατε να λάβουν μέρος σε αυτό το πείραμα και να έχουν τα λόγια σας 34 00:01:46,710 --> 00:01:50,730 δει και διαβάσει από δυνητικά χιλιάδες παιδιά εκεί έξω, παρακαλούμε να μην αισθάνονται 35 00:01:50,730 --> 00:01:51,960 ελεύθεροι να συμμετάσχουν. 36 00:01:51,960 --> 00:01:56,940 >> Τώρα μια λέξη για το γατάκι από τη Δευτέρα, για να μην έχουμε στείλει ένα υπερβολικά 37 00:01:56,940 --> 00:01:58,120 τρομακτικό μήνυμα. 38 00:01:58,120 --> 00:02:02,130 Συνειδητοποιούν ότι οι ώρες γραφείου και προτείνουν ως τμήματα δείχνουν, η 39 00:02:02,130 --> 00:02:05,110 σχεδιασμός του μαθήματος είναι πάρα πολύ για να έχουν οι μαθητές συνεργάζονται και 40 00:02:05,110 --> 00:02:09,250 μιλάμε για εργασία μέσα από σύνολα πρόβλημα και τα προβλήματα μαζί. 41 00:02:09,250 --> 00:02:13,630 Και πραγματικά η γραμμή έρχεται ακριβώς κάτω, και πάλι, το έργο που τελικά 42 00:02:13,630 --> 00:02:16,420 θα πρέπει να υποβάλουν πρέπει να είναι δική σας. 43 00:02:16,420 --> 00:02:19,080 Και έτσι είναι, ειλικρινά - σε ώρες γραφείου, είναι απολύτως φυσιολογικό - 44 00:02:19,080 --> 00:02:21,560 Είναι εντελώς πρέπει να αναμένεται, ακόμη και - να συνομιλείτε με κάποια 45 00:02:21,560 --> 00:02:22,370 φίλους δίπλα σας. 46 00:02:22,370 --> 00:02:25,240 Αν αυτός ή αυτή αγωνίζεται με κάποιο θέμα, και είστε όπως, OH, και ας 47 00:02:25,240 --> 00:02:27,750 μου να σας δώσω μια γεύση από κάποια γραμμή κώδικα που έγραψα. 48 00:02:27,750 --> 00:02:28,290 Αυτό είναι μια χαρά. 49 00:02:28,290 --> 00:02:28,700 Αυτό συμβαίνει. 50 00:02:28,700 --> 00:02:31,580 Και αυτό είναι πολύ ευνοϊκό, νομίζω, με τη διαδικασία της μάθησης. 51 00:02:31,580 --> 00:02:35,270 Όταν η γραμμή, και πάλι, παίρνει διέσχισε είναι όταν η κεφαλή είναι είδος κλίση πάνω 52 00:02:35,270 --> 00:02:38,800 εδώ για πάρα πολλά δευτερόλεπτα ή λεπτά για να πραγματικά να έχουν μόνο 53 00:02:38,800 --> 00:02:41,250 ήταν μια ευκαιρία για την απεμπλοκή φίλο σας. 54 00:02:41,250 --> 00:02:43,870 Και βέβαια, όταν τα πράγματα παίρνουν ανταλλάσσονται μέσω του ηλεκτρονικού ταχυδρομείου και Dropbox και 55 00:02:43,870 --> 00:02:45,350 τα παρόμοια, και εκεί είναι η γραμμή. 56 00:02:45,350 --> 00:02:48,940 Έτσι, με όλα τα μέσα, να αισθάνονται άνετα και να αισθάνονται ενθαρρύνονται να συνομιλήσετε με τους φίλους σας 57 00:02:48,940 --> 00:02:51,270 και τους συμμαθητές για psets και περισσότερο. 58 00:02:51,270 --> 00:02:54,680 Και μόλις συνειδητοποιήσετε ότι αυτό που τελικά θα πρέπει να υποβάλουν πραγματικά να είναι η 59 00:02:54,680 --> 00:02:57,780 προϊόν της δημιουργίας σας και όχι κάποιος άλλος. 60 00:02:57,780 --> 00:03:01,010 >> Έτσι, στο ίδιο πνεύμα της μαζεμένος πλάσματα, ίσως 61 00:03:01,010 --> 00:03:02,820 γνωρίζουν από αυτόν τον τύπο εδώ. 62 00:03:02,820 --> 00:03:06,180 Έτσι, αυτό είναι ένα τρομακτικά τυρώδης ταινία από χρόνια. 63 00:03:06,180 --> 00:03:08,680 Όποιος δει εδώ Spaceballs; 64 00:03:08,680 --> 00:03:09,120 Εντάξει. 65 00:03:09,120 --> 00:03:10,220 Έτσι, ένας καλός αριθμός εδώ. 66 00:03:10,220 --> 00:03:13,840 Έτσι, αυτό είναι υπέροχα ακαδημαϊκό τρόπο εισαγωγής μας σήμερα τελικά 67 00:03:13,840 --> 00:03:15,130 η έννοια της κρυπτογραφίας. 68 00:03:15,130 --> 00:03:19,010 Και έτσι ένας από τους συγκεκριμένους τομείς προβλημάτων για PSET 2, το οποίο θα έρθει 69 00:03:19,010 --> 00:03:22,770 από αργά το βράδυ αύριο, είναι να βουτήξει στον κόσμο της κρυπτογραφίας, τα οποία 70 00:03:22,770 --> 00:03:26,380 Είναι η τέχνη της κρυπτογράφησης ή κρυπτογράφησης πληροφοριών. 71 00:03:26,380 --> 00:03:30,160 Και αυτό αφορά τελικά στον κόσμο της ασφάλειας. 72 00:03:30,160 --> 00:03:34,440 >> Τώρα ασφάλεια για τους περισσότερους μας έρχεται με τη μορφή του αρκετά κοσμικό μηχανισμών. 73 00:03:34,440 --> 00:03:36,920 Όλοι μας έχουμε τα ονόματα χρήστη και κωδικούς πρόσβασης. 74 00:03:36,920 --> 00:03:41,350 Και όλοι μας έχουμε πολύ άσχημα ονόματα χρηστών και κωδικούς πρόσβασης, κατά πάσα πιθανότητα. 75 00:03:41,350 --> 00:03:45,250 Εάν ο κωδικός πρόσβασής σας είναι το ίδιο για πολλούς δικτυακούς τόπους, αυτό είναι πιθανόν να μην 76 00:03:45,250 --> 00:03:47,920 η καλύτερη ιδέα, όπως θα συζητήσουμε προς το τέλος του εξαμήνου. 77 00:03:47,920 --> 00:03:51,680 Εάν ο κωδικός πρόσβασής σας είναι γραμμένο σε μια κολλώδη σημείωση - δεν είναι αστείο - για σας 78 00:03:51,680 --> 00:03:55,130 οθόνη, η οποία επίσης δεν είναι κατ 'ανάγκη το καλύτερο σχέδιο, αλλά αρκετά συνηθισμένο 79 00:03:55,130 --> 00:03:56,140 φαινόμενο. 80 00:03:56,140 --> 00:04:00,420 Και αν δεν είστε με τη χρήση κρυπτογράφησης για την κρυπτογράφηση των κωδικών πρόσβασης σας, είναι 81 00:04:00,420 --> 00:04:01,610 ιδιαίτερα ευάλωτες. 82 00:04:01,610 --> 00:04:04,670 Έτσι, αν νομίζετε ότι είστε έξυπνοι είναι σούπερ, έχοντας ένα κρυφό του Word 83 00:04:04,670 --> 00:04:07,740 τεκμηριώνουν κάπου στο σκληρό σας δίσκο που έχει όλους τους κωδικούς πρόσβασής σας, αλλά 84 00:04:07,740 --> 00:04:10,550 είναι σε ένα φάκελο ότι κανείς δεν πρόκειται να δούμε σε, το οποίο επίσης δεν είναι μια πολύ 85 00:04:10,550 --> 00:04:11,540 ασφαλή μηχανισμό. 86 00:04:11,540 --> 00:04:15,100 Και έτσι τι PSET 2 θα εισαγάγει είναι αυτή η τέχνη της κρυπτογραφίας και 87 00:04:15,100 --> 00:04:18,300 κρυπτογράφησης πληροφοριών, ώστε να είναι τα πράγματα όπως τους κωδικούς πρόσβασης 88 00:04:18,300 --> 00:04:19,500 όλα τα πιο ασφαλή. 89 00:04:19,500 --> 00:04:24,500 Έτσι ώστε να παρακινήσει αυτό το πολύ πραγματικό κόσμο πρόβλημα με ένα πολύ μη πραγματικό κόσμο 90 00:04:24,500 --> 00:04:28,740 σενάριο, επιτρέψτε μου να σας παρουσιάσουμε ένα από τα αγαπημένα μας αποσπάσματα από αυτό εδώ 91 00:04:28,740 --> 00:04:29,895 ταινία, Spaceballs. 92 00:04:29,895 --> 00:04:30,565 >> [ΑΝΑΠΑΡΑΓΩΓΗ ΒΙΝΤΕΟ] 93 00:04:30,565 --> 00:04:32,995 -Κράνος, σας δαίμονας, τι συμβαίνει; 94 00:04:32,995 --> 00:04:34,730 Τι κάνεις με την κόρη μου; 95 00:04:34,730 --> 00:04:38,960 -Επιτρέψτε μου να εισαγάγει την λαμπρή μικρά πλαστικό χειρουργό, ο Δρ Φίλιππος 96 00:04:38,960 --> 00:04:43,290 Schlotkin, ο μεγαλύτερος άνθρωπος εργασία μύτης σε ολόκληρο το 97 00:04:43,290 --> 00:04:45,526 σύμπαν και το Μπέβερλι Χιλς. 98 00:04:45,526 --> 00:04:46,450 -Highness σας. 99 00:04:46,450 --> 00:04:47,380 -Μύτη δουλειά; 100 00:04:47,380 --> 00:04:48,035 Δεν καταλαβαίνω. 101 00:04:48,035 --> 00:04:49,480 Έχει ήδη μια εργασία μύτης. 102 00:04:49,480 --> 00:04:51,490 Ήταν ένα γλυκό 16 του παρόντος. 103 00:04:51,490 --> 00:04:53,090 -Όχι, δεν είναι αυτό που νομίζετε. 104 00:04:53,090 --> 00:04:55,150 Είναι πολύ, πολύ χειρότερα. 105 00:04:55,150 --> 00:04:59,860 Αν δεν μου δώσεις το συνδυασμό με την ασπίδα του αέρα, ο Δρ Schlotkin θα 106 00:04:59,860 --> 00:05:04,135 δώσει πίσω την κόρη σου παλιά μύτη της. 107 00:05:04,135 --> 00:05:05,385 -Όχι! 108 00:05:08,202 --> 00:05:10,186 Που το βρήκες αυτό; 109 00:05:10,186 --> 00:05:11,178 -Εντάξει. 110 00:05:11,178 --> 00:05:11,674 Θα σας πω. 111 00:05:11,674 --> 00:05:12,666 Θα σας πω. 112 00:05:12,666 --> 00:05:14,154 -Όχι, μπαμπά, όχι. 113 00:05:14,154 --> 00:05:15,150 Δεν πρέπει. 114 00:05:15,150 --> 00:05:16,460 -Είσαι δικαίωμα, αγαπητέ μου. 115 00:05:16,460 --> 00:05:18,450 Θα χάσετε νέα μύτη σας. 116 00:05:18,450 --> 00:05:21,550 Αλλά εγώ δεν θα πω το συνδυασμό τους δεν έχει σημασία τι. 117 00:05:21,550 --> 00:05:23,100 -Πολύ καλά. 118 00:05:23,100 --> 00:05:25,510 Ο Δρ Schlotkin, όσο χειρότερα τόσο καλύτερα. 119 00:05:25,510 --> 00:05:26,760 -Μου ευχαρίστηση. 120 00:05:30,560 --> 00:05:31,180 -Όχι! 121 00:05:31,180 --> 00:05:33,450 Περιμένετε, περιμένετε. 122 00:05:33,450 --> 00:05:34,770 Θα σας πω. 123 00:05:34,770 --> 00:05:36,400 Θα σας πω. 124 00:05:36,400 --> 00:05:38,630 -Το ήξερα ότι θα μπορούσε να λειτουργήσει. 125 00:05:38,630 --> 00:05:42,040 Εντάξει, το δώσει σε μένα. 126 00:05:42,040 --> 00:05:46,890 -Ο συνδυασμός είναι ένα. 127 00:05:46,890 --> 00:05:47,290 -Ένα. 128 00:05:47,290 --> 00:05:48,183 -Ένα. 129 00:05:48,183 --> 00:05:48,950 -Δύο. 130 00:05:48,950 --> 00:05:49,370 -Δύο. 131 00:05:49,370 --> 00:05:50,450 -Δύο. 132 00:05:50,450 --> 00:05:50,715 Τρεις- 133 00:05:50,715 --> 00:05:51,380 -Τρία. 134 00:05:51,380 --> 00:05:52,390 -Τρία. 135 00:05:52,390 --> 00:05:53,200 -Τέσσερα. 136 00:05:53,200 --> 00:05:53,720 -Τέσσερα. 137 00:05:53,720 --> 00:05:55,830 -Τέσσερα. 138 00:05:55,830 --> 00:05:56,580 Πέντε- 139 00:05:56,580 --> 00:05:57,120 -Πέντε. 140 00:05:57,120 --> 00:05:58,560 -Πέντε. 141 00:05:58,560 --> 00:06:03,770 -Έτσι, ο συνδυασμός είναι ένα, δύο, τρία, τέσσερα, πέντε. 142 00:06:03,770 --> 00:06:06,745 Αυτό είναι το πιο χαζό συνδυασμός που έχω ακούσει στη ζωή μου. 143 00:06:06,745 --> 00:06:09,290 Αυτό είναι το είδος των πράγμα που ένας ηλίθιος θα έχει στις αποσκευές του. 144 00:06:09,290 --> 00:06:11,540 Σας ευχαριστώ, Υψηλότατε. 145 00:06:11,540 --> 00:06:12,940 -Τι έκανες; 146 00:06:12,940 --> 00:06:14,230 -Γύρισα από τον τοίχο. 147 00:06:14,230 --> 00:06:14,630 -Όχι, δεν το έκανε. 148 00:06:14,630 --> 00:06:15,430 Μπορείτε απενεργοποιήσει ολόκληρη την ταινία. 149 00:06:15,430 --> 00:06:16,722 -Θα πρέπει να πατήσετε το λάθος κουμπί. 150 00:06:16,722 --> 00:06:18,078 -Λοιπόν, να επαναφέρει την οικονομία. 151 00:06:18,078 --> 00:06:18,805 Βάλτε την ταινία ξανά. 152 00:06:18,805 --> 00:06:19,080 -Ναι, κύριε. 153 00:06:19,080 --> 00:06:19,270 Ναι, κύριε. 154 00:06:19,270 --> 00:06:19,830 -Πάμε, Erna. 155 00:06:19,830 --> 00:06:20,270 Έλα, Gretchen. 156 00:06:20,270 --> 00:06:22,850 Φυσικά ξέρετε ότι θα πρέπει ακόμα να σας χρεώσει για αυτό. 157 00:06:27,400 --> 00:06:28,325 -Καλά, δεν λειτουργεί; 158 00:06:28,325 --> 00:06:29,550 Πού είναι η πύλη; 159 00:06:29,550 --> 00:06:29,910 -Δούλεψε, κύριε. 160 00:06:29,910 --> 00:06:30,770 Έχουμε το συνδυασμό. 161 00:06:30,770 --> 00:06:31,390 -Ωραία. 162 00:06:31,390 --> 00:06:35,630 Τώρα μπορούμε να πάρουμε όλα τα τελευταία του πνοή φρέσκου αέρα από τον πλανήτη Druidia. 163 00:06:35,630 --> 00:06:36,550 Τι είναι ο συνδυασμός; 164 00:06:36,550 --> 00:06:38,805 Ένα, δύο, τρία, τέσσερα, πέντε. 165 00:06:38,805 --> 00:06:40,610 Ένα, δύο, τρία, τέσσερα, πέντε; 166 00:06:40,610 --> 00:06:41,070 -Ναι. 167 00:06:41,070 --> 00:06:41,760 -Αυτό είναι καταπληκτικό. 168 00:06:41,760 --> 00:06:45,200 Έχω τον ίδιο συνδυασμό στις αποσκευές μου. 169 00:06:45,200 --> 00:06:47,800 Ετοιμάστε Spaceball 1 για άμεση αναχώρηση. 170 00:06:47,800 --> 00:06:48,536 -Ναι, κύριε. 171 00:06:48,536 --> 00:06:52,350 -Και αλλάξετε το συνδυασμό στις αποσκευές μου. 172 00:06:52,350 --> 00:06:53,250 -Ωχ! 173 00:06:53,250 --> 00:06:55,020 [ΑΝΑΠΑΡΑΓΩΓΗ ΒΙΝΤΕΟ ΤΕΛΟΣ] 174 00:06:55,020 --> 00:06:57,470 >> David J. Malan: Μια καταπληκτική ταινία που πρέπει να δείτε όλοι τώρα. 175 00:07:00,600 --> 00:07:06,540 Έτσι, το πλαίσιο εδώ είναι ότι με την ανασφάλεια δεδομένων έρχεται την ευκαιρία να 176 00:07:06,540 --> 00:07:07,790 κρυπτογραφήσει και να τον αγωνίζομαι. 177 00:07:07,790 --> 00:07:11,060 Και έτσι αυτό, για παράδειγμα, είναι ένα παράδειγμα ενός κρυπτογραφημένου μηνύματος. 178 00:07:11,060 --> 00:07:12,980 Αυτό λέει πραγματικά κάτι στα αγγλικά. 179 00:07:12,980 --> 00:07:14,750 Αλλά σαφώς δεν είναι εντελώς προφανές. 180 00:07:14,750 --> 00:07:17,360 Και θα έρθει πλήρης κύκλος σήμερα να δώσουμε έμφαση, εκτός ό, τι αυτό το μυστικό 181 00:07:17,360 --> 00:07:18,380 το μήνυμα εδώ είναι. 182 00:07:18,380 --> 00:07:22,370 Αλλά στον πραγματικό κόσμο των υπολογιστών, τα πράγματα δεν χρειάζεται καν μοιάζουν σαν να μπορούσαν 183 00:07:22,370 --> 00:07:23,440 είναι Αγγλικές φράσεις. 184 00:07:23,440 --> 00:07:27,500 Για παράδειγμα, αυτό είναι ό, τι μπορείτε να βρείτε σε ένα πρότυπο Linux ή Mac ή 185 00:07:27,500 --> 00:07:32,080 Unix υπολογιστή σε ένα αρχείο που ήταν κάποτε ονομάζεται το αρχείο κωδικού πρόσβασης. 186 00:07:32,080 --> 00:07:34,170 Σήμερα, έχει μετακινηθεί σε άλλες θέσεις. 187 00:07:34,170 --> 00:07:38,660 Αλλά αν κοιτάξετε στο σωστό μέρος, σε ένα σύστημα, θα δείτε όχι μόνο σας 188 00:07:38,660 --> 00:07:41,430 ότι το όνομα χρήστη ή άλλων ανθρώπων για το σύστημα, αλλά θα δείτε ένα 189 00:07:41,430 --> 00:07:43,410 κρυπτογραφημένη εκδοχή του κωδικού τους. 190 00:07:43,410 --> 00:07:47,800 Πράγματι, η κρύπτη λέξη υποδηλώνει ότι τα ακόλουθα πράγματα είναι κρυπτογραφημένη. 191 00:07:47,800 --> 00:07:52,030 Και αυτή η σειρά από φαινομενικά τυχαία γράμματα και αριθμούς και χαρακτήρες και 192 00:07:52,030 --> 00:07:56,370 ούτω καθεξής μπορούν να αποκρυπτογραφηθούν μόνο με γενικά γνωρίζοντας κάποιο μυστικό - 193 00:07:56,370 --> 00:07:58,600 μια μυστική λέξη, ένα μυστικό αριθμό. 194 00:07:58,600 --> 00:08:02,760 Και έτσι, η τέχνη της κρυπτογραφίας τελικά βράζει κάτω να εμπιστεύονται ορισμένων 195 00:08:02,760 --> 00:08:05,700 είδος και γνωρίζοντας κάτι που κάποιος άλλος δεν το κάνει. 196 00:08:05,700 --> 00:08:10,010 Θα το ερευνήσω αυτό σε λίγο πιο αναλυτικά σήμερα και στο PSET να έρθει. 197 00:08:10,010 --> 00:08:11,860 >> Και τώρα μια λέξη για επιτυχίας / αποτυχίας. 198 00:08:11,860 --> 00:08:15,250 Έτσι, ειδικά, όπως κάποιοι από εσάς έχουν καταδυθεί σε PSET 1, η συσκευή, και 199 00:08:15,250 --> 00:08:18,390 ένα πολύ νέο κόσμο για τον εαυτό σας, συνειδητοποίησε ότι απογοητεύσεις και 200 00:08:18,390 --> 00:08:21,340 σύγχυση και μόνο τεχνικές δυσκολίες θα πρέπει να αναμένονται. 201 00:08:21,340 --> 00:08:24,410 Ειδικά με το πρώτο PSET, όπου υπάρχει μόνο τόσο πολύ νέα, μόλις πάρει 202 00:08:24,410 --> 00:08:28,830 εξοικειωμένοι με ls και cd και όλα αυτά τα απόκρυφα εντολές σε ένα νέο περιβάλλον. 203 00:08:28,830 --> 00:08:32,679 Και αυτό είναι ξεχωριστό από το ίδιο υλικό και τον προγραμματισμό ίδια. 204 00:08:32,679 --> 00:08:35,960 Έτσι συνειδητοποιήσουμε, επίσης, ότι υπάρχουν σίγουρα ώρες γραφείου που υπάρχουν ως 205 00:08:35,960 --> 00:08:36,770 η δομή στήριξης. 206 00:08:36,770 --> 00:08:38,620 Τμήματα αρχίζουν την ερχόμενη Κυριακή. 207 00:08:38,620 --> 00:08:41,990 Αλλά το πιο σημαντικό, εάν αισθάνεστε ακριβώς ότι αυτό δεν είναι το 208 00:08:41,990 --> 00:08:44,420 κόσμο για σας, συνειδητοποιήστε ότι πραγματικά λαμβάνουν ακριβώς το χρόνο. 209 00:08:44,420 --> 00:08:47,520 Και αν δεν ήταν για αυτήν την ευκαιρία χρόνια για μένα να λάβει μια τάξη 210 00:08:47,520 --> 00:08:50,840 επιτυχίας / αποτυχίας, ειλικρινά, ποτέ δεν θα είχα θέσει ακόμη πόδι στην τάξη. 211 00:08:50,840 --> 00:08:53,520 Και μπορείτε να το αλλάξετε αυτό, μέχρι, δηλαδή, το πέμπτο Δευτέρα του πορεία. 212 00:08:53,520 --> 00:08:57,110 Έτσι, εάν είστε στην άκρη τώρα, συνειδητοποιούν ότι αντί για το κεφάλι σε κάποιο άλλο 213 00:08:57,110 --> 00:09:01,000 υδάτων συνολικά, σίγουρα δεν θεωρούν απλώς να αλλάζει επιτυχίας / αποτυχίας. 214 00:09:01,000 --> 00:09:03,750 Και πάλι, δεν υπάρχει πραγματικά αυτός ο πολιτισμός εδώ στο Harvard της λήψης πράγματα 215 00:09:03,750 --> 00:09:08,080 επιτυχίας / αποτυχίας δεδομένου ότι ο καθένας θέλει πραγματικά να επιτύχει ή να υπερκερασθεί ο στόχος. 216 00:09:08,080 --> 00:09:11,470 Αλλά ειλικρινά, αυτό είναι ένας θαυμάσιος τρόπος για να προσπαθήσει κάτι που μπορεί να μην 217 00:09:11,470 --> 00:09:13,110 να είναι γνωστά σε σας. 218 00:09:13,110 --> 00:09:17,090 Και θα καταλήξετε να κάνει στις περισσότερες περιπτώσεις αρκετά καλά, ίσως 219 00:09:17,090 --> 00:09:18,040 πολύ προς έκπληξή σας. 220 00:09:18,040 --> 00:09:20,850 Και πιο συγκεκριμένα, αυτό που νομίζω ότι επιτυχίας / αποτυχίας γενικά κάνει, 221 00:09:20,850 --> 00:09:23,350 ειδικά όπως μπορεί να έχετε βιώσει με PSET 0, αν έχετε θέσει 222 00:09:23,350 --> 00:09:27,200 σε 10 ώρες, 15 ώρες, 25 ώρες σε κάποιο PSET - και είστε ακριβώς χτυπάς 223 00:09:27,200 --> 00:09:28,180 το κεφάλι σου στον τοίχο, 224 00:09:28,180 --> 00:09:29,850 και είναι να πάρει σούπερ αργά το βράδυ, 225 00:09:29,850 --> 00:09:31,880 αλλά έχετε πάρει το PSET το 90% του τρόπο, 226 00:09:31,880 --> 00:09:33,780 ξέρετε ότι απλά δεν μπορώ να καταλάβω ένα πράγμα - 227 00:09:33,780 --> 00:09:36,830 επιτυχίας / αποτυχίας πραγματικά βγάζει την άκρη από μια κατηγορία του, όπως αυτό, όπου μπορείτε να ταξινομήσετε 228 00:09:36,830 --> 00:09:39,150 του ευτυχώς να πω εντάξει, ξέρω ότι δεν είναι τέλεια. 229 00:09:39,150 --> 00:09:40,470 Αλλά δούλεψα κώλο μου μακριά σε αυτό. 230 00:09:40,470 --> 00:09:42,410 Είμαι αρκετά ευχαριστημένος με αυτό που καταλήξαμε. 231 00:09:42,410 --> 00:09:44,780 Και ότι θα ανταποκριθεί στις προσδοκίες για την επιτυχία / αποτυχία. 232 00:09:44,780 --> 00:09:46,850 Έτσι, μπορώ να κρατήσει αυτό κατά νου. 233 00:09:46,850 --> 00:09:47,140 >> Εντάξει. 234 00:09:47,140 --> 00:09:50,980 Έτσι, όσοι από εσάς έχουν αγωνιστεί για να χρησιμοποιήσετε το Πανεπιστήμιο του Χάρβαρντ Wi-Fi γνωρίζουν 235 00:09:50,980 --> 00:09:54,780 ότι υπάρχει μια CS50 SSID, μια σύνδεση Wi-Fi που επιπλέουν γύρω σας 236 00:09:54,780 --> 00:09:56,520 θα μπορούσε να έχει καλύτερη τύχη για. 237 00:09:56,520 --> 00:09:59,430 Είναι λίγο ειρωνικό το γεγονός ότι ο κωδικός πρόσβασης για αυτό - αν θα θέλατε να δοκιμάσετε 238 00:09:59,430 --> 00:10:03,080 τη σύνδεση με αυτό για καλύτερη ταχύτητα και να μας ενημερώσετε αν δεν είναι καλύτερη - 239 00:10:03,080 --> 00:10:09,240 είναι ένα, δύο, τρία, τέσσερα, πέντε, σε όλη τη διαδρομή μέχρι και οκτώ διότι οκτώ είναι 240 00:10:09,240 --> 00:10:10,270 πιο ασφαλή από ό, τι πέντε. 241 00:10:10,270 --> 00:10:15,520 Έτσι, αν χρειάζεστε τη σύνδεση Wi-Fi κωδικό πρόσβασης, συνδεθείτε ασύρματα CS50 εδώ. 242 00:10:15,520 --> 00:10:16,950 Ένα, δύο, τρία, τέσσερα, πέντε, έξι, επτά, οκτώ. 243 00:10:16,950 --> 00:10:20,440 Και μετά για CS50 Συζητήστε αν έχετε ακόμα διαλείπουσα προβλήματα συνδεσιμότητας, 244 00:10:20,440 --> 00:10:24,880 και θα αφήσουμε τις εξουσίες που πρέπει να ξέρετε για αυτή τη θέση. 245 00:10:24,880 --> 00:10:25,180 >> Εντάξει. 246 00:10:25,180 --> 00:10:30,350 Έτσι, μια γρήγορη teaser, ειδικά για εκείνους από εσάς που είναι αγόρια ή κορίτσια ανεμιστήρα 247 00:10:30,350 --> 00:10:31,900 του συνόλου της Apple πράγματα. 248 00:10:31,900 --> 00:10:37,566 Αυτό που ξέθαψε από λίγα χρόνια πίσω ήταν αυτό το αρχείο εδώ, ilock.c, ακριβώς για να 249 00:10:37,566 --> 00:10:40,930 είδος του κάνει πιο συγκεκριμένες και πιο περίπλοκη μερικές από τις πιο βασικές C 250 00:10:40,930 --> 00:10:42,350 προγράμματα που έχουμε γράψει. 251 00:10:42,350 --> 00:10:44,360 Έτσι άνοιξα αυτό το αρχείο, ilock.c. 252 00:10:44,360 --> 00:10:46,830 Είναι διαθέσιμο στη σελίδα διαλέξεις για σήμερα. 253 00:10:46,830 --> 00:10:49,470 Στην αριστερή πλευρά, θα δείτε έναν μακρύ κατάλογο των λειτουργιών. 254 00:10:49,470 --> 00:10:51,860 Έτσι, ο τύπος που έγραψε αυτό έγραψε πολλές λειτουργίες, 255 00:10:51,860 --> 00:10:53,290 περισσότερο από ό, τι ακριβώς κύριος. 256 00:10:53,290 --> 00:10:55,490 Συνήθιζε ένα σωρό βιβλιοθήκες εδώ. 257 00:10:55,490 --> 00:11:00,450 Και αν αρχίσουμε κύλιση, τι είναι στην πραγματικότητα αυτό είναι το πολύ 258 00:11:00,450 --> 00:11:04,670 Κατ 'αρχάς, πιστεύω ότι, για να σπάσει το αρχικό iPhone. 259 00:11:04,670 --> 00:11:08,000 Όταν θέλετε να κάνετε jailbreak το iPhone πρωτότυπο, το οποίο σημαίνει untether 260 00:11:08,000 --> 00:11:11,800 από την AT & T και στην πραγματικότητα εγκατάσταση ειδικού λογισμικού για αυτό και κάνουμε τα πράγματα 261 00:11:11,800 --> 00:11:13,510 ότι η Apple δεν ήθελε τους ανθρώπους να κάνουν - 262 00:11:13,510 --> 00:11:17,020 καλά, κάποιος πήρε το χρόνο για να καταλάβουμε ακριβώς πώς θα μπορούσαν να αξιοποιήσουν 263 00:11:17,020 --> 00:11:20,880 ελαττώματα του λογισμικού, τα λάθη, σφάλματα, το λογισμικό της Apple. 264 00:11:20,880 --> 00:11:22,650 Και έτσι γεννήθηκε ilock.c. 265 00:11:22,650 --> 00:11:26,670 Ότι αν το καταρτίζονται σε έναν υπολογιστή και εγκατασταθεί σε ένα iPhone που 266 00:11:26,670 --> 00:11:29,810 συνδέθηκε με τον υπολογιστή σας μέσω, για παράδειγμα, ένα καλώδιο USB, αυτό θα σας δώσει 267 00:11:29,810 --> 00:11:33,360 διοικητικές ή προνόμια root στο iPhone σας και σας επιτρέπουν να κάνετε λίγο πολύ 268 00:11:33,360 --> 00:11:34,170 ό, τι θέλετε. 269 00:11:34,170 --> 00:11:36,740 >> Και έτσι έχει υπάρξει αυτό το συναρπαστικό παιχνίδι της γάτας και του ποντικιού μεταξύ της Apple και 270 00:11:36,740 --> 00:11:39,920 ο υπόλοιπος κόσμος, ιδίως δεδομένου ότι, όπως πολλές εταιρείες, προσπαθήστε να κλειδώσετε 271 00:11:39,920 --> 00:11:43,220 πράγματά τους κάτω έτσι ώστε να μπορείτε να το κάνετε μόνο με το τι σκοπεύουν. 272 00:11:43,220 --> 00:11:46,620 Όμως, χάρη σε ανθρώπους σαν και αυτή η κατανόηση του χαμηλού επιπέδου 273 00:11:46,620 --> 00:11:50,580 λεπτομέρειες και, στην περίπτωση αυτή, προγραμματισμού C και πολλά από τα γνωστά κατασκευάσματα 274 00:11:50,580 --> 00:11:54,630 ότι έχουμε αρχίσει να παίζει με, είστε σε θέση να αξιοποιούν πραγματικά το 275 00:11:54,630 --> 00:11:59,050 υλικό με τρόπο που βλέπετε την τακτοποίηση και όχι κατ 'ανάγκη κάποια εταιρική οντότητα. 276 00:11:59,050 --> 00:12:01,360 Έτσι, για παράδειγμα, δεν έχω καμία ιδέα για το τι όλα αυτά που κάνει. 277 00:12:01,360 --> 00:12:03,220 Αλλά GetVersion ακούγεται αρκετά απλή. 278 00:12:03,220 --> 00:12:05,480 Και αυτό μοιάζει με αυτό είναι μια λειτουργία που έγραψε αυτό το πρόσωπο. 279 00:12:05,480 --> 00:12:09,240 Πάρτε κάποιο είδος του ακεραίου ως επιχείρημα, δεν επιστρέφει τίποτα, αλλά 280 00:12:09,240 --> 00:12:13,080 φαίνεται να βρόχο με ένα for loop εδώ και μια κατάσταση, αν, αν κατάσταση, 281 00:12:13,080 --> 00:12:15,620 σπάσει, και με κάποιο τρόπο σχετίζεται με αριθμούς έκδοσης. 282 00:12:15,620 --> 00:12:16,700 Αν μετακινηθείτε προς τα κάτω - 283 00:12:16,700 --> 00:12:19,570 παρόλο που πολλές από αυτές τις λέξεις-κλειδιά θα είναι νέα, και υπάρχει μια 284 00:12:19,570 --> 00:12:22,590 σωρό λειτουργίες σε εδώ που έχουμε δει ποτέ και δεν θα δείτε ποτέ πάνω από 285 00:12:22,590 --> 00:12:23,830 η πορεία του εξαμήνου - 286 00:12:23,830 --> 00:12:27,150 Στο τέλος της ημέρας, ακολουθεί τους ίδιους κανόνες και τη λογική ότι έχουμε ήδη 287 00:12:27,150 --> 00:12:28,760 παίζοντας με μέχρι στιγμής. 288 00:12:28,760 --> 00:12:34,220 Έτσι, αυτό είναι πολύ γέρος για να σπάσει το iPhone σας 3s ή 4s 5s ή γρήγορα, αυτές τις μέρες, 289 00:12:34,220 --> 00:12:37,320 αλλά ξέρω ότι είναι όλοι πάρα πολύ που προέρχονται από αυτό τον κόσμο που έχουμε 290 00:12:37,320 --> 00:12:38,430 βουτούσαν. 291 00:12:38,430 --> 00:12:41,900 >> Έτσι, ας ρίξουμε μια ματιά σε ένα λίγο πιο απλό παράδειγμα. 292 00:12:41,900 --> 00:12:46,100 Αυτό και μόνο, απλά για να ζεσταθεί με κάποια σύνταξη, καθώς και ορισμένα άλλα στοιχεία 293 00:12:46,100 --> 00:12:49,240 τύπου ότι έχουμε μιλήσει, αλλά δεν έχουν πραγματικά δει σε C. Έτσι, αυτό είναι ένα 294 00:12:49,240 --> 00:12:51,680 αρχείο με όνομα positive1.c. 295 00:12:51,680 --> 00:12:55,120 Και σύμφωνα με τις παρατηρήσεις στην κορυφή, αυτό απαιτεί απλώς ότι ένας χρήστης παρέχει ένα 296 00:12:55,120 --> 00:12:55,960 θετικός αριθμός. 297 00:12:55,960 --> 00:12:59,530 Γι 'αυτό είναι ένα παράδειγμα ένα do-while loop, το οποίο είναι ωραίο για το χρήστη διαδραστική 298 00:12:59,530 --> 00:13:01,980 προγράμματα για τα οποία θα πρέπει να πείτε στον χρήστη να κάνει κάτι. 299 00:13:01,980 --> 00:13:05,190 Και αν δεν συνεργαστούν, θα φωνάζω σε αυτούς ή να απορρίψει τη συμβολή τους. 300 00:13:05,190 --> 00:13:11,610 Υπόθεση στο σημείο, εγώ είμαι πρόκειται να κάνει γραμμές 19 έως 24, εφόσον ο χρήστης έχει 301 00:13:11,610 --> 00:13:14,310 δεν μου έδωσε έναν θετικό αριθμό. 302 00:13:14,310 --> 00:13:20,400 Τώρα αυτή η λεπτομέρεια εδώ στη γραμμή 18, γιατί δηλώνω n πάνω από αυτό το σύνολο 303 00:13:20,400 --> 00:13:24,490 looping κατασκευή, σε αντίθεση προς τα δεξιά δίπλα στη γραμμή 22, όπου θα 304 00:13:24,490 --> 00:13:26,880 πραγματικά ενδιαφέρονται για να πάρει n; 305 00:13:26,880 --> 00:13:27,330 Ναι; 306 00:13:27,330 --> 00:13:27,780 [Δεν ακούγεται] 307 00:13:27,780 --> 00:13:29,040 >> David J. Malan: Ναι, έτσι το ζήτημα του πεδίου εφαρμογής. 308 00:13:29,040 --> 00:13:30,850 Και σε απλή γλώσσα όρος, τι δεν αναφέρεται στο πεδίο; 309 00:13:34,690 --> 00:13:36,610 Ναι; 310 00:13:36,610 --> 00:13:37,860 [Δεν ακούγεται] 311 00:13:40,040 --> 00:13:41,105 David J. Malan: Μπορείτε να μας μιλήσετε λίγο πιο δυνατά; 312 00:13:41,105 --> 00:13:43,450 ΟΜΙΛΗΤΗΣ 1: Πού μπορείτε να αποκτήσετε πρόσβαση σε μια συγκεκριμένη μεταβλητή. 313 00:13:43,450 --> 00:13:45,170 David J. Malan: Τέλεια. 314 00:13:45,170 --> 00:13:47,360 Πού μπορείτε να αποκτήσετε πρόσβαση σε μια συγκεκριμένη μεταβλητή. 315 00:13:47,360 --> 00:13:50,400 Και γενικά, ο κανόνας μέχρι τώρα ήταν ότι το πεδίο εφαρμογής ορισμένων 316 00:13:50,400 --> 00:13:55,860 μεταβλητή αυτή ορίζεται από τις πιο πρόσφατες άγκιστρα που έχετε δει. 317 00:13:55,860 --> 00:14:02,010 Και έτσι σε αυτή την περίπτωση, αν έκανα το λάθος να δηλώσει n στη γραμμή 22, 318 00:14:02,010 --> 00:14:03,010 ότι η γραμμή θα μπορούσε να λειτουργήσει. 319 00:14:03,010 --> 00:14:10,990 Θα ήθελα να πάρετε μια int, και θα ήθελα να το θέσω σε αυτή τη μεταβλητή n στην γραμμή 22. 320 00:14:10,990 --> 00:14:16,900 Αλλά ποια γραμμή κώδικα θα έχουν πλέον καμία ιδέα για το τι μιλάω; 321 00:14:16,900 --> 00:14:22,650 Έτσι, 25, και βγάζει 24, καθώς και, επειδή σε αυτήν την περίπτωση, δεν εμπίπτει 322 00:14:22,650 --> 00:14:23,610 τα άγκιστρα. 323 00:14:23,610 --> 00:14:27,280 Έτσι, μόλις ένα μικρό κομμάτι από μια ενόχληση, αλλά πολύ εύκολα να λυθεί με απλή δήλωση 324 00:14:27,280 --> 00:14:30,140 η μεταβλητή έξω από την ίδια τη λειτουργία. 325 00:14:30,140 --> 00:14:32,600 >> Τώρα θα δούμε αργότερα σήμερα, μπορείτε να πάτε ένα βήμα παραπέρα. 326 00:14:32,600 --> 00:14:34,860 Και θα μπορούσατε ακόμα και να πάρετε μια λίγο τεμπέλης - 327 00:14:34,860 --> 00:14:37,320 και αυτό δεν πρέπει να συνιστάται, σε γενικές γραμμές - 328 00:14:37,320 --> 00:14:42,260 αλλά θα μπορούσε ακόμη και να πάρει τεμπέλης και να θέσει μια μεταβλητή σε παγκόσμιο επίπεδο, να το πω έτσι, δεν 329 00:14:42,260 --> 00:14:46,670 εσωτερικό μιας συνάρτησης, όχι στο εσωτερικό ενός βρόχου, αλλά στο ίδιο το αρχείο, εκτός 330 00:14:46,670 --> 00:14:49,600 από όλες τις λειτουργίες που έχετε γράψει, όπως έκανα εδώ στη γραμμή 15. 331 00:14:49,600 --> 00:14:51,160 Αλλά αυτό είναι γενικά επάνω. 332 00:14:51,160 --> 00:14:55,680 Αλλά συνειδητοποιούν αυτό είναι μια λύση μερικές φορές σε άλλα προβλήματα, όπως θα 333 00:14:55,680 --> 00:14:56,620 τελικά δείτε. 334 00:14:56,620 --> 00:14:58,130 Έτσι, για τώρα, εμείς θα το αφήσουμε έτσι. 335 00:14:58,130 --> 00:15:01,030 Αλλά ας δούμε αν μπορούμε να ξαναγράψουμε αυτό ακριβώς για να ξεκινήσει μια εκφραζόμαστε 336 00:15:01,030 --> 00:15:01,990 λίγο διαφορετικά. 337 00:15:01,990 --> 00:15:05,330 >> Έτσι, το πρόγραμμα αυτό, ακριβώς για να είναι σαφής, είναι positive1. 338 00:15:05,330 --> 00:15:11,810 Επιτρέψτε μου να προχωρήσει εδώ και στο παράθυρο του τερματικού μου κάνει positive1, Enter. 339 00:15:11,810 --> 00:15:12,740 Συλλέγει, εντάξει. 340 00:15:12,740 --> 00:15:14,910 Πάω να τρέξει positive1, πατήστε Enter. 341 00:15:14,910 --> 00:15:16,820 Απαιτώ να μου δώσετε ένα θετικό ακέραιο. 342 00:15:16,820 --> 00:15:18,260 Θα πω -1. 343 00:15:18,260 --> 00:15:18,910 Αυτό δεν λειτούργησε. 344 00:15:18,910 --> 00:15:22,150 0, 99, η οποία φαίνεται να λειτουργεί. 345 00:15:22,150 --> 00:15:23,570 Ίσως δεν είναι η πιο αυστηρή δοκιμασία. 346 00:15:23,570 --> 00:15:26,480 Αλλά τουλάχιστον είναι μια ωραία επιταγή λογική ότι είμαστε στο σωστό δρόμο. 347 00:15:26,480 --> 00:15:29,240 Έτσι, τώρα επιτρέψτε μου να προχωρήσει και να ανοίξει την έκδοση δύο από αυτό. 348 00:15:29,240 --> 00:15:32,500 Και τι είναι διαφορετικό ήδη; 349 00:15:32,500 --> 00:15:35,140 Υλοποιεί το ίδιο πράγμα. 350 00:15:35,140 --> 00:15:40,660 Αλλά τι είναι το άλμα από το σαφώς διαφορετικό αυτή τη φορά; 351 00:15:40,660 --> 00:15:42,560 Ναι, έτσι αυτό bool στο πράσινο. 352 00:15:42,560 --> 00:15:45,980 Gedit έχει τονίσει σε αυτό το πράσινο λέξη-κλειδί γνωστή ως bool, 353 00:15:45,980 --> 00:15:47,000 η οποία είναι ένας τύπος δεδομένων. 354 00:15:47,000 --> 00:15:51,080 Δεν έχει έρθει ενσωματωμένο σε όλες τις εκδόσεις του C. Θα πρέπει να περιλαμβάνει ένα 355 00:15:51,080 --> 00:15:52,010 συγκεκριμένη βιβλιοθήκη. 356 00:15:52,010 --> 00:15:54,770 Στην περίπτωσή μας, θα περιλαμβάνεται το CS50 βιβλιοθήκη έτσι ώστε να 357 00:15:54,770 --> 00:15:56,460 έχουν πρόσβαση σε bool. 358 00:15:56,460 --> 00:15:59,810 Όμως, στη γραμμή 18, φαίνεται να έχουμε μια λογική τιμή εδώ ονομάζεται ευγνώμων. 359 00:15:59,810 --> 00:16:01,040 Γι 'αυτό και θα μπορούσε να λέγεται αυτό το τίποτα. 360 00:16:01,040 --> 00:16:04,500 Αλλά αυτό που ονομάζεται απλά ευγνώμων για το είδος του μεταφέρω κάποια σημασιολογική έννοια. 361 00:16:04,500 --> 00:16:07,930 Έτσι, αρχικά στη γραμμή 18, είμαι προφανώς δεν ευγνώμων, διότι η 362 00:16:07,930 --> 00:16:12,150 Boolean τιμή ευγνώμων ξεκινά να false στη γραμμή 18. 363 00:16:12,150 --> 00:16:16,890 Και τότε φαίνεται τι έχω κάνει εδώ στις γραμμές 21 έως 23 είναι που έχω μόλις 364 00:16:16,890 --> 00:16:18,610 το είδος της ξαναγραφεί λογική μου. 365 00:16:18,610 --> 00:16:21,020 Έτσι, δεν έχει λειτουργικά διαφορετικές. 366 00:16:21,020 --> 00:16:26,940 Αλλά στην γραμμή 22 τώρα, μπορώ να ελέγξω αν το int ο χρήστης έχει δώσει είναι μεγαλύτερη από ό, τι 367 00:16:26,940 --> 00:16:31,120 0, τότε μπορώ να αλλάξω απλώς την αξία των ευγνώμων για αλήθεια. 368 00:16:31,120 --> 00:16:32,290 Και γιατί το κάνω αυτό; 369 00:16:32,290 --> 00:16:35,600 Επειδή στην γραμμή 25, προφανώς, Πάω να ελέγξετε την κατάσταση. 370 00:16:35,600 --> 00:16:39,380 Κάντε αυτό το βρόχο, ενώ ευγνώμων είναι ψευδής. 371 00:16:39,380 --> 00:16:43,610 >> Γι 'αυτό και προτείνω αυτό ως εναλλακτική λύση στην έκδοση γιατί είναι τουλάχιστον ένα 372 00:16:43,610 --> 00:16:45,130 λίγο πιο έξυπνο, ίσως. 373 00:16:45,130 --> 00:16:46,900 Είναι λίγο πιο γειωμένη στην αγγλική γλώσσα. 374 00:16:46,900 --> 00:16:51,710 Έτσι, κάνετε τα ακόλουθα, ενώ δεν είστε ευγνώμονες ή ενώ ευγνώμων είναι ψευδής. 375 00:16:51,710 --> 00:16:55,890 Και αυτή τη φορά, πάρα πολύ, εγώ προφανώς δεν με νοιάζει να θυμόμαστε ό, τι ο χρήστης πληκτρολογήσει 376 00:16:55,890 --> 00:16:57,730 επειδή στην ανακοίνωση δεν υπάρχει μεταβλητή n. 377 00:16:57,730 --> 00:16:58,650 Έτσι, στην πραγματικότητα, Ι - 378 00:16:58,650 --> 00:17:00,080 ένα μικρό αθώο ψέμα εκεί. 379 00:17:00,080 --> 00:17:02,770 Λειτουργικά, το πρόγραμμα είναι λίγο διαφορετική όταν θα φτάσετε στο κάτω μέρος του 380 00:17:02,770 --> 00:17:04,819 επειδή δεν είμαι θυμόμαστε τι είναι n. 381 00:17:04,819 --> 00:17:09,579 Αλλά ήθελα να αποδείξει εδώ ότι ακόμα κι αν έχουμε δει και GetInt 382 00:17:09,579 --> 00:17:13,920 GetString που χρησιμοποιείται στη δεξιά πλευρά ενός ίσον μέχρι τώρα, έτσι ώστε 383 00:17:13,920 --> 00:17:17,160 θυμόμαστε την αξία, από τεχνική άποψη, αυτό δεν είναι απολύτως απαραίτητο. 384 00:17:17,160 --> 00:17:20,950 Αν για οποιοδήποτε λόγο απλά δεν με νοιάζει να σώσει την τιμή, απλά θέλετε 385 00:17:20,950 --> 00:17:25,710 για να ελέγξετε την τιμή, παρατηρούμε ότι μπορούμε να γράψουμε απλά αυτό ως GetInt ανοιχτό 386 00:17:25,710 --> 00:17:27,000 παρένθεση, κοντά παρένθεση. 387 00:17:27,000 --> 00:17:30,460 Η λειτουργία πρόκειται να επιστρέψει μια τιμή, όπως έχουμε πει. 388 00:17:30,460 --> 00:17:32,010 Είναι πρόκειται να σας δώσει πίσω ένα int. 389 00:17:32,010 --> 00:17:36,450 Και έτσι, αν σκεφτούμε διανοητικά να συμβεί αυτό, όταν πληκτρολογείτε σε 99, GetInt 390 00:17:36,450 --> 00:17:38,160 επιστρέφει τον αριθμό 99. 391 00:17:38,160 --> 00:17:41,330 Και έτσι εννοιολογικά, είναι σαν τον κωδικό μου ήταν πραγματικά αυτό. 392 00:17:41,330 --> 00:17:45,880 Έτσι, εάν 99 είναι πράγματι μεγαλύτερη από μηδέν, τότε ευγνώμονες γίνει αληθής. 393 00:17:45,880 --> 00:17:50,420 Στη συνέχεια, γραμμή 25 πραγματοποιεί ooh, τελειώσαμε επειδή είμαι τώρα ευγνώμων. 394 00:17:50,420 --> 00:17:54,590 Και στη γραμμή 26, εμείς απλώς να πω, ευχαριστώ για το θετικό ακέραιο, ανεξάρτητα από το 395 00:17:54,590 --> 00:17:55,710 έτυχε να είναι. 396 00:17:55,710 --> 00:17:58,900 >> Τώρα ας κάνουμε μικρή συντακτική ζάχαρη εδώ, να το πω έτσι. 397 00:17:58,900 --> 00:18:02,990 Ας δούμε αν μπορούμε να καθαρίσει αυτή τη γραμμή 25 με αυτό το τρίτο και τελευταίο διακύμανση 398 00:18:02,990 --> 00:18:04,640 σε positive3. 399 00:18:04,640 --> 00:18:08,250 Έτσι, παρατηρούμε την μόνη διαφορά τώρα είναι τι γραμμή κώδικα; 400 00:18:11,930 --> 00:18:13,260 Ναι, έτσι 25. 401 00:18:13,260 --> 00:18:15,520 Και δεν έχουμε δει πραγματικά αυτό το τέχνασμα ακριβώς ακόμα. 402 00:18:15,520 --> 00:18:19,510 Αλλά κάναμε δείτε το θαυμαστικό τη Δευτέρα, η οποία δηλώνει τι; 403 00:18:19,510 --> 00:18:20,970 Έτσι, δεν είναι, ή άρνηση. 404 00:18:20,970 --> 00:18:23,460 Πάρτε λοιπόν μια λογική τιμή και γυρίστε την αξία του. 405 00:18:23,460 --> 00:18:24,390 True γίνεται ψευδής. 406 00:18:24,390 --> 00:18:25,500 Λάθος γίνεται πραγματικότητα. 407 00:18:25,500 --> 00:18:28,910 Έτσι αυτό, θα ήθελα να προτείνω, είναι ακόμη λίγο πιο έξυπνο από ένα τρόπο 408 00:18:28,910 --> 00:18:32,200 γράφοντας τον κωδικό γιατί ακόμα προετοιμαστεί ευγνώμων για ψευδείς. 409 00:18:32,200 --> 00:18:33,530 Εξακολουθώ να κάνω το εξής. 410 00:18:33,530 --> 00:18:35,700 Έθεσα ευγνώμων για αλήθεια, όταν έρθει η ώρα. 411 00:18:35,700 --> 00:18:40,690 Αλλά τώρα μπορείτε πραγματικά να μεταφράσει ακριβώς αυτόν τον κώδικα προφορικά αριστερά προς τα δεξιά, 412 00:18:40,690 --> 00:18:42,550 ενώ δεν ευγνώμων. 413 00:18:42,550 --> 00:18:46,170 Επειδή Έκρηξη, ή θαυμαστικό, υποδηλώνει την έννοια του όχι, έτσι ενώ 414 00:18:46,170 --> 00:18:47,010 δεν ευγνώμων. 415 00:18:47,010 --> 00:18:49,740 >> Έτσι, και πάλι, δεν έχουμε εισάγει νέες έννοιες per se. 416 00:18:49,740 --> 00:18:53,230 Έχουμε μιλήσει για τα Boolean πίσω όταν παίξαμε με Scratch. 417 00:18:53,230 --> 00:18:55,690 Αλλά συνειδητοποιούν τώρα μπορούμε απλά να αρχίσετε να γράφετε κώδικα μας 418 00:18:55,690 --> 00:18:56,550 πολλούς διαφορετικούς τρόπους. 419 00:18:56,550 --> 00:19:00,010 Έτσι, ειδικά σε pset1, εάν είστε το είδος του που αγωνίζονται να καταλάβω τον τρόπο να 420 00:19:00,010 --> 00:19:03,400 γράψετε κάποιο πρόγραμμα, οι πιθανότητες είναι είστε στην τύχη, διότι εκεί πρόκειται να είναι οποιαδήποτε 421 00:19:03,400 --> 00:19:05,780 αριθμός των λύσεων που μπορεί να συμβεί μετά. 422 00:19:05,780 --> 00:19:09,850 Για παράδειγμα, αυτό είναι μόνο τρεις για ακόμη και το απλούστερο των προγραμμάτων. 423 00:19:09,850 --> 00:19:10,180 Εντάξει. 424 00:19:10,180 --> 00:19:13,860 Και τώρα θυμάμαι την Δευτέρα, αφήσαμε σε αυτό το σημείωμα με τις τιμές επιστροφής. 425 00:19:13,860 --> 00:19:18,280 Έτσι, για πρώτη φορά, γράψαμε ένα πρόγραμμα που δεν είναι μόνο να έχουν την κύρια, 426 00:19:18,280 --> 00:19:22,240 έχει επίσης τη δική του προσαρμοσμένη συνάρτηση που έγραψα εδώ. 427 00:19:22,240 --> 00:19:26,640 Έτσι, σε σειρά 31 έως 34, έχω εφαρμόσει μια λειτουργία κύβο. 428 00:19:26,640 --> 00:19:27,800 Δεν είναι πολύπλοκη. 429 00:19:27,800 --> 00:19:29,830 Είναι μόλις φορές φορές ένα, σε αυτή την περίπτωση. 430 00:19:29,830 --> 00:19:34,920 Αλλά αυτό που είναι σημαντικό για αυτό είναι ότι παίρνω εισόδου με τη μορφή ενός και 431 00:19:34,920 --> 00:19:38,910 Είμαι επιστροφή εξόδου με τη μορφή ενός φορές φορές ένα. 432 00:19:38,910 --> 00:19:43,940 >> Έτσι, τώρα έχω τη δυνατότητα, όπως και εγώ που χρησιμοποιούνται για να με printf μόνο, για να καλέσετε 433 00:19:43,940 --> 00:19:47,120 αυτή η λειτουργία καλώντας τη λειτουργία του κύβου. 434 00:19:47,120 --> 00:19:49,470 Και η λειτουργία κύβος παίρνει κάποια στοιχεία. 435 00:19:49,470 --> 00:19:52,030 Και η λειτουργία κύβος επιστρέφει κάποιο αποτέλεσμα. 436 00:19:52,030 --> 00:19:56,660 Και έτσι, αντίθετα, printf έκανε κάτι. 437 00:19:56,660 --> 00:19:59,490 Δεν επιστρέφει τίποτα ότι νοιαζόμαστε για - έστω και αν, ως 438 00:19:59,490 --> 00:20:00,820 μέρος, το κάνει να επιστρέψει μια τιμή. 439 00:20:00,820 --> 00:20:02,650 Μπορείτε απλά αγνοούν γενικά. 440 00:20:02,650 --> 00:20:04,000 Printf έκανε κάτι. 441 00:20:04,000 --> 00:20:06,220 Είχε μια παρενέργεια της εκτύπωσης στην οθόνη. 442 00:20:06,220 --> 00:20:09,480 Αντίθετα εδώ, έχουμε τη λειτουργία κύβου, η οποία 443 00:20:09,480 --> 00:20:11,400 στην πραγματικότητα επιστρέφει κάτι. 444 00:20:11,400 --> 00:20:12,960 >> Έτσι, αυτό είναι γενικά - 445 00:20:12,960 --> 00:20:15,260 για όσους είναι εξοικειωμένοι με αυτό, είναι μια αρκετά απλή ιδέα. 446 00:20:15,260 --> 00:20:18,460 Αλλά για εκείνους που είναι λιγότερο εξοικειωμένοι με την ιδέα αυτή να περάσει στις εισροές και να πάρει 447 00:20:18,460 --> 00:20:21,700 πίσω εξόδους, ας προσπαθήσουμε κάτι εξαιρετικά απλό. 448 00:20:21,700 --> 00:20:25,180 Είναι κανείς άνετα να ανεβαίνει στη σκηνή για λίγο; 449 00:20:25,180 --> 00:20:27,460 Θα πρέπει να αισθάνονται άνετα με μια φωτογραφική μηχανή για σας, καθώς και. 450 00:20:27,460 --> 00:20:27,640 Ναι. 451 00:20:27,640 --> 00:20:28,610 Εντάξει, τι είναι το όνομά σας; 452 00:20:28,610 --> 00:20:29,020 KEN: Ken. 453 00:20:29,020 --> 00:20:29,420 David J. Malan: Ken. 454 00:20:29,420 --> 00:20:29,810 Εντάξει, ο Ken. 455 00:20:29,810 --> 00:20:31,060 Ελάτε επάνω. 456 00:20:31,060 --> 00:20:34,660 Έτσι Ken πρόκειται να είναι μια συνάρτηση του είδους εδώ. 457 00:20:34,660 --> 00:20:35,760 Και ας πάμε μπροστά και να το κάνουμε αυτό. 458 00:20:35,760 --> 00:20:38,790 Ας πάμε λίγο φαντασία. 459 00:20:38,790 --> 00:20:39,770 Χάρηκα για τη γνωριμία. 460 00:20:39,770 --> 00:20:41,010 Καλώς ήρθατε στο προσκήνιο. 461 00:20:41,010 --> 00:20:41,980 Εντάξει. 462 00:20:41,980 --> 00:20:45,590 Ας χτυπήσει αυτό το κουμπί εδώ. 463 00:20:45,590 --> 00:20:46,420 Εντάξει. 464 00:20:46,420 --> 00:20:49,490 Έτσι, εδώ έχετε ένα σύγχρονο μαυροπίνακα. 465 00:20:49,490 --> 00:20:53,050 Και αυτό που είμαι είναι η κύρια λειτουργία, για παράδειγμα. 466 00:20:53,050 --> 00:20:55,990 Και δεν έχω ένα iPad στο χέρι μου. 467 00:20:55,990 --> 00:20:59,000 Πραγματικά, δεν θυμάμαι πώς - και, στην πραγματικότητα, δεν μπορούμε να πούμε ότι. 468 00:20:59,000 --> 00:21:02,200 Δεν έχω πραγματικά καλή γραφή. 469 00:21:02,200 --> 00:21:05,260 Και έτσι λοιπόν, θέλετε να εκτυπώσετε κάτι στην οθόνη για μένα. 470 00:21:05,260 --> 00:21:07,470 >> Είμαι, λοιπόν, είναι το κύριο πρόγραμμα. 471 00:21:07,470 --> 00:21:15,060 Και εγώ είμαι πρόκειται να έχετε το πω αυτό με το γράψιμο το μηδέν στο κοτόπουλο μου και 472 00:21:15,060 --> 00:21:16,600 στη συνέχεια, περνώντας μια είσοδο σας. 473 00:21:16,600 --> 00:21:20,000 Έτσι, ως ανόητη και αν αυτή η άσκηση είναι, η έννοια των λειτουργιών και μια κλήση 474 00:21:20,000 --> 00:21:22,260 λειτουργία και επιστρέφει μια λειτουργία πραγματικά βράζει κάτω σε αυτό. 475 00:21:22,260 --> 00:21:23,120 Είμαι κύριος. 476 00:21:23,120 --> 00:21:26,270 Έχω γράψει μόλις printf ("κάτι") στην οθόνη. 477 00:21:26,270 --> 00:21:27,470 Τρέχω αυτό το πρόγραμμα. 478 00:21:27,470 --> 00:21:30,900 Και το συντομότερο printf παίρνει ονομάζεται, παίρνει ένα επιχείρημα - ή μία παράμετρο, 479 00:21:30,900 --> 00:21:31,660 μερικές φορές - 480 00:21:31,660 --> 00:21:32,780 μεταξύ διπλά εισαγωγικά. 481 00:21:32,780 --> 00:21:33,960 Εδώ είναι το επιχείρημα. 482 00:21:33,960 --> 00:21:35,740 Είμαι το πέρασμα στον Ken. 483 00:21:35,740 --> 00:21:39,390 Τώρα είναι ένα μαύρο κουτί γραπτή κάποια πριν από μερικά χρόνια ότι προφανώς 484 00:21:39,390 --> 00:21:41,070 μόνο ξέρει πώς να εκτυπώσετε τα πράγματα στην οθόνη. 485 00:21:41,070 --> 00:21:42,320 >> Έτσι, την εκτέλεση. 486 00:21:48,842 --> 00:21:49,900 Αυτό δεν είναι κακό. 487 00:21:49,900 --> 00:21:50,890 Έτσι, είναι πολύ καλή. 488 00:21:50,890 --> 00:21:52,900 Έτσι τώρα ο Ken γίνεται εκτέλεσης. 489 00:21:52,900 --> 00:21:55,810 Μήπως πρέπει να το χέρι μου τίποτα πίσω; 490 00:21:55,810 --> 00:21:57,240 Έτσι, δεν είναι ότι έχουμε δει μέχρι στιγμής. 491 00:21:57,240 --> 00:21:59,230 Και πάλι, printf δεν επιστρέφει στην πραγματικότητα έναν αριθμό. 492 00:21:59,230 --> 00:22:01,640 Αλλά θα πάμε να αγνοούν ότι για τώρα, γιατί ποτέ δεν έχω χρησιμοποιήσει. 493 00:22:01,640 --> 00:22:03,400 Έτσι, αυτό που είναι για τον Ken. 494 00:22:03,400 --> 00:22:06,650 Και έτσι τώρα κύρια έρχεται πίσω για να εκτελεστεί - 495 00:22:06,650 --> 00:22:09,630 κύριος αναλαμβάνει τον έλεγχο του προγράμματος και πάλι, επειδή αυτή τη γραμμή του κώδικα, 496 00:22:09,630 --> 00:22:11,010 printf, γίνεται εκτέλεσης. 497 00:22:11,010 --> 00:22:13,890 Και πάμε για τον τρόπο μας την εκτέλεση ό, τι άλλες γραμμές υπάρχουν. 498 00:22:13,890 --> 00:22:14,130 >> Εντάξει. 499 00:22:14,130 --> 00:22:17,080 Έτσι, τώρα ας προσπαθήσουμε ένα ελαφρώς διαφορετικό παράδειγμα. 500 00:22:17,080 --> 00:22:22,430 Και αυτή τη φορά εδώ, ας ξεκαθαρίσουμε πρώτα την οθόνη εδώ. 501 00:22:22,430 --> 00:22:24,670 Και αυτή τη φορά, θα κάνουμε τη λειτουργία κοπής σε κύβους. 502 00:22:24,670 --> 00:22:27,350 Αλλά αυτή τη φορά, περιμένω μια τιμή εξόδου. 503 00:22:27,350 --> 00:22:28,630 Ας προχωρήσουμε και να κάνουμε αυτό. 504 00:22:28,630 --> 00:22:35,680 Έτσι, τώρα έχω μια γραμμή κώδικα που λέει ότι x = κύβος (x). 505 00:22:35,680 --> 00:22:36,930 Έτσι, στην πραγματικότητα let's - 506 00:22:41,450 --> 00:22:43,940 η γραμμή του κώδικα, ανάκληση, μοιάζει με αυτό. 507 00:22:43,940 --> 00:22:45,960 χ = κύβο (χ). 508 00:22:45,960 --> 00:22:48,100 Λοιπόν, πώς είναι αυτό πρόκειται να λειτουργήσει; 509 00:22:48,100 --> 00:22:50,820 Ας προχωρήσουμε και να σας δώσει μια λευκή οθόνη και πάλι. 510 00:22:50,820 --> 00:22:55,000 Και εγώ είμαι πρόκειται να γράψω τώρα κάτω από την τιμή του x, η οποία αυτή τη στιγμή σε 511 00:22:55,000 --> 00:23:01,080 φορά συμβαίνει να είναι, ας πούμε, 2, για να το κρατήσει απλό. 512 00:23:01,080 --> 00:23:04,890 Έτσι έχω γράψει κάτω σε ένα κομμάτι χαρτί η αξία των 2, 513 00:23:04,890 --> 00:23:06,100 η οποία είναι η τιμή του x μου. 514 00:23:06,100 --> 00:23:08,250 Μου το χέρι στον Ken. 515 00:23:08,250 --> 00:23:09,200 KEN: Και γράφω απλά την απάντηση; 516 00:23:09,200 --> 00:23:12,660 David J. Malan: Ναι, ας γράψει ακριβώς την απάντηση. 517 00:23:12,660 --> 00:23:13,030 Εντάξει. 518 00:23:13,030 --> 00:23:16,280 Και τώρα πρέπει να επιστρέψει με κάτι. 519 00:23:16,280 --> 00:23:17,560 Έτσι - 520 00:23:17,560 --> 00:23:18,170 τέλεια. 521 00:23:18,170 --> 00:23:18,840 Νίκαια segue. 522 00:23:18,840 --> 00:23:21,970 >> Έτσι, τώρα τα χέρια μου πίσω την αξία των 8, σε αυτή την περίπτωση. 523 00:23:21,970 --> 00:23:23,220 Και τι μπορώ να κάνω με αυτό; 524 00:23:23,220 --> 00:23:26,130 Λοιπόν, στην πραγματικότητα, ας δούμε. 525 00:23:26,130 --> 00:23:26,640 Πάρτε αυτό το δικαίωμα. 526 00:23:26,640 --> 00:23:27,880 Τι θα πάω να κάνω με αυτό; 527 00:23:27,880 --> 00:23:31,900 Τώρα είμαι πρόκειται να λάβει αυτήν την τιμή και πραγματικά να το αποθηκεύσετε σε εκείνους 528 00:23:31,900 --> 00:23:33,400 ίδια bits στη μνήμη. 529 00:23:33,400 --> 00:23:35,030 Αλλά ειδοποίηση, είμαι το είδος του αγώνα εδώ. 530 00:23:35,030 --> 00:23:38,280 Είμαι λίγο μπερδεμένος γιατί όπου μπορώ να γράψω πραγματικά την αξία του x; 531 00:23:38,280 --> 00:23:41,840 Γιατί ό, τι έχω κάνει ακριβώς είναι φυσικά το χέρι Ken ένα κομμάτι χαρτί 532 00:23:41,840 --> 00:23:44,400 που είχε την τιμή 2, η οποία ήταν x. 533 00:23:44,400 --> 00:23:46,300 Και πράγματι, αυτό είναι ακριβώς ό, τι συμβαίνει. 534 00:23:46,300 --> 00:23:50,100 Έτσι, αποδεικνύεται ότι όταν καλείτε μια συνάρτηση, και να περάσετε σε ένα επιχείρημα 535 00:23:50,100 --> 00:23:54,130 όπως το "Hello World" ή να περάσετε σε ένα επιχείρημα όπως είναι το 2, σε γενικές γραμμές, είστε 536 00:23:54,130 --> 00:23:56,720 περνώντας σε ένα αντίγραφο της εν λόγω επιχείρημα. 537 00:23:56,720 --> 00:24:01,020 Και έτσι ακριβώς όπως έγραψα κάτω τον αριθμό 2 εδώ και παρέδωσαν στον Ken? Που πρέπει 538 00:24:01,020 --> 00:24:04,760 σημαίνει ότι εξακολουθώ να έχω ένα αντίγραφο του 2 αξία κάπου. 539 00:24:04,760 --> 00:24:08,140 Διότι πράγματι, τώρα που έχω πάρει πίσω την τιμή 8, θα πρέπει να πάμε πίσω στο 540 00:24:08,140 --> 00:24:12,010 RAM και πραγματικά γράψετε 8, όπου είχα μια φορά τον αριθμό 2. 541 00:24:12,010 --> 00:24:15,720 >> Έτσι, να θυμάστε αυτή την οπτική αντίληψη του περνώντας κυριολεκτικά 542 00:24:15,720 --> 00:24:16,730 αντίγραφο της αξίας. 543 00:24:16,730 --> 00:24:19,570 Ken κάνει το πράγμα του, τα χέρια μου πίσω κάτι - στην περίπτωση αυτή, 544 00:24:19,570 --> 00:24:20,820 μια αξία σαν 8. 545 00:24:20,820 --> 00:24:22,660 Και τότε θα πρέπει να κάνουμε κάτι με αυτή την τιμή αν 546 00:24:22,660 --> 00:24:24,880 θέλετε να το κρατήσετε γύρω. 547 00:24:24,880 --> 00:24:29,470 Έτσι, όλα αυτά θα είναι όλοι πάρα πολύ εξοικειωμένοι πριν από καιρό. 548 00:24:29,470 --> 00:24:33,082 Σας ευχαριστώ πολύ για αυτό το demo, εδώ Ken. 549 00:24:33,082 --> 00:24:34,820 Εντάξει. 550 00:24:34,820 --> 00:24:36,720 Πολύ καλά κάνει. 551 00:24:36,720 --> 00:24:40,610 Ας δούμε λοιπόν πώς τελικά που σχετίζεται με κάποια από τη λειτουργία 552 00:24:40,610 --> 00:24:42,270 καλώντας ότι έχουμε κάνει εδώ. 553 00:24:42,270 --> 00:24:47,610 Επιτρέψτε μου λοιπόν να προχωρήσουμε και να μας φέρει πίσω στο παράδειγμα εδώ κοπής σε κύβους. 554 00:24:47,610 --> 00:24:53,080 Και παρατηρώ ότι, αν θέλουμε πραγματικά να αρχίσετε να παίρνετε αυτό περαιτέρω, θα πάμε 555 00:24:53,080 --> 00:24:57,050 να πρέπει να λαμβάνει υπόψη της το γεγονός ότι ο αριθμός x που είναι να περάσει στην 556 00:24:57,050 --> 00:25:01,390 εδώ είναι διαφορετική από ό, τι είναι στην πραγματικότητα να περάσει σε λειτουργία. 557 00:25:01,390 --> 00:25:03,940 Έτσι, και πάλι, αυτό πέρασε από αντίγραφο πρόκειται να γίνει αρκετά 558 00:25:03,940 --> 00:25:05,620 germane ακριβώς σε μια στιγμή. 559 00:25:05,620 --> 00:25:09,320 >> Έτσι, ας ρίξουμε μια ματιά σε κάτι που δεν εργάζονται αρκετά δεξιά ακόμα. 560 00:25:09,320 --> 00:25:11,790 Πάω να πάει μπροστά και να ανοίξει ένα τρίτο παράδειγμα με λάθη, τα οποία 561 00:25:11,790 --> 00:25:13,560 πάσχει από τη φύση. 562 00:25:13,560 --> 00:25:18,070 Και λέγεται buggy3, και εφαρμόζει μια εναλλαγή λειτουργίας. 563 00:25:18,070 --> 00:25:23,500 Έτσι, εδώ έχουμε μια βασική λειτουργία που έχει x και y αρχικοποιείται σε αυθαίρετα 564 00:25:23,500 --> 00:25:24,720 1 και 2, αντιστοίχως. 565 00:25:24,720 --> 00:25:27,590 Θα μπορούσαμε να χρησιμοποιήσουμε GetInt, αλλά χρειαζόμαστε μια απλή άσκηση. 566 00:25:27,590 --> 00:25:29,680 Έτσι είναι δύσκολο-κωδικοποιημένα ως 1 και 2. 567 00:25:29,680 --> 00:25:35,330 Στις γραμμές 21 και 22, που προφανώς εκτυπώσετε x και y, μία ανά γραμμή. 568 00:25:35,330 --> 00:25:39,620 Στη συνέχεια, στη γραμμή 23, που ισχυρίζονται είμαι εναλλαγή αυτές τις αξίες, τελεία, τελεία, τελεία. 569 00:25:39,620 --> 00:25:43,030 Καλώ προφανώς μια λειτουργία στην γραμμή 24 που ονομάζεται ανταλλαγής 570 00:25:43,030 --> 00:25:44,000 που παίρνει δύο επιχειρήματα. 571 00:25:44,000 --> 00:25:46,430 Είναι εντελώς legit λειτουργίες για να λάβει δύο επιχειρήματα. 572 00:25:46,430 --> 00:25:48,220 Έχουμε δει printf το κάνει ήδη. 573 00:25:48,220 --> 00:25:50,370 Έτσι ανταλλαγής παίρνει προφανώς x και y. 574 00:25:50,370 --> 00:25:53,010 Και όπως υποδηλώνει το όνομά του, θα ήθελα να ελπίζω ότι πρόκειται να 575 00:25:53,010 --> 00:25:54,320 ανταλλάξουν αυτές τις δύο τιμές. 576 00:25:54,320 --> 00:25:57,560 Έτσι, τότε θα διεκδικήσει στη γραμμή 25, αντάλλαξαν. 577 00:25:57,560 --> 00:26:01,570 Και εγώ επανεκτύπωση x και y με την παραδοχή ότι 578 00:26:01,570 --> 00:26:02,830 που έχουν πράγματι έχουν μετατραπεί. 579 00:26:02,830 --> 00:26:04,370 Αλλά αν τρέξω πραγματικά αυτό το πρόγραμμα - 580 00:26:04,370 --> 00:26:06,060 επιτρέψτε μου να ανοίξει ένα παράθυρο τερματικού. 581 00:26:06,060 --> 00:26:07,750 Επιτρέψτε μου να κάνω buggy3. 582 00:26:07,750 --> 00:26:09,970 Όπως υποδηλώνει το όνομα, αυτό δεν πρόκειται να τελειώσει καλά. 583 00:26:09,970 --> 00:26:14,690 Γιατί όταν χτύπησα Enter, παρατηρούμε ότι το x είναι 1. 584 00:26:14,690 --> 00:26:15,720 γ είναι 2. 585 00:26:15,720 --> 00:26:19,160 Και ακόμη στο τέλος του προγράμματος, είναι ακόμα, στην πραγματικότητα, το ίδιο. 586 00:26:19,160 --> 00:26:22,760 >> Έτσι, με βάση την επίδειξη μόλις τώρα με τον Ken, τι πραγματικά συμβαίνει; 587 00:26:22,760 --> 00:26:24,660 Λοιπόν, ας βουτήξει σε αυτή τη λειτουργία swap. 588 00:26:24,660 --> 00:26:25,800 Είναι εξαιρετικά σύντομη. 589 00:26:25,800 --> 00:26:28,020 Είναι μόνο λίγες γραμμές κώδικα καιρό. 590 00:26:28,020 --> 00:26:32,810 Αλλά ποιο είναι το βασικό πρόβλημα με βάση την απλή ιστορία είπε 591 00:26:32,810 --> 00:26:34,270 εδώ με τον Ken; 592 00:26:34,270 --> 00:26:36,115 Γιατί έχει σπάσει swap; 593 00:26:36,115 --> 00:26:37,365 [Δεν ακούγεται] 594 00:26:39,840 --> 00:26:40,460 Ακριβώς. 595 00:26:40,460 --> 00:26:43,610 Έτσι είμαστε αποθήκευση σε ένα αντίγραφο, δεν είναι η ίδια η μεταβλητή. 596 00:26:43,610 --> 00:26:46,810 Με άλλα λόγια, η ανταλλαγή παίρνει προφανώς δύο επιχειρήματα, ένα int. 597 00:26:46,810 --> 00:26:49,370 Και αυτό είναι που ονομάζεται αυθαίρετα a και b. 598 00:26:49,370 --> 00:26:54,430 Και μέχρι εδώ, έχω περάσει σε x και y, τα οποία είναι αντίστοιχα 1 και 2. 599 00:26:54,430 --> 00:26:56,580 Αλλά δεν είμαι κυριολεκτικά περνώντας x. 600 00:26:56,580 --> 00:26:58,410 Δεν είμαι κυριολεκτικά περνώντας y. 601 00:26:58,410 --> 00:27:01,230 Είμαι περνώντας ένα αντίγραφο του x και ένα αντίγραφο του y. 602 00:27:01,230 --> 00:27:05,180 Είναι σαν σχεδόν σαν να αντιγραφεί και να επικολληθεί σε ανταλλάξουν τις αξίες που 603 00:27:05,180 --> 00:27:07,440 θέλετε πραγματικά να χειριστείτε. 604 00:27:07,440 --> 00:27:11,970 Έτσι, αν αυτή είναι η περίπτωση, όταν εγώ, το πρόγραμμα, ξεκινήστε την εκτέλεση 605 00:27:11,970 --> 00:27:14,140 γραμμή 35, ακολούθως 36 - 606 00:27:14,140 --> 00:27:17,740 όταν έχω στη γραμμή 37, σε αυτό το σημείο στην ιστορία, ποια είναι η αξία του ένα; 607 00:27:20,740 --> 00:27:24,850 Σε αυτό το σημείο στην ιστορία, γραμμή 37, ποια είναι η αξία του ενός σε αυτό το σημείο; 608 00:27:24,850 --> 00:27:25,980 Γι 'αυτό θα πρέπει να είναι ακριβώς 1. 609 00:27:25,980 --> 00:27:26,170 Σωστά; 610 00:27:26,170 --> 00:27:29,100 Επειδή x ψηφίστηκε ως το πρώτο επιχείρημα. 611 00:27:29,100 --> 00:27:33,150 Και αυτή η λειτουργία ακριβώς αυθαίρετα ζητά πρώτο επιχείρημα του, ένα. 612 00:27:33,150 --> 00:27:35,130 Το ίδιο ισχύει και y, το δεύτερο επιχείρημα. 613 00:27:35,130 --> 00:27:37,930 Και αυτό είναι ένα απλό τηλεφώνημα αυθαίρετα το δεύτερο β επιχείρημα. 614 00:27:37,930 --> 00:27:40,510 >> Τώρα, αυτή η διχοτόμηση είναι πραγματικά αρκετά απλά εξήγησε. 615 00:27:40,510 --> 00:27:40,880 Σκεφτείτε το. 616 00:27:40,880 --> 00:27:42,980 Κανείς από εμάς δεν έχουν συναντήσει το πρόσωπο που έγραψε printf. 617 00:27:42,980 --> 00:27:49,880 Έτσι, σίγουρα, αυτός ή αυτή δεν έχει καμία ιδέα για το τι μεταβλητές μας 30 χρόνια αργότερα θα 618 00:27:49,880 --> 00:27:50,710 να ονομάζεται. 619 00:27:50,710 --> 00:27:55,110 Έτσι, πρέπει να υπάρχει μια διάκριση ανάμεσα σε αυτό που αποκαλούν μεταβλητές 620 00:27:55,110 --> 00:27:59,960 λειτουργίες είστε γραπτώς και αυτό που εσείς ονομάζετε τις μεταβλητές σε συναρτήσεις είστε 621 00:27:59,960 --> 00:28:01,770 κλήσης ή τη χρήση. 622 00:28:01,770 --> 00:28:05,120 Έτσι με άλλα λόγια, έχω γράψει μου ως μεταβλητές x και y. 623 00:28:05,120 --> 00:28:08,060 Αλλά αν κάποιος άλλος είχε γράψει τη λειτουργία ανταλλαγής, αυτός ή αυτή σίγουρα 624 00:28:08,060 --> 00:28:10,480 Δεν ξέρω τι θα μου μεταβλητές πρόκειται να κληθεί. 625 00:28:10,480 --> 00:28:13,850 Έτσι, συνειδητοποιούν ότι αυτός είναι ο λόγος που έχουν αυτή τη δυαδικότητα των ονομάτων. 626 00:28:13,850 --> 00:28:16,800 Τεχνικά, θα μπορούσα να κάνω αυτό από σύμπτωση. 627 00:28:16,800 --> 00:28:19,750 Αλλά θα εξακολουθεί να περάσει στην ως αντίγραφα. 628 00:28:19,750 --> 00:28:22,940 Θα ήταν απλώς να είναι μια καθαρή σύμπτωση αισθητικά αν το πρόσωπο που έγραψε 629 00:28:22,940 --> 00:28:25,590 ανταλλαγής είχε χρησιμοποιήσει τα ίδια ονόματα. 630 00:28:25,590 --> 00:28:25,930 >> Εντάξει. 631 00:28:25,930 --> 00:28:29,010 Έτσι, σε αυτό το σημείο στην ιστορία, γραμμή 37, ένα είναι 1. 632 00:28:29,010 --> 00:28:30,410 το b είναι 2. 633 00:28:30,410 --> 00:28:32,040 Και τώρα να προχωρήσει για να τους ανταλλάξουν. 634 00:28:32,040 --> 00:28:34,730 Λοιπόν, πρώτα απ 'όλα, επιτρέψτε μου να κάνω πραγματικά αυτό πολύ πιο απλά. 635 00:28:34,730 --> 00:28:36,500 Δεν ξέρω τι αυτές οι τρεις γραμμές κώδικα έκαναν. 636 00:28:36,500 --> 00:28:37,370 Επιτρέψτε μου να κάνω ακριβώς αυτό. 637 00:28:37,370 --> 00:28:38,850 β παίρνει. 638 00:28:38,850 --> 00:28:40,170 β παίρνει ένα. 639 00:28:40,170 --> 00:28:41,450 Τέλος. 640 00:28:41,450 --> 00:28:43,540 Γιατί αυτό είναι σπασμένο, λογικά; 641 00:28:46,980 --> 00:28:48,590 Είναι το είδος της διαισθητικής πράγμα, έτσι δεν είναι; 642 00:28:48,590 --> 00:28:50,640 Έτσι, γίνεται ένα b. 643 00:28:50,640 --> 00:28:52,450 Και β γίνεται. 644 00:28:52,450 --> 00:28:55,410 Αλλά το πρόβλημα είναι ότι το συντομότερο γραμμή 37 εκτελεί, ποια είναι η 645 00:28:55,410 --> 00:28:58,170 αξία των α και β; 646 00:28:58,170 --> 00:28:59,070 Το ίδιο, 1. 647 00:28:59,070 --> 00:29:03,460 Επειδή έχετε clobbered, να το πω έτσι, έχετε αλλάξει β να ισούται με ένα. 648 00:29:03,460 --> 00:29:06,000 Έτσι, μια φορά γραμμή 37 εκτελείται, αυτό είναι υπέροχο. 649 00:29:06,000 --> 00:29:09,940 Τώρα έχετε δύο αντίγραφα του τον αριθμό 1 στο εσωτερικό αυτής της λειτουργίας. 650 00:29:09,940 --> 00:29:14,720 Έτσι λοιπόν, όταν λέτε στην γραμμή 38, παίρνει β, καλά, είστε το είδος του βιδωθεί. 651 00:29:14,720 --> 00:29:17,370 Επειδή είστε ανάθεση μόλις 1 προς 1. 652 00:29:17,370 --> 00:29:20,400 Έχετε είδος χάσει την αξία που νοιαζόταν για. 653 00:29:20,400 --> 00:29:22,910 >> Έτσι, στην αρχική εκδοχή του αυτό, παρατηρήστε τι έκανα. 654 00:29:22,910 --> 00:29:26,620 Είχα αντ 'αυτού μια τρίτη γραμμή του κώδικα που έμοιαζε με αυτό. 655 00:29:26,620 --> 00:29:29,910 Δηλώνω μια προσωρινή μεταβλητή - tmp είναι ένα πολύ κοινό όνομα 656 00:29:29,910 --> 00:29:31,240 για μια προσωρινή μεταβλητή. 657 00:29:31,240 --> 00:29:34,280 Είναι μια int επειδή έχει να ταιριάζει με αυτό που θέλω να κάνω ένα αντίγραφο του. 658 00:29:34,280 --> 00:29:39,720 Έχω αποθηκεύσει ένα αντίγραφο στο εσωτερικό του tmp. Έτσι, μια φορά γραμμή 37 έχει εκτελεστεί, 659 00:29:39,720 --> 00:29:41,390 η τιμή του α είναι - 660 00:29:41,390 --> 00:29:42,970 γρήγορη λογική ελέγχου - 661 00:29:42,970 --> 00:29:43,460 1. 662 00:29:43,460 --> 00:29:45,780 Η τιμή του b είναι 2. 663 00:29:45,780 --> 00:29:48,470 Και η τιμή του tmp είναι επίσης 1. 664 00:29:48,470 --> 00:29:51,470 Έτσι, τώρα έχω εκτελέσει γραμμή 38. 665 00:29:51,470 --> 00:29:57,180 Έτσι, όταν εκτελεί τη γραμμή 38, ένα παίρνει την τιμή του b. 666 00:29:57,180 --> 00:29:58,510 Και Β 2. 667 00:29:58,510 --> 00:30:00,500 Έτσι, ένα είναι τώρα 2. 668 00:30:00,500 --> 00:30:03,110 Έτσι, σε αυτό το σημείο στην ιστορία, ένα είναι 2, b είναι 2, 669 00:30:03,110 --> 00:30:05,130 tmp και είναι 1. 670 00:30:05,130 --> 00:30:09,330 Έτσι τώρα λογικά, μπορούμε αξία μόνο tmp γδούπο του σε β. 671 00:30:09,330 --> 00:30:10,690 Και τελειώσαμε. 672 00:30:10,690 --> 00:30:12,170 >> Έτσι έχουμε λύσει αυτό το πρόβλημα. 673 00:30:12,170 --> 00:30:16,040 Δυστυχώς, όταν εγώ τρέχω αυτό το πρόγραμμα σε αυτή τη μορφή, δεν πραγματικά ανταλλάξουν 674 00:30:16,040 --> 00:30:17,700 οποιεσδήποτε τιμές. 675 00:30:17,700 --> 00:30:18,950 Αλλά για να είναι σαφής, γιατί; 676 00:30:23,420 --> 00:30:26,310 I σταθερό το λογικό πρόβλημα από μόλις πριν από λίγο. 677 00:30:26,310 --> 00:30:31,150 Αλλά και πάλι, αν εκτελέσετε αυτό το πρόγραμμα, x και y παραμένουν αμετάβλητα από το τέλος του 678 00:30:31,150 --> 00:30:33,834 εκτέλεση του προγράμματος. 679 00:30:33,834 --> 00:30:34,760 [Δεν ακούγεται] 680 00:30:34,760 --> 00:30:36,030 David J. Malan: Γι 'αυτό και δεν έχουν επιστρέψει τίποτα. 681 00:30:36,030 --> 00:30:36,960 Έτσι, αυτό είναι αλήθεια. 682 00:30:36,960 --> 00:30:39,880 , Αλλά αποδεικνύεται ότι υπάρχει ένα μικρό πρόβλημα εδώ, διότι μέχρι στιγμής η 683 00:30:39,880 --> 00:30:42,460 μόνο πράγμα που έχουν βρεθεί εκεί σε θέση να επιστρέψει είναι ένα πράγμα. 684 00:30:42,460 --> 00:30:46,540 Και αυτό είναι ο περιορισμός του C. Μπορείτε να επιστρέψετε μόνο πραγματικά μία τιμή, 685 00:30:46,540 --> 00:30:48,970 Στην περίπτωση αυτή, είμαι το είδος του κολλήσει εδώ 686 00:30:48,970 --> 00:30:51,805 γιατί θα μπορούσε να επιστρέψει τη νέα τιμή του x ή θα μπορούσε να επιστρέψει το 687 00:30:51,805 --> 00:30:53,160 νέα τιμή του y. 688 00:30:53,160 --> 00:30:54,330 Αλλά θέλω τόσο πίσω. 689 00:30:54,330 --> 00:30:58,010 Έτσι επιστρέφοντας δεν είναι η απλή λύση εδώ. 690 00:30:58,010 --> 00:30:59,770 Αλλά το πρόβλημα είναι ουσιαστικά ο λόγος; 691 00:30:59,770 --> 00:31:03,270 Τι έχουμε πραγματικά αντάλλαξαν; 692 00:31:03,270 --> 00:31:04,010 a και b. 693 00:31:04,010 --> 00:31:07,670 Αλλά α και b είναι αντίγραφα των χ και γ, που σημαίνει ακριβώς κάναμε όλα αυτά 694 00:31:07,670 --> 00:31:10,080 εργασία - που μόλις πέρασε σαν τρία λεπτά μιλώντας για τη συμφωνία ανταλλαγής 695 00:31:10,080 --> 00:31:11,680 λειτουργία και οι τρεις από αυτές τις μεταβλητές. 696 00:31:11,680 --> 00:31:15,090 Και αυτό είναι μεγάλη, απολύτως σωστό σε απομόνωση. 697 00:31:15,090 --> 00:31:20,230 Αλλά μια και το πεδίο εφαρμογής β είναι μόνο σε αυτές τις γραμμές εδώ. 698 00:31:20,230 --> 00:31:24,130 Έτσι ακριβώς όπως ένα για βρόχο, αν κηρύξει έναν ακέραιο i στο εσωτερικό του για 699 00:31:24,130 --> 00:31:27,400 βρόχο - ομοίως, εάν είστε δηλώνοντας α και β στο εσωτερικό του μια λειτουργία που 700 00:31:27,400 --> 00:31:30,550 έχετε γράψει, από όπου και αν ισχύει μόνο στο εσωτερικό αυτής της λειτουργίας. 701 00:31:30,550 --> 00:31:35,020 Πράγμα που σημαίνει το συντομότερο ανταλλαγής γίνεται εκτέλεση και πάμε από τη γραμμή 24 έως 702 00:31:35,020 --> 00:31:38,380 γραμμή 25, χ και γ δεν έχουν τροποποιηθεί καθόλου. 703 00:31:38,380 --> 00:31:42,580 Θα χάσει μόλις ένα σωρό χρόνο ανταλλάσσοντας τα αντίγραφα των μεταβλητών. 704 00:31:42,580 --> 00:31:46,490 >> Έτσι αποδεικνύεται ότι η λύση σε αυτό είναι πράγματι μη-προφανείς. 705 00:31:46,490 --> 00:31:49,210 Δεν είναι αρκετά επαρκής για να επιστρέψουν οι τιμές, γιατί μπορούμε να 706 00:31:49,210 --> 00:31:50,320 επιστρέψει μόνο μία τιμή. 707 00:31:50,320 --> 00:31:53,370 Και εγώ πραγματικά δεν θέλουν να ανταλλάξουν τα δύο x και y την ίδια στιγμή. 708 00:31:53,370 --> 00:31:55,020 Έτσι θα πάμε για να επανέλθουμε σε αυτό. 709 00:31:55,020 --> 00:31:58,770 Αλλά για τώρα, συνειδητοποιούν ότι το ζήτημα προέρχεται ουσιαστικά από το γεγονός 710 00:31:58,770 --> 00:32:00,660 τα α και b είναι αντίγραφα. 711 00:32:00,660 --> 00:32:03,450 Και είναι στο δικό τους πεδίο. 712 00:32:03,450 --> 00:32:04,980 Λοιπόν, ας προσπαθήσουμε να λύσουμε αυτό με κάποιο τρόπο. 713 00:32:04,980 --> 00:32:09,200 Επιτρέψτε μου να μετακινηθείτε προς τα πίσω στην πραγματικότητα εδώ και να ανοίξει, ας πούμε, μια τέταρτη παραλλαγή 714 00:32:09,200 --> 00:32:11,170 αυτό, buggy4. 715 00:32:11,170 --> 00:32:13,230 Και τι γίνεται με αυτό; 716 00:32:13,230 --> 00:32:16,690 Αυτό είναι ένα παρόμοιο αλλά απλούστερο πρόβλημα να εξετάσουμε πριν λάβουμε μια μαχαιριά στο 717 00:32:16,690 --> 00:32:17,530 επίλυση του προβλήματος. 718 00:32:17,530 --> 00:32:19,440 Αυτό το πρόγραμμα ονομάζεται προσαύξηση. 719 00:32:19,440 --> 00:32:24,320 Και προφανώς αρχικοποιεί έναν ακέραιο x και 1 στη γραμμή 18. 720 00:32:24,320 --> 00:32:25,950 Στη συνέχεια ισχυρίζονται x είναι 1. 721 00:32:25,950 --> 00:32:28,020 Στη συνέχεια ισχυρίζονται προσαύξηση, τελεία, τελεία, τελεία. 722 00:32:28,020 --> 00:32:29,460 Καλώ λοιπόν προσαύξηση. 723 00:32:29,460 --> 00:32:33,480 Στη συνέχεια, όμως στις γραμμές 22 και 23, που ισχυρίζονται ότι είναι ήδη αυξάνεται. 724 00:32:33,480 --> 00:32:37,780 Ισχυρίζομαι x είναι τώρα ό, τι είναι, 2 κατά πάσα πιθανότητα. 725 00:32:37,780 --> 00:32:39,770 >> Όμως αυτό το πρόγραμμα είναι λάθη. 726 00:32:39,770 --> 00:32:41,020 Ποιο είναι το πρόβλημα; 727 00:32:43,450 --> 00:32:44,418 Ναι; 728 00:32:44,418 --> 00:32:45,668 [Δεν ακούγεται] 729 00:32:49,260 --> 00:32:49,850 David J. Malan: Ακριβώς. 730 00:32:49,850 --> 00:32:52,430 Έτσι x έχει κηρυχθεί προφανώς στη γραμμή 18. 731 00:32:52,430 --> 00:32:54,410 Αυτό είναι μέσα σε αγκύλες κύριο του. 732 00:32:54,410 --> 00:32:58,470 Έτσι, η απλή απάντηση εδώ είναι ότι, καλά, υπάρχει x εδώ. 733 00:32:58,470 --> 00:33:01,510 Αυτό δεν υπάρχει στην γραμμή 32. 734 00:33:01,510 --> 00:33:03,710 Έτσι, το πρόγραμμα αυτό στην πραγματικότητα δεν θα καν σύνταξη. 735 00:33:03,710 --> 00:33:07,910 Ο compiler, όταν προσπαθήσετε να χτίσετε τον κωδικό αυτό, θα μου φωνάζεις 736 00:33:07,910 --> 00:33:13,190 για κάποιο αναγνωριστικό της αδήλωτης ή κάτι για το σκοπό αυτό. 737 00:33:13,190 --> 00:33:13,870 Στην πραγματικότητα, ας προσπαθήσουμε. 738 00:33:13,870 --> 00:33:15,235 Αυτό είναι να buggy4. 739 00:33:17,780 --> 00:33:18,190 Εκεί είναι. 740 00:33:18,190 --> 00:33:22,030 Χρήση της αδήλωτης x αναγνωριστικό στη γραμμή 32. 741 00:33:22,030 --> 00:33:25,700 Και πραγματικά, ας είναι πιο σαφής εδώ σήμερα, έτσι ώστε αυτό είναι χρήσιμο σε 742 00:33:25,700 --> 00:33:27,140 ώρες γραφείου και στο σπίτι. 743 00:33:27,140 --> 00:33:29,000 Σημειώστε ότι είναι λίγο κρυφά γραμμένο. 744 00:33:29,000 --> 00:33:31,560 Αλλά το γεγονός ότι έχει Clang φώναξε σε μας, λέγοντας 745 00:33:31,560 --> 00:33:36,970 buggy4.c: 32:5, είναι πραγματικά χρήσιμο. 746 00:33:36,970 --> 00:33:41,970 Αυτό σημαίνει ότι το σφάλμα είναι στη γραμμή 32 στη θέση του χαρακτήρα πέντε. 747 00:33:41,970 --> 00:33:44,670 Έτσι, ένα, δύο, τρία, τέσσερα, πέντε. 748 00:33:44,670 --> 00:33:46,640 Αυτό είναι, στην πραγματικότητα, όπου το πρόβλημα είναι. 749 00:33:46,640 --> 00:33:49,710 Και, επίσης, να έχετε κατά νου σε ώρες γραφείου και στο σπίτι, είμαι τυχερός εδώ. 750 00:33:49,710 --> 00:33:50,740 Έχω ένα λάθος. 751 00:33:50,740 --> 00:33:52,660 Είναι πρόκειται να είναι σχετικά εύκολο να καθοριστεί. 752 00:33:52,660 --> 00:33:56,220 Αλλά αν μπορείτε να πάρετε μια ολόκληρη οθόνη με συντριπτική μηνύματα λάθους, και πάλι, 753 00:33:56,220 --> 00:33:59,240 συνειδητοποιούν ότι η κατώτατη θα μπορούσε κανείς να είναι απλά συμπτωματική 754 00:33:59,240 --> 00:34:00,320 το κορυφαίο αυτά. 755 00:34:00,320 --> 00:34:03,560 Έτσι, πάντα να κυνηγήσει σφάλματα σας από πάνω προς τα κάτω. 756 00:34:03,560 --> 00:34:06,720 Επειδή μπορεί να υπάρχει απλώς μια μαργαρίτα-αλυσίδα επίδραση που σας προτείνει 757 00:34:06,720 --> 00:34:09,030 έχουν τον τρόπο περισσότερα προβλήματα από ό, τι στην πραγματικότητα κάνει. 758 00:34:09,030 --> 00:34:14,989 >> Λοιπόν, πώς θα μπορούσαμε να το διορθώσω αυτό, αν ο στόχος μου είναι να αυξήσετε x; 759 00:34:14,989 --> 00:34:15,370 Τι είναι αυτό; 760 00:34:15,370 --> 00:34:15,620 Εντάξει. 761 00:34:15,620 --> 00:34:16,679 Έτσι, μπορούμε να κάνουμε την παγκόσμια x. 762 00:34:16,679 --> 00:34:18,860 Ας πάρουμε τη συντόμευση που είχα προειδοποιήσει για νωρίτερα. 763 00:34:18,860 --> 00:34:20,550 Αλλά καλό, χρειαζόμαστε μόνο μια γρήγορη λύση. 764 00:34:20,550 --> 00:34:23,949 Έτσι, ας πούμε int x μέχρι εδώ. 765 00:34:23,949 --> 00:34:25,600 Αυτό κάνει την παγκόσμια x. 766 00:34:25,600 --> 00:34:28,460 Έτσι τώρα έχει κύρια πρόσβαση σε αυτό. 767 00:34:28,460 --> 00:34:31,780 Και αύξηση έχει πρόσβαση σε αυτό. 768 00:34:31,780 --> 00:34:33,860 Και επιτρέψτε μου να προχωρήσει και να συγκεντρώσει αυτό τώρα. 769 00:34:33,860 --> 00:34:36,330 Κάντε buggy4, Enter. 770 00:34:36,330 --> 00:34:37,440 Φαίνεται να συγκεντρώσει τώρα. 771 00:34:37,440 --> 00:34:40,949 Ας τρέξει buggy4, και φαίνεται να λειτουργούν πραγματικά. 772 00:34:40,949 --> 00:34:42,780 Τώρα αυτό είναι ένα από αυτά τα πράγματα - 773 00:34:42,780 --> 00:34:45,870 κάνει όπως λέω, όχι όπως κάνω εγώ, όπως έχω κάνει εδώ ακριβώς. 774 00:34:45,870 --> 00:34:49,239 Επειδή σε γενικές γραμμές, τα προγράμματα μας πρόκειται να πάρει πολύ πιο ενδιαφέρουσα και 775 00:34:49,239 --> 00:34:50,440 πολύ περισσότερο από αυτό. 776 00:34:50,440 --> 00:34:53,199 Και αν σας λύση για τα προβλήματα της ζωής είναι απλά αχ, βάλτε όλα τα 777 00:34:53,199 --> 00:34:57,550 μεταβλητές στην κορυφή του αρχείου σας, πολύ γρήγορα κάνουν τα προγράμματα να 778 00:34:57,550 --> 00:34:59,700 τρομακτικά δύσκολο να διαχειριστεί. 779 00:34:59,700 --> 00:35:02,050 Παίρνει πιο δύσκολο να σκεφτούμε νέες ονόματα μεταβλητών. 780 00:35:02,050 --> 00:35:05,240 Παίρνει πιο δύσκολο να καταλάβουμε τι μεταβλητή κάνει τι. 781 00:35:05,240 --> 00:35:08,250 >> Και έτσι σε γενικές γραμμές, αυτό δεν είναι μία καλή λύση. 782 00:35:08,250 --> 00:35:09,780 Ας κάνουμε αυτό καλύτερα. 783 00:35:09,780 --> 00:35:11,920 Δεν θέλετε να χρησιμοποιήσετε μια καθολική μεταβλητή εδώ. 784 00:35:11,920 --> 00:35:14,050 Θέλω να αυξήσετε x. 785 00:35:14,050 --> 00:35:16,050 Γι 'αυτό και θα μπορούσε προφανώς - 786 00:35:16,050 --> 00:35:18,450 Στο τέλος της ημέρας, είναι το είδος της μια ανόητη ιστορία, γιατί κάνουμε ακριβώς αυτό. 787 00:35:18,450 --> 00:35:22,050 Αλλά αν δεν ήξερα για τον συγκεκριμένο φορέα εκμετάλλευσης, ή εγώ δεν επιτρέπεται να 788 00:35:22,050 --> 00:35:27,700 αλλάξτε το κύριο ίδια, πώς αλλιώς θα μπορούσα να εφαρμόσω Ken πάνω από εδώ, αυτό 789 00:35:27,700 --> 00:35:31,450 φορά να μην κύβο, αλλά να αυξήσετε; 790 00:35:31,450 --> 00:35:32,700 Πώς μπορώ να αλλάξω αυτό το πράγμα εδώ; 791 00:35:32,700 --> 00:35:33,025 Ναι. 792 00:35:33,025 --> 00:35:34,275 [Δεν ακούγεται] 793 00:35:37,430 --> 00:35:38,000 David J. Malan: Εντάξει, καλά. 794 00:35:38,000 --> 00:35:40,490 Γιατί λοιπόν να μην έχω περάσει στο x; 795 00:35:40,490 --> 00:35:44,390 Και τότε, αντί να επιστρέψει, γιατί δεν μπορώ να κάνω μόνο την επιστροφή x + 1; 796 00:35:44,390 --> 00:35:46,370 Τώρα, ένα ζευγάρι περισσότερα πράγματα πρέπει να αλλάξουν εδώ. 797 00:35:46,370 --> 00:35:47,530 Είμαι στο σωστό δρόμο. 798 00:35:47,530 --> 00:35:48,910 Τι άλλο πρέπει να κάνω για να τσιμπιά; 799 00:35:48,910 --> 00:35:49,470 Κάποιος άλλος. 800 00:35:49,470 --> 00:35:49,882 Ναι; 801 00:35:49,882 --> 00:35:51,530 [Δεν ακούγεται] 802 00:35:51,530 --> 00:35:53,520 David J. Malan: Πρέπει να αλλάξω τον τύπο επιστροφής της προσαύξησης 803 00:35:53,520 --> 00:35:54,590 επειδή είναι άκυρη δεν. 804 00:35:54,590 --> 00:35:56,650 Κενό σημαίνει τίποτα δεν επιστρέφονται. 805 00:35:56,650 --> 00:35:57,600 Αλλά σαφώς, τώρα είναι. 806 00:35:57,600 --> 00:36:01,280 Έτσι, αυτό πρέπει να αλλάξει σε int για να είναι συνεπής με ό, τι 807 00:36:01,280 --> 00:36:02,580 Είμαι πραγματικά επιστρέφουν. 808 00:36:02,580 --> 00:36:04,580 >> Τώρα κάτι άλλο είναι ακόμα εδώ λάθη. 809 00:36:04,580 --> 00:36:04,982 Ναι; 810 00:36:04,982 --> 00:36:06,590 [Δεν ακούγεται] 811 00:36:06,590 --> 00:36:07,630 David J. Malan: Γι 'αυτό πρέπει να αυξήσετε x; 812 00:36:07,630 --> 00:36:10,336 [Δεν ακούγεται] 813 00:36:10,336 --> 00:36:11,880 David J. Malan: Αχ, γι 'αυτό πρέπει να περάσει x. 814 00:36:11,880 --> 00:36:13,300 Γι 'αυτό και πρέπει να το κάνουμε αυτό εδώ. 815 00:36:17,590 --> 00:36:19,690 Έτσι, το πρωτότυπο, πρέπει να αλλάξει αυτό μέχρι εδώ. 816 00:36:19,690 --> 00:36:21,290 Έτσι, αυτό πρέπει να γίνει ένα int. 817 00:36:21,290 --> 00:36:22,820 Αυτό πρέπει να γίνει - 818 00:36:22,820 --> 00:36:23,670 Χμμ. 819 00:36:23,670 --> 00:36:24,710 Έχω πραγματικά ένα bug εδώ κάτω. 820 00:36:24,710 --> 00:36:25,780 Ας διορθώσετε αυτό ένα πρώτο. 821 00:36:25,780 --> 00:36:27,990 Τι θα πρέπει πραγματικά να είναι αυτό; 822 00:36:27,990 --> 00:36:29,330 Γι 'αυτό πήρε να είναι ένα int κάτι. 823 00:36:29,330 --> 00:36:30,340 Θα μπορούσε να είναι x. 824 00:36:30,340 --> 00:36:33,120 Αλλά ειλικρινά, αν ξεκινήσετε καλώντας όλες τις μεταβλητές x σας, πρόκειται να πάρει 825 00:36:33,120 --> 00:36:35,250 και λιγότερο σαφές ποιο είναι ποιο. 826 00:36:35,250 --> 00:36:38,210 Έτσι, ας επιλέγουν αυθαίρετα ένα διαφορετικό σύμβαση ονομασίας για μου 827 00:36:38,210 --> 00:36:40,220 βοηθητικές λειτουργίες, οι λειτουργίες που γράφω. 828 00:36:40,220 --> 00:36:41,100 Θα το ονομάσουμε ένα. 829 00:36:41,100 --> 00:36:44,500 Ή θα μπορούσαμε να το ονομάσουμε - ας την ονομάσουμε even_number να είναι ακόμη πιο σαφής. 830 00:36:44,500 --> 00:36:47,610 Μέχρι τότε θα πρέπει να επιστρέψει ό, τι ο αριθμός είναι συν 1. 831 00:36:47,610 --> 00:36:49,720 Και τώρα πρέπει να αλλάξω κάτι άλλο εδώ και ένα 832 00:36:49,720 --> 00:36:50,700 άλλο πράγμα εδώ. 833 00:36:50,700 --> 00:36:54,150 Τι πρέπει να αλλάξει στην γραμμή 21 πρώτα; 834 00:36:54,150 --> 00:36:55,390 Έχω να αναθέσει στο x. 835 00:36:55,390 --> 00:36:57,480 Γι 'αυτό και δεν μπορεί να καλέσει μόνο προσαύξηση x. 836 00:36:57,480 --> 00:37:01,000 Πρέπει να θυμηθώ την απάντηση, αλλάζοντας την τιμή του x για 837 00:37:01,000 --> 00:37:02,020 η αριστερή πλευρά. 838 00:37:02,020 --> 00:37:04,930 Και ακόμα κι αν το x είναι τώρα στα αριστερά και δεξιά, αυτό είναι εντελώς πρόστιμο επειδή 839 00:37:04,930 --> 00:37:08,370 η δεξιά πλευρά παίρνει εκτελείται πρώτη, τότε παίρνει plopped στην αριστερή 840 00:37:08,370 --> 00:37:10,240 πράγμα το χέρι, το χ στην περίπτωση αυτή. 841 00:37:10,240 --> 00:37:11,900 Και στη συνέχεια, τέλος, αυτό είναι μια εύκολη αποτύπωση τώρα. 842 00:37:11,900 --> 00:37:15,080 Αυτό ακριβώς θα πρέπει να ταιριάζει με αυτό που είναι κάτω. 843 00:37:15,080 --> 00:37:17,120 Int αριθμό. 844 00:37:17,120 --> 00:37:17,320 >> Εντάξει. 845 00:37:17,320 --> 00:37:20,290 Έτσι, ένα σωρό αλλαγές για ένα πραγματικά ηλίθιο λειτουργία. 846 00:37:20,290 --> 00:37:24,250 Αλλά εκπρόσωπος των πραγμάτων που θα όλο και περισσότερο θέλουμε να κάνουμε. 847 00:37:24,250 --> 00:37:25,490 Έτσι, βεβαιωθείτε buggy4. 848 00:37:25,490 --> 00:37:26,485 Έχω μαντάρα κάπου. 849 00:37:26,485 --> 00:37:27,520 Θεέ μου. 850 00:37:27,520 --> 00:37:29,660 Πέντε λάθη, όπως, έξι-line πρόγραμμα. 851 00:37:29,660 --> 00:37:36,500 Έτσι τι είναι λάθος στη γραμμή 18, χαρακτήρα 5; 852 00:37:36,500 --> 00:37:36,970 Εντάξει. 853 00:37:36,970 --> 00:37:39,330 Γι 'αυτό και πρέπει να δηλώνουν αυτό το int. 854 00:37:39,330 --> 00:37:39,630 Εντάξει. 855 00:37:39,630 --> 00:37:41,790 Ας δούμε λοιπόν, ένα σωρό άλλα σφάλματα. 856 00:37:41,790 --> 00:37:42,230 Θεέ μου. 857 00:37:42,230 --> 00:37:43,880 19, 18, 21. 858 00:37:43,880 --> 00:37:46,020 Αλλά και πάλι, ας ξεκαθαρίσουμε λίγο την οθόνη - 859 00:37:46,020 --> 00:37:48,660 L Ελέγχου εδώ - και επανάληψη Clang. 860 00:37:48,660 --> 00:37:51,340 Έτσι, πέντε προβλήματα είναι στην πραγματικότητα μόνο το ένα. 861 00:37:51,340 --> 00:37:53,500 Έτσι τώρα ας τρέξει buggy4, Enter. 862 00:37:53,500 --> 00:37:54,150 Ουφ. 863 00:37:54,150 --> 00:37:57,434 χ έχει έχει αυξηθεί σωστά. 864 00:37:57,434 --> 00:37:58,420 >> Εντάξει. 865 00:37:58,420 --> 00:38:01,700 Οποιεσδήποτε ερωτήσεις σχετικά με το πώς να αυξήσετε τους αριθμούς; 866 00:38:01,700 --> 00:38:02,896 Ναι; 867 00:38:02,896 --> 00:38:06,864 ΗΧΕΙΟ 2: Γιατί είναι ότι μπορείτε να αλλάξετε μόνο τον αριθμό Χ στην μεταβλητή 868 00:38:06,864 --> 00:38:08,860 το όνομα και θα ξέρετε τι σημαίνει; 869 00:38:08,860 --> 00:38:09,600 David J. Malan: Καλή ερώτηση. 870 00:38:09,600 --> 00:38:13,130 Πώς είναι ότι μπορώ να αλλάξω μόνο x με τον αριθμό και το πρόγραμμα θα γνωρίζει 871 00:38:13,130 --> 00:38:13,990 αμέσως; 872 00:38:13,990 --> 00:38:16,120 Έτσι, και πάλι, σκεφτείτε το σαν αυτό αφαίρεση. 873 00:38:16,120 --> 00:38:20,110 Έτσι, αν είμαι κύριος και ο Ken είναι σταδιακή, ειλικρινά, δεν με νοιάζει 874 00:38:20,110 --> 00:38:21,540 τι Ken καλεί iPad του. 875 00:38:21,540 --> 00:38:25,350 Δεν με νοιάζει ό, τι ο ίδιος αποκαλεί κάτι που έχει να κάνει με την εφαρμογή του 876 00:38:25,350 --> 00:38:26,550 αυτής της λειτουργίας. 877 00:38:26,550 --> 00:38:32,130 Έτσι, αυτό είναι μια λεπτομέρεια εφαρμογής που έχω, κύρια, δεν 878 00:38:32,130 --> 00:38:33,010 πρέπει να νοιάζονται για. 879 00:38:33,010 --> 00:38:37,440 Και έτσι απλά αλλάζουν συνεχώς μέσα από τη λειτουργία, τον αριθμό εδώ 880 00:38:37,440 --> 00:38:41,340 και τον αριθμό εδώ, είναι το μόνο που χρειάζεται τόσο πολύ όπως ξαναμεταγλωττίσετε. 881 00:38:41,340 --> 00:38:43,820 Είναι το είδος του αρέσει, αν σκεφτούμε - πολλοί από εμάς, όσοι από εσάς με οδηγού 882 00:38:43,820 --> 00:38:46,590 άδειες που έχουν οδηγηθεί, ή εάν έχετε ακόμα οδηγείται σε ένα αυτοκίνητο - 883 00:38:46,590 --> 00:38:50,710 οι περισσότεροι από εμάς δεν έχουν ιδέα για το πώς λειτουργεί ένα αυτοκίνητο κάτω από το καπό. 884 00:38:50,710 --> 00:38:54,710 Και κυριολεκτικά, αν ανοίξετε το καπό, οι περισσότεροι από μας - συμπεριλαμβανομένου και εμού - 885 00:38:54,710 --> 00:38:56,580 δεν πρόκειται να ξέρει πραγματικά τι ψάχνουμε σε. 886 00:38:56,580 --> 00:38:58,850 Κάτι σαν να αισθανθείτε με πράγματα όπως το δικαίωμα αυτό τώρα. 887 00:38:58,850 --> 00:39:01,380 Αλλά εμείς δεν πρέπει πραγματικά να φροντίσει πώς λειτουργεί το αυτοκίνητο. 888 00:39:01,380 --> 00:39:05,000 Δεν έχουμε να ενδιαφέρει τι όλες τις ράβδους και τα έμβολα και τα καλώδια στο εσωτερικό του 889 00:39:05,000 --> 00:39:07,700 το αυτοκίνητο είναι πραγματικά κάνει. 890 00:39:07,700 --> 00:39:11,360 >> Έτσι, κάτι σαν αυτό που εσείς ονομάζετε το έμβολο δεν έχει σημασία 891 00:39:11,360 --> 00:39:11,920 εδώ σε αυτή την περίπτωση. 892 00:39:11,920 --> 00:39:12,490 Η ίδια ιδέα. 893 00:39:12,490 --> 00:39:12,670 Ναι; 894 00:39:12,670 --> 00:39:13,920 [Δεν ακούγεται] 895 00:39:25,250 --> 00:39:29,530 David J. Malan: Αν υπήρχαν περισσότερες χρήσεις της μεταβλητής στιγμή xa πριν, 896 00:39:29,530 --> 00:39:32,220 εσείς, ο προγραμματιστής, θα πρέπει να τα αλλάξει παντού. 897 00:39:32,220 --> 00:39:35,230 Ή θα μπορούσατε να κάνετε κυριολεκτικά αρχείου, Μενού, και στη συνέχεια Find / Replace, 898 00:39:35,230 --> 00:39:36,270 κάτι τέτοιο. 899 00:39:36,270 --> 00:39:40,110 Αλλά θα έχετε την ευκαιρία να χρειαστεί να κάνετε τον εαυτό σας αυτές τις αλλαγές. 900 00:39:40,110 --> 00:39:41,200 Θα πρέπει να είναι συνεπής. 901 00:39:41,200 --> 00:39:42,450 [Δεν ακούγεται] 902 00:39:47,200 --> 00:39:48,960 David J. Malan: Μια συγκεκριμένη σειρά, όπως εδώ; 903 00:39:48,960 --> 00:39:52,660 Αν αυτό ήταν int έναν άλλο αριθμό; 904 00:39:52,660 --> 00:39:52,940 Ναι. 905 00:39:52,940 --> 00:39:56,430 Έτσι, προκειμένου σημασία όταν καλείτε τη λειτουργία. 906 00:39:56,430 --> 00:40:00,350 Έτσι, αν ζητούσαν αύξηση εδώ με κάτι κόμμα κάτι, 907 00:40:00,350 --> 00:40:01,400 υπάρχει μια άμεση χαρτογράφηση. 908 00:40:01,400 --> 00:40:04,490 Η πρώτη μεταβλητή, ό, τι λέγεται, γίνεται ένα αντίγραφο της πρώτης 909 00:40:04,490 --> 00:40:05,480 επιχείρημα εδώ. 910 00:40:05,480 --> 00:40:07,280 Συγνώμη, αλλά αυτό δεν θα πρέπει να είναι μια παρένθεση. 911 00:40:07,280 --> 00:40:09,300 Οι δεύτερες γραμμές επιχείρημα επάνω με το δεύτερο. 912 00:40:09,300 --> 00:40:11,220 >> Έτσι ώστε, ναι, θέματα. 913 00:40:11,220 --> 00:40:11,490 Εντάξει. 914 00:40:11,490 --> 00:40:13,360 Συγνώμη που πήρε ένα μακρύ δρόμο για να φτάσετε εκεί. 915 00:40:13,360 --> 00:40:14,610 Άλλες ερωτήσεις; 916 00:40:16,460 --> 00:40:16,850 Εντάξει. 917 00:40:16,850 --> 00:40:20,300 Ας δούμε λοιπόν αν δεν μπορούμε να ζωγραφίσει μια εικόνα του τι πραγματικά συμβαίνει 918 00:40:20,300 --> 00:40:22,160 εδώ κάτω από την κουκούλα, να το πω έτσι. 919 00:40:22,160 --> 00:40:26,310 Έτσι, αυτό είναι ένα ορθογώνιο που θα μπορούσαν να αντιπροσωπεύουν τη μνήμη του υπολογιστή σας. 920 00:40:26,310 --> 00:40:31,240 Έτσι, ακόμη και αν δεν έχετε καμία ιδέα για το πώς λειτουργεί η μνήμη RAM ή πώς λειτουργεί, τουλάχιστον 921 00:40:31,240 --> 00:40:33,590 ας υποθέσουμε ότι έχετε τσαμπιά από αυτό αυτές τις μέρες. 922 00:40:33,590 --> 00:40:34,740 Έχετε megabytes από αυτό. 923 00:40:34,740 --> 00:40:35,760 Έχετε gigabytes του. 924 00:40:35,760 --> 00:40:40,690 Και ξέρουμε από το μηδέν την εβδομάδα ότι ένα byte είναι ακριβώς αυτό; 925 00:40:40,690 --> 00:40:41,280 8 bits. 926 00:40:41,280 --> 00:40:42,730 Σωστά, έτσι 8 μηδενικά και αυτά. 927 00:40:42,730 --> 00:40:46,300 Έτσι, αν ο υπολογιστής σας έχει ένα gig του RAM, δύο συναυλίες της μνήμης RAM αυτές τις μέρες, έχετε ένα 928 00:40:46,300 --> 00:40:54,450 δισ. ή 2 δισεκατομμύριο bytes της μνήμης, ή περίπου 8 δισ. ευρώ ή 16 δισεκατομμύρια 929 00:40:54,450 --> 00:40:56,560 bits, στο εσωτερικό του υπολογιστή σας. 930 00:40:56,560 --> 00:40:59,710 Τώρα, σε αντίθεση με το λίγο μαλλιαρός Willy παράδειγμα, δεν είναι μαγνητικά σωματίδια 931 00:40:59,710 --> 00:41:00,560 τυπικά πια. 932 00:41:00,560 --> 00:41:04,470 Ολοένα και περισσότερο, σε φορητούς υπολογιστές τουλάχιστον, είναι solid state drives, SSDs, που 933 00:41:04,470 --> 00:41:05,560 απλά δεν έχουν κινούμενα μέρη. 934 00:41:05,560 --> 00:41:06,710 Είναι όλα ηλεκτρονικά. 935 00:41:06,710 --> 00:41:08,070 Είναι όλα βασίζονται ηλεκτρικής ενέργειας. 936 00:41:08,070 --> 00:41:12,360 Έτσι νομίζω, όμως, από αυτό το ορθογώνιο, όπως ακριβώς εκπροσωπούν το ένα ή δύο 937 00:41:12,360 --> 00:41:13,930 gigabytes μνήμης που έχετε. 938 00:41:13,930 --> 00:41:15,500 >> Γι 'αυτό είναι ένα κομμάτι της μνήμης. 939 00:41:15,500 --> 00:41:20,460 Τώρα, ο κόσμος της επιστήμης των υπολογιστών έχει το είδος του διαμοιράζεται από τα χοντρά κομμάτια του 940 00:41:20,460 --> 00:41:22,570 μνήμη για να κάνει διαφορετικά πράγματα. 941 00:41:22,570 --> 00:41:25,930 Έτσι, για παράδειγμα, αν αυτό είναι η μνήμη RAM του υπολογιστή σας - όπως προτείνεται από το 942 00:41:25,930 --> 00:41:30,400 ορθογώνιο εκεί - αποδεικνύεται ότι η σύμβαση, στην κορυφή της RAM σας, έτσι 943 00:41:30,400 --> 00:41:33,170 να μιλήσει, είναι γενικά αυτό που ονομάζεται ένα τμήμα κειμένου. 944 00:41:33,170 --> 00:41:35,910 Αυτά είναι τα μηδενικά και αυτά που έχετε φτιάξει. 945 00:41:35,910 --> 00:41:39,040 Έτσι, όταν έχουμε εξετάσει κάτω από την κουκούλα σε ό, τι a.out είναι, όλα 946 00:41:39,040 --> 00:41:40,360 τα μηδενικά και αυτά - 947 00:41:40,360 --> 00:41:44,000 όταν εκτελείτε ένα πρόγραμμα, αυτά τα μηδενικά και αυτά που φορτώνονται από τον σκληρό σας 948 00:41:44,000 --> 00:41:46,290 δίσκου σε κάτι που ονομάζεται μνήμη RAM. 949 00:41:46,290 --> 00:41:48,950 Και στη RAM, όπου και αν τεθεί στην κορυφή. 950 00:41:48,950 --> 00:41:50,330 Τώρα, εν τω μεταξύ, έχετε άλλα πράγματα. 951 00:41:50,330 --> 00:41:53,060 Initialized δεδομένα, τα δεδομένα δεν έχει προετοιμαστεί. 952 00:41:53,060 --> 00:41:56,440 Οι δύο δρεπανιές της μνήμης αναφέρονται σε καθολικές μεταβλητές, οι οποίες 953 00:41:56,440 --> 00:41:57,530 που δεν χρησιμοποιείτε συχνά. 954 00:41:57,530 --> 00:42:00,630 Αλλά μερικές φορές, αν το κάνετε, καταλήγουν εκεί, καθώς και. 955 00:42:00,630 --> 00:42:01,620 Στη συνέχεια, υπάρχει κάποια άλλα πράγματα. 956 00:42:01,620 --> 00:42:04,130 Οι μεταβλητές περιβάλλοντος, το οποίο δεν θα περνούν πολύ χρόνο σε. 957 00:42:04,130 --> 00:42:06,120 Στη συνέχεια, όμως δύο σημαντικά πράγματα που θα έρθει πίσω σε όλο αυτό 958 00:42:06,120 --> 00:42:08,130 εξάμηνο, και στοίβα σωρός. 959 00:42:08,130 --> 00:42:12,280 >> Έτσι, οι περισσότεροι από τη μνήμη του υπολογιστή σας προορίζεται όταν τρέχει ένα πρόγραμμα για την 960 00:42:12,280 --> 00:42:14,880 κάτι που ονομάζεται τη στοίβα και κάτι που ονομάζεται το σωρό. 961 00:42:14,880 --> 00:42:16,940 Και εμείς δεν πρόκειται να μιλήσω για το σωρό σήμερα, αλλά εμείς θα 962 00:42:16,940 --> 00:42:18,180 μιλήσουμε για τη στοίβα. 963 00:42:18,180 --> 00:42:22,910 Και η στοίβα έχει ως στόχο να πλάθω την οπτική της, όπως η τραπεζαρία 964 00:42:22,910 --> 00:42:26,120 δίσκοι γεύμα σε Mather Βουλή, ή όπου και αν τυχαίνει να είναι, όπου η 965 00:42:26,120 --> 00:42:27,810 τραπεζαρία αίθουσα προσωπικό καθαρισμό τους κάθε μέρα. 966 00:42:27,810 --> 00:42:30,180 Τους στιβάζω από το πάτωμα και πάνω. 967 00:42:30,180 --> 00:42:33,800 Και ομοίως στη μνήμη, υπάρχει η ιδέα της τοποθέτησης κάτι σχετικά με ένα 968 00:42:33,800 --> 00:42:36,740 στοίβα, βάζοντας κάτι σε μια στοίβα, βάζοντας κάτι σε μια στοίβα. 969 00:42:36,740 --> 00:42:38,000 Και τι εννοούμε με αυτό; 970 00:42:38,000 --> 00:42:41,430 Λοιπόν, ας μεγέθυνση ακριβώς κάτω μισό αυτής της εικόνας, του υπολογιστή σας 971 00:42:41,430 --> 00:42:43,990 RAM, να προτείνω τα ακόλουθα. 972 00:42:43,990 --> 00:42:48,300 Αποδεικνύεται ότι όταν εκτελείτε ένα πρόγραμμα όπως το a.out ή γειά σου, όποιο κι αν είναι 973 00:42:48,300 --> 00:42:49,920 το πρόγραμμα είναι ότι έχετε γράψει, 974 00:42:49,920 --> 00:42:53,030 και πάλι, αυτά τα μηδενικά και αυτά που φορτώνονται από τον σκληρό σας δίσκο - το οποίο είναι 975 00:42:53,030 --> 00:42:56,190 μακροχρόνια αποθήκευση, παραμένει εκεί ακόμα και όταν τραβάτε το βύσμα - 976 00:42:56,190 --> 00:42:57,220 φορτώνονται στη μνήμη RAM. 977 00:42:57,220 --> 00:42:59,020 RAM είναι ταχύτερη από ό, τι σκληρούς δίσκους. 978 00:42:59,020 --> 00:43:00,700 Είναι μικρότερο από σκληρούς δίσκους. 979 00:43:00,700 --> 00:43:03,490 Αλλά αυτό είναι όπου ζουν τα προγράμματα, ενώ είστε τους λειτουργία. 980 00:43:03,490 --> 00:43:06,380 >> Έτσι, κάνετε διπλό κλικ σε ένα πρόγραμμα σε έναν υπολογιστή Mac ή PC - είναι φορτωμένο από 981 00:43:06,380 --> 00:43:07,750 σκληρό δίσκο στη μνήμη RAM. 982 00:43:07,750 --> 00:43:11,760 Από τη στιγμή που είναι φορτωμένο στη μνήμη RAM, τα μηδενικά και αυτά που πάνε στην κορυφή τρόπο, η 983 00:43:11,760 --> 00:43:13,130 λεγόμενο τμήμα κειμένου. 984 00:43:13,130 --> 00:43:17,040 Στη συνέχεια, όμως, το συντομότερο το πρόγραμμά σας αρχίζει πραγματικά το τρέξιμο, το κύριο 985 00:43:17,040 --> 00:43:18,140 καλείται η συνάρτηση. 986 00:43:18,140 --> 00:43:21,070 Και κυρίως, όπως είδαμε, έχει συχνά τις τοπικές μεταβλητές. 987 00:43:21,070 --> 00:43:24,560 Και έχει ints και strings και χαρακτήρες και τα παρόμοια. 988 00:43:24,560 --> 00:43:28,300 Έτσι, αν το πρόγραμμά σας ότι έχετε γράψει ή το πρόγραμμα που έχετε 989 00:43:28,300 --> 00:43:33,680 διπλό κλικ χρησιμοποιούνται κάποιες μεταβλητές μέσα από τους κύριους, που καταλήγουν στο 990 00:43:33,680 --> 00:43:37,020 κάτω μέρος του stack σας της μνήμης, να το πω έτσι. 991 00:43:37,020 --> 00:43:39,160 Τώρα, πιο συγκεκριμένα, τι ακριβώς σημαίνει αυτό; 992 00:43:39,160 --> 00:43:44,080 Αυτό σημαίνει απλά ότι αν επρόκειτο να αριθμήσετε τα πράγματα - 993 00:43:44,080 --> 00:43:49,380 αν επρόκειτο για τον αριθμό των bytes της μνήμης RAM στον υπολογιστή σας, παρατηρήστε ότι 994 00:43:49,380 --> 00:43:51,650 αυτό θα μπορούσε να byte αριθμό μηδέν. 995 00:43:51,650 --> 00:43:56,130 Αυτό μπορεί να είναι byte νούμερο ένα, δύο, τρία, τέσσερα, πέντε, έξι, όλες 996 00:43:56,130 --> 00:43:57,290 το δρόμο μέχρι να αρέσει - 997 00:43:57,290 --> 00:44:01,520 2 δισεκατομμύρια θα είναι σε όλη τη διαδρομή μέχρι εκεί στην κορυφή. 998 00:44:01,520 --> 00:44:05,960 Έτσι με άλλα λόγια, όταν μιλάμε για τη μνήμη RAM ή από την άποψη των bytes, το 999 00:44:05,960 --> 00:44:09,680 απλά σημαίνει ότι κάποιος έχει αποφασίσει τι πρέπει να αριθμήσετε κάθε 1000 00:44:09,680 --> 00:44:11,110 αυτά τα κομμάτια της μνήμης. 1001 00:44:11,110 --> 00:44:16,950 >> Έτσι, όταν θα πρέπει να έχετε 32 bit για έναν int, ή θα πρέπει να έχετε 8 bits για ένα char, όπου 1002 00:44:16,950 --> 00:44:18,320 δεν καταλήγουν στη μνήμη; 1003 00:44:18,320 --> 00:44:20,650 Λοιπόν εννοιολογικά, το μόνο που καταλήγουν στο κάτω μέρος αυτής της 1004 00:44:20,650 --> 00:44:21,780 πράγμα που ονομάζεται τη στοίβα. 1005 00:44:21,780 --> 00:44:25,670 Αλλά αυτό που είναι ενδιαφέρον είναι τώρα, όταν ένα κύριο καλεί λειτουργία. 1006 00:44:25,670 --> 00:44:28,830 Ας υποθέσουμε ότι μια λειτουργία που ονομάζεται foo, μόλις ένα αυθαίρετο όνομα. 1007 00:44:28,830 --> 00:44:32,480 Αυτό που συμβαίνει είναι η κύρια είναι στο κάτω μέρος της στοίβας αυτής της μνήμης. 1008 00:44:32,480 --> 00:44:35,630 Foo τώρα τίθεται στην κορυφή των κύριων στη μνήμη. 1009 00:44:35,630 --> 00:44:40,020 Έτσι, τυχόν τοπικές μεταβλητές που foo έχει καταλήξει είδος των παραπάνω εννοιολογικά 1010 00:44:40,020 --> 00:44:40,770 εκείνες κύρια. 1011 00:44:40,770 --> 00:44:46,920 Αν foo καλεί μια άλλη λειτουργία που ονομάζεται μπαρ, οι μεταβλητές καταλήγουν εδώ. 1012 00:44:46,920 --> 00:44:49,790 Εάν η γραμμή καλεί κάτι άλλο, εδώ, εδώ, εδώ. 1013 00:44:49,790 --> 00:44:53,900 Έτσι, αυτό που είναι ενδιαφέρον σχετικά με την εκτέλεση ενός προγράμματος είναι ότι σας καλούν λειτουργίες, 1014 00:44:53,900 --> 00:44:57,720 και οι εν λόγω λειτουργίες κλήση λειτουργιών, καθώς και οι λειτουργίες κλήσης λειτουργίες, 1015 00:44:57,720 --> 00:45:00,980 θα δημιουργηθεί αυτό το σωρό των λειτουργιών στη μνήμη. 1016 00:45:00,980 --> 00:45:06,740 Και μόνο μια φορά επιστρέφει λειτουργία να ξεκινήσει να πάρει πίσω αυτή τη μνήμη. 1017 00:45:06,740 --> 00:45:11,190 Έτσι, ένας από τους ευκολότερους τρόπους για να ξεμείνει από μνήμη σε ένα πρόγραμμα υπολογιστή είναι να 1018 00:45:11,190 --> 00:45:14,170 γράψετε λειτουργίες που να μην επιστρέψει ποτέ. 1019 00:45:14,170 --> 00:45:16,650 >> Έτσι, για παράδειγμα, ας αποδείξει τόσο πολύ με ένα 1020 00:45:16,650 --> 00:45:18,460 σκόπιμα λάθη πρόγραμμα. 1021 00:45:18,460 --> 00:45:24,690 Επιτρέψτε μου να προχωρήσει και δεν περιλαμβάνουν # , int main (void). 1022 00:45:24,690 --> 00:45:31,270 Και Πάω να κάνω, ενώ (2> 1), η οποία κατά πάσα πιθανότητα δεν θα είναι ποτέ 1023 00:45:31,270 --> 00:45:33,370 αλλαγή για μας. 1024 00:45:33,370 --> 00:45:37,720 Και επιτρέψτε μου να προχωρήσουμε και να κάνουμε τώρα printf. 1025 00:45:37,720 --> 00:45:39,950 Στην πραγματικότητα, αυτό πρόκειται να είναι λιγότερο ενδιαφέρουσα οπτικά. 1026 00:45:39,950 --> 00:45:40,460 Ας το κάνουμε αυτό. 1027 00:45:40,460 --> 00:45:44,840 Για int (i = 0? I> 0). 1028 00:45:44,840 --> 00:45:49,740 Ας κάνουμε αυτό το λάθος, i + +. 1029 00:45:49,740 --> 00:45:51,150 Και ας μην printf εδώ. 1030 00:45:51,150 --> 00:45:52,550 Ας πράξη αυτό που κηρύττει. 1031 00:45:52,550 --> 00:45:54,090 Ας ρίξουμε μια μέθοδο εδώ. 1032 00:45:54,090 --> 00:46:00,860 Χορωδία Void, και εμείς θα πούμε int i. 1033 00:46:00,860 --> 00:46:02,295 Και τότε Πάω να πω, printf - 1034 00:46:04,871 --> 00:46:06,790 Ω, ας κάνουμε αυτό πιο ενδιαφέρουσα. 1035 00:46:06,790 --> 00:46:08,350 Ας μην τυπώσει πραγματικά τίποτα καθόλου. 1036 00:46:08,350 --> 00:46:10,530 Ας το κάνουμε αυτό. 1037 00:46:10,530 --> 00:46:11,780 Chorus (i). 1038 00:46:16,630 --> 00:46:17,000 >> Εντάξει. 1039 00:46:17,000 --> 00:46:20,040 Έτσι, αυτό είναι προβληματικό, διότι ο λόγος; 1040 00:46:20,040 --> 00:46:22,850 Κάνω αυτό ως πάω γιατί το πρόγραμμα δεν κάνει τίποτα στην πραγματικότητα 1041 00:46:22,850 --> 00:46:23,420 του ενδιαφέροντος. 1042 00:46:23,420 --> 00:46:24,670 Αλλά αυτό δεν είναι ο στόχος. 1043 00:46:24,670 --> 00:46:30,440 Ο στόχος είναι να γράψετε ένα πρόγραμμα, του οποίου η κύρια λειτουργία κάνει τι, προφανώς; 1044 00:46:30,440 --> 00:46:31,370 Καλέστε το ίδιο. 1045 00:46:31,370 --> 00:46:32,600 Και στην πραγματικότητα, δεν χρειαζόμαστε το βρόχο. 1046 00:46:32,600 --> 00:46:36,070 Ας απλοποιήσει ακόμα και αυτό μόνο και μόνο για να μην χάσουμε από τα μάτια στην πραγματικότητα η 1047 00:46:36,070 --> 00:46:37,310 θεμελιώδες σφάλμα. 1048 00:46:37,310 --> 00:46:39,200 Κύρια κλήσεις χορωδία να τραγουδήσει κάποια χορωδία. 1049 00:46:39,200 --> 00:46:41,760 Στη συνέχεια, έκανα κάτι ηλίθιο, και είχα χορωδία Chorus Call γιατί υπέθεσα 1050 00:46:41,760 --> 00:46:43,550 κάποιος άλλος θα το εφαρμόσουν ίσως. 1051 00:46:43,550 --> 00:46:45,960 Και τώρα, αυτό δεν πρόκειται να συγκεντρώσει ακόμα. 1052 00:46:45,960 --> 00:46:48,340 Πρέπει να κάνουμε ό, τι; 1053 00:46:48,340 --> 00:46:49,700 Χρειάζομαι το πρωτότυπο, θυμάται. 1054 00:46:49,700 --> 00:46:55,520 Γι 'αυτό πρέπει να έχουμε εδώ χορωδία άκυρη (int i)?. 1055 00:46:55,520 --> 00:46:57,470 >> Έτσι τώρα, αν πάω εδώ κάτω - 1056 00:46:57,470 --> 00:46:59,030 στην πραγματικότητα, ας χρησιμοποιήσουμε το μεγαλύτερο παράθυρο. 1057 00:46:59,030 --> 00:47:01,670 Ας πάμε μπροστά και να κάνουν χορωδία. 1058 00:47:01,670 --> 00:47:06,000 Ας πάμε μπροστά και να κάνουν χορωδία. 1059 00:47:06,000 --> 00:47:08,302 Χρήση των αγνώστων εκτελεστής i. 1060 00:47:08,302 --> 00:47:09,860 Ω, αυτό ήταν ηλίθιο. 1061 00:47:09,860 --> 00:47:11,020 Δεν χρειαζόμαστε το επιχείρημα. 1062 00:47:11,020 --> 00:47:13,680 Ας το κάνουμε αυτό. 1063 00:47:13,680 --> 00:47:14,550 Μακάρι να είχαμε ξεκινήσει με αυτόν τον τρόπο. 1064 00:47:14,550 --> 00:47:16,160 Θα ήταν πολύ πιο εύκολο να γράψει το πρόγραμμα. 1065 00:47:16,160 --> 00:47:20,100 Έτσι εκεί. 1066 00:47:20,100 --> 00:47:23,870 Τώρα ας πάμε πάνω στο παράθυρο του τερματικού μου, επανάληψη Clang. 1067 00:47:23,870 --> 00:47:26,900 Και εδώ πάμε. 1068 00:47:26,900 --> 00:47:28,020 Αυτό ήταν πραγματικά γρήγορα. 1069 00:47:28,020 --> 00:47:30,690 Τι πραγματικά συνέβη ακριβώς, όμως; 1070 00:47:30,690 --> 00:47:33,430 Λοιπόν, τώρα εγώ θα προσθέσω τη γραμμή εκτύπωσης, ώστε να μπορούμε να δούμε. 1071 00:47:33,430 --> 00:47:41,330 Έτσι, επιτρέψτε μου να πω printf, ας πούμε, είμαι εδώ. 1072 00:47:41,330 --> 00:47:43,470 Εντάξει, δεν μεταβλητές, εμείς θα το αφήσουμε έτσι. 1073 00:47:43,470 --> 00:47:44,860 Επιτρέψτε μου να επαναληφθεί κάνει. 1074 00:47:44,860 --> 00:47:47,940 Επιτρέψτε μου να τρέχει εκ νέου χορωδία. 1075 00:47:47,940 --> 00:47:51,235 Και έλα. 1076 00:47:53,880 --> 00:47:55,130 Συνεχίστε. 1077 00:47:57,630 --> 00:47:59,750 Ως μέρος, γιατί δεν έχει συνετρίβη ακόμα; 1078 00:47:59,750 --> 00:48:02,050 Το σφάλμα καταμερισμού που συνέβη πριν από πολύ γρήγορο. 1079 00:48:02,050 --> 00:48:04,250 [Δεν ακούγεται] 1080 00:48:04,250 --> 00:48:04,830 David J. Malan: Ακριβώς. 1081 00:48:04,830 --> 00:48:06,350 Γι 'αυτό χρειάζεται χρόνος για να εκτυπώσετε. 1082 00:48:06,350 --> 00:48:08,370 Χρειάζονται μόνο περισσότερη δουλειά από την πλευρά του υπολογιστή. 1083 00:48:08,370 --> 00:48:09,550 Και εκεί είναι. 1084 00:48:09,550 --> 00:48:10,620 Τμηματοποίηση σφάλμα. 1085 00:48:10,620 --> 00:48:12,140 >> Έτσι παρατηρήσετε πόσο γρήγορα τρέχουν προγράμματα. 1086 00:48:12,140 --> 00:48:14,110 Αν δεν είστε εκτύπωση κάτι, σούπερ γρήγορο. 1087 00:48:14,110 --> 00:48:18,100 Αλλά έχουμε ακόμα αυτό το σφάλμα κατάτμησης, επειδή ό, τι συνέβαινε; 1088 00:48:18,100 --> 00:48:21,310 Λοιπόν, αν σκέφτεστε για το πώς η μνήμη του υπολογιστή σας είναι που έξω, αυτό 1089 00:48:21,310 --> 00:48:22,890 συμβαίνει να είναι κύρια. 1090 00:48:22,890 --> 00:48:23,800 Αλλά εδώ - 1091 00:48:23,800 --> 00:48:28,670 ας την ονομάσουμε ακριβώς αυτό το χορό, και ας ονομάσουμε αυτό χορωδία. 1092 00:48:28,670 --> 00:48:33,420 Και τώρα αν κάνω αισθητική μου δικαίωμα, αυτό ακριβώς πρόκειται να πω χορωδία, 1093 00:48:33,420 --> 00:48:38,060 χορός, χορός, χορός, χορός, χορός, χορός, nauseum τώρα. 1094 00:48:38,060 --> 00:48:39,920 Και τελικά, τι πρόκειται να συμβεί; 1095 00:48:39,920 --> 00:48:46,690 Αν η μεγάλη εικόνα είναι κυριολεκτικά αυτό, τι ακριβώς συμβαίνει εννοιολογικά; 1096 00:48:46,690 --> 00:48:48,320 Οι υπερβάσεις στοίβα του σωρού. 1097 00:48:48,320 --> 00:48:52,400 Ή, ακόμη χειρότερα, έχετε υπερβεί τα πάντα, συμπεριλαμβανομένου του τμήματος κειμένου, το οποίο είναι 1098 00:48:52,400 --> 00:48:54,530 τα μηδενικά και αυτά που αντιπροσωπεύουν το πρόγραμμά σας. 1099 00:48:54,530 --> 00:48:56,690 Εν ολίγοις, αυτό είναι απλά σούπερ, σούπερ κακός. 1100 00:48:56,690 --> 00:48:56,860 Σωστά; 1101 00:48:56,860 --> 00:48:58,620 Το πρόγραμμά σας έχει κινηθεί σπειροειδώς εκτός ελέγχου. 1102 00:48:58,620 --> 00:49:02,840 Είσαι με τον τρόπο περισσότερη μνήμη από ό, τι προορίζεται όλα εξαιτίας ενός ηλίθιου 1103 00:49:02,840 --> 00:49:03,920 λάθος, σε αυτή την περίπτωση. 1104 00:49:03,920 --> 00:49:08,160 Ή στην περίπτωση αυτή, ένα πολύ σκόπιμα κάνει η ίδια η λειτουργία κλήσης. 1105 00:49:08,160 --> 00:49:09,210 Τώρα αυτό δεν είναι όλα άσχημα. 1106 00:49:09,210 --> 00:49:12,540 Λειτουργίες αυτοαποκαλούνται έχει πραγματικά μεγάλη δύναμη 1107 00:49:12,540 --> 00:49:13,700 όταν μπορείτε να το χρησιμοποιήσετε σωστά. 1108 00:49:13,700 --> 00:49:15,650 Δεν έχω χρησιμοποιήσει σωστά εδώ. 1109 00:49:15,650 --> 00:49:16,940 >> Έτσι, αυτό δεν είναι όλα άσχημα. 1110 00:49:16,940 --> 00:49:20,620 Αλλά το γεγονός ότι ποτέ δεν έχω πραγματικά να σταματήσει καλώντας τον εαυτό μου είναι ένα θεμελιώδες 1111 00:49:20,620 --> 00:49:23,050 αδυναμία εδώ από αυτό το πρόγραμμα. 1112 00:49:23,050 --> 00:49:25,090 Έτσι, όταν θα πάμε με όλα αυτά; 1113 00:49:25,090 --> 00:49:26,230 Λοιπόν, τι πραγματικά συμβαίνει; 1114 00:49:26,230 --> 00:49:30,010 Όταν καλείτε τη λειτουργία αύξησης, όπως κάναμε σε αυτά τα παραδείγματα, 1115 00:49:30,010 --> 00:49:33,290 Έχω μια αξία όπως 1 που περνάω μέσα 1116 00:49:33,290 --> 00:49:35,820 Περνώ σε ένα αντίγραφο του υπ 'αριθμόν ένα. 1117 00:49:35,820 --> 00:49:37,080 Έτσι συμβαίνει το εξής. 1118 00:49:37,080 --> 00:49:40,390 Ας πάμε στο παράδειγμα αύξηση. 1119 00:49:40,390 --> 00:49:44,230 Και αυτός ο τύπος δεξιά εδώ. 1120 00:49:44,230 --> 00:49:46,800 Έτσι, εδώ είναι το τι πραγματικά συμβαίνει. 1121 00:49:46,800 --> 00:49:50,770 Όταν πήρα αύξηση, και περνώ στο x, εικονογραφικά τι 1122 00:49:50,770 --> 00:49:53,660 συμβαίνει εδώ είναι αυτό - 1123 00:49:53,660 --> 00:50:00,240 αν έχω την τιμή 1 αποθηκεύονται εδώ, και καλώ πραγματικά προσαύξηση, η οποία 1124 00:50:00,240 --> 00:50:02,680 καλείται τώρα χορωδία - 1125 00:50:02,680 --> 00:50:04,010 Ναι, αυτό είναι μου αποτίναξη εδώ. 1126 00:50:04,010 --> 00:50:06,750 Ας ονομάσουμε αυτό προσαύξηση. 1127 00:50:06,750 --> 00:50:09,420 Και δεν ξέρουμε τι είναι αυτό επόμενη λειτουργία πρόκειται να είναι. 1128 00:50:09,420 --> 00:50:14,270 Έτσι, αυτό που πραγματικά συμβαίνει είναι κάπου εδώ σε γενικές γραμμές, έχω ένα κομμάτι του 1129 00:50:14,270 --> 00:50:16,670 μνήμη που αποθηκεύει τον αριθμό 1. 1130 00:50:16,670 --> 00:50:19,730 Όταν καλώ αύξηση, είμαι χρησιμοποιώντας ένα άλλο κομμάτι της μνήμης, αλλά τώρα 1131 00:50:19,730 --> 00:50:20,840 έχουν το αντίγραφο 1. 1132 00:50:20,840 --> 00:50:25,480 Όταν αυξήσετε αυτή την τιμή, αυτό γίνεται 2 - φρικτά γραμμένο το 1133 00:50:25,480 --> 00:50:26,420 οθόνη εδώ. 1134 00:50:26,420 --> 00:50:30,550 Στη συνέχεια, όμως, τι θα συμβεί το συντομότερο επιστρέφει αύξηση; 1135 00:50:30,550 --> 00:50:34,610 Αυτή η μνήμη παίρνει μόλις παραδοθεί πίσω στο λειτουργικό σύστημα, το οποίο σημαίνει ότι όλα 1136 00:50:34,610 --> 00:50:37,470 έχετε κάνει δεν είναι τίποτα χρήσιμο. 1137 00:50:37,470 --> 00:50:43,460 Η μία που είχε αρχικά περιέχονται στην κύρια εξακολουθεί να είναι πραγματικά εκεί. 1138 00:50:43,460 --> 00:50:44,650 >> Έτσι, όταν θα πάμε με αυτό; 1139 00:50:44,650 --> 00:50:49,400 Λοιπόν, αποδεικνύεται ότι στη μνήμη έχετε αυτό το back to back ακολουθία του 1140 00:50:49,400 --> 00:50:50,940 bytes που μπορείτε να βάλετε μέσα τα πράγματα 1141 00:50:50,940 --> 00:50:53,760 Και αποδεικνύεται ότι έχουμε ήδη δει κάτι που προϋποθέτει την τοποθέτηση 1142 00:50:53,760 --> 00:50:55,100 πράγματα πλάτη με πλάτη με πλάτη με πλάτη. 1143 00:50:55,100 --> 00:51:00,170 Τι είναι μια χορδή, με βάση την εβδομάδα και τώρα την εβδομάδα δύο; 1144 00:51:00,170 --> 00:51:01,840 Έτσι είναι απλά μια συλλογή από χαρακτήρες. 1145 00:51:01,840 --> 00:51:05,290 Έτσι αποδεικνύεται, ακριβώς όπως μπορείτε να βάλετε τους αριθμούς στη μνήμη, μπορείτε ομοίως 1146 00:51:05,290 --> 00:51:06,900 θέσει χαρακτήρες σε μνήμη. 1147 00:51:06,900 --> 00:51:09,810 Και τη στιγμή που θα αρχίσει η εφαρμογή τους χαρακτήρες στη μνήμη πλάτη με πλάτη με πλάτη σε 1148 00:51:09,810 --> 00:51:12,800 πίσω, αποδεικνύεται ότι η χρήση της πιο απλά πράγματα, όπως ένα για βρόχο ή 1149 00:51:12,800 --> 00:51:14,510 ένας βρόχος while, μπορούμε να επαναλάβει - 1150 00:51:14,510 --> 00:51:17,130 από αριστερά προς τα δεξιά κατά τη διάρκεια των χαρακτήρων σε μια συμβολοσειρά - 1151 00:51:17,130 --> 00:51:20,720 μασάζ και να αρχίσει τους σε εντελώς διαφορετικούς χαρακτήρες. 1152 00:51:20,720 --> 00:51:25,550 Ένας θα μπορούσε να γίνει Β. Β θα μπορούσε να γίνει C. Έτσι ώστε τελικά, μπορούμε να πάρουμε μια 1153 00:51:25,550 --> 00:51:28,830 Ελληνικά πρόταση που κάνει πραγματικά την αίσθηση και τη μετατροπή κάθε ένα από αυτά 1154 00:51:28,830 --> 00:51:32,440 γράμματα, ένα κάθε φορά με τα πόδια μέσα από τη μνήμη του υπολογιστή μας άφησαν να 1155 00:51:32,440 --> 00:51:34,300 δικαίωμα να κρυπτογραφήσει πραγματικά. 1156 00:51:34,300 --> 00:51:36,590 >> Έτσι, ας ρίξουμε πέντε λεπτά διάλειμμα μας εδώ, και όταν θα έρθει πίσω, θα 1157 00:51:36,590 --> 00:51:39,060 ξεκινήσει αυτή η διαδικασία κρυπτογράφησης πληροφοριών. 1158 00:51:41,640 --> 00:51:43,180 >> Εντάξει. 1159 00:51:43,180 --> 00:51:48,440 Έτσι, πριν βουτήξετε σε κάποια crypto και αυτά τα πράγματα που ονομάζονται συστοιχίες, επιτρέψτε μου να 1160 00:51:48,440 --> 00:51:51,610 παύση για οποιαδήποτε απορία, γιατί νιώθω ότι πραγματικά το είδος των μπερδεμένη μερικές από 1161 00:51:51,610 --> 00:51:52,230 αυτά τα θέματα. 1162 00:51:52,230 --> 00:51:53,940 Ας ορίσει τώρα, αν μπορούμε. 1163 00:51:53,940 --> 00:51:56,480 Γι 'αυτό ακριβώς μίλησε για τις τιμές επιστροφής. 1164 00:51:56,480 --> 00:51:58,630 Μιλήσαμε για τα επιχειρήματα. 1165 00:51:58,630 --> 00:52:02,330 Και μιλήσαμε για την έννοια αυτή, η οποία θα επανέλθουμε τις επόμενες εβδομάδες 1166 00:52:02,330 --> 00:52:07,140 έρχονται, που βλέπουν τη μνήμη ως ένα σωρό από αυτά στοιβάζονται 1167 00:52:07,140 --> 00:52:08,540 δίσκους, να το πω έτσι. 1168 00:52:08,540 --> 00:52:13,460 Από κάτω προς επάνω, έτσι ώστε κάθε δίσκος που παίρνει τοποθετούνται στη στοίβα παριστάνει 1169 00:52:13,460 --> 00:52:15,160 Μια λειτουργία που είναι σήμερα ονομάζεται. 1170 00:52:17,970 --> 00:52:20,300 Οποιεσδήποτε ερωτήσεις; 1171 00:52:20,300 --> 00:52:22,890 Πώς, λοιπόν, για την - επιτρέψτε μου να προσπαθήσω μια ερώτηση. 1172 00:52:22,890 --> 00:52:25,520 Κρατάω ότι χαλάσει, αλλά τώρα it's - you've δει όλα το πρόσωπο του αγοριού. 1173 00:52:25,520 --> 00:52:27,020 Γι 'αυτό και θα επανέλθω σε αυτό. 1174 00:52:27,020 --> 00:52:29,700 >> Έτσι, επιτρέψτε μου να κάνω μια ερώτηση εδώ. 1175 00:52:29,700 --> 00:52:34,810 Επιτρέψτε μου να απλοποιήσει την πλάτη σε ό, τι ήταν πριν από μερικές από τις προηγούμενες Q & A. μας 1176 00:52:34,810 --> 00:52:41,730 Και το γεγονός ότι η αύξηση έχει ανοιχτή παρένθεση, int αριθμό, έκλεισε 1177 00:52:41,730 --> 00:52:42,260 παρένθεση. 1178 00:52:42,260 --> 00:52:46,370 Τι σημαίνει int αριθμός αντιπροσωπεύει; 1179 00:52:46,370 --> 00:52:47,250 [Δεν ακούγεται] 1180 00:52:47,250 --> 00:52:47,870 David J. Malan: Ένα επιχείρημα. 1181 00:52:47,870 --> 00:52:50,732 Εντάξει, αλλά τι είναι ένα επιχείρημα; 1182 00:52:50,732 --> 00:52:51,620 [Δεν ακούγεται] 1183 00:52:51,620 --> 00:52:52,500 David J. Malan: Συγγνώμη, τι είναι αυτό; 1184 00:52:52,500 --> 00:52:53,150 ΟΜΙΛΗΤΗΣ 3: Κάτι που περνούν μέσα 1185 00:52:53,150 --> 00:52:53,570 David J. Malan: Εντάξει. 1186 00:52:53,570 --> 00:52:54,780 Έτσι, κάτι που θα περάσει μέσα 1187 00:52:54,780 --> 00:52:56,560 Και γενικότερα, είναι απλά η είσοδος. 1188 00:52:56,560 --> 00:52:59,860 Αν είστε γραπτώς μια λειτουργία και το σκοπό της εν λόγω λειτουργία στη ζωή είναι να κάνουμε 1189 00:52:59,860 --> 00:53:03,290 κάτι λίγο διαφορετικό κάθε φορά που το χρησιμοποιείτε, τότε ο μόνος τρόπος για 1190 00:53:03,290 --> 00:53:07,710 ότι για να συμβεί αυτό πραγματικά φαίνεται να είναι να καταθέσουν τις απόψεις τους, έτσι ώστε να 1191 00:53:07,710 --> 00:53:10,180 μπορεί να κάνει κάτι διαφορετικό με την είσοδο κάθε φορά. 1192 00:53:10,180 --> 00:53:13,590 >> Έτσι, θα πρέπει να καθορίσετε δύο πράγματα, όταν μια λειτουργία παίρνει εισόδους. 1193 00:53:13,590 --> 00:53:17,240 Θα πρέπει να καθορίσετε το όνομα που θέλετε να δώσετε στη συγκεκριμένη είσοδο, για καθαρά 1194 00:53:17,240 --> 00:53:20,790 τη δική σας ευκολία, έτσι ώστε να μπορείτε να ανατρέχετε σε αυτό στη λειτουργία που 1195 00:53:20,790 --> 00:53:23,610 τον εαυτό σου γράφουν, όπως έκανα εδώ στη γραμμή 32. 1196 00:53:23,610 --> 00:53:27,840 Αλλά θα πρέπει επίσης να καθορίσετε το είδος, γιατί το C είναι μια γλώσσα προγραμματισμού 1197 00:53:27,840 --> 00:53:28,840 αυτό ακριβώς απαιτεί 1198 00:53:28,840 --> 00:53:31,810 ότι αν θέλετε μια μεταβλητή, θα πρέπει να πείτε στον υπολογιστή τι 1199 00:53:31,810 --> 00:53:32,790 το είδος των δεδομένων είναι, 1200 00:53:32,790 --> 00:53:35,540 σε μεγάλο μέρος έτσι ώστε να ξέρει πόσα bits να 1201 00:53:35,540 --> 00:53:37,230 διαθέσει για αυτή τη μεταβλητή. 1202 00:53:37,230 --> 00:53:38,600 Επειδή θα μπορούσε να είναι έξι - 1203 00:53:38,600 --> 00:53:39,990 Συγγνώμη, δεν θα είναι έξι. 1204 00:53:39,990 --> 00:53:41,050 Μπορεί να είναι 16. 1205 00:53:41,050 --> 00:53:41,630 Μπορεί να είναι 8. 1206 00:53:41,630 --> 00:53:44,410 Μπορεί να είναι 32, 64 ακόμη. 1207 00:53:44,410 --> 00:53:45,820 Όμως, ο υπολογιστής πρέπει να γνωρίζει. 1208 00:53:45,820 --> 00:53:49,110 Τώρα το int στην αριστερή πλευρά αντιπροσωπεύει αυτό, σε αντίθεση; 1209 00:53:52,825 --> 00:53:53,780 [Δεν ακούγεται] 1210 00:53:53,780 --> 00:53:54,570 David J. Malan: Τι είναι αυτό; 1211 00:53:54,570 --> 00:53:55,390 [Δεν ακούγεται] 1212 00:53:55,390 --> 00:53:57,920 DAVID J. Malan: Ο τύπος της λειτουργίας και, πιο συγκεκριμένα, η 1213 00:53:57,920 --> 00:53:59,755 είδος της παραγωγής της. 1214 00:53:59,755 --> 00:54:00,220 Δεξιά. 1215 00:54:00,220 --> 00:54:04,220 Έτσι, ενώ το πράγμα σε παρένθεση αντιπροσωπεύει είσοδο του, αν υπάρχουν, η 1216 00:54:04,220 --> 00:54:06,640 πράγμα προς τα αριστερά αντιπροσωπεύει την παραγωγή του. 1217 00:54:06,640 --> 00:54:10,560 Και σε αυτή την περίπτωση, προφανώς αύξηση επιστρέφει ένα int. 1218 00:54:10,560 --> 00:54:14,590 Και έτσι int είναι ο τύπος επιστροφής αυτής της λειτουργίας. 1219 00:54:14,590 --> 00:54:16,090 >> Τι σημαίνει να επιστρέφουν; 1220 00:54:16,090 --> 00:54:19,810 Κυριολεκτικά, μπορείτε να χρησιμοποιήσετε την επιστροφή λέξη-κλειδί. 1221 00:54:19,810 --> 00:54:24,640 Και στη συνέχεια, αν αυτό που επιστρέφουν στα δεξιά του τη λέξη-κλειδί είναι ένας 1222 00:54:24,640 --> 00:54:28,340 ακέραιος, τότε αυτό είναι πράγματι σύμφωνη με ό, τι έχουμε υποσχεθεί. 1223 00:54:28,340 --> 00:54:31,110 Δεν θα μπορούσε να κάνει κάτι τέτοιο - 1224 00:54:31,110 --> 00:54:32,280 γειά σου, τον κόσμο - 1225 00:54:32,280 --> 00:54:33,500 επειδή αυτό είναι ένα string. 1226 00:54:33,500 --> 00:54:35,440 Προφανώς, δεν είναι ένας ακέραιος. 1227 00:54:35,440 --> 00:54:40,450 Έτσι, με λίγα λόγια, το βάρος είναι πραγματικά για μας, ο προγραμματιστής, να είναι συγκεκριμένα ως 1228 00:54:40,450 --> 00:54:44,730 σε ό, τι είμαστε και να επιστρέφουν στη συνέχεια πραγματικά να πάμε για την επιστροφή του. 1229 00:54:44,730 --> 00:54:49,030 Και στη συνέχεια να γίνει ένα αγοράκι πιο σαφές το πλαίσιο - 1230 00:54:49,030 --> 00:54:50,080 εκεί είναι και πάλι. 1231 00:54:50,080 --> 00:54:51,060 Το πλαίσιο - 1232 00:54:51,060 --> 00:54:52,830 μεγάλη έκπληξη έρχεται σε μια στιγμή. 1233 00:54:52,830 --> 00:54:57,720 Το πλαίσιο είναι εδώ τώρα ότι η μνήμη του υπολογιστή σας είναι, και πάλι, μια 1234 00:54:57,720 --> 00:54:59,070 gigabyte, δύο gigabytes, όποια και αν είναι. 1235 00:54:59,070 --> 00:54:59,630 Ίσως είναι περισσότερο. 1236 00:54:59,630 --> 00:55:00,540 Ίσως είναι λιγότερο. 1237 00:55:00,540 --> 00:55:03,750 Αλλά ο υπολογιστής θεωρεί ως έχουν διαφορετικά τμήματα. 1238 00:55:03,750 --> 00:55:04,860 Κάτι πηγαίνει εκεί κάτω. 1239 00:55:04,860 --> 00:55:06,020 Κάτι άλλο πάει εκεί. 1240 00:55:06,020 --> 00:55:07,540 Διαφορετικά πράγματα πηγαίνει στη μέση. 1241 00:55:07,540 --> 00:55:09,300 Και σήμερα, εμείς απλά να αρχίσει λέγοντας αυτή την ιστορία. 1242 00:55:09,300 --> 00:55:11,130 >> Αλλά θα επανέλθω σε αυτό την πάροδο του χρόνου. 1243 00:55:11,130 --> 00:55:15,000 Προς το παρόν, το μόνο κομμάτι της μνήμης που πραγματικά νοιάζονται για το τμήμα κειμένου 1244 00:55:15,000 --> 00:55:17,160 γιατί αυτό αντιπροσωπεύει μόλις τα μηδενικά και αυτά 1245 00:55:17,160 --> 00:55:18,460 Clang που έχει εξάγεται. 1246 00:55:18,460 --> 00:55:21,570 Έτσι, όταν εκτελείτε μια εντολή στο πληκτρολόγιο, όπως a.out, ή κάνετε διπλό 1247 00:55:21,570 --> 00:55:25,350 κάντε κλικ σε ένα εικονίδιο για Mac OS ή Windows, το πρόγραμμά σας είναι φορτωμένο από το σκληρό σας 1248 00:55:25,350 --> 00:55:26,930 οδηγούν σε μνήμη RAM. 1249 00:55:26,930 --> 00:55:30,850 Και αυτό είναι plopped στην κορυφή της μνήμης RAM του υπολογιστή σας, να το πω έτσι. 1250 00:55:30,850 --> 00:55:35,470 Τώρα, εν τω μεταξύ, το πρόγραμμά σας αρχίζει να τρέχει και παίρνει κύρια κάλεσε το 1251 00:55:35,470 --> 00:55:39,240 πρόγραμμα που έγραψε ή το πρόγραμμα Microsoft ή η Apple έγραψε, κάποια από της 1252 00:55:39,240 --> 00:55:42,930 τοπικές μεταβλητές καταλήγουν εκεί κάτω στο κάτω μέρος της μνήμης του υπολογιστή σας. 1253 00:55:42,930 --> 00:55:46,490 Αλλά αν η κύρια καλεί μια άλλη λειτουργία που η ίδια έχει μεταβλητές ή 1254 00:55:46,490 --> 00:55:48,340 επιχειρήματα, καταλήγουν πάνω από αυτό. 1255 00:55:48,340 --> 00:55:50,670 Και αν αυτή η λειτουργία απαιτεί κάτι, που καταλήγουν πάνω από αυτό, 1256 00:55:50,670 --> 00:55:51,840 πάνω από αυτό, πάνω από αυτό. 1257 00:55:51,840 --> 00:55:56,100 Και μόνο μία φορά μία λειτουργία γίνεται εκτέλεσης κάνει τη στοίβα των δίσκων, έτσι 1258 00:55:56,100 --> 00:55:58,320 να μιλήσει, να αρχίσει να πάρει όλο και πιο χαμηλά. 1259 00:55:58,320 --> 00:56:03,370 Και αυτό είναι ό, τι τότε, με λίγα λόγια, εξηγεί γιατί, όταν καλείτε κύβος - 1260 00:56:03,370 --> 00:56:04,660 ή να καλέσετε αύξηση - 1261 00:56:04,660 --> 00:56:06,490 είστε περνώντας σε ένα αντίγραφο του αξία. 1262 00:56:06,490 --> 00:56:09,840 Και τι σημαίνει αυτό εικονογραφικά είναι ότι είστε κυριολεκτικά γραπτώς το 1263 00:56:09,840 --> 00:56:14,540 αριθμός 1 σε ένα άλλο μέρος της μνήμης, αλλάζοντας ότι 1 έως 2, στην περίπτωση των 1264 00:56:14,540 --> 00:56:15,360 προσαύξηση - 1265 00:56:15,360 --> 00:56:17,450 ή σε ένα 8, στην περίπτωση του κύβου - 1266 00:56:17,450 --> 00:56:21,450 και ρίχνοντας στη συνέχεια ότι η μνήμη μακριά το συντομότερο η αύξηση ή τον κύβο 1267 00:56:21,450 --> 00:56:23,410 επιστρέφει λειτουργία. 1268 00:56:23,410 --> 00:56:24,267 >> Ερώτηση. 1269 00:56:24,267 --> 00:56:25,517 [Δεν ακούγεται] 1270 00:56:28,090 --> 00:56:29,970 David J. Malan: Όπου - Οι καθολικές μεταβλητές αποθηκεύονται σε ό, τι είναι 1271 00:56:29,970 --> 00:56:32,960 σήμερα ονομάζεται αρχικοποίηση των δεδομένων ή δεν έχει προετοιμαστεί δεδομένα. 1272 00:56:32,960 --> 00:56:35,900 Η διαφορά είναι, αν έχετε μια καθολική μεταβλητή, και μπορείτε να ορίσετε 1273 00:56:35,900 --> 00:56:39,530 αμέσως μια αξία με το ίσον, καταλήγει στην κορυφή εκεί. 1274 00:56:39,530 --> 00:56:43,390 Και αν σας πω ακριβώς int x ερωτηματικό χωρίς αξία, καταλήγει ελαφρώς 1275 00:56:43,390 --> 00:56:46,670 χαμηλότερο σε RAM απλά με σύμβαση. 1276 00:56:46,670 --> 00:56:49,308 Άλλες ερωτήσεις. 1277 00:56:49,308 --> 00:56:49,750 Εντάξει. 1278 00:56:49,750 --> 00:56:53,040 >> Έτσι, αυτή η εικόνα θα επανέλθει, όπως έχουμε πιο ισχυρή με το τι μπορούμε να κάνουμε 1279 00:56:53,040 --> 00:56:53,830 με τον υπολογιστή. 1280 00:56:53,830 --> 00:56:58,790 Αλλά για τώρα, ας ρίξουμε μια σύντομη εισαγωγή στην κρυπτογραφία, ένας συγκεκριμένος τύπος 1281 00:56:58,790 --> 00:57:01,910 κρυπτογραφία που δεν λύνει όλα τα προβλήματα του κόσμου, αλλά δεν επιλύει 1282 00:57:01,910 --> 00:57:02,480 ορισμένες από αυτές. 1283 00:57:02,480 --> 00:57:06,090 Στην περίπτωση αυτή εδώ, έχουμε κάτι που ονομάζεται μυστικό κλειδί κρυπτογράφησης. 1284 00:57:06,090 --> 00:57:10,430 Και μυστικό κλειδί κρυπτογράφησης, όπως υποδηλώνει το όνομα, αντλεί την ασφάλεια του 1285 00:57:10,430 --> 00:57:11,330 από ένα μυστικό. 1286 00:57:11,330 --> 00:57:14,720 Έτσι, για παράδειγμα, αν είστε πίσω στο σχολείο βαθμού και είστε περνώντας ένα 1287 00:57:14,720 --> 00:57:18,040 μικρό μυστικό ερωτικό γράμμα προς το αγόρι ή το κορίτσι σας σε συντριβή - αν 1288 00:57:18,040 --> 00:57:20,820 ήθελε να περάσει ότι μέσα από το κοινό, τότε μάλλον δεν θα γράψω 1289 00:57:20,820 --> 00:57:24,120 ένα τέτοιο σημείωμα στα αγγλικά ή ό, τι η μητρική σας γλώσσα είναι? μάλλον, σας 1290 00:57:24,120 --> 00:57:25,800 μπορεί να το κρυπτογραφήσει. 1291 00:57:25,800 --> 00:57:27,820 Ή ίσως απλά να τους στείλετε ένα μήνυμα κειμένου αυτές τις μέρες. 1292 00:57:27,820 --> 00:57:30,310 Αλλά στην πραγματικότητα μπορεί να περάσει ένα σημείωμα σε όλη την τάξη. 1293 00:57:30,310 --> 00:57:33,820 Και για να το κάνουμε αυτό με ασφάλεια, με τέτοιο τρόπο που οι φίλοι σας και ο δάσκαλος 1294 00:57:33,820 --> 00:57:36,820 Δεν ξέρω τι είστε γραπτώς, μπορεί να καταλήξει σε μια αρκετά απλή 1295 00:57:36,820 --> 00:57:37,800 αλγόριθμο - 1296 00:57:37,800 --> 00:57:39,290 νέοι κι αν θα μπορούσε να είναι - 1297 00:57:39,290 --> 00:57:40,780 να αγωνίζομαι μόνο τα λόγια. 1298 00:57:40,780 --> 00:57:44,390 Έτσι, αντί της γραφής Α, μπορείτε να γράψετε Β. Αντί B, μπορείτε να γράψετε 1299 00:57:44,390 --> 00:57:46,670 Γ. Αντί C, μπορείτε να γράψετε D, και ούτω καθεξής. 1300 00:57:46,670 --> 00:57:50,020 Ή θα μπορούσε να καταλήξει σε μια πιο εξελιγμένη μετάφραση των γραμμάτων 1301 00:57:50,020 --> 00:57:51,300 με διαφορετικά γράμματα. 1302 00:57:51,300 --> 00:57:55,440 Όμως, τα αλιεύματα είναι το αγόρι ή το κορίτσι στο οποίο στέλνετε το σημείωμα αυτό πρέπει να 1303 00:57:55,440 --> 00:57:56,850 γνωρίζουν κάτι. 1304 00:57:56,850 --> 00:57:59,620 Ποιο είναι αυτό που, προφανώς; 1305 00:57:59,620 --> 00:58:01,400 Όπως, ποιο είναι το μυστικό σας. 1306 00:58:01,400 --> 00:58:04,620 Όπως, τι είναι η χαρτογράφηση μεταξύ Όπως και Β και Κ και Ds; 1307 00:58:04,620 --> 00:58:08,780 Είναι προσθέτοντας μόνο ένα, να το πω έτσι, σε κάθε ένα από τα γράμματα για να πάει από 1308 00:58:08,780 --> 00:58:09,730 Α στο Β, Β Γ; 1309 00:58:09,730 --> 00:58:11,350 Είναι πιο περίπλοκο από αυτό; 1310 00:58:11,350 --> 00:58:16,450 Έτσι και φλερτ σας θα πρέπει να έχουν αυτό το μυστικό των πληροφοριών. 1311 00:58:16,450 --> 00:58:18,170 Αλλά υπάρχει ένα είδος catch-22 εδώ. 1312 00:58:18,170 --> 00:58:20,760 Αν αυτή είναι η πρώτη φορά που στέλνετε αυτό το γράμμα αγάπης με την 1313 00:58:20,760 --> 00:58:25,590 τάξη, πώς είναι ότι το αγόρι ή το κορίτσι πρόκειται να ξέρει ποιο είναι το μυστικό ακόμα; 1314 00:58:25,590 --> 00:58:28,450 Έτσι, το μυστικό κλειδί κρυπτογράφησης δεν μπορεί να λύσει όλα τα προβλήματα του κόσμου. 1315 00:58:28,450 --> 00:58:30,490 Και υπάρχει πραγματικά μια σχέση που θα έρθει πίσω στο προς 1316 00:58:30,490 --> 00:58:31,370 τέλος του εξαμήνου. 1317 00:58:31,370 --> 00:58:35,970 >> Ομοίως, δεν έχουν κανέναν από μας ίσως ποτέ στείλει ένα - 1318 00:58:35,970 --> 00:58:39,453 Ομοίως, δεν περισσότεροι από εμάς δεν γνωρίζουμε κάποιον που δουλεύει, για παράδειγμα, σε 1319 00:58:39,453 --> 00:58:40,300 Amazon.com. 1320 00:58:40,300 --> 00:58:43,130 Και όμως, πολλοί από εμάς έχουν αγοράσει πιθανώς τα πράγματα στο Amazon.com. 1321 00:58:43,130 --> 00:58:45,670 Και έχουμε μάθει να υποθέσουμε ότι αυτά τα e-commerce 1322 00:58:45,670 --> 00:58:47,060 συναλλαγές είναι ασφαλείς. 1323 00:58:47,060 --> 00:58:47,210 Σωστά; 1324 00:58:47,210 --> 00:58:49,310 Η διεύθυνση URL λέει πιθανώς https. 1325 00:58:49,310 --> 00:58:51,590 Υπάρχει ίσως ένα ανόητο μικρό εικονίδιο λουκέτου κάπου. 1326 00:58:51,590 --> 00:58:54,680 Υπάρχει κάποιο είδος της κρυπτογραφίας διασφάλιση των στοιχείων της πιστωτικής σας κάρτας 1327 00:58:54,680 --> 00:58:56,980 ανάμεσα σε εσάς και το Amazon.com. 1328 00:58:56,980 --> 00:59:00,410 Και όμως, αν κρυπτογραφία περιλαμβάνει τη γνώση κάποιο μυστικό, ακόμα και να κάνω δεν 1329 00:59:00,410 --> 00:59:03,330 ξέρω κανέναν στο Amazon, και δεν έχω τοποθετημένα σίγουρα κάθε είδους 1330 00:59:03,330 --> 00:59:07,350 μυστικό με κάποιον στο Amazon, πώς είναι ο υπολογιστής μου ή browser μου το κάνετε αυτό; 1331 00:59:07,350 --> 00:59:10,100 Λοιπόν, αποδεικνύεται ότι δεν υπάρχει άλλου είδους κρυπτογράφηση εντελώς ότι να λύσει 1332 00:59:10,100 --> 00:59:10,740 αυτό το πρόβλημα. 1333 00:59:10,740 --> 00:59:13,610 Αλλά για σήμερα, θα επικεντρωθεί στην απλή, όπου μπορείτε να κανονίσετε σε 1334 00:59:13,610 --> 00:59:18,480 εκ των προτέρων να γνωρίζει κάποιο μυστικό, όπως συν 1 ή κάποια χαρτογράφηση μεταξύ Όπως και πολλά άλλα. 1335 00:59:18,480 --> 00:59:20,710 >> Και η διαδικασία της κρυπτογραφίας περιλαμβάνει γενικά αυτό. 1336 00:59:20,710 --> 00:59:23,550 Έχετε κάποια μορφή απλού κειμένου, που απεικονίζονται εδώ στα αριστερά. 1337 00:59:23,550 --> 00:59:26,260 Μπορείτε να εκτελέσετε μέσα από κάποιο είδος του αλγορίθμου ή διαδικασίας 1338 00:59:26,260 --> 00:59:27,670 για την κρυπτογράφηση αυτό. 1339 00:59:27,670 --> 00:59:31,390 Ίσως αυτό είναι απλά Α γίνεται Β, Β γίνεται C. Και τότε θα καταλήξετε με 1340 00:59:31,390 --> 00:59:32,260 κρυπτογραφημένο κείμενο. 1341 00:59:32,260 --> 00:59:36,450 Εν τω μεταξύ, μία φορά φλερτ σας λαμβάνει το μυστικό σημείωμα, αυτός ή αυτή πρέπει να τότε 1342 00:59:36,450 --> 00:59:39,950 αποκρυπτογραφήσει με γενικά αναστροφή της αλγόριθμο, έτσι ώστε να πάρει 1343 00:59:39,950 --> 00:59:41,640 υποστηρίξουν το απλό κείμενο. 1344 00:59:41,640 --> 00:59:43,860 Τώρα υπάρχουν φυσικά ενσαρκώσεις του αυτό. 1345 00:59:43,860 --> 00:59:46,720 Για παράδειγμα, αυτό είναι ένα μικρό μυστικό δακτύλιο αποκωδικοποιητή. 1346 00:59:46,720 --> 00:59:50,060 Και αυτό είναι ένας δακτύλιος με την έννοια ότι υπάρχουν δύο καντράν εδώ. 1347 00:59:50,060 --> 00:59:53,630 Στην εξωτερική περιφέρεια του αυτό το πράγμα, υπάρχει γράμματα A έως Z, 1348 00:59:53,630 --> 00:59:55,110 αν είστε σε τυχαία σειρά. 1349 00:59:55,110 --> 00:59:58,410 Και στο εσωτερικό, δεν υπάρχει στην πραγματικότητα ορισμένοι αριθμοί, έτσι ώστε με αυτό 1350 00:59:58,410 --> 01:00:02,940 δαχτυλίδι, μπορείτε να το είδος των γυρίστε το εξωτερικό, αλλά όχι το εσωτερικό, προκειμένου να παρατάξει 1351 01:00:02,940 --> 01:00:04,110 αριθμούς με γράμματα. 1352 01:00:04,110 --> 01:00:08,290 Και στο κλιπ που είστε έτοιμος να δείτε - μερικά από τα οποία μπορεί να έχετε δει 24/7 1353 01:00:08,290 --> 01:00:11,120 γύρω από την περίοδο των Χριστουγέννων από μια ταινία που ονομάζεται Μια ιστορία των Χριστουγέννων. 1354 01:00:11,120 --> 01:00:16,050 Θα δείτε ότι λίγο Ralphie ήταν τόσο πρόθυμοι να καταλάβω τι μικρό ορφανό 1355 01:00:16,050 --> 01:00:19,810 Μυστικό μήνυμα Annie ήταν σ 'αυτόν που είχε κοινοποιηθεί, νομίζω, στην 1356 01:00:19,810 --> 01:00:22,810 μορφή αριθμητικών μηνύματα σε ένα σειριακό κιβώτιο. 1357 01:00:22,810 --> 01:00:26,760 Και θα έπρεπε να συσσωρεύονται όλα τα μικρά φύλλα που ήρθαν 1358 01:00:26,760 --> 01:00:27,480 στο πλαίσιο των δημητριακών. 1359 01:00:27,480 --> 01:00:28,320 Θα έπρεπε να τα ταχυδρομήσετε μέσα 1360 01:00:28,320 --> 01:00:31,060 Θα έπρεπε να πάρει πίσω το δαχτυλίδι μυστικό αποκωδικοποιητή, έτσι ώστε να μπορείτε τελικά να καταλάβω 1361 01:00:31,060 --> 01:00:34,190 τι είναι η χαρτογράφηση μεταξύ γραμμάτων και αριθμών, 1362 01:00:34,190 --> 01:00:35,420 ή γράμματα και γράμματα. 1363 01:00:35,420 --> 01:00:39,790 Έτσι, μπορώ να σας δώσω αυτό το σύντομο κλιπ από μια ιστορία των Χριστουγέννων για να παρακινήσει PSET 2 και 1364 01:00:39,790 --> 01:00:42,340 συζήτησή μας, σε μια στιγμή, από συστοιχίες. 1365 01:00:42,340 --> 01:00:43,773 Έτσι, εδώ έχουμε Ralphie. 1366 01:00:43,773 --> 01:00:44,126 >> [ΑΝΑΠΑΡΑΓΩΓΗ ΒΙΝΤΕΟ] 1367 01:00:44,126 --> 01:00:47,470 -Να είναι γνωστό σε όλους και διάφορες ότι Ralph Parker διορίζεται 1368 01:00:47,470 --> 01:00:50,690 μέλος του Little Orphan Annie Secret Circle και δικαιούται να επικαλείται όλα 1369 01:00:50,690 --> 01:00:53,500 οι τιμητικές διακρίσεις και τα οφέλη που συμβαίνουν σ 'αυτό. 1370 01:00:53,500 --> 01:00:56,040 -Υπογραφή, Little Orphan Annie. 1371 01:00:56,040 --> 01:00:58,730 Προσυπογράφονται, Pierre Andre! 1372 01:00:58,730 --> 01:01:00,150 Το μελάνι! 1373 01:01:00,150 --> 01:01:02,910 Διακρίσεις και τα οφέλη, ήδη από την ηλικία των εννέα ετών. 1374 01:01:09,970 --> 01:01:10,730 Έλα, ας πάρουν το δρόμο τους. 1375 01:01:10,730 --> 01:01:15,000 Δεν χρειάζεται όλα αυτά τζαζ για τους διακινητές και τους πειρατές. 1376 01:01:15,000 --> 01:01:17,624 -Ακούστε αύριο το βράδυ για τη σύναψη περιπέτεια του The Black 1377 01:01:17,624 --> 01:01:19,710 Πειρατικό πλοίο. 1378 01:01:19,710 --> 01:01:23,380 Τώρα ήρθε η ώρα για το μυστικό μήνυμα Annie για εσάς τα μέλη 1379 01:01:23,380 --> 01:01:25,670 του Secret Circle. 1380 01:01:25,670 --> 01:01:30,260 Θυμηθείτε, τα παιδιά, μόνο τα μέλη του Secret Circle Annie μπορεί να αποκωδικοποιήσει 1381 01:01:30,260 --> 01:01:31,660 Μυστικό μήνυμα της Annie. 1382 01:01:31,660 --> 01:01:36,230 Θυμηθείτε, η Annie είναι ανάλογα με εσάς. 1383 01:01:36,230 --> 01:01:38,720 Ρυθμίστε τις πινέζες σας για Β2. 1384 01:01:38,720 --> 01:01:41,040 Εδώ είναι το μήνυμα. 1385 01:01:41,040 --> 01:01:42,470 12, 11 - 1386 01:01:42,470 --> 01:01:46,000 -Είμαι στην πρώτη συνεδρίαση μυστικό μου. 1387 01:01:46,000 --> 01:01:49,440 -14, 11, 18, 16 - 1388 01:01:49,440 --> 01:01:51,700 -Pierre ήταν σε μεγάλη απόψε φωνή. 1389 01:01:51,700 --> 01:01:54,890 Θα μπορούσα να πω ότι το μήνυμα απόψε ήταν πολύ σημαντικό. 1390 01:01:54,890 --> 01:01:56,750 -3, 25. 1391 01:01:56,750 --> 01:01:58,590 Αυτό είναι ένα μήνυμα από τον εαυτό της Annie. 1392 01:01:58,590 --> 01:01:59,840 Θυμηθείτε, μην το πεις σε κανέναν. 1393 01:02:04,570 --> 01:02:08,750 -90 Δευτερόλεπτα αργότερα, είμαι ο μόνος δωμάτιο του σπιτιού, όπου ένα αγόρι εννέα 1394 01:02:08,750 --> 01:02:12,980 θα μπορούσε να καθίσει στην προστασία της ιδιωτικής ζωής και αποκωδικοποίηση. 1395 01:02:12,980 --> 01:02:17,130 Aha, Β. πήγα στο επόμενο. 1396 01:02:17,130 --> 01:02:20,330 Ε. Η πρώτη λέξη είναι να είναι. 1397 01:02:20,330 --> 01:02:22,670 Σ. Είναι ερχόταν πιο εύκολο τώρα. 1398 01:02:22,670 --> 01:02:24,590 U. 1399 01:02:24,590 --> 01:02:26,510 -Έλα τώρα, Ralphie. 1400 01:02:26,510 --> 01:02:28,430 Πρέπει να φύγω. 1401 01:02:28,430 --> 01:02:30,350 -Θα είναι κάτω δεξιά, ma. 1402 01:02:30,350 --> 01:02:33,720 -Gee σφυρίζω. 1403 01:02:33,720 --> 01:02:38,270 -T, O. Να είστε βέβαιος να. 1404 01:02:38,270 --> 01:02:40,000 Να είστε βέβαιος να τι; 1405 01:02:40,000 --> 01:02:42,105 Ποια ήταν η Little Orphan Annie προσπαθώ να πω; 1406 01:02:42,105 --> 01:02:43,095 Να είστε βέβαιος να τι; 1407 01:02:43,095 --> 01:02:43,590 -Ralphie! 1408 01:02:43,590 --> 01:02:44,580 Randy πρέπει να πάει. 1409 01:02:44,580 --> 01:02:45,570 Θα σας παρακαλώ να βγει; 1410 01:02:45,570 --> 01:02:46,560 -Εντάξει, ma. 1411 01:02:46,560 --> 01:02:48,540 Θα είμαι δεξιά έξω. 1412 01:02:48,540 --> 01:02:50,580 -Ήμουν όλο και πιο κοντά τώρα. 1413 01:02:50,580 --> 01:02:52,550 Η ένταση ήταν φοβερή. 1414 01:02:52,550 --> 01:02:53,355 Τι ήταν αυτό; 1415 01:02:53,355 --> 01:02:56,315 Η μοίρα του πλανήτη μπορεί να κολλήσει στην ισορροπία. 1416 01:02:56,315 --> 01:02:56,790 -Ralphie! 1417 01:02:56,790 --> 01:02:59,165 Randy πήρε για να πάει. 1418 01:02:59,165 --> 01:03:02,310 -Θα είναι ακριβώς έξω, για να φωνάξει έξω δυνατό. 1419 01:03:02,310 --> 01:03:04,000 -Gee, σχεδόν εκεί. 1420 01:03:04,000 --> 01:03:05,180 Τα δάχτυλά μου πέταξε. 1421 01:03:05,180 --> 01:03:07,150 Το μυαλό μου ήταν μια παγίδα χάλυβα. 1422 01:03:07,150 --> 01:03:08,790 Κάθε πόρων δονείται. 1423 01:03:08,790 --> 01:03:10,040 Ήταν σχεδόν σαφής. 1424 01:03:10,040 --> 01:03:13,400 Ναι, ναι, ναι, ναι. 1425 01:03:13,400 --> 01:03:18,960 -Φροντίστε να πίνετε Ovaltine σας. 1426 01:03:18,960 --> 01:03:20,210 Ovaltine; 1427 01:03:24,010 --> 01:03:25,260 Ένας ταλαιπωρημένος εμπορικός; 1428 01:03:28,200 --> 01:03:29,640 Κάθαρμα. 1429 01:03:29,640 --> 01:03:33,340 [ΑΝΑΠΑΡΑΓΩΓΗ ΒΙΝΤΕΟ ΤΕΛΟΣ] 1430 01:03:33,340 --> 01:03:36,040 >> David J. Malan: Έτσι εκεί έχουμε κρυπτογραφία. 1431 01:03:36,040 --> 01:03:39,670 Πώς, λοιπόν, σε έναν υπολογιστή μπορούμε να πάμε για την εφαρμογή ή 1432 01:03:39,670 --> 01:03:40,950 εκπροσωπούν τα πράγματα όπως αυτό; 1433 01:03:40,950 --> 01:03:44,430 Λοιπόν, χρειαζόμαστε έναν τρόπο να εκφράσουν τους εαυτούς μας λίγο πιο ευέλικτα από ό, τι 1434 01:03:44,430 --> 01:03:46,420 μεταβλητές μας μέχρι στιγμής επέτρεψαν. 1435 01:03:46,420 --> 01:03:47,370 Είχαμε ints. 1436 01:03:47,370 --> 01:03:48,380 Είχαμε χαρακτήρες. 1437 01:03:48,380 --> 01:03:50,790 Είχαμε άρματα και δίκλινα και μερικά άλλα. 1438 01:03:50,790 --> 01:03:55,050 Αλλά αυτά είναι μεμονωμένα κομμάτια της μνήμης που πραγματικά δεν μας επιτρέπουν να 1439 01:03:55,050 --> 01:03:58,010 εκφράσουν τα πράγματα όπως λέξεις και φράσεις και φράσεις. 1440 01:03:58,010 --> 01:04:00,200 Πράγματι, έχουμε τέτοιες ονομάζεται χορδές πράγματα. 1441 01:04:00,200 --> 01:04:03,650 Αλλά υποσχέθηκε ότι αυτό είναι πραγματικά ακριβώς μια απλούστευση της CS50 1442 01:04:03,650 --> 01:04:07,020 βιβλιοθήκη ότι είμαστε προτίθενται να φλούδα πίσω. 1443 01:04:07,020 --> 01:04:08,970 >> Κι έτσι ας αρχίσουμε να το κάνουμε αυτό εδώ. 1444 01:04:08,970 --> 01:04:11,130 Επιτρέψτε μου να προχωρήσει και να ανοίξει ένα αρχείο - 1445 01:04:11,130 --> 01:04:13,770 όλα αυτά τα αρχεία είναι διαθέσιμα ως συνήθως σε απευθείας σύνδεση - 1446 01:04:13,770 --> 01:04:19,120 που ονομάζεται array.c να λύσει ένα πρόβλημα που δεν σχετίζονται με χορδές, αλλά ότι ζωγραφίζει ένα 1447 01:04:19,120 --> 01:04:23,040 εδώ εικόνα για το πώς μπορούμε να χρησιμοποιήσουμε κάτι που ονομάζεται μια σειρά. 1448 01:04:23,040 --> 01:04:25,530 Ένας πίνακας είναι ένας τύπος δεδομένων. 1449 01:04:25,530 --> 01:04:31,320 Είναι ένα είδος της μεταβλητής, του είδους, η οποία έχει πολλαπλά μικρότερα τύπους δεδομένων 1450 01:04:31,320 --> 01:04:34,150 μέσα από την πλάτη με πλάτη με πλάτη με πλάτη. 1451 01:04:34,150 --> 01:04:37,700 Έτσι, για παράδειγμα, εάν θέλετε να γράψετε ένα μικρό πρόγραμμα που σας δίνει σας 1452 01:04:37,700 --> 01:04:42,110 κουίζ μέσος όρος για μια σειρά μαθημάτων, όπως 50 που έχει δύο κουίζ, θα μπορούσατε πολύ εύκολα 1453 01:04:42,110 --> 01:04:45,170 γράψω αυτό το πρόγραμμα - με βάση ακόμα και σε μερικές από υλικό της περασμένης εβδομάδας - 1454 01:04:45,170 --> 01:04:47,770 με τη χρήση GetInt και ένα ζευγάρι των μεταβλητών. 1455 01:04:47,770 --> 01:04:51,920 Int quiz1, int quiz2, και είναι αρκετά απλή. 1456 01:04:51,920 --> 01:04:55,930 Είναι ίσως 10, 20 γραμμές κώδικα, max, να εφαρμόσει ένα πρόγραμμα που ζητά η 1457 01:04:55,930 --> 01:05:01,170 χρήστη για δύο αποτελέσματα κουίζ και στη συνέχεια υπολογίζει μέσο όρο τους, με την προσθήκη τους 1458 01:05:01,170 --> 01:05:03,850 μαζί, διαιρώντας με δύο, και στη συνέχεια, την εκτύπωση των αποτελεσμάτων. 1459 01:05:03,850 --> 01:05:06,380 Θα μπορούσαμε να κάνουμε ότι κατά πάσα πιθανότητα αρκετά εύκολα τώρα μετά 1460 01:05:06,380 --> 01:05:07,510 μερικοί αριθμό των λεπτών. 1461 01:05:07,510 --> 01:05:11,005 >> Αλλά το πρόβλημα είναι ότι ας υποθέσουμε ότι το 50 είχε τρεις ή τέσσερις κουίζ. 1462 01:05:11,005 --> 01:05:13,510 Ας υποθέσουμε ότι θέλετε να χρησιμοποιήσετε το ίδιο πρόγραμμα για μια τάξη που είχε 1463 01:05:13,510 --> 01:05:14,850 εβδομαδιαίο κουίζ. 1464 01:05:14,850 --> 01:05:16,610 Σκεφτείτε για μια κατηγορία που έχει εβδομαδιαίο κουίζ. 1465 01:05:16,610 --> 01:05:20,610 Αν υπάρχει, όπως 16 ή έτσι εβδομάδες σε ένα εξάμηνο, τώρα έχετε 16 μεταβλητές - 1466 01:05:20,610 --> 01:05:24,270 int quiz1, int quiz2, int quiz3, int quiz4. 1467 01:05:24,270 --> 01:05:27,560 Μόλις αρχίσετε να βλέπετε αυτή την απόλυση, η αντιγραφή και επικόλληση 1468 01:05:27,560 --> 01:05:31,390 του κώδικα, θα πρέπει να αρχίσει να σας κάνει να θέλετε υπήρχαν ένας καλύτερος τρόπος. 1469 01:05:31,390 --> 01:05:33,930 Και ευτυχώς, γιατί από πίνακες, δεν υπάρχει. 1470 01:05:33,930 --> 01:05:34,980 Ας το κάνουμε αυτό. 1471 01:05:34,980 --> 01:05:38,430 Κατ 'αρχάς, επιτρέψτε μου να εισαγάγει ένα πολύ απλό πράγμα που δεν έχω χρησιμοποιήσει μέχρι στιγμής, 1472 01:05:38,430 --> 01:05:40,140 αλλά θα το δείτε περιστασιακά σε κώδικα. 1473 01:05:40,140 --> 01:05:42,360 Αυτό είναι αυτό που γενικά ονομάζεται μια σταθερά. 1474 01:05:42,360 --> 01:05:45,790 Έτσι είναι σταθερά συνδεδεμένο με την έννοια ότι ποτέ αυτή η τιμή αλλάζει. 1475 01:05:45,790 --> 01:05:49,210 Η ανθρώπινη σύμβαση κατά τη δημιουργία μιας σταθεράς είναι να χρησιμοποιήσει όλα τα κεφάλαια 1476 01:05:49,210 --> 01:05:51,940 γράμματα, ακριβώς έτσι ώστε να ξεχωρίζει πραγματικά στον κώδικά σας. 1477 01:05:51,940 --> 01:05:55,960 Και το ειδικό κλειδί που χρησιμοποιείτε στο Γ # define. 1478 01:05:55,960 --> 01:06:00,250 Έτσι, αν σας πω # define, τότε ένα διάστημα, στη συνέχεια, τη λέξη που θέλετε να χρησιμοποιήσετε για 1479 01:06:00,250 --> 01:06:03,260 το όνομα μιας σταθεράς, και στη συνέχεια η τιμή της σταθεράς. 1480 01:06:03,260 --> 01:06:06,180 Έτσι ειδοποίηση, αυτό είναι διαφορετικό από κάτι ανάθεση σε μια μεταβλητή. 1481 01:06:06,180 --> 01:06:07,020 Δεν υπάρχει ίσον. 1482 01:06:07,020 --> 01:06:08,240 Δεν υπάρχει ερωτηματικό. 1483 01:06:08,240 --> 01:06:11,410 Αυτό είναι ό, τι είναι γενικά γνωστή ως οδηγία προεπεξεργαστή, αλλά περισσότερο για 1484 01:06:11,410 --> 01:06:12,210 ότι μια άλλη φορά. 1485 01:06:12,210 --> 01:06:18,540 >> Προς το παρόν, αυτό δημιουργεί ένα αμετάβλητο ονομάζεται πραγματική αξία των οποίων ΒΙΝΤΕΟ ΑΓΓΕΛΙΕΣ 1486 01:06:18,540 --> 01:06:19,940 αριθμητική τιμή είναι 2. 1487 01:06:19,940 --> 01:06:24,020 Έτσι, οπουδήποτε βλέπετε κουίζ, κουίζ, κουίζ όλο αυτό το αρχείο, αυτό είναι 1488 01:06:24,020 --> 01:06:25,410 μόνο ο αριθμός 2. 1489 01:06:25,410 --> 01:06:28,100 Τώρα, αν κοιτάζω κύρια τώρα, ας δούμε πώς αυτό λειτουργεί. 1490 01:06:28,100 --> 01:06:29,500 Κατά την πρώτη, φαίνεται λίγο αινιγματικό. 1491 01:06:29,500 --> 01:06:31,340 Αλλά είναι όλα τα πράγματα από την εβδομάδα. 1492 01:06:31,340 --> 01:06:32,710 Ζητήστε από το χρήστη για τους βαθμούς. 1493 01:06:32,710 --> 01:06:33,630 Πώς θα το κάνουμε αυτό; 1494 01:06:33,630 --> 01:06:35,470 Λοιπόν, σε γραμμή 22 - 1495 01:06:35,470 --> 01:06:37,210 αυτό είναι πραγματικά το ζουμερό μέρος - 1496 01:06:37,210 --> 01:06:40,960 Δηλώνω μια float, αλλά δεν είναι μόνο μια ενιαία float. 1497 01:06:40,960 --> 01:06:44,620 Είμαι δηλώνοντας, μάλλον, μια σειρά από τιμές κινητής υποδιαστολής. 1498 01:06:44,620 --> 01:06:49,100 Η μεταβλητή πρόκειται να κληθεί βαθμούς, όπως υπονοείται εδώ. 1499 01:06:49,100 --> 01:06:53,080 Αλλά το μόνο κομμάτι του νέου σύνταξη τότε αυτές οι αγκύλες, το γεγονός 1500 01:06:53,080 --> 01:06:59,350 ότι έχω πει float βαθμούς και στη συνέχεια ανοίξτε το στήριγμα και στη συνέχεια ένας αριθμός. 1501 01:06:59,350 --> 01:07:02,460 Ανακοίνωση, αν αυτό είναι μια σταθερά, αυτό είναι ακριβώς όπως το κάναμε αυτό. 1502 01:07:02,460 --> 01:07:06,890 Αυτό σημαίνει hey υπολογιστή, να μου δώσει δύο πλωτήρες, και ας συλλογικά καλέστε 1503 01:07:06,890 --> 01:07:08,220 τους βαθμούς. 1504 01:07:08,220 --> 01:07:11,920 Αυτό είναι σε αντίθεση με ένα πολύ πιο επίπονη διαδικασία όπως αυτή. 1505 01:07:11,920 --> 01:07:15,850 Float βαθμός1, επιπλέουν grade2, και ούτω καθεξής. 1506 01:07:15,850 --> 01:07:20,010 Έτσι, ένας πίνακας μας επιτρέπει να εφαρμόσει αυτή την ιδέα, αλλά πολύ λιγότερο messily, σε 1507 01:07:20,010 --> 01:07:24,630 τέτοιο τρόπο ώστε να μπορεί να γράψει μια γραμμή κώδικα, αντί, ας πούμε, 16 για ένα 16 1508 01:07:24,630 --> 01:07:25,740 εξάμηνο εβδομάδα. 1509 01:07:25,740 --> 01:07:29,950 Γι 'αυτό και δεν ήθελα να σκληρό κωδικό 2, γιατί αν σκεφτούμε αυτό τώρα 1510 01:07:29,950 --> 01:07:34,160 λογικά - ας υποθέσουμε ότι το επόμενο έτος CS50 αλλαγές σε 3 αντί κουίζ. 1511 01:07:34,160 --> 01:07:35,510 Και είχα τον αριθμό 2 εδώ. 1512 01:07:35,510 --> 01:07:36,600 Είχα τον αριθμό 2 εδώ. 1513 01:07:36,600 --> 01:07:37,580 Είχα τον αριθμό 2 εδώ. 1514 01:07:37,580 --> 01:07:38,560 Είχα τον αριθμό 2 εδώ. 1515 01:07:38,560 --> 01:07:43,180 Γίνεται πολύ κουραστική και πολύ εύκολο να βίδα μέχρι και να αλλάξει κατά λάθος 1516 01:07:43,180 --> 01:07:47,690 μία τιμή σε 3 και χάσετε κάποια άλλη τιμή 2. 1517 01:07:47,690 --> 01:07:52,460 Έτσι, Πάω να αντί αφηρημένο αυτό μακριά και να χρησιμοποιήσετε αυτό σταθερά, όπως της 1518 01:07:52,460 --> 01:07:54,120 υποδηλώνει το όνομα, δεν αλλάζει ποτέ. 1519 01:07:54,120 --> 01:07:57,710 Και τώρα, δεν έχει σημασία αν έχουμε διαφορετικές κουίζ αυτό το έτος ή το επόμενο, I 1520 01:07:57,710 --> 01:08:01,210 Απλά πρέπει να το αλλάξετε σε ένα μέρος, εδώ στην κορυφή. 1521 01:08:01,210 --> 01:08:02,720 >> Έτσι, αυτό είναι όλο είναι σταθερή. 1522 01:08:02,720 --> 01:08:08,680 Εν τω μεταξύ, η νέα εννοιολογική χαρακτηριστικό είναι ότι από μία συστοιχία. 1523 01:08:08,680 --> 01:08:14,660 Έτσι, οι αγκύλες να μου δώσει αυτό το πολλά άρματα και μου επιτρέπει να συλλογικά 1524 01:08:14,660 --> 01:08:16,630 καλέσει τους βαθμούς εδώ. 1525 01:08:16,630 --> 01:08:17,990 Έτσι, τώρα ας δούμε τι Πάω να κάνουμε. 1526 01:08:17,990 --> 01:08:20,359 Εδώ στην γραμμή 24 είναι η αρχή για ένα βρόχο. 1527 01:08:20,359 --> 01:08:22,260 Αυτό είναι πραγματικά φανταχτερό τίποτα. 1528 01:08:22,260 --> 01:08:25,060 Είναι μόνο με τη χρήση κουίζ αντί για ένα σκληρό κωδικοποιημένο αριθμό. 1529 01:08:25,060 --> 01:08:27,790 Αλλά δεν υπάρχει τίποτα εκεί πνευματικά διαφορετικά από την προηγούμενη εβδομάδα. 1530 01:08:27,790 --> 01:08:29,040 Αυτό είναι απλά printf. 1531 01:08:29,040 --> 01:08:35,490 Έτσι printf ("αριθμός κουίζ% d από% d") γιατί απλά θέλετε να εκτυπώσετε μου δώσει κουίζ 1532 01:08:35,490 --> 01:08:38,050 νούμερο ένα των δύο και στη συνέχεια, δύο από τις δύο. 1533 01:08:38,050 --> 01:08:39,850 Έτσι, αυτό είναι καθαρά ένα αισθητικό πράγμα. 1534 01:08:39,850 --> 01:08:42,500 Αλλά το ενδιαφέρον είναι τώρα στην γραμμή 27. 1535 01:08:42,500 --> 01:08:48,310 Για να συμπληρώσετε ένα από τα δύο σύμβολα κράτησης θέσης με floating-point 1536 01:08:48,310 --> 01:08:51,029 αξία, μπορείτε να χρησιμοποιήσετε και πάλι αγκύλες. 1537 01:08:51,029 --> 01:08:55,620 Σε αυτή την περίπτωση, είμαι με τη χρήση i επειδή αυτό για βρόχο έχει ξεκινήσει με το i ισούται 1538 01:08:55,620 --> 01:08:57,560 Τι αξία, προφανώς; 1539 01:08:57,560 --> 01:08:58,279 0. 1540 01:08:58,279 --> 01:09:01,350 >> Έτσι, για την πρώτη επανάληψη αυτού του βρόχου, είναι σαν Ι 1541 01:09:01,350 --> 01:09:02,689 έγραψε αυτό το κωδικό. 1542 01:09:02,689 --> 01:09:05,580 Αλλά για τη δεύτερη επανάληψη του βρόχου, είναι σαν να 1543 01:09:05,580 --> 01:09:07,750 έγραψε αυτό τον κωδικό μου. 1544 01:09:07,750 --> 01:09:10,750 Αλλά το γεγονός ότι είμαι με τη χρήση μιας μεταβλητής είναι τέλεια, γιατί, όπως το όνομα 1545 01:09:10,750 --> 01:09:14,300 προτείνει, είναι διαφορετικά την αξία του σε κάθε επανάληψη. 1546 01:09:14,300 --> 01:09:17,370 Έτσι είμαι συμπληρώνοντας Αυτός ο πίνακας ένα σημείο κάθε φορά. 1547 01:09:17,370 --> 01:09:18,910 Τι σημαίνει αυτή η σειρά μοιάζει; 1548 01:09:18,910 --> 01:09:21,430 Λοιπόν, ο λόγος που συνέταξε αυτό το σούπερ απλό ορθογώνιο στην οθόνη εδώ 1549 01:09:21,430 --> 01:09:23,350 πριν ήταν για το λόγο αυτό. 1550 01:09:23,350 --> 01:09:27,279 Ένας πίνακας είναι απλά ένα κομμάτι της μνήμης που ακολουθείται από ένα άλλο κομμάτι της μνήμης, 1551 01:09:27,279 --> 01:09:30,109 ακολουθούμενο από ένα άλλο κομμάτι της μνήμης, και ούτω καθεξής. 1552 01:09:30,109 --> 01:09:35,260 Έτσι, αν μου σειρά είναι το μέγεθος 2, στην περίπτωση αυτή εδώ, όλα θα ήθελα να κάνει με 1553 01:09:35,260 --> 01:09:37,590 πληκτρολογώντας αποτελέσματα κουίζ μου, όπως και εδώ. 1554 01:09:37,590 --> 01:09:39,430 Πήρα 100 σε αυτό το σημείο. 1555 01:09:39,430 --> 01:09:42,020 Και τότε πήρα ένα 99 σε αυτό το σημείο. 1556 01:09:42,020 --> 01:09:46,040 Στη συνέχεια, αυτή η μνήμη δεν μπορεί ακόμη να χρησιμοποιηθεί, επειδή έχω μόνο ζήτησε από την 1557 01:09:46,040 --> 01:09:48,689 υπολογιστή για μια σειρά μεγέθους 2. 1558 01:09:48,689 --> 01:09:50,180 Οι πλατείες είναι ακόμα εκεί. 1559 01:09:50,180 --> 01:09:50,340 Σωστά; 1560 01:09:50,340 --> 01:09:52,500 Έχετε ακόμα δύο gigabytes μνήμης RAM, ακόμα και αν είστε μόνο 1561 01:09:52,500 --> 01:09:53,979 ζητώντας για δύο πλωτήρες. 1562 01:09:53,979 --> 01:09:58,710 Έτσι, η ιδέα πίσω από συστοιχίες είναι ότι ο υπολογιστής παίρνει μόνο ένα κομμάτι της μνήμης 1563 01:09:58,710 --> 01:10:03,230 και επιμερίζει στη συνέχεια μικρότερα κομμάτια πλάτη με πλάτη με πλάτη με πλάτη. 1564 01:10:03,230 --> 01:10:04,740 Και έτσι αυτό είναι όλο ένας πίνακας είναι. 1565 01:10:04,740 --> 01:10:09,080 Είναι ένα συνεχές κομμάτι της μνήμης, μέσα από τα οποία μπορείτε να βάλετε τα πράγματα. 1566 01:10:09,080 --> 01:10:12,400 >> Τώρα αυτό συμβαίνει τότε να κάνει μόνο κάποια βαρετή αριθμητική. 1567 01:10:12,400 --> 01:10:16,170 Αν μετακινηθείτε προς τα κάτω εδώ, αυτό είναι που εγώ τότε επαναλάβει πάνω στον πίνακα. 1568 01:10:16,170 --> 01:10:19,410 Έρχομαι με το άθροισμα όλων των τιμών του πίνακα. 1569 01:10:19,410 --> 01:10:22,390 Και τότε μπορώ να χρησιμοποιήσω το γύρο λειτουργία εδώ για να κάνουμε πραγματικότητα το 1570 01:10:22,390 --> 01:10:23,940 Συνοψίζοντας διαιρείται με κουίζ. 1571 01:10:23,940 --> 01:10:27,450 Αλλά επιτρέψτε μου να κύμα το χέρι μου στο ότι ως είδος αριθμητική αρκετά για τώρα. 1572 01:10:27,450 --> 01:10:30,010 Αλλά το μόνο που κάνει είναι για μένα τελικά να υπολογίσει τη μέση. 1573 01:10:30,010 --> 01:10:33,640 Έτσι, η πρώτη κουίζ συν το δεύτερο κουίζ, διαιρούμενο δια του 2, και στη συνέχεια εκτύπωση 1574 01:10:33,640 --> 01:10:34,700 έξω ως int. 1575 01:10:34,700 --> 01:10:39,030 >> Αλλά τώρα ας μετάβαση σε ένα διαφορετικό παράδειγμα που ονομάζεται συμβολοσειρά1, 1576 01:10:39,030 --> 01:10:42,370 η οποία περιγράφει μια παρόμοια κατάσταση, αλλά με χορδές. 1577 01:10:42,370 --> 01:10:45,550 Επιτρέψτε μου να προχωρήσει και να απλοποιήσει αυτό για μια στιγμή. 1578 01:10:45,550 --> 01:10:48,340 Και συγχωρήστε την εσοχή για τώρα. 1579 01:10:48,340 --> 01:10:52,280 Ανακοίνωση στην γραμμή 19 του αυτό το παράδειγμα, έχω μια σειρά από τον χρήστη. 1580 01:10:52,280 --> 01:10:55,780 Αλλά παρατηρήσετε τι είμαι δίπλα σε αυτόν των γραμμών 22 και μετά. 1581 01:10:55,780 --> 01:11:00,260 Είμαι πραγματικά επανάληψη από i μέχρι - και αυτό είναι ένα νέο τέχνασμα - 1582 01:11:00,260 --> 01:11:02,730 strlen, μήκους. 1583 01:11:02,730 --> 01:11:07,010 Πρόκειται για μια λειτουργία που έρχεται με C ότι αν δώσετε μια συμβολοσειρά, λέει 1584 01:11:07,010 --> 01:11:08,950 πόσες είναι οι χαρακτήρες σε αυτό το string. 1585 01:11:08,950 --> 01:11:09,440 Αυτό είναι όλο. 1586 01:11:09,440 --> 01:11:12,520 Το γεγονός ότι είναι strlen αντί του μήκους είναι μόνο και μόνο επειδή είναι 1587 01:11:12,520 --> 01:11:13,040 πιο σύντομη. 1588 01:11:13,040 --> 01:11:17,100 Πριν από 30 χρόνια, οι άνθρωποι του άρεσε να γράφει τα πράγματα όπως συνοπτικά γίνεται. 1589 01:11:17,100 --> 01:11:19,080 Έτσι έχουμε κρατήσει τη σύμβαση αυτή εδώ. 1590 01:11:19,080 --> 01:11:21,730 i + + απλά σημαίνει αυξήσετε i σε κάθε επανάληψη. 1591 01:11:21,730 --> 01:11:24,310 Και τώρα παρατηρήσετε αυτό, το οποίο είναι πολύ ενδιαφέρον. 1592 01:11:24,310 --> 01:11:28,730 Έτσι, σε γραμμή 24, λέω υπολογιστή, να μου δώσει ένα χαρακτήρα, οκτώ 1593 01:11:28,730 --> 01:11:30,770 bits, και το ονομάσουμε γ. 1594 01:11:30,770 --> 01:11:35,370 Αλλά τι είναι αυτό για το δεξιά πλευρά λέει; 1595 01:11:35,370 --> 01:11:38,150 Στα αγγλικά, τι σημαίνει αυτό αντιπροσωπεύει; 1596 01:11:38,150 --> 01:11:40,070 [Δεν ακούγεται] 1597 01:11:40,070 --> 01:11:40,490 David J. Malan: Ακριβώς. 1598 01:11:40,490 --> 01:11:42,390 Δώσε μου τον πρώτο χαρακτήρα του πίνακα. 1599 01:11:42,390 --> 01:11:45,400 Ή γενικότερα, να μου δώσει το i-οστό χαρακτήρα του πίνακα. 1600 01:11:45,400 --> 01:11:48,230 Και συνειδητοποιούν ότι είναι σημαντικό τώρα που οι επιστήμονες ηλεκτρονικών υπολογιστών, είμαστε πραγματικά 1601 01:11:48,230 --> 01:11:49,330 ξεκινώντας από το 0. 1602 01:11:49,330 --> 01:11:51,290 Δεν έχουν τη διακριτική ευχέρεια τώρα να αρχίσουν να κάνουν αυτό. 1603 01:11:51,290 --> 01:11:54,580 Τώρα θα πρέπει να συμπεριφέρονται σύμφωνα με τις προσδοκίες του υπολογιστή και 1604 01:11:54,580 --> 01:11:58,010 μετρά από το μηδέν, επειδή [0] θα είναι η πρώτη 1605 01:11:58,010 --> 01:11:59,670 χαρακτήρα σε μια συμβολοσειρά. 1606 01:11:59,670 --> 01:12:01,320 [1] πρόκειται να είναι το δεύτερο. 1607 01:12:01,320 --> 01:12:03,610 [2], πρόκειται να είναι η τρίτη, και ούτω καθεξής. 1608 01:12:03,610 --> 01:12:08,840 Έτσι, το πρόγραμμα αυτό, αν μπορώ να το μεταγλωττίσετε - αυτό είναι, και πάλι, string1. 1609 01:12:08,840 --> 01:12:11,040 >> Έτσι, βεβαιωθείτε string1. 1610 01:12:11,040 --> 01:12:16,730 Και τώρα τρέχω string1 στο παράθυρο του τερματικού μου. 1611 01:12:16,730 --> 01:12:19,180 Είναι σε αναμονή για την είσοδο, έτσι είμαι πρόκειται να πληκτρολογήσετε, ας πούμε, Ντέιβιντ. 1612 01:12:19,180 --> 01:12:20,080 Enter. 1613 01:12:20,080 --> 01:12:23,350 Και τώρα εκτυπώνει όλα DAVID σε διαφορετικές γραμμές, επειδή 1614 01:12:23,350 --> 01:12:24,430 παρατηρήσετε τι κάνω. 1615 01:12:24,430 --> 01:12:27,510 Είμαι εκτύπωση ενός χαρακτήρα σε μια στιγμή. 1616 01:12:27,510 --> 01:12:29,100 Τώρα δεν θα μπω σε λεπτομέρειες για το θέμα αυτό σήμερα. 1617 01:12:29,100 --> 01:12:31,610 Αλλά διαγραφεί πριν από λίγο τον έλεγχο αυτό εδώ. 1618 01:12:31,610 --> 01:12:36,310 Αποδεικνύεται ότι αν ο χρήστης δεν λειτούργησε σωστά, αντιδικία, ή απλά 1619 01:12:36,310 --> 01:12:41,780 σύγχυση, μπορείτε πραγματικά να αποτύχει να δώσει μια σειρά από κάποιο μήκος. 1620 01:12:41,780 --> 01:12:43,640 Αν πατήσετε το λάθος πλήκτρο στο πληκτρολόγιο, μπορεί να δώσει 1621 01:12:43,640 --> 01:12:44,390 δεν συμβολοσειρά. 1622 01:12:44,390 --> 01:12:47,790 Ή αν είστε κακόβουλο, μπορείτε να δοκιμάσετε να επικολλήσετε στην αξία ενός gigabyte του ένα 1623 01:12:47,790 --> 01:12:49,380 δοκίμιο για να καλύψει αυτό το string. 1624 01:12:49,380 --> 01:12:52,060 Και αν ο υπολογιστής τρέχει από τη μνήμη, αποδεικνύεται ότι θα πάμε 1625 01:12:52,060 --> 01:12:54,310 να πάρει πίσω αυτή την ειδική τιμή που ονομάζεται μηδενική. 1626 01:12:54,310 --> 01:12:57,550 Έτσι, για τώρα, απλά ξέρω ότι υπάρχει αυτή η ειδική τιμή null ότι ονομάζεται 1627 01:12:57,550 --> 01:13:01,000 θα μας επιτρέψει να ελέγξετε όταν είμαστε έξω από τη μνήμη, μεταξύ άλλων. 1628 01:13:01,000 --> 01:13:07,330 >> Αλλά αν ανοίξει τώρα συμβολοσειρά2, παρατηρήσετε μια διαφορά εδώ. 1629 01:13:07,330 --> 01:13:09,760 Παρατηρήστε μια διαφορά εδώ με συμβολοσειρά2. 1630 01:13:09,760 --> 01:13:13,260 Με συμβολοσειρά2, αυτό για το βρόχο είναι λίγο διαφορετική. 1631 01:13:13,260 --> 01:13:16,350 Επιτρέψτε μου να διαγράψετε τα μηδενικά, έτσι ώστε να μπορούμε να μιλήσουμε για μια άλλη φορά αυτά. 1632 01:13:16,350 --> 01:13:18,460 Αλλά αυτό είναι διαφορετικό για το βρόχο για αυτή τη φορά; 1633 01:13:21,580 --> 01:13:23,160 Και μπορώ να πάω πίσω στο προηγούμενο παράδειγμα. 1634 01:13:23,160 --> 01:13:24,800 Έτσι, αυτό είναι έκδοση δύο. 1635 01:13:24,800 --> 01:13:27,020 Αυτή είναι η μία εκδοχή. 1636 01:13:27,020 --> 01:13:31,935 Ένα, δύο, ένα δύο. 1637 01:13:35,030 --> 01:13:38,240 Έτσι, η κλήση strlen είναι πού; 1638 01:13:38,240 --> 01:13:40,420 Είναι το πρώτο μέρος του βρόχου for. 1639 01:13:40,420 --> 01:13:43,060 Οποιεσδήποτε σκέψεις ως προς το γιατί το κάνω αυτό; 1640 01:13:43,060 --> 01:13:43,690 Ναι. 1641 01:13:43,690 --> 01:13:46,010 [Δεν ακούγεται] 1642 01:13:46,010 --> 01:13:47,630 David J. Malan: Γι 'αυτό και δεν απαιτούν τη λειτουργία κάθε φορά. 1643 01:13:47,630 --> 01:13:48,040 Ακριβώς. 1644 01:13:48,040 --> 01:13:50,350 Ανάκληση από τους βρόχους για ότι είναι εξαιρετικά απλό μόλις το είδος του 1645 01:13:50,350 --> 01:13:52,180 κατανοούν ότι αυτή είναι η αρχικοποίηση, ο 1646 01:13:52,180 --> 01:13:53,330 κατάσταση, καθώς και η ενημέρωση. 1647 01:13:53,330 --> 01:13:55,430 Το πρόβλημα είναι ότι η κατάσταση συμβαίνει σε κάθε 1648 01:13:55,430 --> 01:13:56,600 επανάληψη του βρόχου. 1649 01:13:56,600 --> 01:13:59,930 Και έτσι σε αυτό το παράδειγμα εδώ, τι είναι κακό για το γεγονός 1650 01:13:59,930 --> 01:14:03,500 ότι αυτή είναι η κατάστασή μου; 1651 01:14:03,500 --> 01:14:05,920 Είσαι strlen καλώντας ξανά και ξανά και ξανά. 1652 01:14:05,920 --> 01:14:08,990 Αλλά από τη στιγμή που έχω πληκτρολογήσει στο DAVID, το μήκος της στοιχειοσειράς είναι πέντε. 1653 01:14:08,990 --> 01:14:11,560 Και δεν πρόκειται να αλλάξει σε κάθε επανάληψη του βρόχου, διότι η 1654 01:14:11,560 --> 01:14:15,560 συμβολοσειρά εξακολουθεί να είναι ϋ-Α-V-Ι-ϋ. Έτσι, αυτό είναι μια νύξη στο τι πρόκειται να γίνει 1655 01:14:15,560 --> 01:14:19,650 όλο και πιο σημαντική ιδέα είναι γνωστή ως απόφαση σχεδιασμό, όπου - απλά δεν 1656 01:14:19,650 --> 01:14:21,640 κάνει ο υπολογιστής κάνει περιττή εργασία. 1657 01:14:21,640 --> 01:14:25,630 >> Τώρα, ακριβώς όπως μια προεπισκόπηση των PSET 2, PSET 2 στην τυπική έκδοση είναι 1658 01:14:25,630 --> 01:14:28,850 θα σας πρόκληση να εφαρμόσουν στην πράξη κάποια αριθμός των αλγόριθμους κρυπτογράφησης, κάποια 1659 01:14:28,850 --> 01:14:32,650 αριθμός των αλγορίθμων κρυπτογράφησης, έτσι ώστε να μπορεί τόσο να κρυπτογραφήσει και να αποκρυπτογραφήσει 1660 01:14:32,650 --> 01:14:35,530 μυστικά μηνύματα, μοιάζει πολύ με το Ralphie κανείς εκεί αποκωδικοποιηθεί. 1661 01:14:35,530 --> 01:14:38,720 Στην έκδοση του χάκερ PSET 2, θα πάμε για να πάει λίγο παραπέρα. 1662 01:14:38,720 --> 01:14:42,010 Εμείς πάμε για να σας παραδώσει ένα αρχείο από ένα πραγματικό σύστημα υπολογιστή που περιέχει ένα 1663 01:14:42,010 --> 01:14:45,690 σωρό ονόματα χρηστών και των πραγματικών κρυπτογραφημένους κωδικούς πρόσβασης, καθώς και η πρόκληση 1664 01:14:45,690 --> 01:14:49,110 για την έκδοση χάκερ θα είναι να σπάσει αυτούς τους κωδικούς πρόσβασης και εικόνα 1665 01:14:49,110 --> 01:14:53,060 τι κρυπτογραφία ή ποιο είναι το μυστικό χρησιμοποιήθηκε για την πραγματικότητα 1666 01:14:53,060 --> 01:14:55,080 παράγουν αυτούς τους κωδικούς πρόσβασης. 1667 01:14:55,080 --> 01:14:58,360 Και θα πάμε να το κάνετε αυτό, χρησιμοποιώντας ένα νέο χαρακτηριστικό εδώ του C ότι θα δώσω 1668 01:14:58,360 --> 01:15:02,200 απλά ένα demo του, γνωστή ως ορίσματα της γραμμής εντολών. 1669 01:15:02,200 --> 01:15:05,930 >> Έτσι, αποδεικνύεται, όπως κάποιοι από εσάς μπορεί να έχετε δει στο τμήμα ή στα σχολικά εγχειρίδια, 1670 01:15:05,930 --> 01:15:09,850 κύριος δεν πρέπει πάντα να είναι κενό σε παρένθεση. 1671 01:15:09,850 --> 01:15:14,060 Αποδεικνύεται ότι ο κύριος μπορεί επίσης να γραφτεί όπως αυτό, με δύο επιχειρήματα, 1672 01:15:14,060 --> 01:15:19,690 argc και argv, argc όπου είναι ο αριθμός των λέξεων που πληκτρολογείτε μετά 1673 01:15:19,690 --> 01:15:21,940 όνομα του προγράμματος στη γραμμή εντολών σας. 1674 01:15:21,940 --> 01:15:24,550 Και argv είναι οι πραγματικές λέξεις. 1675 01:15:24,550 --> 01:15:29,470 Και όπως δείχνουν οι αγκύλες εκεί, argv είναι προφανώς μια σειρά. 1676 01:15:29,470 --> 01:15:33,720 Είναι πρόκειται να είναι μια σειρά μετά από μια σειρά μετά από μια σειρά στη μνήμη. 1677 01:15:33,720 --> 01:15:36,170 Λοιπόν, τι θα πάμε να είναι σε θέση να κάνει, ξεκινώντας με PSET 2, 1678 01:15:36,170 --> 01:15:37,310 κάτι σαν αυτό. 1679 01:15:37,310 --> 01:15:42,450 Αν κάνω argv1, το οποίο είναι ένα παράδειγμα θα επανέλθουμε τη Δευτέρα, και να τρέξει 1680 01:15:42,450 --> 01:15:45,180 αυτό, παρατηρούμε ότι δεν φαίνεται να κάνει τίποτα ακόμα. 1681 01:15:45,180 --> 01:15:47,050 Είναι απλά τυπώνει το δικό του όνομα. 1682 01:15:47,050 --> 01:15:53,220 Αλλά αν πω αντίο τάξη, ειδοποίηση ότι το πρόγραμμα αυτό επαναλαμβάνεται προφανώς 1683 01:15:53,220 --> 01:15:57,030 για κάθε μία από τις λέξεις που πληκτρολογούνται στη γραμμή εντολών. 1684 01:15:57,030 --> 01:16:02,050 Και τα μέσα με τα οποία θα αποκτήσουν πρόσβαση σε λέξεις που ο χρήστης έχει 1685 01:16:02,050 --> 01:16:06,780 πληκτρολογείται στη γραμμή είναι με την αλλαγή κύρια, αρχής γενομένης από αυτό το Σαββατοκύριακο, από int 1686 01:16:06,780 --> 01:16:10,710 main (void) σε int main (argc, argv). 1687 01:16:10,710 --> 01:16:13,700 Και έτσι θα γεννηθεί επιχειρήματα της γραμμής εντολών. 1688 01:16:13,700 --> 01:16:17,210 Και τη στιγμή που θα πάρει πραγματικά εξελιγμένη σε αυτό, θα είστε σε θέση να γράψετε 1689 01:16:17,210 --> 01:16:21,370 trippy πραγματικά προγράμματα, όπως αυτή εδώ, που πηγαίνει πέρα ​​και πάνω από 1690 01:16:21,370 --> 01:16:25,520 μερικές από τις λειτουργίες που έχουμε κάνει μέχρι τώρα, αλλά όλα είναι αρκετά ισχυρό. 1691 01:16:25,520 --> 01:16:27,330 >> Γι 'αυτό και θα αφήσει αυτό με αυτό στην οθόνη. 1692 01:16:27,330 --> 01:16:29,160 Και εμείς θα δούμε την Δευτέρα.